/* ================================================== Custom styles – Bootstrap 5.2.3 compatible Theme: "Data Viz Tech" – color-coded memory types ================================================== */ /* ----- Base & Layout ----- */ body { transition: background-color 0.3s, color 0.3s; min-height: 100vh; display: flex; flex-direction: column; background: #f8f9fa; /* light mode fallback */ } .container { flex: 1; } .btn-preset { min-width: 70px; margin: 4px; transition: all 0.2s ease; } .btn-preset:hover { transform: translateY(-2px); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); } .table-responsive { margin-top: 1.5rem; } .theme-toggle { cursor: pointer; font-size: 1.5rem; transition: transform 0.2s; user-select: none; } .theme-toggle:hover { transform: scale(1.1); } .table td, .table th { vertical-align: middle; } .note { font-size: 0.9rem; opacity: 0.8; } footer { margin-top: 2rem; padding: 1rem 0; text-align: center; border-top: 1px solid var(--bs-border-color); } /* ----- Light Mode (default) ----- */ body { background: #f1f3f5; } .card { background: rgba(255, 255, 255, 0.85); backdrop-filter: blur(8px); border: 1px solid rgba(0, 0, 0, 0.08); box-shadow: 0 8px 32px rgba(0, 0, 0, 0.06); } .table th { background: #e9ecef; color: #212529; } /* Light mode row colors (soft) */ .table-striped>tbody>tr:nth-of-type(odd) { background-color: rgba(0, 0, 0, 0.02); } .table-striped>tbody>tr:nth-of-type(even) { background-color: rgba(0, 0, 0, 0.05); } .table-hover>tbody>tr:hover { background-color: rgba(0, 123, 255, 0.06); } /* left border accents for light mode */ .table tbody tr[data-type="float"] { border-left: 4px solid #0dcaf0; } .table tbody tr[data-type="int8"] { border-left: 4px solid #20c997; } .table tbody tr[data-type="q6"] { border-left: 4px solid #ffc107; } .table tbody tr[data-type="q4"] { border-left: 4px solid #fd7e14; } .table tbody tr[data-type="q3"] { border-left: 4px solid #dc3545; } .table tbody tr[data-type="q2"] { border-left: 4px solid #d63384; } /* ----- Dark Mode (default) ----- */ html.dark-mode { background: #0b0e14; color: #f0f4f8; } html.dark-mode body { background: radial-gradient(circle at 30% 10%, #141b2b, #0b0e14 80%); color: #f0f4f8; } /* Navbar */ html.dark-mode .navbar, html.dark-mode .bg-body-tertiary { background: rgba(20, 27, 43, 0.8) !important; backdrop-filter: blur(12px); border-bottom: 1px solid rgba(255, 255, 255, 0.06); } html.dark-mode .navbar-brand, html.dark-mode .nav-link, html.dark-mode .navbar-text { color: #f0f4f8 !important; } /* Card - glassmorphism */ html.dark-mode .card { background: rgba(28, 35, 52, 0.7); backdrop-filter: blur(12px); border: 1px solid rgba(255, 255, 255, 0.08); box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4); } html.dark-mode .card-title { color: #f0f4f8; } /* Table */ html.dark-mode .table { color: #e9ecef; } html.dark-mode .table th { background: rgba(0, 0, 0, 0.3); color: #adb5bd; border-color: #2a3240; } html.dark-mode .table td { border-color: #2a3240; } /* Table rows – background alternating */ html.dark-mode .table-striped>tbody>tr:nth-of-type(odd) { background-color: rgba(255, 255, 255, 0.03); } html.dark-mode .table-striped>tbody>tr:nth-of-type(even) { background-color: rgba(0, 0, 0, 0.2); } html.dark-mode .table-hover>tbody>tr:hover { background-color: rgba(255, 255, 255, 0.08); transform: scale(0.999); transition: all 0.15s ease; } /* Color-coded left borders (dark) – applied via data-type attribute */ html.dark-mode .table tbody tr[data-type="float"] { border-left: 4px solid #00b4d8; } html.dark-mode .table tbody tr[data-type="int8"] { border-left: 4px solid #00b8a9; } html.dark-mode .table tbody tr[data-type="q6"] { border-left: 4px solid #f9a825; } html.dark-mode .table tbody tr[data-type="q4"] { border-left: 4px solid #fb8c00; } html.dark-mode .table tbody tr[data-type="q3"] { border-left: 4px solid #e63946; } html.dark-mode .table tbody tr[data-type="q2"] { border-left: 4px solid #d81b60; } /* Make all text white inside table cells */ html.dark-mode .table td, html.dark-mode .table th { color: #f0f4f8 !important; } /* Form controls */ html.dark-mode .form-control { background-color: rgba(20, 27, 43, 0.8); border-color: #3a4355; color: #f0f4f8; } html.dark-mode .form-control:focus { background-color: rgba(20, 27, 43, 0.9); border-color: #6ea8fe; box-shadow: 0 0 0 0.25rem rgba(110, 168, 254, 0.25); color: #f0f4f8; } html.dark-mode .input-group-text { background-color: rgba(20, 27, 43, 0.8); border-color: #3a4355; color: #adb5bd; } /* Buttons */ html.dark-mode .btn-outline-secondary { color: #adb5bd; border-color: #3a4355; } html.dark-mode .btn-outline-secondary:hover { background-color: #3a4355; border-color: #6c757d; color: #f0f4f8; } html.dark-mode .btn-outline-primary { color: #6ea8fe; border-color: #6ea8fe; } html.dark-mode .btn-outline-primary:hover { background-color: #6ea8fe; color: #0b0e14; box-shadow: 0 0 20px rgba(110, 168, 254, 0.3); } html.dark-mode .btn-preset { border-color: rgba(255, 255, 255, 0.15); color: #ced4da; } html.dark-mode .btn-preset:hover { background: rgba(255, 255, 255, 0.05); border-color: #6ea8fe; color: #f0f4f8; } /* Badge */ html.dark-mode .badge.bg-secondary { background-color: #4a5568 !important; } /* Footer, text-muted, etc. */ html.dark-mode footer { border-top-color: #2a3240; } html.dark-mode .text-muted, html.dark-mode .note, html.dark-mode .form-text { color: #adb5bd !important; } /* Scrollbar style (optional) */ html.dark-mode ::-webkit-scrollbar { width: 8px; height: 8px; } html.dark-mode ::-webkit-scrollbar-track { background: #1a1f2b; } html.dark-mode ::-webkit-scrollbar-thumb { background: #3a4355; border-radius: 4px; } html.dark-mode ::-webkit-scrollbar-thumb:hover { background: #5a6a85; }