+
-
-
-
-
+
- Don't have an account? Contact your administrator.
+ Don't have an account? Contact your administrator.
@@ -79,32 +88,41 @@ document.addEventListener('DOMContentLoaded', function() {
document.getElementById('username').focus();
});
-// Show/hide password toggle (optional enhancement)
+// Show/hide password toggle functionality
document.addEventListener('DOMContentLoaded', function() {
const passwordField = document.getElementById('password');
const toggleBtn = document.createElement('button');
toggleBtn.type = 'button';
- toggleBtn.className = 'btn btn-outline-secondary';
- toggleBtn.innerHTML = '
';
- toggleBtn.style.border = 'none';
- toggleBtn.style.background = 'transparent';
+ toggleBtn.className = 'btn btn-light border-start-0';
+ toggleBtn.innerHTML = '
';
+ toggleBtn.style.border = '2px solid #e9ecef';
+ toggleBtn.style.borderLeft = 'none';
+ toggleBtn.style.background = '#f8f9fa';
+ toggleBtn.style.borderRadius = '0 8px 8px 0';
- // Add toggle functionality
+ // Add toggle functionality with better UX
toggleBtn.addEventListener('click', function() {
if (passwordField.type === 'password') {
passwordField.type = 'text';
- this.innerHTML = '
';
+ this.innerHTML = '
';
+ this.classList.remove('btn-light');
+ this.classList.add('btn-outline-primary');
} else {
passwordField.type = 'password';
- this.innerHTML = '
';
+ this.innerHTML = '
';
+ this.classList.remove('btn-outline-primary');
+ this.classList.add('btn-light');
}
});
// Insert toggle button into password input group
const passwordInputGroup = passwordField.closest('.input-group');
if (passwordInputGroup) {
- const span = passwordInputGroup.querySelector('.input-group-text');
- passwordInputGroup.insertBefore(toggleBtn, span.nextSibling);
+ passwordInputGroup.appendChild(toggleBtn);
+
+ // Adjust the input field border radius
+ passwordField.style.borderRadius = '8px 0 0 8px';
+ passwordField.style.borderRight = 'none';
}
});
diff --git a/static/css/custom.css b/static/css/custom.css
index 5850552..46bc5e9 100644
--- a/static/css/custom.css
+++ b/static/css/custom.css
@@ -2,7 +2,72 @@
/* Additional styles can be added here */
body {
- background-color: #f8f9fa;
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
+ min-height: 100vh;
+ display: flex;
+ align-items: center;
+ font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
+}
+
+/* Login page specific styles */
+.container {
+ min-height: 100vh;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ padding: 20px;
+}
+
+/* Enhanced card styling for login */
+.card {
+ backdrop-filter: blur(10px);
+ background: rgba(255, 255, 255, 0.95);
+ border: 1px solid rgba(255, 255, 255, 0.2);
+}
+
+/* Logo styling */
+.card .card-body .text-center img {
+ border-radius: 50%;
+ background: white;
+ padding: 10px;
+ box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);
+}
+
+/* Input group styling */
+.input-group-lg .form-control {
+ border-radius: 8px !important;
+ border: 2px solid #e9ecef;
+ transition: all 0.3s ease;
+}
+
+.input-group-lg .form-control:focus {
+ border-color: #667eea;
+ box-shadow: 0 0 0 0.2rem rgba(102, 126, 234, 0.25);
+ background: white;
+}
+
+.input-group-text {
+ border-radius: 8px 0 0 8px !important;
+ border: 2px solid #e9ecef;
+ border-right: none;
+ background: #f8f9fa;
+}
+
+/* Button styling */
+.btn-primary {
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
+ border: none;
+ border-radius: 8px;
+ padding: 12px 24px;
+ font-size: 16px;
+ font-weight: 600;
+ transition: all 0.3s ease;
+}
+
+.btn-primary:hover {
+ background: linear-gradient(135deg, #5a67d8 0%, #6b46c1 100%);
+ transform: translateY(-2px);
+ box-shadow: 0 4px 15px rgba(102, 126, 234, 0.4);
}
/* Custom navbar styles */