diff --git a/core/templates/core/payroll_dashboard.html b/core/templates/core/payroll_dashboard.html
index d08e1f4..618cb92 100644
--- a/core/templates/core/payroll_dashboard.html
+++ b/core/templates/core/payroll_dashboard.html
@@ -282,7 +282,7 @@
Overdue
{% endif %}
{% if wd.has_loan %}
- Loan
+ Loan
{% endif %}
{{ wd.unpaid_count }} |
diff --git a/static/css/custom.css b/static/css/custom.css
index f905565..d03e7a2 100644
--- a/static/css/custom.css
+++ b/static/css/custom.css
@@ -652,6 +652,7 @@ a:hover {
.table {
color: var(--text-primary);
--bs-table-bg: transparent;
+ --bs-table-color: var(--text-primary);
}
.table > thead {
@@ -1087,6 +1088,98 @@ a:hover {
.cal-entry { display: none; }
}
+/* ===================================================================
+ DARK MODE — Bootstrap utility overrides
+ Bootstrap's utility classes (.text-dark, .bg-warning, .table-light,
+ .form-control:disabled, etc.) use hardcoded colours that look wrong
+ on dark backgrounds. These overrides fix contrast issues.
+ =================================================================== */
+
+/* .text-dark — Bootstrap uses #212529, unreadable on dark bg */
+:root .text-dark,
+:root .text-dark.ms-1 {
+ color: var(--text-primary) !important;
+}
+
+/* Loan badge: yellow bg + white text for contrast (not text-dark) */
+.badge.bg-warning {
+ color: #000 !important;
+}
+
+/* table-light (used in thead) — fix for dark mode */
+:root .table-light {
+ --bs-table-bg: var(--bg-inset);
+ --bs-table-color: var(--text-secondary);
+ --bs-table-border-color: var(--border-default);
+}
+
+[data-theme="light"] .table-light {
+ --bs-table-bg: #f0f0f5;
+ --bs-table-color: #4a4a5a;
+}
+
+/* Disabled form controls — visible text in dark mode */
+.form-control:disabled,
+.form-select:disabled {
+ background-color: var(--bg-inset);
+ color: var(--text-secondary);
+ opacity: 0.7;
+ border-color: var(--border-default);
+}
+
+/* form-select option dropdown — ensure readable in dark mode */
+.form-select option {
+ background-color: var(--bg-card);
+ color: var(--text-primary);
+}
+
+/* btn-close — visible X button on dark backgrounds */
+:root .btn-close {
+ filter: invert(1) grayscale(100%) brightness(200%);
+}
+
+[data-theme="light"] .btn-close {
+ filter: none;
+}
+
+/* Bootstrap text utilities that clash with dark mode */
+:root .text-primary {
+ color: var(--color-info) !important;
+}
+
+:root .text-success {
+ color: var(--color-success) !important;
+}
+
+:root .text-danger {
+ color: var(--color-danger) !important;
+}
+
+:root .text-warning {
+ color: var(--color-warning) !important;
+}
+
+:root .text-info {
+ color: var(--color-info) !important;
+}
+
+:root .text-muted {
+ color: var(--text-secondary) !important;
+}
+
+/* btn-secondary in modals — visible in dark mode */
+.btn-secondary {
+ background-color: var(--bg-elevated);
+ border-color: var(--border-strong);
+ color: var(--text-primary);
+}
+
+.btn-secondary:hover {
+ background-color: var(--border-default);
+ border-color: var(--border-strong);
+ color: var(--text-primary);
+}
+
/* ===================================================================
PRINT STYLES
=================================================================== */