Files
OTSSignsTheme/custom/otssignange/css/override-dark.css

804 lines
17 KiB
CSS
Raw Normal View History

2026-02-04 10:00:40 -05:00
/* =============================================================================
OTS SIGNAGE DARK THEME (REBUILT)
February 4, 2026
============================================================================= */
:root {
color-scheme: dark;
2026-02-04 10:00:40 -05:00
--ots-bg: #0b111a;
--ots-surface: #141c2b;
--ots-surface-2: #1b2436;
--ots-surface-3: #222c3f;
--ots-border: #2c3a54;
--ots-border-soft: #243047;
--ots-text: #e6eefb;
--ots-text-muted: #a9b6cc;
--ots-text-faint: #7f8aa3;
--ots-primary: #4f8cff;
--ots-primary-2: #2f6bff;
--ots-success: #2ad4a4;
--ots-warning: #f4b860;
--ots-danger: #ff6b6b;
--ots-info: #5ec0ff;
--ots-shadow-lg: 0 14px 30px rgba(0, 0, 0, 0.35);
--ots-shadow-md: 0 8px 18px rgba(0, 0, 0, 0.25);
--ots-shadow-sm: 0 3px 8px rgba(0, 0, 0, 0.2);
--ots-radius-sm: 6px;
--ots-radius-md: 10px;
--ots-radius-lg: 14px;
--ots-transition: 160ms ease;
}
/* =============================================================================
GLOBAL
============================================================================= */
html,
body {
2026-02-04 10:00:40 -05:00
background: var(--ots-bg);
color: var(--ots-text);
}
2026-02-04 10:00:40 -05:00
body {
font-family: "Inter", "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
text-rendering: optimizeLegibility;
}
2026-02-04 10:00:40 -05:00
a,
.nav-link,
.sidebar a {
color: var(--ots-text);
text-decoration: none;
2026-02-04 10:00:40 -05:00
transition: color var(--ots-transition), background var(--ots-transition);
}
2026-02-04 10:00:40 -05:00
a:hover,
.nav-link:hover,
.sidebar a:hover {
color: var(--ots-primary);
}
2026-02-04 10:00:40 -05:00
h1,
h2,
h3,
h4,
h5,
h6 {
color: var(--ots-text);
font-weight: 600;
}
2026-02-04 10:00:40 -05:00
small,
.text-muted {
color: var(--ots-text-muted) !important;
}
2026-02-04 10:00:40 -05:00
hr {
border-color: var(--ots-border);
}
2026-02-04 10:00:40 -05:00
/* =============================================================================
LAYOUT WRAPPERS
============================================================================= */
2026-02-04 10:00:40 -05:00
#page-wrapper,
#content-wrapper,
.page-content {
background: var(--ots-bg);
}
2026-02-04 10:00:40 -05:00
.page-content {
padding-top: 24px;
}
2026-02-04 10:00:40 -05:00
/* =============================================================================
NAVBAR / TOPBAR
============================================================================= */
2026-02-04 10:00:40 -05:00
.navbar,
.navbar-default {
background: var(--ots-surface-2);
border: 1px solid var(--ots-border);
box-shadow: var(--ots-shadow-sm);
}
2026-02-04 10:00:40 -05:00
.navbar-brand,
.navbar-brand .xibo-logo {
color: var(--ots-text);
}
2026-02-04 10:00:40 -05:00
.navbar-nav > li > a,
.navbar-nav > .active > a,
.navbar-nav > .open > a {
color: var(--ots-text) !important;
background: transparent !important;
}
2026-02-04 10:00:40 -05:00
.navbar-nav > li > a:hover {
color: var(--ots-primary) !important;
}
2026-02-04 10:00:40 -05:00
.navbar-toggler,
.navbar-toggler-side {
color: var(--ots-text);
border: 1px solid var(--ots-border);
}
2026-02-04 10:00:40 -05:00
/* Topbar nav refinements (dark) */
.ots-topbar.navbar-nav {
background: transparent;
border: 0;
padding: 0;
margin: 0;
2026-02-04 10:00:40 -05:00
gap: 6px;
height: auto;
align-items: center;
}
2026-02-04 10:00:40 -05:00
.ots-topbar .nav-link {
display: inline-flex;
align-items: center;
2026-02-04 10:00:40 -05:00
gap: 8px;
padding: 8px 12px;
2026-02-04 10:00:40 -05:00
border-radius: 10px;
color: var(--ots-text);
font-weight: 600;
2026-02-04 10:00:40 -05:00
transition: background var(--ots-transition), color var(--ots-transition);
}
2026-02-04 10:00:40 -05:00
.ots-topbar .nav-link:hover,
.ots-topbar .nav-item.open .nav-link,
.ots-topbar .nav-item.active .nav-link {
background: rgba(79, 140, 255, 0.18);
color: var(--ots-primary);
}
2026-02-04 10:00:40 -05:00
.ots-topbar .dropdown-menu {
border-radius: 12px;
padding: 8px;
box-shadow: var(--ots-shadow-md);
}
2026-02-04 10:00:40 -05:00
.ots-topbar .dropdown-item,
.ots-topbar .dropdown-menu a {
display: flex;
align-items: center;
gap: 8px;
border-radius: 8px;
2026-02-04 10:00:40 -05:00
padding: 8px 10px;
}
2026-02-04 10:00:40 -05:00
.ots-topbar-icon {
width: 16px;
text-align: center;
2026-02-04 10:00:40 -05:00
opacity: 0.85;
font-size: 13px;
}
2026-02-04 10:00:40 -05:00
/* =============================================================================
SIDEBAR
============================================================================= */
2026-02-04 10:00:40 -05:00
#sidebar-wrapper {
background: var(--ots-surface);
border-right: 1px solid var(--ots-border);
2026-02-04 15:26:44 -05:00
display: flex;
flex-direction: column;
height: 100vh;
overflow: hidden;
}
2026-02-04 10:00:40 -05:00
/* OTS sidebar override marker */
.ots-sidebar-wrapper {
2026-02-04 15:26:44 -05:00
display: flex;
flex-direction: column;
height: 100vh;
background: var(--ots-surface);
}
2026-02-04 15:26:44 -05:00
/* Sidebar Header */
.ots-sidebar-header {
display: flex;
align-items: center;
2026-02-04 15:26:44 -05:00
gap: 12px;
padding: 16px;
border-bottom: 1px solid var(--ots-border);
background: var(--ots-surface);
}
2026-02-04 15:26:44 -05:00
.ots-brand-logo {
width: 40px;
height: 40px;
display: flex;
align-items: center;
justify-content: center;
background: rgba(79, 140, 255, 0.15);
border: 1px solid rgba(79, 140, 255, 0.3);
border-radius: 6px;
font-size: 18px;
color: var(--ots-primary);
flex-shrink: 0;
}
2026-02-04 15:26:44 -05:00
.ots-brand-text {
2026-02-04 10:00:40 -05:00
flex: 1;
min-width: 0;
}
2026-02-04 15:26:44 -05:00
.ots-brand-name {
display: block;
font-size: 14px;
font-weight: 600;
color: var(--ots-text);
letter-spacing: 0.5px;
}
2026-02-04 15:26:44 -05:00
.ots-sidebar-close {
background: none;
border: none;
color: var(--ots-text-secondary);
cursor: pointer;
padding: 4px;
display: flex;
align-items: center;
justify-content: center;
transition: color var(--ots-transition);
flex-shrink: 0;
}
.ots-sidebar-close:hover {
color: var(--ots-text);
}
/* Sidebar Content */
.ots-sidebar {
flex: 1;
list-style: none;
margin: 0;
padding: 12px 0;
overflow-y: auto;
overflow-x: hidden;
}
.ots-sidebar li {
margin: 0;
padding: 0;
}
/* Sidebar Main Item */
.ots-sidebar li.sidebar-main > a {
display: flex;
align-items: center;
gap: 12px;
margin: 0 8px;
2026-02-04 10:00:40 -05:00
padding: 10px 12px;
2026-02-04 15:26:44 -05:00
border-radius: 6px;
color: var(--ots-text);
text-decoration: none;
transition: background var(--ots-transition), color var(--ots-transition);
font-size: 14px;
font-weight: 500;
}
.ots-sidebar li.sidebar-main > a:hover {
background: rgba(79, 140, 255, 0.12);
color: var(--ots-primary);
}
.ots-sidebar li.sidebar-main > a.active {
background: rgba(79, 140, 255, 0.2);
color: var(--ots-primary);
}
/* Sidebar Section (Collapsible) */
.ots-sidebar li.sidebar-section > a.sidebar-section-toggle {
display: flex;
align-items: center;
gap: 12px;
margin: 0 8px;
padding: 10px 12px;
border-radius: 6px;
color: var(--ots-text);
text-decoration: none;
2026-02-04 10:00:40 -05:00
transition: background var(--ots-transition), color var(--ots-transition);
2026-02-04 15:26:44 -05:00
font-size: 14px;
font-weight: 500;
cursor: pointer;
background: none;
border: none;
text-align: left;
width: calc(100% - 16px);
}
2026-02-04 15:26:44 -05:00
.ots-sidebar li.sidebar-section > a.sidebar-section-toggle:hover {
2026-02-04 10:00:40 -05:00
background: rgba(79, 140, 255, 0.12);
color: var(--ots-primary);
}
2026-02-04 15:26:44 -05:00
.ots-sidebar li.sidebar-section > a.sidebar-section-toggle.active {
background: rgba(79, 140, 255, 0.12);
color: var(--ots-primary);
}
.ots-section-toggle-icon {
margin-left: auto;
font-size: 12px;
transition: transform var(--ots-transition);
}
.ots-sidebar li.sidebar-section > a.sidebar-section-toggle.active .ots-section-toggle-icon {
transform: rotate(180deg);
}
/* Sidebar Subsection */
.ots-sidebar .sidebar-subsection {
list-style: none;
margin: 0;
padding: 4px 0;
display: none;
background: rgba(79, 140, 255, 0.05);
}
2026-02-04 15:26:44 -05:00
.ots-sidebar .sidebar-subsection.active {
2026-02-04 10:00:40 -05:00
display: block;
2026-02-04 15:26:44 -05:00
}
.ots-sidebar .sidebar-subsection li {
margin: 0;
padding: 0;
}
/* Sidebar List Item */
.ots-sidebar li.sidebar-list > a {
display: flex;
align-items: center;
gap: 12px;
margin: 2px 12px 2px 28px;
padding: 8px 12px;
border-radius: 4px;
color: var(--ots-text-secondary);
text-decoration: none;
transition: background var(--ots-transition), color var(--ots-transition);
font-size: 13px;
}
.ots-sidebar li.sidebar-list > a:hover {
background: rgba(79, 140, 255, 0.12);
color: var(--ots-primary);
}
.ots-sidebar li.sidebar-list > a.active {
background: rgba(79, 140, 255, 0.15);
color: var(--ots-primary);
}
/* Navigation Icons and Text */
.ots-nav-icon {
width: 16px;
height: 16px;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
opacity: 0.85;
font-size: 14px;
flex-shrink: 0;
}
.ots-nav-text {
flex: 1;
min-width: 0;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
/* Sidebar Spacer */
.sidebar-spacer {
height: 12px;
margin-top: auto;
}
/* Sidebar Footer */
.ots-sidebar-footer {
display: flex;
align-items: center;
gap: 12px;
padding: 12px 16px;
border-top: 1px solid var(--ots-border);
background: var(--ots-surface);
}
.ots-user-section {
flex: 1;
min-width: 0;
}
.ots-user-role {
font-size: 11px;
color: var(--ots-text-secondary);
text-transform: uppercase;
letter-spacing: 0.5px;
margin-bottom: 2px;
}
.ots-user-name {
font-size: 13px;
font-weight: 500;
2026-02-04 10:00:40 -05:00
color: var(--ots-text);
2026-02-04 15:26:44 -05:00
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.ots-user-profile-link {
display: flex;
align-items: center;
justify-content: center;
width: 32px;
height: 32px;
border-radius: 4px;
color: var(--ots-text-secondary);
text-decoration: none;
transition: background var(--ots-transition), color var(--ots-transition);
font-size: 16px;
flex-shrink: 0;
}
.ots-user-profile-link:hover {
background: rgba(79, 140, 255, 0.12);
color: var(--ots-primary);
}
2026-02-04 10:00:40 -05:00
#sidebar-wrapper .sidebar-main a:hover,
#sidebar-wrapper .sidebar-list a:hover {
background: rgba(79, 140, 255, 0.12);
color: var(--ots-primary);
}
2026-02-04 10:00:40 -05:00
#sidebar-wrapper .sidebar-title a {
padding: 12px 18px 6px;
color: var(--ots-text-faint);
font-size: 11px;
letter-spacing: 0.08em;
text-transform: uppercase;
}
2026-02-04 10:00:40 -05:00
/* =============================================================================
WIDGETS / CARDS
============================================================================= */
2026-02-04 10:00:40 -05:00
.widget,
.card,
.panel,
.modal-content {
background: var(--ots-surface-2);
border: 1px solid var(--ots-border);
border-radius: var(--ots-radius-md);
box-shadow: var(--ots-shadow-sm);
}
2026-02-04 10:00:40 -05:00
.widget-title,
.panel-heading,
.card-header,
.modal-header {
background: var(--ots-surface-3);
border-bottom: 1px solid var(--ots-border);
color: var(--ots-text);
}
2026-02-04 10:00:40 -05:00
.widget-body,
.panel-body,
.card-body,
.modal-body {
color: var(--ots-text);
}
2026-02-04 10:00:40 -05:00
/* =============================================================================
BUTTONS
============================================================================= */
2026-02-04 10:00:40 -05:00
.btn,
button,
input[type="button"],
input[type="submit"] {
border-radius: var(--ots-radius-sm);
border: 1px solid transparent;
transition: background var(--ots-transition), border var(--ots-transition), color var(--ots-transition);
}
2026-02-04 10:00:40 -05:00
.btn-default,
.btn-secondary {
background: var(--ots-surface-3);
color: var(--ots-text);
border-color: var(--ots-border);
}
2026-02-04 10:00:40 -05:00
.btn-default:hover,
.btn-secondary:hover {
background: var(--ots-surface-2);
border-color: var(--ots-primary);
color: var(--ots-primary);
}
2026-02-04 10:00:40 -05:00
.btn-primary {
background: var(--ots-primary);
border-color: var(--ots-primary-2);
color: #0b1020;
}
2026-02-04 10:00:40 -05:00
.btn-primary:hover {
background: var(--ots-primary-2);
border-color: var(--ots-primary-2);
color: #0b1020;
}
.btn-success {
background: var(--ots-success);
border-color: var(--ots-success);
color: #041410;
}
.btn-warning {
background: var(--ots-warning);
border-color: var(--ots-warning);
color: #1c1200;
}
.btn-danger {
background: var(--ots-danger);
border-color: var(--ots-danger);
color: #220707;
}
.btn-info {
background: var(--ots-info);
border-color: var(--ots-info);
color: #07101a;
}
/* =============================================================================
FORMS
============================================================================= */
.form-control,
input[type="text"],
input[type="search"],
input[type="email"],
input[type="password"],
select,
textarea {
background: var(--ots-surface);
color: var(--ots-text);
border: 1px solid var(--ots-border);
border-radius: var(--ots-radius-sm);
box-shadow: none;
}
.form-control:focus,
input[type="text"]:focus,
input[type="search"]:focus,
input[type="email"]:focus,
input[type="password"]:focus,
select:focus,
textarea:focus {
border-color: var(--ots-primary);
box-shadow: 0 0 0 2px rgba(79, 140, 255, 0.2);
outline: none;
}
2026-02-04 10:00:40 -05:00
.input-group-addon {
background: var(--ots-surface-3);
border: 1px solid var(--ots-border);
color: var(--ots-text-muted);
}
2026-02-04 10:00:40 -05:00
/* =============================================================================
TABLES / DATATABLES
============================================================================= */
2026-02-04 10:00:40 -05:00
.table,
.table > thead > tr > th,
.table > tbody > tr > td {
color: var(--ots-text);
border-color: var(--ots-border);
}
2026-02-04 10:00:40 -05:00
.table-striped > tbody > tr:nth-of-type(odd) {
background: rgba(79, 140, 255, 0.04);
}
2026-02-04 10:00:40 -05:00
.table-hover > tbody > tr:hover {
background: rgba(79, 140, 255, 0.08);
}
2026-02-04 10:00:40 -05:00
.dataTables_wrapper .dataTables_length,
.dataTables_wrapper .dataTables_filter,
.dataTables_wrapper .dataTables_info,
.dataTables_wrapper .dataTables_paginate {
color: var(--ots-text-muted) !important;
}
2026-02-04 10:00:40 -05:00
.dataTables_wrapper .dataTables_filter input,
.dataTables_wrapper .dataTables_length select {
background: var(--ots-surface) !important;
color: var(--ots-text) !important;
border: 1px solid var(--ots-border) !important;
}
2026-02-04 10:00:40 -05:00
.dataTables_wrapper table {
color: var(--ots-text);
}
2026-02-04 10:00:40 -05:00
/* =============================================================================
DROPDOWNS / MENUS
============================================================================= */
2026-02-04 10:00:40 -05:00
.dropdown-menu {
background: var(--ots-surface-2);
border: 1px solid var(--ots-border);
box-shadow: var(--ots-shadow-md);
}
2026-02-04 10:00:40 -05:00
.dropdown-item,
.dropdown-menu > li > a {
color: var(--ots-text);
}
2026-02-04 10:00:40 -05:00
.dropdown-item:hover,
.dropdown-menu > li > a:hover {
background: rgba(79, 140, 255, 0.12);
color: var(--ots-primary);
}
2026-02-04 10:00:40 -05:00
/* =============================================================================
ALERTS / BADGES
============================================================================= */
2026-02-04 10:00:40 -05:00
.alert {
border-radius: var(--ots-radius-sm);
border: 1px solid var(--ots-border);
}
2026-02-04 10:00:40 -05:00
.alert-success {
background: rgba(42, 212, 164, 0.15);
color: var(--ots-success);
}
2026-02-04 10:00:40 -05:00
.alert-warning {
background: rgba(244, 184, 96, 0.15);
color: var(--ots-warning);
}
2026-02-04 10:00:40 -05:00
.alert-danger {
background: rgba(255, 107, 107, 0.15);
color: var(--ots-danger);
}
2026-02-04 10:00:40 -05:00
.alert-info {
background: rgba(94, 192, 255, 0.15);
color: var(--ots-info);
}
2026-02-04 10:00:40 -05:00
.badge,
.label {
background: var(--ots-surface-3);
color: var(--ots-text);
border: 1px solid var(--ots-border);
}
2026-02-04 10:00:40 -05:00
/* =============================================================================
TABS / PAGINATION
============================================================================= */
2026-02-04 10:00:40 -05:00
.nav-tabs {
border-bottom: 1px solid var(--ots-border);
}
2026-02-04 10:00:40 -05:00
.nav-tabs > li > a {
color: var(--ots-text-muted);
border: 1px solid transparent;
}
2026-02-04 10:00:40 -05:00
.nav-tabs > li.active > a,
.nav-tabs > li.active > a:focus,
.nav-tabs > li.active > a:hover {
background: var(--ots-surface-2);
color: var(--ots-text);
border: 1px solid var(--ots-border);
border-bottom-color: transparent;
}
2026-02-04 10:00:40 -05:00
.pagination > li > a,
.pagination > li > span {
background: var(--ots-surface-2);
border: 1px solid var(--ots-border);
color: var(--ots-text);
}
2026-02-04 10:00:40 -05:00
.pagination > li > a:hover,
.pagination > li > span:hover {
background: var(--ots-surface-3);
color: var(--ots-primary);
}
2026-02-04 10:00:40 -05:00
.pagination > .active > a,
.pagination > .active > span {
background: var(--ots-primary);
border-color: var(--ots-primary-2);
color: #0b1020;
}
2026-02-04 10:00:40 -05:00
/* =============================================================================
MODALS
============================================================================= */
2026-02-04 10:00:40 -05:00
.modal-content {
border-radius: var(--ots-radius-lg);
2026-02-04 15:26:44 -05:00
background-color: var(--ots-surface-2) !important;
}
.modal,
.modal-header,
.modal-body,
.modal-footer {
background-color: transparent !important;
}
.modal-backdrop,
.modal-backdrop.show,
.modal-backdrop.in {
background-color: rgba(0, 0, 0, 0.3) !important;
backdrop-filter: blur(4px) !important;
opacity: 1 !important;
}
2026-02-04 10:00:40 -05:00
.modal-footer {
border-top: 1px solid var(--ots-border);
}
2026-02-04 10:00:40 -05:00
/* =============================================================================
HELP PANE / MISC
============================================================================= */
2026-02-04 10:00:40 -05:00
#help-pane {
background: var(--ots-surface-2);
border: 1px solid var(--ots-border);
}
2026-02-04 10:00:40 -05:00
#help-pane .help-pane-btn {
background: var(--ots-primary);
color: #0b1020;
}
2026-02-04 10:00:40 -05:00
/* =============================================================================
OTS DASHBOARD MESSAGE
============================================================================= */
2026-02-04 10:00:40 -05:00
.ots-dashboard-message {
margin: 16px 0 24px;
padding: 12px 16px;
border-radius: var(--ots-radius-md);
background: rgba(79, 140, 255, 0.16);
border: 1px solid rgba(79, 140, 255, 0.45);
color: var(--ots-text);
}
2026-02-04 10:00:40 -05:00
.ots-dashboard-message__title {
font-weight: 700;
letter-spacing: 0.02em;
text-transform: uppercase;
font-size: 12px;
2026-02-04 10:00:40 -05:00
margin-bottom: 4px;
}
2026-02-04 10:00:40 -05:00
.ots-dashboard-message__body {
font-size: 13px;
color: var(--ots-text-muted);
}