Files
Blitz-Proxy/core/scripts/webpanel/assets/css/custom.css

685 lines
27 KiB
CSS

/* -------------------------------------------------- */
/* 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 */
position: sticky;
top: 0;
z-index: 10;
background: rgba(255, 255, 255, 0.75); /* semi-transparent for bokeh */
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px); /* Safari support */
transition: background 0.3s;
}
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;
position: sticky;
top: 0;
z-index: 10;
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px); /* Safari support */
transition: background 0.3s;
}
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; }
/* -------------------------------------------------- */
/* JSONEditor Dark Mode Styling */
/* -------------------------------------------------- */
body.dark-mode .jsoneditor {
border: 1px solid var(--dark-navy-border) !important;
}
body.dark-mode .jsoneditor-menu {
background-color: var(--dark-navy-light) !important;
border-bottom: 1px solid var(--dark-navy-border) !important;
}
body.dark-mode .jsoneditor-menu > button,
body.dark-mode .jsoneditor-menu > div.jsoneditor-modes > button {
background-color: #639dd6;
border: 1px solid #fff;
color: var(--dark-text-primary);
opacity: 0.8;
}
body.dark-mode .jsoneditor-menu > button:hover,
body.dark-mode .jsoneditor-menu > div.jsoneditor-modes > button:hover {
background-color: var(--dark-navy-hover);
color: #fff;
opacity: 1;
}
body.dark-mode .jsoneditor-menu > button:active,
body.dark-mode .jsoneditor-menu > div.jsoneditor-modes > button:active {
background-color: var(--dark-navy-border);
}
body.dark-mode .jsoneditor-menu > div.jsoneditor-modes > button.jsoneditor-selected,
body.dark-mode .jsoneditor-menu > div.jsoneditor-modes > button.jsoneditor-selected:hover {
background-color: var(--dark-link-color) !important;
color: #ffffff !important;
border-color: var(--dark-link-hover);
}
body.dark-mode .jsoneditor-tree table,
body.dark-mode div.jsoneditor-tree table {
background-color: var(--dark-navy-card);
}
body.dark-mode .jsoneditor td,
body.dark-mode .jsoneditor th,
body.dark-mode .jsoneditor tr {
border-color: var(--dark-navy-border) !important;
}
body.dark-mode .jsoneditor-field,
body.dark-mode div.jsoneditor-field {
color: var(--dark-text-secondary);
}
body.dark-mode .jsoneditor-value,
body.dark-mode div.jsoneditor-value {
color: var(--dark-text-primary);
}
body.dark-mode .jsoneditor-value.jsoneditor-string { color: #a5d6ff; }
body.dark-mode .jsoneditor-value.jsoneditor-number { color: #fcc28c; }
body.dark-mode .jsoneditor-value.jsoneditor-boolean { color: #b39ddb; }
body.dark-mode .jsoneditor-value.jsoneditor-null { color: var(--dark-text-muted); }
body.dark-mode tr.jsoneditor-highlight,
body.dark-mode tr.jsoneditor-selected {
background-color: var(--dark-navy-hover) !important;
}
body.dark-mode .jsoneditor-tree .jsoneditor-treepath {
border-left: 1px dotted var(--dark-navy-hover);
}
body.dark-mode .ace-jsoneditor .ace_scroller {
background-color: #343a40 !important;
}
body.dark-mode .ace_gutter {
background: var(--dark-navy-medium) !important;
color: var(--dark-text-muted) !important;
}
body.dark-mode .ace_gutter-active-line {
background-color: var(--dark-navy-accent) !important;
}
body.dark-mode .ace_marker-layer .ace_active-line {
background: var(--dark-navy-light) !important;
}
body.dark-mode .ace_cursor {
color: #f8f8f0 !important;
border-left: 2px solid #f8f8f0 !important;
}
body.dark-mode .ace_marker-layer .ace_selection {
background: var(--dark-navy-hover) !important;
}
body.dark-mode .ace_keyword { color: #ff79c6 !important; }
body.dark-mode .ace_string { color: #f1fa8c !important; }
body.dark-mode .ace_variable, body.dark-mode .ace_variable.ace_language { color: #8be9fd !important; }
body.dark-mode .ace_constant.ace_numeric { color: #bd93f9 !important; }
body.dark-mode .ace_constant.ace_language { color: #bd93f9 !important; }
body.dark-mode .ace_support.ace_function { color: #8be9fd !important; }
body.dark-mode .ace_comment { color: #6272a4 !important; }
body.dark-mode .ace_punctuation.ace_operator { color: #ff79c6 !important; }
body.dark-mode .ace_paren { color: var(--dark-text-primary) !important; }
body.dark-mode .jsoneditor-search {
background-color: var(--dark-navy-light);
border-top: 1px solid var(--dark-navy-border);
}
body.dark-mode .jsoneditor-search input {
background-color: var(--dark-navy-medium);
border: 1px solid var(--dark-navy-border);
color: var(--dark-text-primary);
}
body.dark-mode .jsoneditor-search input:focus {
border-color: var(--dark-link-color);
}
body.dark-mode .jsoneditor-search .jsoneditor-search-results {
color: var(--dark-text-muted);
}