/* ======= Global Styles ======= */ :root { --primary-color: #0d6efd; /* Bootstrap Blue */ --primary-dark: #0a58ca; --secondary-color: #6c757d; /* Bootstrap Gray */ --success-color: #198754; /* Bootstrap Green */ --info-color: #0dcaf0; /* Bootstrap Cyan */ --warning-color: #ffc107; /* Bootstrap Yellow */ --danger-color: #dc3545; /* Bootstrap Red */ --light-color: #f8f9fa; --dark-color: #212529; --border-radius: 0.375rem; --box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075); --box-shadow-lg: 0 0.5rem 1rem rgba(0, 0, 0, 0.15); } body { font-family: 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; background-color: #f0f2f5; /* Slightly different background */ color: #333; font-size: 0.95rem; /* Slightly smaller base font */ } /* ======= Typography ======= */ h1, h2, h3, h4, h5, h6 { font-weight: 600; margin-top: 0; margin-bottom: 0.75rem; color: var(--dark-color); } /* ======= Layout Components ======= */ .main-container { padding-top: 1rem; padding-bottom: 2rem; } .card { border-radius: var(--border-radius); box-shadow: var(--box-shadow); margin-bottom: 1.5rem; border: none; /* Remove default border */ } .card-header { background-color: #fff; /* White header */ border-bottom: 1px solid #e9ecef; padding: 0.75rem 1.25rem; font-weight: 600; } .card-header.bg-primary, .card-header.bg-secondary { /* Keep colored headers */ color: white !important; } .card-header.bg-primary { background-color: var(--primary-color) !important; } .card-header.bg-secondary { background-color: var(--secondary-color) !important; } .card-body { padding: 1.25rem; } .card-footer { padding: 0.75rem 1.25rem; background-color: var(--light-color); border-top: 1px solid #e9ecef; } /* ======= Navigation ======= */ .navbar { padding-top: 0.6rem; padding-bottom: 0.6rem; box-shadow: var(--box-shadow); } .navbar-brand { font-weight: 600; font-size: 1.15rem; } .nav-link { padding: 0.4rem 0.8rem; transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; border-radius: var(--border-radius); } .nav-link:hover { background-color: rgba(255, 255, 255, 0.1); } .nav-link.active { font-weight: 600; background-color: rgba(255, 255, 255, 0.15); } .navbar-dark .navbar-nav .nav-link { color: rgba(255, 255, 255, 0.85); } .navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus { color: #fff; } .navbar-dark .navbar-nav .nav-link.active { color: #fff; } /* ======= Forms ======= */ .form-control, .form-select { border-radius: var(--border-radius); padding: 0.4rem 0.8rem; border: 1px solid #ced4da; transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; font-size: 0.9rem; } .form-control-sm, .form-select-sm { padding: 0.3rem 0.6rem; font-size: 0.8rem; } .form-control:focus, .form-select:focus { border-color: var(--primary-dark); box-shadow: 0 0 0 0.2rem rgba(var(--bs-primary-rgb), 0.25); /* Use BS variable */ } .form-label { margin-bottom: 0.4rem; font-weight: 500; font-size: 0.9rem; } .form-text { color: var(--secondary-color); margin-top: 0.25rem; font-size: 0.8rem; } .form-check-label { font-size: 0.9rem; } /* ======= Login Page ======= */ .login-container { min-height: 100vh; display: flex; align-items: center; justify-content: center; background: linear-gradient(to bottom right, var(--primary-color), var(--primary-dark)); /* Gradient background */ } .login-card { width: 100%; max-width: 420px; /* Slightly wider */ box-shadow: var(--box-shadow-lg); border-radius: 0.5rem; /* More rounded */ } .login-card .card-header { background-color: rgba(255, 255, 255, 0.9); /* Semi-transparent */ border-bottom: none; text-align: center; } .login-card .card-body { padding: 2rem; /* More padding */ } .demo-credentials { background-color: var(--light-color); padding: 0.75rem; border-radius: var(--border-radius); margin-top: 1rem; font-size: 0.85rem; border: 1px solid #e9ecef; } /* ======= Dashboard/Filter Section ======= */ .filter-section .card-body { max-height: calc(100vh - 200px); /* Limit height */ overflow-y: auto; } .filter-heading { font-weight: 600; font-size: 0.85rem; margin-bottom: 0.5rem; color: var(--secondary-color); text-transform: uppercase; } .filter-group { margin-bottom: 1rem; padding-bottom: 0.75rem; border-bottom: 1px solid #eee; } .filter-group:last-child { border-bottom: none; margin-bottom: 0; padding-bottom: 0; } .filter-section .filter-group { padding-bottom: 1rem; /* Ensure consistent padding below groups */ margin-bottom: 1rem; /* Ensure consistent margin below groups */ border-bottom: 1px solid #eee; /* Keep visual separation */ } .filter-section .row > div:last-child .filter-group:last-child, /* Target last group in last div of row */ .filter-section .row > .col-12:last-child .filter-group:last-of-type { /* More specific for last group in last col */ border-bottom: none; /* Remove border from very last group */ margin-bottom: 0; padding-bottom: 0; } /* ======= Tables ======= */ .table { margin-bottom: 0; font-size: 0.9rem; } .table th, .table td { vertical-align: middle; padding: 0.6rem 0.75rem; /* Adjust padding */ } .table th { font-weight: 600; border-top: none; background-color: #f8f9fa; /* Light header */ } .table-hover tbody tr:hover { background-color: rgba(var(--bs-primary-rgb), 0.06); } .table-responsive { border: 1px solid #dee2e6; border-radius: var(--border-radius); } /* ======= Badges ======= */ .badge { padding: 0.3em 0.55em; font-weight: 500; border-radius: 0.25rem; margin: 0 0.1rem; /* Add slight margin */ font-size: 0.75em; /* Relative size */ } /* ======= Visualization Section ======= */ .visualization-card { height: 100%; } .chart-container { position: relative; height: 280px; /* Adjust height */ width: 100%; } canvas { display: block; } /* ======= Job Listings ======= */ .job-card { transition: transform 0.2s ease-in-out, box-shadow 0.2s ease-in-out; height: 100%; } .job-card:hover { transform: translateY(-3px); box-shadow: var(--box-shadow-lg); } .job-title { font-weight: 600; margin-bottom: 0.5rem; color: var(--primary-color); } .job-location { color: var(--secondary-color); font-size: 0.875rem; } .job-skills .badge { margin-bottom: 0.25rem; } /* ======= AI Insights ======= */ #insights-content { white-space: pre-wrap; max-height: 450px; overflow-y: auto; padding: 1rem; background-color: white; border: 1px solid #dee2e6; border-radius: var(--border-radius); font-size: 0.9rem; line-height: 1.6; } #insights-content h6 { font-size: 1rem; margin-top: 1rem; margin-bottom: 0.5rem; border-bottom: 1px solid #eee; padding-bottom: 0.25rem; } #insights-content ul { padding-left: 1.5rem; margin-bottom: 1rem; } #insights-content strong { color: var(--primary-dark); } /* ======= Button Styles ======= */ .btn { padding: 0.4rem 0.8rem; border-radius: var(--border-radius); font-weight: 500; transition: all 0.2s ease-in-out; font-size: 0.9rem; display: inline-flex; /* Align icons nicely */ align-items: center; gap: 0.35rem; /* Space between icon and text */ } .btn i { margin-right: 0.1rem; /* Adjust if gap isn't used */ font-size: 1em; /* Make icon size relative to button text */ } .btn-sm { padding: 0.3rem 0.6rem; font-size: 0.8rem; } /* ======= Modals ======= */ .modal-header { padding: 1rem 1.5rem; border-bottom: 1px solid #dee2e6; } .modal-body { padding: 1.5rem; } .modal-footer { padding: 1rem 1.5rem; border-top: 1px solid #dee2e6; } /* ======= Alerts ======= */ .alert { padding: 0.8rem 1rem; margin-bottom: 1rem; border-radius: var(--border-radius); font-size: 0.9rem; } /* ======= Spinner ======= */ .spinner-border { width: 2rem; height: 2rem; } /* ======= Responsive Adjustments ======= */ @media (max-width: 992px) { /* Use lg breakpoint */ .filter-section .card-body { max-height: none; /* Remove height limit on smaller screens */ overflow-y: visible; } } @media (max-width: 768px) { body { font-size: 0.9rem; } .card-body { padding: 1rem; } .navbar-brand { font-size: 1rem; } .btn { font-size: 0.85rem; padding: 0.35rem 0.7rem; } .table { font-size: 0.85rem; } .table th, .table td { padding: 0.5rem 0.6rem; } .chart-container { height: 250px; } }