/* CSS Variables for theming */ :root { /* Base colors */ --bg-color: #f3f4f6; --text-color: #2d3748; /* Dashboard items */ --dashboard-bg: white; --dashboard-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); --dashboard-header-color: #2d3748; /* Content panels */ --content-bg: #f3f4f6; --content-border: 1px solid #e2e8f0; --content-text: #2d3748; /* Form elements */ --input-bg: white; --input-border: 1px solid #cbd5e0; --input-text: #4a5568; --label-color: #4a5568; /* Progress bar */ --progress-bg: #e2e8f0; --progress-fill: #4299e1; /* Sidebar */ --sidebar-bg: #1f2937; --sidebar-text: white; --sidebar-hover: #374151; /* Buttons */ --btn-primary-bg: #4299e1; --btn-primary-hover: #2b6cb0; --btn-warning-bg: #ef4444; --btn-warning-hover: #dc2626; --btn-caution-bg: #eab308; --btn-caution-hover: #ca8a04; --btn-success-bg: #22c55e; --btn-success-hover: #16a34a; --btn-disabled: #9ca3af; } @media (prefers-color-scheme: dark) { :root { /* Base colors */ --bg-color: #1e1e2e; --text-color: #e5e7eb; /* Dashboard items */ --dashboard-bg: #2e2e42; --dashboard-shadow: 0 2px 4px rgba(0, 0, 0, 0.3); --dashboard-header-color: #e2e8f0; /* Content panels */ --content-bg: #3b3b53; --content-border: none; --content-text: white; /* Form elements */ --input-bg: #3b3b53; --input-border: 1px solid #4b5563; --input-text: white; --label-color: #e2e8f0; /* Progress bar */ --progress-bg: #3b3b53; --progress-fill: #4299e1; /* Sidebar */ --sidebar-bg: #121220; --sidebar-text: #e5e7eb; --sidebar-hover: #374151; /* Buttons */ --btn-primary-bg: #4299e1; --btn-primary-hover: #2563eb; --btn-warning-bg: #f87171; --btn-warning-hover: #e11d48; --btn-caution-bg: #f59e0b; --btn-caution-hover: #d97706; --btn-success-bg: #34d399; --btn-success-hover: #059669; --btn-disabled: #9ca3af; } } /* General reset and body setup */ body, html { margin: 0; height: 100%; font-family: Arial, sans-serif; background-color: var(--bg-color); color: var(--text-color); } .flex { display: flex; } .h-screen { height: 100vh; } /* Flexbox centering for login */ .flex-center { display: flex; justify-content: center; align-items: center; height: 100vh; } .bg-gray { background-color: var(--bg-color); } /* Container setup for dashboard */ .container { display: flex; flex-direction: row; width: 100%; height: 100vh; } /* Sidebar styles */ .sidebar { width: 16rem; background-color: var(--sidebar-bg); color: var(--sidebar-text); padding: 1rem; display: flex; flex-direction: column; } .sidebar .title { font-size: 1.5rem; font-weight: bold; margin-bottom: 1.5rem; } .sidebar ul { list-style-type: none; } .sidebar a { color: var(--sidebar-text); text-decoration: none; padding: 0.5rem 0; display: block; margin-bottom: 0.5rem; border-radius: 0.25rem; } .sidebar a:hover { background-color: var(--sidebar-hover); } /* Main content area for dashboard */ .main-content { flex-grow: 1; padding: 2rem; display: flex; flex-direction: column; overflow-y: auto; } .header { display: flex; justify-content: flex-end; margin-bottom: 2rem; } .logout-btn { background-color: var(--btn-warning-bg); color: white; padding: 0.5rem 1rem; border: none; border-radius: 0.25rem; cursor: pointer; } .logout-btn:hover { background-color: var(--btn-warning-hover); } .content { background-color: var(--content-bg); color: var(--content-text); padding: 1.5rem; border: var(--content-border); border-radius: 0.5rem; box-shadow: var(--dashboard-shadow); flex-grow: 1; overflow-y: auto; } /* Login Container */ .login-container { background-color: var(--dashboard-bg); padding: 2rem; border-radius: 0.5rem; box-shadow: var(--dashboard-shadow); width: 24rem; } .login-title { font-size: 1.75rem; font-weight: bold; margin-bottom: 0.5rem; text-align: center; color: var(--dashboard-header-color); } .login-subtitle { font-size: 1.25rem; font-weight: normal; margin-bottom: 1.5rem; text-align: center; color: var(--label-color); } /* Input Fields */ .input-group { margin-bottom: 1rem; } .input-group label { display: block; color: var(--label-color); font-size: 0.875rem; font-weight: bold; margin-bottom: 0.5rem; } .input-field { width: 100%; padding: 0.5rem; border: var(--input-border); border-radius: 0.25rem; background-color: var(--input-bg); color: var(--input-text); font-size: 1rem; line-height: 1.5; box-shadow: 0 0 0 1px rgba(0, 0, 0, 0); transition: box-shadow 0.15s ease-in-out; } .input-field:focus { outline: none; box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5); } /* Inline input group for horizontal layout */ .inline-input-group { display: flex; flex-wrap: wrap; gap: 1rem; } .inline-input-group .input-group { flex: 1; min-width: 150px; } .card-input { width: 100%; padding: 0.5rem; border: var(--input-border); border-radius: 0.25rem; background-color: var(--input-bg); color: var(--input-text); font-size: 0.875rem; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); transition: box-shadow 0.15s ease-in-out, border-color 0.15s ease-in-out; margin-bottom: 0.75rem; } .card-input:focus { outline: none; border-color: var(--btn-primary-bg); box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5); } /* Form Footer */ .form-footer { display: flex; justify-content: space-between; align-items: center; margin-top: 1rem; } .btn-primary { background-color: var(--btn-primary-bg); color: white; padding: 0.5rem 1rem; border-radius: 0.25rem; border: none; font-weight: bold; cursor: pointer; transition: background-color 0.2s; } .btn-primary:hover { background-color: var(--btn-primary-hover); } .forgot-password { color: var(--btn-primary-bg); font-size: 0.875rem; font-weight: bold; text-decoration: none; } .forgot-password:hover { color: var(--btn-primary-hover); } /* Login Message */ .login-message { margin-top: 1rem; text-align: center; font-size: 0.875rem; color: var(--label-color); } /* Dashboard-specific styles */ .dashboard-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 1rem; margin-top: 1rem; } .dashboard-item { background-color: var(--dashboard-bg); padding: 1rem; border-radius: 0.5rem; box-shadow: var(--dashboard-shadow); } .dashboard-item h2 { color: var(--dashboard-header-color); margin-top: 0; margin-bottom: 1rem; } .dashboard-item .content { background-color: var(--content-bg); color: var(--content-text); padding: 1.5rem; border-radius: 0.5rem; margin-bottom: 1rem; border: var(--content-border); } .dashboard-item .submenu-header { font-size: 1.25rem; font-weight: bold; margin-bottom: 1rem; color: var(--dashboard-header-color); } .dashboard-item .card-input { width: 100%; padding: 0.5rem; border: var(--input-border); border-radius: 0.25rem; background-color: var(--input-bg); color: var(--input-text); font-size: 0.875rem; margin-bottom: 0.75rem; } /* Document Upload Form Styling */ .document-row { margin-bottom: 1.5rem; } .document-field { margin-bottom: 1rem; } .document-field label { display: block; margin-bottom: 0.5rem; color: var(--label-color); } .document-field-row { display: flex; gap: 1.5rem; margin-top: 1rem; margin-bottom: 1rem; } .document-name-field { flex: 3; } .document-type-field { flex: 2; } #add-document { margin-top: 1rem; } /* Progress bar styling */ .progress { height: 20px; margin-bottom: 10px; overflow: hidden; background-color: var(--progress-bg, #e9ecef); border-radius: 4px; box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); } .progress-bar { float: left; width: 0; height: 100%; font-size: 12px; line-height: 20px; color: #fff; text-align: center; background-color: var(--progress-bar-bg, #0d6efd); box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); transition: width 0.6s ease; } /* Upload results styling */ .upload-results { margin-top: 20px; border: 1px solid var(--border-color); border-radius: 4px; padding: 15px; background-color: var(--card-bg); } .upload-results h4 { margin-top: 0; margin-bottom: 15px; color: var(--heading-color); } .job-result { margin-bottom: 15px; } .job-result h5 { margin-top: 0; margin-bottom: 10px; color: var(--subheading-color); } .job-result ul { list-style-type: none; padding-left: 0; margin-top: 0; margin-bottom: 0; } .job-result li { padding: 5px 0; } .job-result li.success { color: var(--success-color, #198754); } .job-result li.error { color: var(--error-color, #dc3545); } /* Loading indicator */ .loading-indicator { display: inline-block; width: 20px; height: 20px; border: 3px solid rgba(0, 0, 0, 0.3); border-radius: 50%; border-top-color: var(--progress-bar-bg, #0d6efd); animation: spin 1s ease-in-out infinite; vertical-align: middle; margin-left: 10px; } @keyframes spin { to { transform: rotate(360deg); } } /* Job list styling */ .job-list { list-style-type: none; padding-left: 0; max-height: 200px; overflow-y: auto; border: 1px solid var(--border-color); border-radius: 4px; padding: 10px; background-color: var(--input-bg); } .job-list li { padding: 5px 10px; cursor: pointer; transition: background-color 0.2s; } .job-list li:hover { background-color: var(--hover-bg); } .job-list li.selected { background-color: var(--selected-bg); color: var(--selected-text); } /* Style for error and not-found message display */ @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } .error, .not-found { text-align: center; padding: 0.75rem; border-radius: 0.25rem; font-size: 0.875rem; margin-top: 0.5rem; animation: fadeIn 0.3s ease-in-out; } .error { background-color: #fee2e2; border: 1px solid #ef4444; color: #b91c1c; } .not-found { background-color: #fef3c7; border: 1px solid #f59e0b; color: #92400e; } .error::before, .not-found::before { margin-right: 0.5rem; } .error::before { content: "⚠️"; } .not-found::before { content: "🔍"; } /* Fade effect for existing content */ .htmx-request .fade-me-out { opacity: 0.5; transition: opacity 0.3s ease-in-out; } /* Highlight effect for changed content */ @keyframes highlightBackground { 0% { background-color: #fef3c7; } 100% { background-color: transparent; } } .highlight-change { animation: highlightBackground 2s ease-in-out; } /* Button styles */ .warning-button { background-color: var(--btn-warning-bg); color: white; border: none; padding: 0.5rem 1rem; border-radius: 0.25rem; font-size: 0.875rem; cursor: pointer; transition: background-color 0.2s; margin-bottom: 1rem; } .warning-button:hover { background-color: var(--btn-warning-hover); } .warning-button:disabled { background-color: var(--btn-disabled); cursor: not-allowed; } .caution-button { background-color: var(--btn-caution-bg); color: #1f2937; border: none; padding: 0.5rem 1rem; border-radius: 0.25rem; font-size: 0.875rem; cursor: pointer; transition: background-color 0.2s; margin-bottom: 1rem; } .caution-button:hover { background-color: var(--btn-caution-hover); } .caution-button:disabled { background-color: var(--btn-disabled); cursor: not-allowed; } .success-button { background-color: var(--btn-success-bg); color: white; border: none; padding: 0.5rem 1rem; border-radius: 0.25rem; font-size: 0.875rem; cursor: pointer; transition: background-color 0.2s; margin-bottom: 1rem; } .success-button:hover { background-color: var(--btn-success-hover); } .success-button:disabled { background-color: var(--btn-disabled); cursor: not-allowed; }