From ea581c0197a1acc875a2b6097b26e0fb81daf5e1 Mon Sep 17 00:00:00 2001 From: Whispering Wind <151555003+ReturnFI@users.noreply.github.com> Date: Thu, 1 May 2025 21:49:27 +0330 Subject: [PATCH] feat: Enhance UI/UX with improved CSS for light/dark modes --- core/scripts/webpanel/assets/css/custom.css | 566 +++++++++++++++++++- 1 file changed, 557 insertions(+), 9 deletions(-) diff --git a/core/scripts/webpanel/assets/css/custom.css b/core/scripts/webpanel/assets/css/custom.css index 874508a..c90a95f 100644 --- a/core/scripts/webpanel/assets/css/custom.css +++ b/core/scripts/webpanel/assets/css/custom.css @@ -1,9 +1,557 @@ -/* Center the qrcodesContainer */ -#qrcodesContainer { - text-align: center; - } - - /* Style the config type text */ - .config-type-text { - font-weight: 600; - } \ No newline at end of file +/* -------------------------------------------------- */ +/* Global Enhancements */ +/* -------------------------------------------------- */ + +:root { + /* Light Mode Colors */ + --primary-color: #007bff; + --primary-hover-color: #0056b3; + --primary-light-color: #cce5ff; /* Lighter shade for backgrounds/borders */ + --secondary-color: #6c757d; + --success-color: #28a745; + --info-color: #17a2b8; + --warning-color: #ffc107; + --danger-color: #dc3545; + --light-bg: #f4f6f9; /* AdminLTE default light background */ + --white-bg: #ffffff; + --border-color-light: #dee2e6; + --text-dark: #1f2d3d; /* Slightly softer black */ + --text-muted-light: #6c757d; + --link-light-color: var(--primary-color); + --link-light-hover: var(--primary-hover-color); + + /* Dark Mode Colors (Navy Theme) */ + --dark-navy-deep: #001a33; + --dark-navy-base: #001f3f; + --dark-navy-medium: #0a2f57; + --dark-navy-light: #0d3c6e; + --dark-navy-card: #1a3a5a; + --dark-navy-table: #15304a; + --dark-navy-accent: #1f4a75; + --dark-navy-border: #2a5a8a; + --dark-navy-hover: #3a6aa0; + --dark-text-primary: #e9ecef; + --dark-text-secondary: #ced4da; + --dark-text-muted: #adb5bd; + --dark-link-color: #58a6ff; + --dark-link-hover: #88c0ff; +} + +html { + scroll-behavior: smooth; +} + +body { + font-family: 'Source Sans Pro', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; + font-weight: 400; + line-height: 1.5; + -webkit-font-smoothing: antialiased; +-moz-osx-font-smoothing: grayscale; +} + +/* Transitions & Corners */ +.btn, .form-control, .card, .modal-content, .alert, .small-box, .info-box, .nav-link, .brand-link { + border-radius: 0.35rem; + transition: all 0.2s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, background-color 0.15s ease-in-out, color 0.15s ease-in-out; +} + +a { + text-decoration: none; +} + +/* -------------------------------------------------- */ +/* Colorful Light Mode */ +/* -------------------------------------------------- */ + +body:not(.dark-mode) { + background-color: var(--light-bg); + color: var(--text-dark); +} + +/* --- Navbar (Light - Primary Accent) --- */ +body:not(.dark-mode) .main-header.navbar { + background-color: var(--white-bg); + border-bottom: 1px solid var(--border-color-light); + border-top: 3px solid var(--primary-color); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08); +} +body:not(.dark-mode) .main-header .navbar-nav .nav-link { + color: var(--text-muted-light); +} +body:not(.dark-mode) .main-header .navbar-nav .nav-link:hover, +body:not(.dark-mode) .main-header .navbar-nav .nav-link:focus { + color: var(--primary-hover-color); +} +body:not(.dark-mode) #darkModeIcon.fa-sun { + color: var(--warning-color); +} + + +/* --- Sidebar (Using Default Dark AdminLTE Theme) --- */ + +body:not(.dark-mode) .main-sidebar { background-color: #343a40; } +body:not(.dark-mode) .brand-link { + border-bottom-color: rgba(255, 255, 255, 0.1); +} +body:not(.dark-mode) .brand-link:hover { + background-color: rgba(255, 255, 255, 0.05); +} +body:not(.dark-mode) .sidebar .nav-pills .nav-link { + color: #c2c7d0; +} +body:not(.dark-mode) .sidebar .nav-pills .nav-link:hover { + background-color: rgba(255, 255, 255, 0.05); + color: #fff; +} +body:not(.dark-mode) .sidebar .nav-pills .nav-link.active { + background-color: var(--primary-color); + color: #ffffff; + box-shadow: 0 2px 5px rgba(0, 123, 255, 0.3); +} +body:not(.dark-mode) .sidebar .nav-treeview > .nav-item > .nav-link.active { + background-color: rgba(0, 123, 255, 0.9); + box-shadow: none; +} + + +/* --- Content & Cards (Light - Accent Borders) --- */ +body:not(.dark-mode) .content-wrapper { + background-color: var(--light-bg); +} +body:not(.dark-mode) .card { + background-color: var(--white-bg); + border: 1px solid var(--border-color-light); + border-top: 3px solid var(--primary-color); /* Primary color top border */ + box-shadow: 0 3px 8px rgba(0, 0, 0, 0.06); + margin-bottom: 1.5rem; +} +/* Override top border for specific card types if needed */ +body:not(.dark-mode) .card.card-outline-success { border-top-color: var(--success-color); } +body:not(.dark-mode) .card.card-outline-info { border-top-color: var(--info-color); } +body:not(.dark-mode) .card.card-outline-warning { border-top-color: var(--warning-color); } +body:not(.dark-mode) .card.card-outline-danger { border-top-color: var(--danger-color); } + +body:not(.dark-mode) .card-header { + background-color: transparent; + border-bottom: 1px solid var(--border-color-light); + padding: 0.75rem 1.25rem; + color: var(--text-dark); /* Ensure header text is dark */ +} +body:not(.dark-mode) .card-title { + font-weight: 600; + color: inherit; /* Inherit from card-header */ +} +body:not(.dark-mode) .card-body { + padding: 1.25rem; +} + +/* --- Forms (Light - Standard) --- */ +body:not(.dark-mode) .form-control { + border: 1px solid #ced4da; + background-color: var(--white-bg); + color: var(--text-dark); +} +body:not(.dark-mode) .form-control:focus { + border-color: #80bdff; + box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); + background-color: var(--white-bg); /* Keep bg white on focus */ +} +body:not(.dark-mode) .input-group-text { + background-color: #e9ecef; + border: 1px solid #ced4da; + color: var(--text-muted-light); +} + +/* --- Tables (Light - Clean & Clear) --- */ +body:not(.dark-mode) .table { + background-color: var(--white-bg); + color: var(--text-dark); + border: 1px solid var(--border-color-light); +} +body:not(.dark-mode) .table thead th { + background-color: #f8f9fa; + color: var(--text-muted-light); + border-bottom: 2px solid var(--border-color-light); + border-top: none; + font-weight: 600; + white-space: nowrap; + padding: 0.8rem 1rem; /* Adjust padding */ +} +body:not(.dark-mode) .table tbody td { + border-top: 1px solid var(--border-color-light); + vertical-align: middle; + padding: 0.7rem 1rem; /* Adjust padding */ +} +body:not(.dark-mode) .table-hover tbody tr:hover { + background-color: var(--primary-light-color) !important; /* Use light primary for hover */ + color: var(--primary-hover-color); /* Darker primary text on hover */ +} +/* Status Colors (More Vibrant) */ +body:not(.dark-mode) .table .text-success { color: #1a7941 !important; } +body:not(.dark-mode) .table .text-danger { color: #c82333 !important; } +body:not(.dark-mode) .table .text-secondary { color: #5a6268 !important; } +body:not(.dark-mode) .table .text-info { color: #117a8b !important; } +body:not(.dark-mode) .table .text-warning { color: #e0a800 !important; } + +/* --- Modals (Light - Standard) --- */ +body:not(.dark-mode) .modal-content { + background-color: var(--white-bg); + border: 1px solid rgba(0,0,0,.2); + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.15); +} +body:not(.dark-mode) .modal-header { border-bottom-color: var(--border-color-light); } +body:not(.dark-mode) .modal-title { font-weight: 500; color: var(--text-dark); } +body:not(.dark-mode) .modal-footer { border-top-color: var(--border-color-light); } + +/* --- Small Boxes (Dashboard - Light & Colorful) --- */ +/* Retain original colorful small boxes */ +body:not(.dark-mode) .small-box { + box-shadow: 0 3px 8px rgba(0, 0, 0, 0.1); + color: #fff !important; + border-radius: 0.35rem; /* Match global radius */ +} +body:not(.dark-mode) .small-box .inner { + padding: 15px; /* Increase padding slightly */ +} +body:not(.dark-mode) .small-box .inner h3, +body:not(.dark-mode) .small-box .inner p { + color: #fff !important; + text-shadow: 1px 1px 1px rgba(0,0,0,0.15); +} +body:not(.dark-mode) .small-box .icon { + color: rgba(0,0,0,0.15); + font-size: 60px; /* Standard icon size */ + top: 15px; + right: 15px; +} +body:not(.dark-mode) .small-box:hover { + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.15); + transform: translateY(-2px); +} +body:not(.dark-mode) .small-box:hover .icon { + font-size: 65px; /* Slightly larger on hover */ + opacity: 0.7; +} + +/* --- Footer (Light - Cleaner) --- */ +body:not(.dark-mode) .main-footer { + background-color: var(--white-bg); + border-top: 1px solid var(--border-color-light); + color: var(--text-muted-light); + padding: 0.8rem 1rem; + font-size: 0.9rem; +} +body:not(.dark-mode) .main-footer a { + color: var(--link-light-color); + font-weight: 600; +} +body:not(.dark-mode) .main-footer a:hover { + color: var(--link-light-hover); +} + +/* -------------------------------------------------- */ +/* Modern Dark Mode */ +/* (Minimal Changes from Previous) */ +/* -------------------------------------------------- */ + +body.dark-mode { + background: linear-gradient(180deg, var(--dark-navy-base) 0%, var(--dark-navy-medium) 100%) !important; + color: var(--dark-text-secondary); +} +/* Dark Text Colors */ +body.dark-mode h1, body.dark-mode h2, body.dark-mode h3, body.dark-mode h4, body.dark-mode h5, body.dark-mode h6, +body.dark-mode .h1, body.dark-mode .h2, body.dark-mode .h3, body.dark-mode .h4, body.dark-mode .h5, body.dark-mode .h6, +body.dark-mode .card-title, body.dark-mode .modal-title, body.dark-mode .brand-text, body.dark-mode label { + color: var(--dark-text-primary) !important; +} +body.dark-mode .text-muted { color: var(--dark-text-muted) !important; } + +/* Dark Navbar */ +body.dark-mode .main-header.navbar { + background-color: var(--dark-navy-light) !important; + border-bottom: 1px solid var(--dark-navy-border) !important; + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3); +} +body.dark-mode .main-header .navbar-nav .nav-link { color: var(--dark-text-secondary); } +body.dark-mode .main-header .navbar-nav .nav-link:hover { color: var(--dark-text-primary); } +/* Style the active dark mode toggle icon */ +body.dark-mode #darkModeIcon.fa-moon { + color: var(--info-color); +} + +/* Dark Sidebar */ +body.dark-mode .main-sidebar { background-color: var(--dark-navy-deep) !important; } +body.dark-mode .brand-link { border-bottom: 1px solid var(--dark-navy-accent) !important; } +body.dark-mode .sidebar .nav-pills .nav-link { color: var(--dark-text-secondary); } +body.dark-mode .sidebar .nav-pills .nav-link.active, +body.dark-mode .sidebar .nav-pills .nav-link:hover, +body.dark-mode .sidebar .nav-pills .nav-link:focus { + background-color: var(--dark-navy-accent); + color: var(--dark-text-primary); +} + +/* Dark Content & Cards */ +body.dark-mode .content-wrapper { background-color: transparent !important; } +body.dark-mode .card { + background-color: var(--dark-navy-card) !important; + border: 1px solid var(--dark-navy-border); + border-top: none; /* Remove colored top border in dark mode */ + color: var(--dark-text-secondary); + box-shadow: 0 3px 8px rgba(0, 0, 0, 0.25); + margin-bottom: 1.5rem; +} +body.dark-mode .card-header { + background-color: rgba(255,255,255, 0.03); /* Subtle header background */ + border-bottom: 1px solid var(--dark-navy-border) !important; + color: var(--dark-text-primary); + padding: 0.75rem 1.25rem; +} +body.dark-mode .card-body { padding: 1.25rem; } + +/* Dark Forms */ +body.dark-mode .form-control { + background-color: var(--dark-navy-light); + border: 1px solid var(--dark-navy-hover); + color: var(--dark-text-secondary); +} +body.dark-mode .form-control:focus { + background-color: var(--dark-navy-accent); + border-color: var(--dark-link-color); + color: var(--dark-text-primary); + box-shadow: 0 0 0 0.2rem rgba(88, 166, 255, 0.25); +} +body.dark-mode .input-group-text { + background-color: var(--dark-navy-border); + border: 1px solid var(--dark-navy-hover); + color: var(--dark-text-secondary); +} + +/* Dark Modals */ +body.dark-mode .modal-content { + background-color: var(--dark-navy-light); + border: 1px solid var(--dark-navy-hover); + color: var(--dark-text-secondary); + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.4); +} +body.dark-mode .modal-header { border-bottom: 1px solid var(--dark-navy-hover); } +body.dark-mode .modal-header .close { color: var(--dark-text-secondary); text-shadow: none; opacity: 0.8; } +body.dark-mode .modal-header .close:hover { opacity: 1; } +body.dark-mode .modal-footer { border-top: 1px solid var(--dark-navy-hover); } + +/* Dark Tables */ +body.dark-mode .table { + color: var(--dark-text-secondary); + background-color: var(--dark-navy-table); + border: 1px solid var(--dark-navy-border); +} +body.dark-mode .table thead th { + background-color: var(--dark-navy-accent); + color: var(--dark-text-primary); + border-color: var(--dark-navy-border) !important; + border-bottom-width: 2px; + font-weight: 600; + white-space: nowrap; + padding: 0.8rem 1rem; +} +body.dark-mode .table tbody tr { border-color: var(--dark-navy-border) !important; } +body.dark-mode .table tbody td { + border-color: var(--dark-navy-border) !important; + vertical-align: middle; + padding: 0.7rem 1rem; +} +body.dark-mode .table-hover tbody tr:hover { + background-color: var(--dark-navy-border) !important; + color: var(--dark-text-primary); +} +/* Dark Status Colors */ +body.dark-mode .table .text-success { color: #34d399 !important; } +body.dark-mode .table .text-danger { color: #f87171 !important; } +body.dark-mode .table .text-secondary { color: #9ca3af !important; } +body.dark-mode .table .text-info { color: #60a5fa !important; } +body.dark-mode .table .text-warning { color: #facc15 !important; } + +/* Dark Small Boxes */ +body.dark-mode .small-box { + background-color: var(--dark-navy-card); + color: var(--dark-text-primary) !important; + border: 1px solid var(--dark-navy-border); + box-shadow: 0 3px 8px rgba(0, 0, 0, 0.3); + border-radius: 0.35rem; +} +body.dark-mode .small-box .inner { padding: 15px; } +body.dark-mode .small-box .inner h3 { color: var(--dark-text-primary) !important; font-weight: 600; } +body.dark-mode .small-box .inner p { color: var(--dark-text-secondary) !important; } +body.dark-mode .small-box .icon { color: rgba(255, 255, 255, 0.1); transition: all .3s linear; font-size: 60px; top: 15px; right: 15px; } +body.dark-mode .small-box:hover { background-color: var(--dark-navy-border); } +body.dark-mode .small-box:hover .icon { color: rgba(255, 255, 255, 0.2); } +/* Dark status box overrides */ +body.dark-mode .small-box.bg-success { background-color: #1e6e3a !important; border-color: #28a745 !important; } +body.dark-mode .small-box.bg-danger { background-color: #8b2a32 !important; border-color: #dc3545 !important; } +body.dark-mode .small-box.bg-success .icon, body.dark-mode .small-box.bg-danger .icon { color: rgba(255,255,255,0.2) !important; } +body.dark-mode .small-box.bg-success:hover { background-color: #28a745 !important; } +body.dark-mode .small-box.bg-danger:hover { background-color: #dc3545 !important; } + +/* Dark Checkbox/Radio */ +body.dark-mode .icheck-primary > input:first-child:checked + label::before, +body.dark-mode .icheck-primary > input:first-child:checked + input[type=hidden] + label::before { background-color: var(--dark-navy-hover); border-color: var(--dark-navy-hover); } +body.dark-mode .custom-control-input:checked ~ .custom-control-label::before { background-color: var(--dark-navy-hover); border-color: var(--dark-navy-hover); } + +/* Dark Footer */ +body.dark-mode .main-footer { + background-color: var(--dark-navy-deep) !important; + border-top: 1px solid var(--dark-navy-accent) !important; + color: var(--dark-text-muted); + padding: 0.8rem 1rem; + font-size: 0.9rem; +} +body.dark-mode .main-footer a { color: var(--dark-link-color); font-weight: 600;} +body.dark-mode .main-footer a:hover { color: var(--dark-link-hover); } + + +/* -------------------------------------------------- */ +/* Enhanced Buttons (Both Modes) */ +/* -------------------------------------------------- */ + +.btn { + border-width: 1px; + font-weight: 600; + padding: 0.4rem 0.9rem; + font-size: 0.875rem; + box-shadow: 0 1px 2px rgba(0,0,0,0.05); + letter-spacing: 0.5px; /* Add slight letter spacing */ +} +.btn:hover { + transform: translateY(-1px); + box-shadow: 0 3px 6px rgba(0,0,0,0.1); +} +.btn:active, .btn:focus { + transform: translateY(0px); + box-shadow: 0 1px 1px rgba(0,0,0,0.05) inset; /* Inset shadow on active */ + outline: none !important; +} +.btn-sm { + padding: 0.25rem 0.6rem; + font-size: 0.75rem; +} +/* Light mode button colors use AdminLTE defaults via CSS vars where appropriate */ +.btn-primary { background-color: var(--primary-color); border-color: var(--primary-color); color: #fff;} +.btn-primary:hover { background-color: var(--primary-hover-color); border-color: var(--primary-hover-color); } +/* Define others if overriding needed */ + +/* --- Dark Mode Button Overrides --- */ +body.dark-mode .btn { + border-width: 1px; + box-shadow: 0 1px 2px rgba(0,0,0,0.15); +} +body.dark-mode .btn:hover { + transform: translateY(-1px); + box-shadow: 0 3px 6px rgba(0,0,0,0.25); +} +body.dark-mode .btn:active { + transform: translateY(0px); + box-shadow: 0 1px 1px rgba(0,0,0,0.15) inset; +} +/* Dark Mode specific button colors */ +body.dark-mode .btn-primary { background: linear-gradient(180deg, #4a7ab0 0%, var(--dark-navy-hover) 100%); border-color: var(--dark-navy-hover); color: #ffffff; } +body.dark-mode .btn-primary:hover { background: linear-gradient(180deg, #5a8ac0 0%, #4a7ab0 100%); border-color: #4a7ab0; } +body.dark-mode .btn-secondary { background-color: #5a6268; border-color: #5a6268; color: var(--dark-text-primary); } +body.dark-mode .btn-secondary:hover { background-color: #6c757d; border-color: #6c757d; } +body.dark-mode .btn-success { background-color: #218838; border-color: #218838; color: #ffffff; } +body.dark-mode .btn-success:hover { background-color: #28a745; border-color: #28a745; } +body.dark-mode .btn-danger { background-color: #c82333; border-color: #c82333; color: #ffffff; } +body.dark-mode .btn-danger:hover { background-color: #dc3545; border-color: #dc3545; } +body.dark-mode .btn-warning { background-color: #e0a800; border-color: #e0a800; color: #212529; } +body.dark-mode .btn-warning:hover { background-color: #ffc107; border-color: #ffc107; } +body.dark-mode .btn-info { background-color: #138496; border-color: #138496; color: #ffffff; } +body.dark-mode .btn-info:hover { background-color: #17a2b8; border-color: #17a2b8; } +body.dark-mode .btn-default { background-color: var(--dark-navy-border); border-color: var(--dark-navy-hover); color: var(--dark-text-primary); } +body.dark-mode .btn-default:hover { background-color: var(--dark-navy-hover); border-color: #4a7ab0; color: #ffffff; } + + +/* -------------------------------------------------- */ +/* QR Code Modal Styling */ +/* -------------------------------------------------- */ + +#qrcodeModal .modal-dialog { max-width: fit-content; } +#qrcodesContainer { display: flex; flex-wrap: wrap; justify-content: center; gap: 25px; padding: 20px; } + +/* QR Code Card styling (Light/Dark Base) */ +#qrcodesContainer .card { + background-color: var(--white-bg); /* Base light */ + border: 1px solid var(--border-color-light); + border-top: none; /* Remove colored border inherited */ + color: var(--text-dark); + margin-bottom: 0; + box-shadow: 0 4px 10px rgba(0,0,0,0.1); + transition: transform 0.2s ease-in-out, box-shadow 0.2s ease-in-out; + text-align: center; /* Center content */ +} +#qrcodesContainer .card:hover { + transform: translateY(-4px) scale(1.02); + box-shadow: 0 6px 15px rgba(0,0,0,0.15); +} +#qrcodesContainer .card-body { padding: 15px 20px; } +#qrcodesContainer .config-type-text { + font-weight: 600; margin-top: 12px; color: #495057; font-size: 0.9rem; +} +/* Ensure QR canvas is block to center within card */ +#qrcodesContainer .mx-auto canvas { + display: block !important; +} + + +/* QR Code Dark Mode Card Overrides */ +body.dark-mode #qrcodesContainer .card { + background-color: #fdfdfe; /* Keep light for scanning */ + border: 1px solid #bbb; + color: var(--text-dark); + box-shadow: 0 4px 10px rgba(0,0,0,0.2); +} +body.dark-mode #qrcodesContainer .card:hover { + box-shadow: 0 6px 15px rgba(0,0,0,0.3); +} +body.dark-mode #qrcodesContainer .config-type-text { color: #ffffff; } + + +/* -------------------------------------------------- */ +/* SweetAlert2 Styling (Both) */ +/* -------------------------------------------------- */ +.swal2-popup { border-radius: 0.4rem; box-shadow: 0 10px 30px rgba(0,0,0,0.1); } +.swal2-title { font-weight: 600; } +.swal2-confirm, .swal2-cancel, .swal2-deny { border-radius: 0.3rem !important; font-weight: 600 !important; padding: 0.5rem 1.2rem !important; box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important; transition: all 0.2s ease-in-out !important; } +.swal2-confirm:hover, .swal2-cancel:hover, .swal2-deny:hover { transform: translateY(-1px); box-shadow: 0 3px 6px rgba(0,0,0,0.1) !important; } + +/* Light Swal */ +body:not(.dark-mode) .swal2-confirm { background-color: var(--primary-color) !important; } +body:not(.dark-mode) .swal2-cancel { background-color: var(--danger-color) !important; } +body:not(.dark-mode) .swal2-deny { background-color: var(--secondary-color) !important; } + +/* Dark Swal */ +body.dark-mode .swal2-popup { background-color: var(--dark-navy-light) !important; color: var(--dark-text-secondary) !important; border: 1px solid var(--dark-navy-hover); box-shadow: 0 10px 30px rgba(0,0,0,0.4); } +body.dark-mode .swal2-title { color: var(--dark-text-primary) !important; } +body.dark-mode .swal2-html-container { color: var(--dark-text-secondary) !important; } +/* Dark Swal Buttons */ +body.dark-mode .swal2-confirm { background: linear-gradient(180deg, #4a7ab0 0%, var(--dark-navy-hover) 100%) !important; border-color: var(--dark-navy-hover) !important; color: #ffffff !important; } +body.dark-mode .swal2-confirm:hover { background: linear-gradient(180deg, #5a8ac0 0%, #4a7ab0 100%) !important; border-color: #4a7ab0 !important; } +body.dark-mode .swal2-cancel { background-color: #c82333 !important; border-color: #c82333 !important; color: #ffffff !important; } +body.dark-mode .swal2-cancel:hover { background-color: #dc3545 !important; border-color: #dc3545 !important; } +body.dark-mode .swal2-deny { background-color: #5a6268 !important; border-color: #5a6268 !important; color: var(--dark-text-primary) !important; } +body.dark-mode .swal2-deny:hover { background-color: #6c757d !important; border-color: #6c757d !important; } +/* Dark Swal Icons */ +body.dark-mode .swal2-icon.swal2-success .swal2-success-line-tip, body.dark-mode .swal2-icon.swal2-success .swal2-success-line-long { background-color: #34d399 !important; } +body.dark-mode .swal2-icon.swal2-success .swal2-success-ring { border-color: rgba(52, 211, 153, 0.3) !important; } +body.dark-mode .swal2-icon.swal2-error { border-color: #f87171 !important; color: #f87171 !important; } +body.dark-mode .swal2-icon.swal2-warning { border-color: #facc15 !important; color: #facc15 !important; } +body.dark-mode .swal2-icon.swal2-info { border-color: #60a5fa !important; color: #60a5fa !important; } +body.dark-mode .swal2-icon.swal2-question { border-color: #9ca3af !important; color: #9ca3af !important; } + +/* -------------------------------------------------- */ +/* Misc Tweaks */ +/* -------------------------------------------------- */ +.content-header { padding-bottom: 0.5rem; } +.content-header h1 { font-weight: 300; margin-bottom: 0.5rem; } +.content-header h1 small { font-size: 60%; font-weight: 300; color: var(--text-muted-light); } +body.dark-mode .content-header h1 small { color: var(--dark-text-muted); } + +.table-responsive { border: none; } +.cursor-pointer { cursor: pointer; }