bootstrap-dark-theme.css
15.99 KB
/* ============================================
BOOTSTRAP 5 DARK THEME OVERRIDES
WorkersPanel Custom Dark Theme
No Conflicts - Works Harmoniously
============================================ */
/* ============================================
GLOBAL BOOTSTRAP OVERRIDES
============================================ */
/* Reset Bootstrap's light background */
.modal-content,
.dropdown-menu,
.card,
.list-group-item,
.accordion-item,
.offcanvas,
.toast {
background-color: var(--bg-card);
border-color: var(--border);
color: var(--text-main);
}
/* ============================================
MODAL STYLING
============================================ */
.modal-header {
background-color: var(--bg-panel);
border-bottom-color: var(--border);
color: var(--text-main);
}
.modal-body {
background-color: var(--bg-card);
color: var(--text-main);
}
.modal-footer {
background-color: var(--bg-panel);
border-top-color: var(--border);
}
.modal-backdrop {
background-color: rgba(0, 0, 0, 0.8);
}
.modal-backdrop.show {
opacity: 0.8;
}
.btn-close {
filter: invert(1) grayscale(100%) brightness(200%);
opacity: 0.8;
}
.btn-close:hover {
opacity: 1;
}
/* ============================================
FORM CONTROLS
============================================ */
.form-control,
.form-select,
.form-control:disabled,
.form-select:disabled {
background-color: var(--bg-panel);
border-color: var(--border);
color: var(--text-main);
}
.form-control:focus,
.form-select:focus {
background-color: var(--bg-panel);
border-color: var(--accent);
color: var(--text-main);
box-shadow: 0 0 0 0.25rem rgba(255, 140, 26, 0.25);
}
.form-control::placeholder {
color: var(--text-muted);
opacity: 0.7;
}
.form-label {
color: var(--text-main);
font-weight: 600;
margin-bottom: 0.5rem;
}
.form-text {
color: var(--text-muted);
}
/* Form Check (Checkboxes & Radios) */
.form-check-input {
background-color: var(--bg-panel);
border-color: var(--border);
}
.form-check-input:checked {
background-color: var(--accent);
border-color: var(--accent);
}
.form-check-input:focus {
border-color: var(--accent);
box-shadow: 0 0 0 0.25rem rgba(255, 140, 26, 0.25);
}
.form-check-label {
color: var(--text-main);
}
/* Form Switch */
.form-switch .form-check-input {
background-color: var(--bg-panel);
}
.form-switch .form-check-input:checked {
background-color: var(--accent);
}
/* ============================================
FLOATING LABELS
============================================ */
.form-floating > label {
color: var(--text-muted);
}
.form-floating > .form-control:focus ~ label,
.form-floating > .form-control:not(:placeholder-shown) ~ label,
.form-floating > .form-select ~ label {
color: var(--accent);
opacity: 1;
}
.form-floating > .form-control:-webkit-autofill ~ label {
color: var(--accent);
opacity: 1;
}
/* ============================================
BUTTONS (Enhance, don't override)
============================================ */
/* Primary Button */
.btn-primary {
background-color: var(--accent);
border-color: var(--accent);
color: #000;
font-weight: 600;
}
.btn-primary:hover,
.btn-primary:focus {
background-color: var(--accent-hover);
border-color: var(--accent-hover);
color: #000;
}
.btn-primary:active,
.btn-primary.active {
background-color: var(--accent-hover);
border-color: var(--accent-hover);
}
/* Secondary Button */
.btn-secondary {
background-color: rgba(255, 255, 255, 0.05);
border-color: var(--border);
color: var(--text-main);
}
.btn-secondary:hover,
.btn-secondary:focus {
background-color: rgba(255, 255, 255, 0.1);
border-color: var(--accent);
color: var(--text-main);
}
/* Danger Button */
.btn-danger {
background-color: rgba(231, 76, 60, 0.2);
border-color: var(--danger);
color: var(--danger);
}
.btn-danger:hover,
.btn-danger:focus {
background-color: var(--danger);
border-color: var(--danger);
color: #fff;
}
/* Success Button */
.btn-success {
background-color: rgba(16, 185, 129, 0.2);
border-color: var(--success);
color: var(--success);
}
.btn-success:hover,
.btn-success:focus {
background-color: var(--success);
border-color: var(--success);
color: #000;
}
/* Outline Buttons */
.btn-outline-primary {
color: var(--accent);
border-color: var(--accent);
}
.btn-outline-primary:hover {
background-color: var(--accent);
border-color: var(--accent);
color: #000;
}
.btn-outline-secondary {
color: var(--text-main);
border-color: var(--border);
}
.btn-outline-secondary:hover {
background-color: rgba(255, 255, 255, 0.1);
border-color: var(--accent);
color: var(--text-main);
}
/* ============================================
INPUT GROUPS
============================================ */
.input-group-text {
background-color: var(--bg-panel);
border-color: var(--border);
color: var(--text-main);
}
.input-group > .form-control:focus,
.input-group > .form-select:focus {
z-index: 3;
}
/* ============================================
BADGES
============================================ */
.badge {
font-weight: 600;
padding: 0.35em 0.65em;
}
.badge.bg-primary {
background-color: var(--accent) !important;
color: #000;
}
.badge.bg-secondary {
background-color: rgba(255, 255, 255, 0.1) !important;
color: var(--text-main);
}
.badge.bg-success {
background-color: var(--success) !important;
color: #000;
}
.badge.bg-danger {
background-color: var(--danger) !important;
color: #fff;
}
/* ============================================
ALERTS
============================================ */
.alert {
background-color: var(--bg-panel);
border-color: var(--border);
color: var(--text-main);
}
.alert-primary {
background-color: rgba(255, 140, 26, 0.1);
border-color: var(--accent);
color: var(--accent);
}
.alert-success {
background-color: rgba(16, 185, 129, 0.1);
border-color: var(--success);
color: var(--success);
}
.alert-danger {
background-color: rgba(231, 76, 60, 0.1);
border-color: var(--danger);
color: var(--danger);
}
.alert-warning {
background-color: rgba(245, 158, 11, 0.1);
border-color: #f59e0b;
color: #f59e0b;
}
.alert-info {
background-color: rgba(59, 130, 246, 0.1);
border-color: #3b82f6;
color: #3b82f6;
}
.alert-link {
font-weight: 700;
}
/* ============================================
DROPDOWNS
============================================ */
.dropdown-menu {
background-color: var(--bg-card);
border-color: var(--border);
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5);
}
.dropdown-item {
color: var(--text-main);
transition: all 0.2s ease;
}
.dropdown-item:hover,
.dropdown-item:focus {
background-color: rgba(255, 140, 26, 0.1);
color: var(--accent);
}
.dropdown-item:active {
background-color: var(--accent);
color: #000;
}
.dropdown-divider {
border-top-color: var(--border);
}
.dropdown-header {
color: var(--text-muted);
}
/* ============================================
NAVBAR
============================================ */
.navbar {
background-color: var(--bg-panel);
border-bottom: 1px solid var(--border);
}
.navbar-dark .navbar-nav .nav-link {
color: var(--text-main);
}
.navbar-dark .navbar-nav .nav-link:hover,
.navbar-dark .navbar-nav .nav-link:focus {
color: var(--accent);
}
.navbar-dark .navbar-nav .nav-link.active {
color: var(--accent);
}
/* ============================================
CARDS
============================================ */
.card {
background-color: var(--bg-card);
border-color: var(--border);
}
.card-header {
background-color: var(--bg-panel);
border-bottom-color: var(--border);
color: var(--text-main);
font-weight: 600;
}
.card-footer {
background-color: var(--bg-panel);
border-top-color: var(--border);
color: var(--text-muted);
}
.card-title {
color: var(--text-main);
}
.card-text {
color: var(--text-main);
}
/* ============================================
ACCORDION
============================================ */
.accordion-item {
background-color: var(--bg-card);
border-color: var(--border);
}
.accordion-button {
background-color: var(--bg-panel);
color: var(--text-main);
font-weight: 600;
}
.accordion-button:not(.collapsed) {
background-color: var(--bg-card);
color: var(--accent);
box-shadow: none;
}
.accordion-button:focus {
box-shadow: 0 0 0 0.25rem rgba(255, 140, 26, 0.25);
border-color: var(--accent);
}
.accordion-button::after {
filter: invert(1) grayscale(100%) brightness(200%);
}
.accordion-body {
background-color: var(--bg-card);
color: var(--text-main);
}
/* ============================================
PAGINATION
============================================ */
.pagination {
margin-bottom: 0;
}
.page-link {
background-color: var(--bg-panel);
border-color: var(--border);
color: var(--text-main);
}
.page-link:hover {
background-color: rgba(255, 140, 26, 0.1);
border-color: var(--accent);
color: var(--accent);
}
.page-link:focus {
background-color: rgba(255, 140, 26, 0.1);
box-shadow: 0 0 0 0.25rem rgba(255, 140, 26, 0.25);
}
.page-item.active .page-link {
background-color: var(--accent);
border-color: var(--accent);
color: #000;
}
.page-item.disabled .page-link {
background-color: var(--bg-panel);
border-color: var(--border);
color: var(--text-muted);
}
/* ============================================
TABLES
============================================ */
.table {
color: var(--text-main);
border-color: var(--border);
}
.table > :not(caption) > * > * {
background-color: transparent;
border-bottom-color: var(--border);
color: var(--text-main);
}
.table-striped > tbody > tr:nth-of-type(odd) > * {
background-color: rgba(255, 255, 255, 0.02);
}
.table-hover > tbody > tr:hover > * {
background-color: rgba(255, 140, 26, 0.1);
color: var(--text-main);
}
.table-dark {
background-color: var(--bg-panel);
color: var(--text-main);
}
/* ============================================
PROGRESS BARS
============================================ */
.progress {
background-color: var(--bg-panel);
border: 1px solid var(--border);
}
.progress-bar {
background-color: var(--accent);
color: #000;
}
.progress-bar-striped {
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
/* ============================================
SPINNERS
============================================ */
.spinner-border,
.spinner-grow {
color: var(--accent);
}
.spinner-border-sm,
.spinner-grow-sm {
color: var(--accent);
}
/* ============================================
LIST GROUPS
============================================ */
.list-group-item {
background-color: var(--bg-card);
border-color: var(--border);
color: var(--text-main);
}
.list-group-item-action:hover,
.list-group-item-action:focus {
background-color: rgba(255, 140, 26, 0.1);
color: var(--accent);
}
.list-group-item-action:active {
background-color: var(--accent);
color: #000;
}
.list-group-item.active {
background-color: var(--accent);
border-color: var(--accent);
color: #000;
}
/* ============================================
TABS & PILLS
============================================ */
.nav-tabs {
border-bottom-color: var(--border);
}
.nav-tabs .nav-link {
color: var(--text-main);
border-color: transparent;
}
.nav-tabs .nav-link:hover,
.nav-tabs .nav-link:focus {
border-color: var(--border) var(--border) transparent;
color: var(--accent);
}
.nav-tabs .nav-link.active {
background-color: var(--bg-card);
border-color: var(--border) var(--border) var(--bg-card);
color: var(--accent);
}
.nav-pills .nav-link {
color: var(--text-main);
}
.nav-pills .nav-link:hover {
background-color: rgba(255, 140, 26, 0.1);
color: var(--accent);
}
.nav-pills .nav-link.active {
background-color: var(--accent);
color: #000;
}
/* ============================================
TOASTS
============================================ */
.toast {
background-color: var(--bg-card);
border-color: var(--border);
color: var(--text-main);
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5);
}
.toast-header {
background-color: var(--bg-panel);
border-bottom-color: var(--border);
color: var(--text-main);
}
.toast-body {
color: var(--text-main);
}
/* ============================================
POPOVERS & TOOLTIPS
============================================ */
.popover {
background-color: var(--bg-card);
border-color: var(--border);
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5);
}
.popover-header {
background-color: var(--bg-panel);
border-bottom-color: var(--border);
color: var(--text-main);
}
.popover-body {
color: var(--text-main);
}
.tooltip-inner {
background-color: var(--bg-panel);
color: var(--text-main);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.5);
}
.bs-tooltip-top .tooltip-arrow::before,
.bs-tooltip-auto[data-popper-placement^="top"] .tooltip-arrow::before {
border-top-color: var(--bg-panel);
}
.bs-tooltip-end .tooltip-arrow::before,
.bs-tooltip-auto[data-popper-placement^="right"] .tooltip-arrow::before {
border-right-color: var(--bg-panel);
}
.bs-tooltip-bottom .tooltip-arrow::before,
.bs-tooltip-auto[data-popper-placement^="bottom"] .tooltip-arrow::before {
border-bottom-color: var(--bg-panel);
}
.bs-tooltip-start .tooltip-arrow::before,
.bs-tooltip-auto[data-popper-placement^="left"] .tooltip-arrow::before {
border-left-color: var(--bg-panel);
}
/* ============================================
BREADCRUMBS
============================================ */
.breadcrumb {
background-color: var(--bg-panel);
padding: 0.75rem 1rem;
border: 1px solid var(--border);
border-radius: 8px;
}
.breadcrumb-item {
color: var(--text-main);
}
.breadcrumb-item.active {
color: var(--text-muted);
}
.breadcrumb-item + .breadcrumb-item::before {
color: var(--text-muted);
}
.breadcrumb-item a {
color: var(--accent);
text-decoration: none;
}
.breadcrumb-item a:hover {
color: var(--accent-hover);
}
/* ============================================
SCROLLBAR STYLING (Bootstrap components)
============================================ */
.modal-body::-webkit-scrollbar,
.offcanvas-body::-webkit-scrollbar,
.dropdown-menu::-webkit-scrollbar {
width: 8px;
height: 8px;
}
.modal-body::-webkit-scrollbar-track,
.offcanvas-body::-webkit-scrollbar-track,
.dropdown-menu::-webkit-scrollbar-track {
background: var(--bg-panel);
border-radius: 4px;
}
.modal-body::-webkit-scrollbar-thumb,
.offcanvas-body::-webkit-scrollbar-thumb,
.dropdown-menu::-webkit-scrollbar-thumb {
background: var(--border);
border-radius: 4px;
}
.modal-body::-webkit-scrollbar-thumb:hover,
.offcanvas-body::-webkit-scrollbar-thumb:hover,
.dropdown-menu::-webkit-scrollbar-thumb:hover {
background: var(--accent);
}
/* ============================================
TEXT UTILITIES (Enhance)
============================================ */
.text-muted {
color: var(--text-muted) !important;
}
.text-primary {
color: var(--accent) !important;
}
.text-success {
color: var(--success) !important;
}
.text-danger {
color: var(--danger) !important;
}
/* ============================================
BACKGROUND UTILITIES (Enhance)
============================================ */
.bg-primary {
background-color: var(--accent) !important;
color: #000 !important;
}
.bg-secondary {
background-color: rgba(255, 255, 255, 0.1) !important;
color: var(--text-main) !important;
}
.bg-success {
background-color: var(--success) !important;
color: #000 !important;
}
.bg-danger {
background-color: var(--danger) !important;
color: #fff !important;
}
/* ============================================
BORDER UTILITIES (Enhance)
============================================ */
.border {
border-color: var(--border) !important;
}
.border-primary {
border-color: var(--accent) !important;
}
.border-success {
border-color: var(--success) !important;
}
.border-danger {
border-color: var(--danger) !important;
}