2026-02-04 10:00:40 -05:00
|
|
|
|
/* =============================================================================
|
|
|
|
|
|
OTS SIGNAGE DARK THEME (REBUILT)
|
|
|
|
|
|
February 4, 2026
|
|
|
|
|
|
============================================================================= */
|
2026-02-04 07:17:33 -05:00
|
|
|
|
|
2026-03-23 21:09:27 -04:00
|
|
|
|
@import url('https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700;1,9..40,400&display=swap');
|
|
|
|
|
|
|
2026-02-04 07:17:33 -05:00
|
|
|
|
: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;
|
2026-03-23 21:09:27 -04:00
|
|
|
|
--ots-text-faint: #8d99b4;
|
|
|
|
|
|
--ots-primary: #e87800;
|
|
|
|
|
|
--ots-primary-rgb: 232, 120, 0;
|
|
|
|
|
|
--ots-primary-2: #c46500;
|
2026-02-04 10:00:40 -05:00
|
|
|
|
--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);
|
|
|
|
|
|
|
2026-03-23 21:09:27 -04:00
|
|
|
|
--ots-radius-sm: 4px;
|
|
|
|
|
|
--ots-radius-md: 8px;
|
|
|
|
|
|
--ots-radius-lg: 12px;
|
2026-02-04 10:00:40 -05:00
|
|
|
|
|
|
|
|
|
|
--ots-transition: 160ms ease;
|
2026-02-09 18:47:14 -05:00
|
|
|
|
|
|
|
|
|
|
/* Modal pop-ups */
|
|
|
|
|
|
--modal-backdrop-bg: rgba(2, 6, 23, 0.55);
|
|
|
|
|
|
--modal-backdrop-blur: 6px;
|
|
|
|
|
|
--modal-bg: #141c2b;
|
|
|
|
|
|
--modal-border: #2c3a54;
|
2026-03-23 21:09:27 -04:00
|
|
|
|
--modal-radius: 12px;
|
2026-02-09 18:47:14 -05:00
|
|
|
|
--modal-shadow: 0 24px 64px rgba(0, 0, 0, 0.45), 0 0 0 1px rgba(255, 255, 255, 0.04);
|
|
|
|
|
|
--modal-header-bg: #0f172a;
|
|
|
|
|
|
--modal-header-border: #2c3a54;
|
|
|
|
|
|
--modal-header-text: #f1f5f9;
|
|
|
|
|
|
--modal-body-bg: #141c2b;
|
|
|
|
|
|
--modal-body-text: #e2e8f0;
|
|
|
|
|
|
--modal-footer-bg: #0f172a;
|
|
|
|
|
|
--modal-footer-border: #2c3a54;
|
|
|
|
|
|
--modal-close-color: #64748b;
|
|
|
|
|
|
--modal-close-hover: #f1f5f9;
|
|
|
|
|
|
--modal-input-bg: #0b111a;
|
|
|
|
|
|
--modal-input-border: #2c3a54;
|
|
|
|
|
|
--modal-input-text: #e6eefb;
|
2026-03-23 21:09:27 -04:00
|
|
|
|
--modal-input-focus-border: #e87800;
|
|
|
|
|
|
--modal-input-focus-ring: rgba(var(--ots-primary-rgb), 0.2);
|
2026-02-04 10:00:40 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* =============================================================================
|
|
|
|
|
|
GLOBAL
|
|
|
|
|
|
============================================================================= */
|
2026-02-04 07:17:33 -05:00
|
|
|
|
|
|
|
|
|
|
html,
|
|
|
|
|
|
body {
|
2026-02-04 10:00:40 -05:00
|
|
|
|
background: var(--ots-bg);
|
|
|
|
|
|
color: var(--ots-text);
|
2026-02-04 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-04 10:00:40 -05:00
|
|
|
|
body {
|
2026-03-23 21:09:27 -04:00
|
|
|
|
font-family: "DM Sans", system-ui, -apple-system, "Segoe UI", Helvetica, Arial, sans-serif;
|
2026-02-04 10:00:40 -05:00
|
|
|
|
-webkit-font-smoothing: antialiased;
|
|
|
|
|
|
text-rendering: optimizeLegibility;
|
2026-03-23 21:09:27 -04:00
|
|
|
|
font-feature-settings: "kern" 1, "liga" 1;
|
2026-02-04 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-04 10:00:40 -05:00
|
|
|
|
a,
|
|
|
|
|
|
.nav-link,
|
|
|
|
|
|
.sidebar a {
|
|
|
|
|
|
color: var(--ots-text);
|
2026-02-04 07:17:33 -05:00
|
|
|
|
text-decoration: none;
|
2026-02-04 10:00:40 -05:00
|
|
|
|
transition: color var(--ots-transition), background var(--ots-transition);
|
2026-02-04 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-04 10:00:40 -05:00
|
|
|
|
a:hover,
|
|
|
|
|
|
.nav-link:hover,
|
|
|
|
|
|
.sidebar a:hover {
|
|
|
|
|
|
color: var(--ots-primary);
|
2026-02-04 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-04 10:00:40 -05:00
|
|
|
|
h1,
|
|
|
|
|
|
h2,
|
|
|
|
|
|
h3,
|
|
|
|
|
|
h4,
|
|
|
|
|
|
h5,
|
|
|
|
|
|
h6 {
|
|
|
|
|
|
color: var(--ots-text);
|
2026-02-04 07:17:33 -05:00
|
|
|
|
font-weight: 600;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-04 10:00:40 -05:00
|
|
|
|
small,
|
|
|
|
|
|
.text-muted {
|
|
|
|
|
|
color: var(--ots-text-muted) !important;
|
2026-02-04 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-04 10:00:40 -05:00
|
|
|
|
hr {
|
|
|
|
|
|
border-color: var(--ots-border);
|
2026-02-04 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-23 21:09:27 -04:00
|
|
|
|
/* ---------- Accessibility: focus-visible ---------- */
|
|
|
|
|
|
*:focus-visible {
|
|
|
|
|
|
outline: 2px solid var(--ots-primary);
|
|
|
|
|
|
outline-offset: 2px;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.btn:focus-visible,
|
|
|
|
|
|
.form-control:focus-visible,
|
|
|
|
|
|
.form-select:focus-visible,
|
|
|
|
|
|
.nav-link:focus-visible {
|
|
|
|
|
|
outline: 2px solid var(--ots-primary);
|
|
|
|
|
|
outline-offset: 2px;
|
|
|
|
|
|
box-shadow: 0 0 0 3px rgba(var(--ots-primary-rgb), 0.25);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.ots-sidebar li a:focus-visible {
|
|
|
|
|
|
outline: 2px solid var(--ots-primary);
|
|
|
|
|
|
outline-offset: -2px;
|
|
|
|
|
|
border-radius: var(--ots-radius-sm);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.sidebar-group-toggle:focus-visible {
|
|
|
|
|
|
outline: 2px solid var(--ots-primary);
|
|
|
|
|
|
outline-offset: -2px;
|
|
|
|
|
|
border-radius: var(--ots-radius-sm);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
table tbody tr:focus-within {
|
|
|
|
|
|
outline: 1px solid var(--ots-primary);
|
|
|
|
|
|
outline-offset: -1px;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-04 10:00:40 -05:00
|
|
|
|
/* =============================================================================
|
|
|
|
|
|
LAYOUT WRAPPERS
|
|
|
|
|
|
============================================================================= */
|
2026-02-04 07:17:33 -05:00
|
|
|
|
|
2026-02-04 10:00:40 -05:00
|
|
|
|
#page-wrapper,
|
|
|
|
|
|
#content-wrapper,
|
|
|
|
|
|
.page-content {
|
|
|
|
|
|
background: var(--ots-bg);
|
2026-02-04 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-04 10:00:40 -05:00
|
|
|
|
.page-content {
|
|
|
|
|
|
padding-top: 24px;
|
2026-02-04 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-04 10:00:40 -05:00
|
|
|
|
/* =============================================================================
|
|
|
|
|
|
NAVBAR / TOPBAR
|
|
|
|
|
|
============================================================================= */
|
2026-02-04 07:17:33 -05:00
|
|
|
|
|
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 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-09 18:47:14 -05:00
|
|
|
|
/* Horizontal nav mode: remove sidebar margins from #content-wrapper */
|
|
|
|
|
|
.navbar.navbar-expand-lg ~ #content-wrapper {
|
|
|
|
|
|
margin-left: 0 !important;
|
|
|
|
|
|
width: 100% !important;
|
|
|
|
|
|
max-width: 100% !important;
|
|
|
|
|
|
padding-left: 20px !important;
|
|
|
|
|
|
padding-right: 20px !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.navbar.navbar-expand-lg ~ #content-wrapper .page-content {
|
|
|
|
|
|
padding-left: 0 !important;
|
|
|
|
|
|
padding-right: 0 !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.navbar.navbar-expand-lg ~ #content-wrapper .page-content .row {
|
|
|
|
|
|
margin-left: 0 !important;
|
|
|
|
|
|
margin-right: 0 !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.navbar.navbar-expand-lg ~ #content-wrapper .page-content [class*="col-"] {
|
|
|
|
|
|
padding-left: 0 !important;
|
|
|
|
|
|
padding-right: 0 !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.navbar.navbar-expand-lg ~ #content-wrapper .page-content > .row > .col-sm-12 {
|
|
|
|
|
|
padding-left: 0 !important;
|
|
|
|
|
|
padding-right: 0 !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.navbar.navbar-expand-lg ~ #content-wrapper,
|
|
|
|
|
|
.navbar.navbar-expand-lg ~ #content-wrapper .page-content {
|
|
|
|
|
|
background: var(--ots-bg) !important;
|
|
|
|
|
|
color: var(--ots-text) !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-04 10:00:40 -05:00
|
|
|
|
.navbar-brand,
|
|
|
|
|
|
.navbar-brand .xibo-logo {
|
|
|
|
|
|
color: var(--ots-text);
|
2026-02-04 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
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 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-04 10:00:40 -05:00
|
|
|
|
.navbar-nav > li > a:hover {
|
|
|
|
|
|
color: var(--ots-primary) !important;
|
2026-02-04 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
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 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-04 10:00:40 -05:00
|
|
|
|
/* Topbar nav refinements (dark) */
|
|
|
|
|
|
.ots-topbar.navbar-nav {
|
|
|
|
|
|
background: transparent;
|
|
|
|
|
|
border: 0;
|
2026-02-04 07:17:33 -05:00
|
|
|
|
padding: 0;
|
|
|
|
|
|
margin: 0;
|
2026-02-04 10:00:40 -05:00
|
|
|
|
gap: 6px;
|
|
|
|
|
|
height: auto;
|
2026-02-04 07:17:33 -05:00
|
|
|
|
align-items: center;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-04 10:00:40 -05:00
|
|
|
|
.ots-topbar .nav-link {
|
|
|
|
|
|
display: inline-flex;
|
2026-02-04 07:17:33 -05:00
|
|
|
|
align-items: center;
|
2026-02-04 10:00:40 -05:00
|
|
|
|
gap: 8px;
|
2026-02-04 07:17:33 -05:00
|
|
|
|
padding: 8px 12px;
|
2026-02-04 10:00:40 -05:00
|
|
|
|
border-radius: 10px;
|
|
|
|
|
|
color: var(--ots-text);
|
2026-02-04 07:17:33 -05:00
|
|
|
|
font-weight: 600;
|
2026-02-04 10:00:40 -05:00
|
|
|
|
transition: background var(--ots-transition), color var(--ots-transition);
|
2026-02-04 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
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 {
|
2026-03-23 21:09:27 -04:00
|
|
|
|
background: rgba(var(--ots-primary-rgb), 0.18);
|
2026-02-04 10:00:40 -05:00
|
|
|
|
color: var(--ots-primary);
|
2026-02-04 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
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 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-04 10:00:40 -05:00
|
|
|
|
.ots-topbar .dropdown-item,
|
|
|
|
|
|
.ots-topbar .dropdown-menu a {
|
2026-02-04 07:17:33 -05:00
|
|
|
|
display: flex;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
gap: 8px;
|
|
|
|
|
|
border-radius: 8px;
|
2026-02-04 10:00:40 -05:00
|
|
|
|
padding: 8px 10px;
|
2026-02-04 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-04 10:00:40 -05:00
|
|
|
|
.ots-topbar-icon {
|
|
|
|
|
|
width: 16px;
|
2026-02-04 07:17:33 -05:00
|
|
|
|
text-align: center;
|
2026-02-04 10:00:40 -05:00
|
|
|
|
opacity: 0.85;
|
|
|
|
|
|
font-size: 13px;
|
2026-02-04 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-04 10:00:40 -05:00
|
|
|
|
/* =============================================================================
|
|
|
|
|
|
SIDEBAR
|
|
|
|
|
|
============================================================================= */
|
2026-02-04 07:17:33 -05:00
|
|
|
|
|
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 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
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 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-04 15:26:44 -05:00
|
|
|
|
/* Sidebar Header */
|
|
|
|
|
|
.ots-sidebar-header {
|
2026-02-04 07:17:33 -05:00
|
|
|
|
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 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-04 15:26:44 -05:00
|
|
|
|
.ots-brand-logo {
|
|
|
|
|
|
width: 40px;
|
|
|
|
|
|
height: 40px;
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
justify-content: center;
|
2026-03-23 21:09:27 -04:00
|
|
|
|
background: rgba(var(--ots-primary-rgb), 0.15);
|
|
|
|
|
|
border: 1px solid rgba(var(--ots-primary-rgb), 0.3);
|
|
|
|
|
|
border-radius: var(--ots-radius-sm);
|
2026-02-04 15:26:44 -05:00
|
|
|
|
font-size: 18px;
|
|
|
|
|
|
color: var(--ots-primary);
|
|
|
|
|
|
flex-shrink: 0;
|
2026-02-04 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
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 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
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 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
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;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-05 09:04:06 -05:00
|
|
|
|
/* Dark-mode repair overrides: ensure sidebar doesn't draw a vertical divider */
|
|
|
|
|
|
#sidebar-wrapper,
|
|
|
|
|
|
.ots-sidebar {
|
|
|
|
|
|
border-right: none !important;
|
|
|
|
|
|
box-shadow: none !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* Hide pseudo-elements that might draw a divider */
|
|
|
|
|
|
.ots-sidebar::before,
|
|
|
|
|
|
.ots-sidebar::after,
|
|
|
|
|
|
#sidebar-wrapper::before,
|
|
|
|
|
|
#sidebar-wrapper::after,
|
|
|
|
|
|
#page-wrapper::before,
|
|
|
|
|
|
#page-wrapper::after {
|
|
|
|
|
|
content: none !important;
|
|
|
|
|
|
display: none !important;
|
|
|
|
|
|
background: transparent !important;
|
|
|
|
|
|
box-shadow: none !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-04 15:26:44 -05:00
|
|
|
|
/* 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-03-23 21:09:27 -04:00
|
|
|
|
border-radius: var(--ots-radius-sm);
|
2026-02-04 15:26:44 -05:00
|
|
|
|
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 {
|
2026-03-23 21:09:27 -04:00
|
|
|
|
background: rgba(var(--ots-primary-rgb), 0.12);
|
2026-02-04 15:26:44 -05:00
|
|
|
|
color: var(--ots-primary);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.ots-sidebar li.sidebar-main > a.active {
|
2026-03-23 21:09:27 -04:00
|
|
|
|
background: rgba(var(--ots-primary-rgb), 0.2);
|
2026-02-04 15:26:44 -05:00
|
|
|
|
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;
|
2026-03-23 21:09:27 -04:00
|
|
|
|
border-radius: var(--ots-radius-sm);
|
2026-02-04 15:26:44 -05:00
|
|
|
|
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 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-04 15:26:44 -05:00
|
|
|
|
.ots-sidebar li.sidebar-section > a.sidebar-section-toggle:hover {
|
2026-03-23 21:09:27 -04:00
|
|
|
|
background: rgba(var(--ots-primary-rgb), 0.12);
|
2026-02-04 10:00:40 -05:00
|
|
|
|
color: var(--ots-primary);
|
2026-02-04 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-04 15:26:44 -05:00
|
|
|
|
.ots-sidebar li.sidebar-section > a.sidebar-section-toggle.active {
|
2026-03-23 21:09:27 -04:00
|
|
|
|
background: rgba(var(--ots-primary-rgb), 0.12);
|
2026-02-04 15:26:44 -05:00
|
|
|
|
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;
|
2026-03-23 21:09:27 -04:00
|
|
|
|
background: rgba(var(--ots-primary-rgb), 0.05);
|
2026-02-04 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
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 {
|
2026-03-23 21:09:27 -04:00
|
|
|
|
background: rgba(var(--ots-primary-rgb), 0.12);
|
2026-02-04 15:26:44 -05:00
|
|
|
|
color: var(--ots-primary);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.ots-sidebar li.sidebar-list > a.active {
|
2026-03-23 21:09:27 -04:00
|
|
|
|
background: rgba(var(--ots-primary-rgb), 0.15);
|
2026-02-04 15:26:44 -05:00
|
|
|
|
color: var(--ots-primary);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* Navigation Icons and Text */
|
2026-02-06 23:57:16 -05:00
|
|
|
|
|
|
|
|
|
|
/* ==========================================================================
|
|
|
|
|
|
FORCE DARK BACKGROUND FALLBACKS
|
|
|
|
|
|
Ensure no white areas appear when scrolling or when elements overflow.
|
|
|
|
|
|
This uses high-specificity selectors and !important to override stray
|
|
|
|
|
|
light-background rules from other stylesheets.
|
|
|
|
|
|
========================================================================== */
|
|
|
|
|
|
|
|
|
|
|
|
html, body, #page-wrapper, .ots-main, .ots-content, .page-content, .container {
|
|
|
|
|
|
background-color: var(--color-background) !important;
|
|
|
|
|
|
background: none !important;
|
|
|
|
|
|
color: var(--color-text-primary) !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* Remove or neutralise any pseudo-elements that may paint a light background */
|
|
|
|
|
|
html::before, html::after, body::before, body::after, #page-wrapper::before, #page-wrapper::after {
|
|
|
|
|
|
background: transparent !important;
|
|
|
|
|
|
content: none !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* Ensure fixed/backdrop layers are dark where appropriate */
|
|
|
|
|
|
.modal-backdrop,
|
|
|
|
|
|
.modal,
|
|
|
|
|
|
.modal-open,
|
|
|
|
|
|
.ots-shell,
|
|
|
|
|
|
.ots-footer {
|
|
|
|
|
|
background-color: var(--color-background) !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* Defensive: override any explicit white panel backgrounds that leak outside their container */
|
Refactor dashboard card classes to use 'content-card' instead of 'dashboard-card'
- Updated various views to replace 'dashboard-card' with 'content-card' for consistency in styling.
- Modified filter and table card classes across multiple pages including applications, campaigns, commands, datasets, dayparts, displays, display groups, display profiles, fonts, layouts, libraries, menu boards, modules, player software, playlists, resolutions, schedules, settings, sync groups, tags, tasks, templates, transitions, users, and user groups.
2026-02-11 09:17:45 -05:00
|
|
|
|
.card, .panel, .panel-body, .dashboard-card, .content-card, .ots-sidebar li.sidebar-list.active > a {
|
2026-02-06 23:57:16 -05:00
|
|
|
|
background-color: var(--color-surface) !important;
|
|
|
|
|
|
color: var(--color-text-primary) !important;
|
|
|
|
|
|
}
|
2026-02-04 15:26:44 -05:00
|
|
|
|
.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 {
|
2026-03-23 21:09:27 -04:00
|
|
|
|
background: rgba(var(--ots-primary-rgb), 0.12);
|
2026-02-04 15:26:44 -05:00
|
|
|
|
color: var(--ots-primary);
|
2026-02-04 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-04 10:00:40 -05:00
|
|
|
|
#sidebar-wrapper .sidebar-main a:hover,
|
|
|
|
|
|
#sidebar-wrapper .sidebar-list a:hover {
|
2026-03-23 21:09:27 -04:00
|
|
|
|
background: rgba(var(--ots-primary-rgb), 0.12);
|
2026-02-04 10:00:40 -05:00
|
|
|
|
color: var(--ots-primary);
|
2026-02-04 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
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 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-04 10:00:40 -05:00
|
|
|
|
/* =============================================================================
|
|
|
|
|
|
WIDGETS / CARDS
|
|
|
|
|
|
============================================================================= */
|
2026-02-04 07:17:33 -05:00
|
|
|
|
|
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 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
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 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-04 10:00:40 -05:00
|
|
|
|
.widget-body,
|
|
|
|
|
|
.panel-body,
|
|
|
|
|
|
.card-body,
|
|
|
|
|
|
.modal-body {
|
|
|
|
|
|
color: var(--ots-text);
|
2026-02-04 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-04 10:00:40 -05:00
|
|
|
|
/* =============================================================================
|
|
|
|
|
|
BUTTONS
|
|
|
|
|
|
============================================================================= */
|
2026-02-04 07:17:33 -05:00
|
|
|
|
|
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 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
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 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
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 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
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 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
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);
|
2026-03-23 21:09:27 -04:00
|
|
|
|
box-shadow: 0 0 0 2px rgba(var(--ots-primary-rgb), 0.2);
|
2026-02-04 10:00:40 -05:00
|
|
|
|
outline: none;
|
2026-02-04 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
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 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-04 10:00:40 -05:00
|
|
|
|
/* =============================================================================
|
|
|
|
|
|
TABLES / DATATABLES
|
|
|
|
|
|
============================================================================= */
|
2026-02-04 07:17:33 -05:00
|
|
|
|
|
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 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-04 10:00:40 -05:00
|
|
|
|
.table-striped > tbody > tr:nth-of-type(odd) {
|
2026-03-23 21:09:27 -04:00
|
|
|
|
background: rgba(var(--ots-primary-rgb), 0.04);
|
2026-02-04 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-04 10:00:40 -05:00
|
|
|
|
.table-hover > tbody > tr:hover {
|
2026-03-23 21:09:27 -04:00
|
|
|
|
background: rgba(var(--ots-primary-rgb), 0.08);
|
2026-02-04 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
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 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
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 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-04 10:00:40 -05:00
|
|
|
|
.dataTables_wrapper table {
|
|
|
|
|
|
color: var(--ots-text);
|
2026-02-04 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-04 10:00:40 -05:00
|
|
|
|
/* =============================================================================
|
|
|
|
|
|
DROPDOWNS / MENUS
|
|
|
|
|
|
============================================================================= */
|
2026-02-04 07:17:33 -05:00
|
|
|
|
|
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 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-04 10:00:40 -05:00
|
|
|
|
.dropdown-item,
|
|
|
|
|
|
.dropdown-menu > li > a {
|
|
|
|
|
|
color: var(--ots-text);
|
2026-02-04 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-04 10:00:40 -05:00
|
|
|
|
.dropdown-item:hover,
|
|
|
|
|
|
.dropdown-menu > li > a:hover {
|
2026-03-23 21:09:27 -04:00
|
|
|
|
background: rgba(var(--ots-primary-rgb), 0.12);
|
2026-02-04 10:00:40 -05:00
|
|
|
|
color: var(--ots-primary);
|
2026-02-04 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-04 10:00:40 -05:00
|
|
|
|
/* =============================================================================
|
|
|
|
|
|
ALERTS / BADGES
|
|
|
|
|
|
============================================================================= */
|
2026-02-04 07:17:33 -05:00
|
|
|
|
|
2026-02-04 10:00:40 -05:00
|
|
|
|
.alert {
|
|
|
|
|
|
border-radius: var(--ots-radius-sm);
|
|
|
|
|
|
border: 1px solid var(--ots-border);
|
2026-02-04 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-04 10:00:40 -05:00
|
|
|
|
.alert-success {
|
|
|
|
|
|
background: rgba(42, 212, 164, 0.15);
|
|
|
|
|
|
color: var(--ots-success);
|
2026-02-04 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-04 10:00:40 -05:00
|
|
|
|
.alert-warning {
|
|
|
|
|
|
background: rgba(244, 184, 96, 0.15);
|
|
|
|
|
|
color: var(--ots-warning);
|
2026-02-04 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-04 10:00:40 -05:00
|
|
|
|
.alert-danger {
|
|
|
|
|
|
background: rgba(255, 107, 107, 0.15);
|
|
|
|
|
|
color: var(--ots-danger);
|
2026-02-04 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-04 10:00:40 -05:00
|
|
|
|
.alert-info {
|
|
|
|
|
|
background: rgba(94, 192, 255, 0.15);
|
|
|
|
|
|
color: var(--ots-info);
|
2026-02-04 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
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 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-04 10:00:40 -05:00
|
|
|
|
/* =============================================================================
|
|
|
|
|
|
TABS / PAGINATION
|
|
|
|
|
|
============================================================================= */
|
2026-02-04 07:17:33 -05:00
|
|
|
|
|
2026-02-04 10:00:40 -05:00
|
|
|
|
.nav-tabs {
|
|
|
|
|
|
border-bottom: 1px solid var(--ots-border);
|
2026-02-04 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-04 10:00:40 -05:00
|
|
|
|
.nav-tabs > li > a {
|
|
|
|
|
|
color: var(--ots-text-muted);
|
|
|
|
|
|
border: 1px solid transparent;
|
2026-02-04 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
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 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
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 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
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 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
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 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-04 10:00:40 -05:00
|
|
|
|
/* =============================================================================
|
|
|
|
|
|
MODALS
|
|
|
|
|
|
============================================================================= */
|
2026-02-04 07:17:33 -05:00
|
|
|
|
|
2026-02-09 18:47:14 -05:00
|
|
|
|
/* --- Content wrapper --- */
|
2026-02-04 10:00:40 -05:00
|
|
|
|
.modal-content {
|
|
|
|
|
|
border-radius: var(--ots-radius-lg);
|
2026-02-09 18:47:14 -05:00
|
|
|
|
background-color: var(--modal-bg, var(--ots-surface)) !important;
|
|
|
|
|
|
color: var(--modal-body-text, var(--ots-text)) !important;
|
|
|
|
|
|
border: 1px solid var(--modal-border, var(--ots-border)) !important;
|
|
|
|
|
|
box-shadow: var(--modal-shadow, var(--ots-shadow-lg)) !important;
|
|
|
|
|
|
overflow: hidden;
|
2026-02-04 15:26:44 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-09 18:47:14 -05:00
|
|
|
|
/* --- Transparent parents --- */
|
2026-02-04 15:26:44 -05:00
|
|
|
|
.modal,
|
|
|
|
|
|
.modal-header,
|
|
|
|
|
|
.modal-body,
|
|
|
|
|
|
.modal-footer {
|
2026-02-09 18:47:14 -05:00
|
|
|
|
color: var(--modal-body-text, var(--ots-text)) !important;
|
2026-02-04 15:26:44 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-09 18:47:14 -05:00
|
|
|
|
/* --- Header --- */
|
|
|
|
|
|
.modal-header {
|
|
|
|
|
|
background-color: var(--modal-header-bg, var(--ots-surface)) !important;
|
|
|
|
|
|
border-bottom: 1px solid var(--modal-header-border, var(--ots-border)) !important;
|
|
|
|
|
|
padding: 16px 20px !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.modal-title,
|
|
|
|
|
|
.modal-header h4,
|
|
|
|
|
|
.modal-header h5 {
|
|
|
|
|
|
color: var(--modal-header-text, var(--ots-text)) !important;
|
|
|
|
|
|
font-weight: 600;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* --- Body --- */
|
|
|
|
|
|
.modal-body {
|
|
|
|
|
|
background-color: var(--modal-body-bg, var(--ots-surface)) !important;
|
|
|
|
|
|
color: var(--modal-body-text, var(--ots-text)) !important;
|
|
|
|
|
|
padding: 20px !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* --- Backdrop --- */
|
2026-02-04 15:26:44 -05:00
|
|
|
|
.modal-backdrop,
|
|
|
|
|
|
.modal-backdrop.show,
|
|
|
|
|
|
.modal-backdrop.in {
|
2026-02-09 18:47:14 -05:00
|
|
|
|
background-color: var(--modal-backdrop-bg, rgba(0, 0, 0, 0.3)) !important;
|
|
|
|
|
|
backdrop-filter: blur(var(--modal-backdrop-blur, 4px)) !important;
|
|
|
|
|
|
-webkit-backdrop-filter: blur(var(--modal-backdrop-blur, 4px)) !important;
|
2026-02-04 15:26:44 -05:00
|
|
|
|
opacity: 1 !important;
|
2026-02-04 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-09 18:47:14 -05:00
|
|
|
|
/* --- Footer --- */
|
2026-02-04 10:00:40 -05:00
|
|
|
|
.modal-footer {
|
2026-02-09 18:47:14 -05:00
|
|
|
|
background-color: var(--modal-footer-bg, transparent) !important;
|
|
|
|
|
|
border-top: 1px solid var(--modal-footer-border, var(--ots-border)) !important;
|
|
|
|
|
|
padding: 12px 20px !important;
|
2026-02-04 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-09 18:47:14 -05:00
|
|
|
|
/* Footer buttons — secondary / cancel */
|
2026-02-06 23:57:16 -05:00
|
|
|
|
.modal-footer .btn,
|
|
|
|
|
|
.modal-footer button {
|
2026-02-09 18:47:14 -05:00
|
|
|
|
background: var(--modal-body-bg, var(--ots-surface-3)) !important;
|
|
|
|
|
|
color: var(--modal-body-text, var(--ots-text)) !important;
|
|
|
|
|
|
border: 1px solid var(--modal-border, var(--ots-border)) !important;
|
2026-02-06 23:57:16 -05:00
|
|
|
|
box-shadow: none !important;
|
2026-02-09 18:47:14 -05:00
|
|
|
|
border-radius: var(--ots-radius-sm) !important;
|
|
|
|
|
|
transition: background var(--ots-transition),
|
|
|
|
|
|
color var(--ots-transition),
|
|
|
|
|
|
border-color var(--ots-transition);
|
2026-02-06 23:57:16 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.modal-footer .btn:hover,
|
|
|
|
|
|
.modal-footer button:hover {
|
2026-03-23 21:09:27 -04:00
|
|
|
|
background: rgba(var(--ots-primary-rgb), 0.08) !important;
|
2026-02-06 23:57:16 -05:00
|
|
|
|
color: var(--ots-primary) !important;
|
|
|
|
|
|
border-color: var(--ots-primary) !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-09 18:47:14 -05:00
|
|
|
|
/* Footer buttons — primary / submit */
|
2026-02-06 23:57:16 -05:00
|
|
|
|
.modal-footer .btn.btn-primary,
|
|
|
|
|
|
.modal-footer button.btn-primary {
|
|
|
|
|
|
background: var(--ots-primary) !important;
|
|
|
|
|
|
color: #0b1020 !important;
|
|
|
|
|
|
border-color: var(--ots-primary-2) !important;
|
2026-02-09 18:47:14 -05:00
|
|
|
|
font-weight: 600;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.modal-footer .btn.btn-primary:hover,
|
|
|
|
|
|
.modal-footer button.btn-primary:hover {
|
|
|
|
|
|
background: var(--ots-primary-2) !important;
|
|
|
|
|
|
color: #ffffff !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* Footer buttons — danger */
|
|
|
|
|
|
.modal-footer .btn.btn-danger {
|
|
|
|
|
|
background: var(--ots-danger) !important;
|
|
|
|
|
|
color: #ffffff !important;
|
|
|
|
|
|
border-color: var(--ots-danger) !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* --- Form controls inside modals --- */
|
|
|
|
|
|
.modal-body .form-control,
|
|
|
|
|
|
.modal-body input[type="text"],
|
|
|
|
|
|
.modal-body input[type="number"],
|
|
|
|
|
|
.modal-body input[type="email"],
|
|
|
|
|
|
.modal-body input[type="password"],
|
|
|
|
|
|
.modal-body textarea,
|
|
|
|
|
|
.modal-body select {
|
|
|
|
|
|
background-color: var(--modal-input-bg, var(--ots-bg)) !important;
|
|
|
|
|
|
border: 1px solid var(--modal-input-border, var(--ots-border)) !important;
|
|
|
|
|
|
border-radius: var(--ots-radius-sm) !important;
|
|
|
|
|
|
color: var(--modal-input-text, var(--ots-text)) !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.modal-body .form-control:focus,
|
|
|
|
|
|
.modal-body input:focus,
|
|
|
|
|
|
.modal-body textarea:focus,
|
|
|
|
|
|
.modal-body select:focus {
|
|
|
|
|
|
border-color: var(--modal-input-focus-border, var(--ots-primary)) !important;
|
2026-03-23 21:09:27 -04:00
|
|
|
|
box-shadow: 0 0 0 3px var(--modal-input-focus-ring, rgba(var(--ots-primary-rgb), 0.2)) !important;
|
2026-02-09 18:47:14 -05:00
|
|
|
|
outline: none !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-11 20:47:09 -05:00
|
|
|
|
/* --- Bootstrap Tagsinput / Tokenfield inside modals --- */
|
|
|
|
|
|
.modal-body .bootstrap-tagsinput,
|
|
|
|
|
|
.modal-body .tagsinput,
|
|
|
|
|
|
.modal-body .tokenfield {
|
|
|
|
|
|
background-color: var(--modal-input-bg, var(--ots-bg)) !important;
|
|
|
|
|
|
border: 1px solid var(--modal-input-border, var(--ots-border)) !important;
|
|
|
|
|
|
border-radius: var(--ots-radius-sm) !important;
|
|
|
|
|
|
color: var(--modal-input-text, var(--ots-text)) !important;
|
|
|
|
|
|
min-height: 36px;
|
|
|
|
|
|
padding: 4px 8px !important;
|
|
|
|
|
|
box-shadow: none !important;
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
flex-wrap: wrap;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
gap: 4px;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.modal-body .bootstrap-tagsinput:focus-within,
|
|
|
|
|
|
.modal-body .tagsinput:focus-within,
|
|
|
|
|
|
.modal-body .tokenfield:focus-within {
|
|
|
|
|
|
border-color: var(--modal-input-focus-border, var(--ots-primary)) !important;
|
2026-03-23 21:09:27 -04:00
|
|
|
|
box-shadow: 0 0 0 3px var(--modal-input-focus-ring, rgba(var(--ots-primary-rgb), 0.2)) !important;
|
2026-02-11 20:47:09 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.modal-body .bootstrap-tagsinput input,
|
|
|
|
|
|
.modal-body .tagsinput input,
|
|
|
|
|
|
.modal-body .tokenfield input.token-input {
|
|
|
|
|
|
background: transparent !important;
|
|
|
|
|
|
color: var(--modal-input-text, var(--ots-text)) !important;
|
|
|
|
|
|
border: none !important;
|
|
|
|
|
|
box-shadow: none !important;
|
|
|
|
|
|
outline: none !important;
|
|
|
|
|
|
margin: 0 !important;
|
|
|
|
|
|
padding: 2px 4px !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.modal-body .bootstrap-tagsinput input::placeholder,
|
|
|
|
|
|
.modal-body .tagsinput input::placeholder,
|
|
|
|
|
|
.modal-body .tokenfield input.token-input::placeholder {
|
|
|
|
|
|
color: var(--ots-text-faint, #7f8aa3) !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.modal-body .bootstrap-tagsinput .tag,
|
|
|
|
|
|
.modal-body .bootstrap-tagsinput .badge,
|
|
|
|
|
|
.modal-body .tagsinput .tag,
|
|
|
|
|
|
.modal-body .tokenfield .token {
|
2026-03-23 21:09:27 -04:00
|
|
|
|
background: rgba(var(--ots-primary-rgb), 0.18) !important;
|
|
|
|
|
|
border: 1px solid rgba(var(--ots-primary-rgb), 0.35) !important;
|
|
|
|
|
|
color: var(--ots-primary, #e87800) !important;
|
2026-02-11 20:47:09 -05:00
|
|
|
|
border-radius: 999px !important;
|
|
|
|
|
|
padding: 2px 8px !important;
|
|
|
|
|
|
font-size: 0.8rem;
|
|
|
|
|
|
line-height: 1.5;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.modal-body .bootstrap-tagsinput .tag [data-role="remove"],
|
|
|
|
|
|
.modal-body .bootstrap-tagsinput .badge [data-role="remove"],
|
|
|
|
|
|
.modal-body .tokenfield .token .close {
|
2026-03-23 21:09:27 -04:00
|
|
|
|
color: var(--ots-primary, #e87800) !important;
|
2026-02-11 20:47:09 -05:00
|
|
|
|
opacity: 0.7;
|
|
|
|
|
|
margin-left: 4px;
|
|
|
|
|
|
cursor: pointer;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.modal-body .bootstrap-tagsinput .tag [data-role="remove"]:hover,
|
|
|
|
|
|
.modal-body .bootstrap-tagsinput .badge [data-role="remove"]:hover,
|
|
|
|
|
|
.modal-body .tokenfield .token .close:hover {
|
|
|
|
|
|
opacity: 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* Global bootstrap-tagsinput theming (outside modals too) */
|
|
|
|
|
|
.bootstrap-tagsinput,
|
|
|
|
|
|
.tagsinput,
|
|
|
|
|
|
.tokenfield {
|
|
|
|
|
|
background-color: var(--modal-input-bg, var(--ots-bg)) !important;
|
|
|
|
|
|
border: 1px solid var(--modal-input-border, var(--ots-border)) !important;
|
|
|
|
|
|
border-radius: var(--ots-radius-sm) !important;
|
|
|
|
|
|
color: var(--modal-input-text, var(--ots-text)) !important;
|
|
|
|
|
|
box-shadow: none !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.bootstrap-tagsinput input,
|
|
|
|
|
|
.tagsinput input,
|
|
|
|
|
|
.tokenfield input.token-input {
|
|
|
|
|
|
background: transparent !important;
|
|
|
|
|
|
color: var(--modal-input-text, var(--ots-text)) !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.bootstrap-tagsinput .tag,
|
|
|
|
|
|
.bootstrap-tagsinput .badge,
|
|
|
|
|
|
.tagsinput .tag,
|
|
|
|
|
|
.tokenfield .token {
|
2026-03-23 21:09:27 -04:00
|
|
|
|
background: rgba(var(--ots-primary-rgb), 0.18) !important;
|
|
|
|
|
|
border: 1px solid rgba(var(--ots-primary-rgb), 0.35) !important;
|
|
|
|
|
|
color: var(--ots-primary, #e87800) !important;
|
2026-02-11 20:47:09 -05:00
|
|
|
|
border-radius: 999px !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-09 18:47:14 -05:00
|
|
|
|
/* --- Close button --- */
|
|
|
|
|
|
.modal-header .close,
|
|
|
|
|
|
.modal-header [data-dismiss="modal"] {
|
|
|
|
|
|
color: var(--modal-close-color, var(--ots-text-muted)) !important;
|
|
|
|
|
|
opacity: 1 !important;
|
|
|
|
|
|
text-shadow: none !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.modal-header .close:hover,
|
|
|
|
|
|
.modal-header [data-dismiss="modal"]:hover {
|
|
|
|
|
|
color: var(--modal-close-hover, var(--ots-text)) !important;
|
2026-02-06 23:57:16 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-04 10:00:40 -05:00
|
|
|
|
/* =============================================================================
|
|
|
|
|
|
HELP PANE / MISC
|
|
|
|
|
|
============================================================================= */
|
2026-02-04 07:17:33 -05:00
|
|
|
|
|
2026-02-04 10:00:40 -05:00
|
|
|
|
#help-pane {
|
2026-03-23 21:09:27 -04:00
|
|
|
|
position: fixed;
|
|
|
|
|
|
bottom: 20px;
|
|
|
|
|
|
right: 20px;
|
|
|
|
|
|
z-index: 10000;
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
|
align-items: flex-end;
|
|
|
|
|
|
gap: 12px;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#help-pane .help-pane-container {
|
|
|
|
|
|
position: relative;
|
|
|
|
|
|
width: 400px;
|
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
|
align-items: flex-start;
|
|
|
|
|
|
border-radius: 4px;
|
2026-02-04 10:00:40 -05:00
|
|
|
|
border: 1px solid var(--ots-border);
|
2026-03-23 21:09:27 -04:00
|
|
|
|
background: var(--ots-surface-2);
|
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
|
max-height: calc(100vh - 100px);
|
|
|
|
|
|
overflow-y: auto;
|
2026-02-04 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-04 10:00:40 -05:00
|
|
|
|
#help-pane .help-pane-btn {
|
2026-03-23 21:09:27 -04:00
|
|
|
|
display: flex;
|
|
|
|
|
|
justify-content: center;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
flex-shrink: 0;
|
|
|
|
|
|
width: 48px;
|
|
|
|
|
|
height: 48px;
|
|
|
|
|
|
border-radius: 50px;
|
2026-02-04 10:00:40 -05:00
|
|
|
|
background: var(--ots-primary);
|
|
|
|
|
|
color: #0b1020;
|
2026-03-23 21:09:27 -04:00
|
|
|
|
cursor: pointer;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#help-pane .help-pane-btn:hover {
|
|
|
|
|
|
background: var(--ots-primary-2);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#help-pane .help-pane-btn i {
|
|
|
|
|
|
font-size: 24px;
|
|
|
|
|
|
color: #fff;
|
2026-02-04 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-04 10:00:40 -05:00
|
|
|
|
/* =============================================================================
|
|
|
|
|
|
OTS DASHBOARD MESSAGE
|
|
|
|
|
|
============================================================================= */
|
2026-02-04 07:17:33 -05:00
|
|
|
|
|
2026-02-04 10:00:40 -05:00
|
|
|
|
.ots-dashboard-message {
|
|
|
|
|
|
margin: 16px 0 24px;
|
|
|
|
|
|
padding: 12px 16px;
|
|
|
|
|
|
border-radius: var(--ots-radius-md);
|
2026-03-23 21:09:27 -04:00
|
|
|
|
background: rgba(var(--ots-primary-rgb), 0.16);
|
|
|
|
|
|
border: 1px solid rgba(var(--ots-primary-rgb), 0.45);
|
2026-02-04 10:00:40 -05:00
|
|
|
|
color: var(--ots-text);
|
2026-02-04 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-04 10:00:40 -05:00
|
|
|
|
.ots-dashboard-message__title {
|
|
|
|
|
|
font-weight: 700;
|
|
|
|
|
|
letter-spacing: 0.02em;
|
|
|
|
|
|
text-transform: uppercase;
|
2026-02-04 07:17:33 -05:00
|
|
|
|
font-size: 12px;
|
2026-02-04 10:00:40 -05:00
|
|
|
|
margin-bottom: 4px;
|
2026-02-04 07:17:33 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-04 10:00:40 -05:00
|
|
|
|
.ots-dashboard-message__body {
|
|
|
|
|
|
font-size: 13px;
|
|
|
|
|
|
color: var(--ots-text-muted);
|
2026-02-04 07:17:33 -05:00
|
|
|
|
}
|
2026-02-06 23:57:16 -05:00
|
|
|
|
|
|
|
|
|
|
/* =============================================================================
|
|
|
|
|
|
LOGIN / SIGN-IN PAGE
|
|
|
|
|
|
Styles to match the requested sign-in card: centered panel, dark glass
|
|
|
|
|
|
surface, orange accent, soft shadow and modern inputs.
|
|
|
|
|
|
============================================================================= */
|
|
|
|
|
|
|
|
|
|
|
|
:root {
|
2026-03-23 21:09:27 -04:00
|
|
|
|
--login-accent: #e87800;
|
|
|
|
|
|
--login-panel-bg: var(--ots-surface-2);
|
2026-02-06 23:57:16 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
body.login, body.login-page, .xibo-login, #login, .login-wrapper {
|
|
|
|
|
|
min-height: 100vh;
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
justify-content: center;
|
|
|
|
|
|
padding: 40px 20px;
|
2026-03-23 21:09:27 -04:00
|
|
|
|
background: var(--ots-bg);
|
2026-02-06 23:57:16 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
Refactor toolbar buttons across various pages to unify styling
- Updated button classes for consistency in the playersoftware-page, playlist-page, resolution-page, schedule-page, settings-page, syncgroup-page, tag-page, task-page, template-page, transition-page, user-page, and usergroup-page.
- Removed unnecessary text from button titles and ensured all buttons have the 'ots-toolbar-btn' class for uniformity.
- Cleaned up the code by removing commented-out sections and ensuring proper indentation.
2026-02-07 14:50:40 -05:00
|
|
|
|
body.login-page .container {
|
|
|
|
|
|
width: 100%;
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
justify-content: center;
|
|
|
|
|
|
gap: 16px;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-06 23:57:16 -05:00
|
|
|
|
.login-card,
|
|
|
|
|
|
.login-panel,
|
|
|
|
|
|
.auth-card,
|
|
|
|
|
|
.xibo-login-box,
|
|
|
|
|
|
#login-box {
|
|
|
|
|
|
width: 100%;
|
Refactor toolbar buttons across various pages to unify styling
- Updated button classes for consistency in the playersoftware-page, playlist-page, resolution-page, schedule-page, settings-page, syncgroup-page, tag-page, task-page, template-page, transition-page, user-page, and usergroup-page.
- Removed unnecessary text from button titles and ensured all buttons have the 'ots-toolbar-btn' class for uniformity.
- Cleaned up the code by removing commented-out sections and ensuring proper indentation.
2026-02-07 14:50:40 -05:00
|
|
|
|
max-width: 520px;
|
2026-03-23 21:09:27 -04:00
|
|
|
|
border-radius: 12px;
|
Refactor toolbar buttons across various pages to unify styling
- Updated button classes for consistency in the playersoftware-page, playlist-page, resolution-page, schedule-page, settings-page, syncgroup-page, tag-page, task-page, template-page, transition-page, user-page, and usergroup-page.
- Removed unnecessary text from button titles and ensured all buttons have the 'ots-toolbar-btn' class for uniformity.
- Cleaned up the code by removing commented-out sections and ensuring proper indentation.
2026-02-07 14:50:40 -05:00
|
|
|
|
padding: 36px 40px 34px;
|
2026-03-23 21:09:27 -04:00
|
|
|
|
background: var(--ots-surface-2);
|
|
|
|
|
|
border: 1px solid var(--ots-border);
|
|
|
|
|
|
box-shadow: 0 12px 28px rgba(0, 0, 0, 0.35);
|
2026-02-06 23:57:16 -05:00
|
|
|
|
color: var(--ots-text);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.login-card .login-logo,
|
|
|
|
|
|
.login-panel .login-logo {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
justify-content: center;
|
|
|
|
|
|
margin-bottom: 18px;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.login-card .login-logo .logo-icon,
|
|
|
|
|
|
.login-panel .login-logo .logo-icon {
|
|
|
|
|
|
width: 92px;
|
|
|
|
|
|
height: 92px;
|
|
|
|
|
|
border-radius: 10px;
|
|
|
|
|
|
background: var(--login-accent);
|
|
|
|
|
|
display: inline-flex;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
justify-content: center;
|
|
|
|
|
|
box-shadow: 0 6px 18px rgba(0,0,0,0.45);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* Brand text next to logo on login */
|
|
|
|
|
|
.login-brand {
|
|
|
|
|
|
display: flex;
|
Refactor toolbar buttons across various pages to unify styling
- Updated button classes for consistency in the playersoftware-page, playlist-page, resolution-page, schedule-page, settings-page, syncgroup-page, tag-page, task-page, template-page, transition-page, user-page, and usergroup-page.
- Removed unnecessary text from button titles and ensured all buttons have the 'ots-toolbar-btn' class for uniformity.
- Cleaned up the code by removing commented-out sections and ensuring proper indentation.
2026-02-07 14:50:40 -05:00
|
|
|
|
flex-direction: column;
|
2026-02-06 23:57:16 -05:00
|
|
|
|
align-items: center;
|
|
|
|
|
|
justify-content: center;
|
Refactor toolbar buttons across various pages to unify styling
- Updated button classes for consistency in the playersoftware-page, playlist-page, resolution-page, schedule-page, settings-page, syncgroup-page, tag-page, task-page, template-page, transition-page, user-page, and usergroup-page.
- Removed unnecessary text from button titles and ensured all buttons have the 'ots-toolbar-btn' class for uniformity.
- Cleaned up the code by removing commented-out sections and ensuring proper indentation.
2026-02-07 14:50:40 -05:00
|
|
|
|
gap: 10px;
|
2026-02-06 23:57:16 -05:00
|
|
|
|
margin-bottom: 18px;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.login-brand .login-logo {
|
Refactor toolbar buttons across various pages to unify styling
- Updated button classes for consistency in the playersoftware-page, playlist-page, resolution-page, schedule-page, settings-page, syncgroup-page, tag-page, task-page, template-page, transition-page, user-page, and usergroup-page.
- Removed unnecessary text from button titles and ensured all buttons have the 'ots-toolbar-btn' class for uniformity.
- Cleaned up the code by removing commented-out sections and ensuring proper indentation.
2026-02-07 14:50:40 -05:00
|
|
|
|
width: 72px;
|
|
|
|
|
|
height: 72px;
|
2026-02-06 23:57:16 -05:00
|
|
|
|
display: inline-block;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.login-brand-text {
|
|
|
|
|
|
color: var(--ots-text);
|
Refactor toolbar buttons across various pages to unify styling
- Updated button classes for consistency in the playersoftware-page, playlist-page, resolution-page, schedule-page, settings-page, syncgroup-page, tag-page, task-page, template-page, transition-page, user-page, and usergroup-page.
- Removed unnecessary text from button titles and ensured all buttons have the 'ots-toolbar-btn' class for uniformity.
- Cleaned up the code by removing commented-out sections and ensuring proper indentation.
2026-02-07 14:50:40 -05:00
|
|
|
|
font-size: 1.2rem;
|
|
|
|
|
|
font-weight: 600;
|
|
|
|
|
|
letter-spacing: 0.02em;
|
2026-02-06 23:57:16 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.login-card h1,
|
|
|
|
|
|
.login-panel h1 {
|
|
|
|
|
|
text-align: center;
|
|
|
|
|
|
margin: 8px 0 6px 0;
|
|
|
|
|
|
font-size: 28px;
|
|
|
|
|
|
font-weight: 700;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.login-card .lead,
|
|
|
|
|
|
.login-panel .lead {
|
|
|
|
|
|
text-align: center;
|
Refactor toolbar buttons across various pages to unify styling
- Updated button classes for consistency in the playersoftware-page, playlist-page, resolution-page, schedule-page, settings-page, syncgroup-page, tag-page, task-page, template-page, transition-page, user-page, and usergroup-page.
- Removed unnecessary text from button titles and ensured all buttons have the 'ots-toolbar-btn' class for uniformity.
- Cleaned up the code by removing commented-out sections and ensuring proper indentation.
2026-02-07 14:50:40 -05:00
|
|
|
|
color: rgba(226,232,240,0.74);
|
2026-02-06 23:57:16 -05:00
|
|
|
|
margin-bottom: 18px;
|
Refactor toolbar buttons across various pages to unify styling
- Updated button classes for consistency in the playersoftware-page, playlist-page, resolution-page, schedule-page, settings-page, syncgroup-page, tag-page, task-page, template-page, transition-page, user-page, and usergroup-page.
- Removed unnecessary text from button titles and ensured all buttons have the 'ots-toolbar-btn' class for uniformity.
- Cleaned up the code by removing commented-out sections and ensuring proper indentation.
2026-02-07 14:50:40 -05:00
|
|
|
|
font-size: 0.95rem;
|
2026-02-06 23:57:16 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.login-card .form-group,
|
|
|
|
|
|
.login-panel .form-group {
|
|
|
|
|
|
margin-bottom: 14px;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.login-card input[type="text"],
|
|
|
|
|
|
.login-card input[type="email"],
|
|
|
|
|
|
.login-card input[type="password"],
|
|
|
|
|
|
.login-card .form-control,
|
|
|
|
|
|
.login-panel input[type="text"],
|
|
|
|
|
|
.login-panel input[type="email"],
|
|
|
|
|
|
.login-panel input[type="password"] {
|
|
|
|
|
|
width: 100%;
|
Refactor toolbar buttons across various pages to unify styling
- Updated button classes for consistency in the playersoftware-page, playlist-page, resolution-page, schedule-page, settings-page, syncgroup-page, tag-page, task-page, template-page, transition-page, user-page, and usergroup-page.
- Removed unnecessary text from button titles and ensured all buttons have the 'ots-toolbar-btn' class for uniformity.
- Cleaned up the code by removing commented-out sections and ensuring proper indentation.
2026-02-07 14:50:40 -05:00
|
|
|
|
background: rgba(11, 18, 33, 0.65);
|
|
|
|
|
|
border: 1px solid rgba(148, 163, 184, 0.18);
|
2026-02-06 23:57:16 -05:00
|
|
|
|
color: var(--ots-text);
|
Refactor toolbar buttons across various pages to unify styling
- Updated button classes for consistency in the playersoftware-page, playlist-page, resolution-page, schedule-page, settings-page, syncgroup-page, tag-page, task-page, template-page, transition-page, user-page, and usergroup-page.
- Removed unnecessary text from button titles and ensured all buttons have the 'ots-toolbar-btn' class for uniformity.
- Cleaned up the code by removing commented-out sections and ensuring proper indentation.
2026-02-07 14:50:40 -05:00
|
|
|
|
padding: 12px 14px;
|
|
|
|
|
|
border-radius: 10px;
|
|
|
|
|
|
font-size: 0.98rem;
|
2026-02-06 23:57:16 -05:00
|
|
|
|
line-height: 1.25;
|
|
|
|
|
|
transition: border-color 180ms ease, box-shadow 180ms ease, background 180ms ease;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.login-card input:focus,
|
|
|
|
|
|
.login-panel input:focus,
|
|
|
|
|
|
.login-card .form-control:focus {
|
|
|
|
|
|
outline: none;
|
Refactor toolbar buttons across various pages to unify styling
- Updated button classes for consistency in the playersoftware-page, playlist-page, resolution-page, schedule-page, settings-page, syncgroup-page, tag-page, task-page, template-page, transition-page, user-page, and usergroup-page.
- Removed unnecessary text from button titles and ensured all buttons have the 'ots-toolbar-btn' class for uniformity.
- Cleaned up the code by removing commented-out sections and ensuring proper indentation.
2026-02-07 14:50:40 -05:00
|
|
|
|
border-color: rgba(255,138,0,0.85);
|
|
|
|
|
|
background: rgba(11, 18, 33, 0.75);
|
|
|
|
|
|
box-shadow: 0 10px 26px rgba(0,0,0,0.38), 0 0 0 5px rgba(255,138,0,0.08);
|
2026-02-06 23:57:16 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.login-card input::placeholder,
|
|
|
|
|
|
.login-panel input::placeholder {
|
|
|
|
|
|
color: rgba(255,255,255,0.58);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.login-card input + input,
|
|
|
|
|
|
.login-card input + .form-control,
|
|
|
|
|
|
.login-panel input + input {
|
|
|
|
|
|
margin-top: 10px;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.login-card .form-control[disabled],
|
|
|
|
|
|
.login-card input[disabled] {
|
|
|
|
|
|
opacity: 0.7;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.login-card .btn-signin,
|
|
|
|
|
|
.login-panel .btn-signin,
|
|
|
|
|
|
.login-card .btn-primary.login,
|
|
|
|
|
|
.login-panel .btn-primary.login {
|
|
|
|
|
|
display: inline-flex;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
justify-content: center;
|
|
|
|
|
|
gap: 8px;
|
|
|
|
|
|
width: 100%;
|
|
|
|
|
|
padding: 10px 14px;
|
Refactor toolbar buttons across various pages to unify styling
- Updated button classes for consistency in the playersoftware-page, playlist-page, resolution-page, schedule-page, settings-page, syncgroup-page, tag-page, task-page, template-page, transition-page, user-page, and usergroup-page.
- Removed unnecessary text from button titles and ensured all buttons have the 'ots-toolbar-btn' class for uniformity.
- Cleaned up the code by removing commented-out sections and ensuring proper indentation.
2026-02-07 14:50:40 -05:00
|
|
|
|
background: #f8fafc;
|
|
|
|
|
|
color: #0b1221 !important;
|
2026-02-06 23:57:16 -05:00
|
|
|
|
border-radius: 10px;
|
Refactor toolbar buttons across various pages to unify styling
- Updated button classes for consistency in the playersoftware-page, playlist-page, resolution-page, schedule-page, settings-page, syncgroup-page, tag-page, task-page, template-page, transition-page, user-page, and usergroup-page.
- Removed unnecessary text from button titles and ensured all buttons have the 'ots-toolbar-btn' class for uniformity.
- Cleaned up the code by removing commented-out sections and ensuring proper indentation.
2026-02-07 14:50:40 -05:00
|
|
|
|
border: 1px solid rgba(255,255,255,0.8);
|
2026-02-06 23:57:16 -05:00
|
|
|
|
font-weight: 600;
|
Refactor toolbar buttons across various pages to unify styling
- Updated button classes for consistency in the playersoftware-page, playlist-page, resolution-page, schedule-page, settings-page, syncgroup-page, tag-page, task-page, template-page, transition-page, user-page, and usergroup-page.
- Removed unnecessary text from button titles and ensured all buttons have the 'ots-toolbar-btn' class for uniformity.
- Cleaned up the code by removing commented-out sections and ensuring proper indentation.
2026-02-07 14:50:40 -05:00
|
|
|
|
box-shadow: 0 10px 22px rgba(2,6,23,0.35);
|
|
|
|
|
|
transition: background 160ms ease, border-color 160ms ease, color 160ms ease, box-shadow 160ms ease, transform 160ms ease;
|
2026-02-06 23:57:16 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.login-card .btn-signin .icon,
|
|
|
|
|
|
.login-panel .btn-signin .icon {
|
|
|
|
|
|
display: inline-flex;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
justify-content: center;
|
|
|
|
|
|
width: 18px;
|
|
|
|
|
|
height: 18px;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.login-card .btn-signin:hover,
|
|
|
|
|
|
.login-panel .btn-signin:hover {
|
Refactor toolbar buttons across various pages to unify styling
- Updated button classes for consistency in the playersoftware-page, playlist-page, resolution-page, schedule-page, settings-page, syncgroup-page, tag-page, task-page, template-page, transition-page, user-page, and usergroup-page.
- Removed unnecessary text from button titles and ensured all buttons have the 'ots-toolbar-btn' class for uniformity.
- Cleaned up the code by removing commented-out sections and ensuring proper indentation.
2026-02-07 14:50:40 -05:00
|
|
|
|
background: #ffffff;
|
|
|
|
|
|
border-color: rgba(255,255,255,0.95);
|
|
|
|
|
|
transform: translateY(-1px);
|
2026-02-06 23:57:16 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.login-card .btn-signin:focus,
|
|
|
|
|
|
.login-panel .btn-signin:focus {
|
|
|
|
|
|
outline: none;
|
Refactor toolbar buttons across various pages to unify styling
- Updated button classes for consistency in the playersoftware-page, playlist-page, resolution-page, schedule-page, settings-page, syncgroup-page, tag-page, task-page, template-page, transition-page, user-page, and usergroup-page.
- Removed unnecessary text from button titles and ensured all buttons have the 'ots-toolbar-btn' class for uniformity.
- Cleaned up the code by removing commented-out sections and ensuring proper indentation.
2026-02-07 14:50:40 -05:00
|
|
|
|
box-shadow: 0 10px 24px rgba(0,0,0,0.32), 0 0 0 5px rgba(255,138,0,0.18);
|
|
|
|
|
|
border-color: rgba(255,138,0,0.45);
|
2026-02-06 23:57:16 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.login-card .forgot-link,
|
|
|
|
|
|
.login-panel .forgot-link {
|
|
|
|
|
|
display: block;
|
|
|
|
|
|
text-align: right;
|
|
|
|
|
|
margin-top: 8px;
|
|
|
|
|
|
color: var(--ots-text-muted);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* Small screens: compress card padding */
|
|
|
|
|
|
@media (max-width: 520px) {
|
2026-03-23 21:09:27 -04:00
|
|
|
|
.login-card, .login-panel { padding: 24px; border-radius: 8px; }
|
2026-02-06 23:57:16 -05:00
|
|
|
|
.login-card .login-logo .logo-icon { width: 72px; height: 72px; }
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-23 21:09:27 -04:00
|
|
|
|
/* Static orange accent bar — brand anchor at the bottom of the login page */
|
|
|
|
|
|
body.login-page::after {
|
|
|
|
|
|
content: '';
|
2026-02-06 23:57:16 -05:00
|
|
|
|
position: fixed;
|
2026-03-23 21:09:27 -04:00
|
|
|
|
bottom: 0;
|
|
|
|
|
|
left: 0;
|
|
|
|
|
|
right: 0;
|
|
|
|
|
|
height: 3px;
|
|
|
|
|
|
background: var(--login-accent);
|
|
|
|
|
|
z-index: 10;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* Bring the login card above the background */
|
2026-02-06 23:57:16 -05:00
|
|
|
|
.login-card,
|
|
|
|
|
|
.login-panel,
|
|
|
|
|
|
.auth-card,
|
|
|
|
|
|
.xibo-login-box,
|
|
|
|
|
|
#login-box {
|
|
|
|
|
|
position: relative;
|
|
|
|
|
|
z-index: 2;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* EXTRA DEFENSIVE: ensure no white background shows through on long pages */
|
Refactor dashboard card classes to use 'content-card' instead of 'dashboard-card'
- Updated various views to replace 'dashboard-card' with 'content-card' for consistency in styling.
- Modified filter and table card classes across multiple pages including applications, campaigns, commands, datasets, dayparts, displays, display groups, display profiles, fonts, layouts, libraries, menu boards, modules, player software, playlists, resolutions, schedules, settings, sync groups, tags, tasks, templates, transitions, users, and user groups.
2026-02-11 09:17:45 -05:00
|
|
|
|
html, body, #page-wrapper, .ots-shell, .ots-main, #content-wrapper, .content-wrapper, .ots-content, .page-content, .container, .container-fluid, .dashboard-page, .dashboard, .dashboard-card, .content-card, .page {
|
2026-02-06 23:57:16 -05:00
|
|
|
|
background-color: var(--color-background) !important;
|
|
|
|
|
|
background-image: none !important;
|
|
|
|
|
|
background-repeat: no-repeat !important;
|
|
|
|
|
|
color: var(--color-text-primary) !important;
|
|
|
|
|
|
min-height: 100vh !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* Neutralise any inline styles or late-loaded styles that set white backgrounds */
|
|
|
|
|
|
*[style] {
|
|
|
|
|
|
background-color: inherit !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* Provide a small utility to detect offending elements visually (useful while debugging) */
|
|
|
|
|
|
body.debug-white-areas * {
|
|
|
|
|
|
outline: 1px solid rgba(255,0,0,0.04) !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* Strong fallback for modals/backdrops */
|
|
|
|
|
|
.modal-backdrop, .modal, .modal-open, .ots-footer, .page-footer {
|
|
|
|
|
|
background-color: var(--color-background) !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* Ensure the root html background is also forced dark at the highest level */
|
|
|
|
|
|
html[style], body[style] {
|
|
|
|
|
|
background-color: var(--color-background) !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-11 20:47:09 -05:00
|
|
|
|
/* =============================================================================
|
|
|
|
|
|
OTS UPLOAD MODAL – Dark-mode refinements
|
|
|
|
|
|
Supplements override-styles.twig which uses CSS variables for auto theming.
|
|
|
|
|
|
These rules guarantee the upload modal stays dark when override-dark.css loads.
|
|
|
|
|
|
============================================================================= */
|
|
|
|
|
|
.ots-upload-content {
|
|
|
|
|
|
background: var(--ots-surface, #141c2b);
|
|
|
|
|
|
border-color: var(--ots-border, #2c3a54);
|
|
|
|
|
|
}
|
|
|
|
|
|
.ots-upload-header {
|
|
|
|
|
|
background: var(--ots-bg, #0b111a);
|
|
|
|
|
|
border-bottom-color: var(--ots-border, #2c3a54);
|
|
|
|
|
|
}
|
|
|
|
|
|
.ots-upload-title {
|
|
|
|
|
|
color: var(--ots-text, #e6eefb);
|
|
|
|
|
|
}
|
|
|
|
|
|
.ots-upload-body {
|
|
|
|
|
|
background: var(--ots-surface, #141c2b);
|
|
|
|
|
|
color: var(--ots-text, #e6eefb);
|
|
|
|
|
|
}
|
|
|
|
|
|
.ots-upload-dropzone {
|
|
|
|
|
|
border-color: var(--ots-border, #2c3a54);
|
2026-03-23 21:09:27 -04:00
|
|
|
|
background: rgba(232,120,0,0.03);
|
2026-02-11 20:47:09 -05:00
|
|
|
|
}
|
|
|
|
|
|
.ots-upload-dropzone:hover,
|
|
|
|
|
|
.ots-upload-dropzone:focus-visible {
|
2026-03-23 21:09:27 -04:00
|
|
|
|
border-color: var(--ots-primary, #e87800);
|
|
|
|
|
|
background: rgba(232,120,0,0.07);
|
2026-02-11 20:47:09 -05:00
|
|
|
|
}
|
|
|
|
|
|
.ots-upload-dropzone--over {
|
2026-03-23 21:09:27 -04:00
|
|
|
|
border-color: var(--ots-primary, #e87800) !important;
|
|
|
|
|
|
background: rgba(232,120,0,0.12) !important;
|
2026-02-11 20:47:09 -05:00
|
|
|
|
}
|
|
|
|
|
|
.ots-upload-file-item {
|
|
|
|
|
|
background: var(--ots-bg, #0b111a);
|
|
|
|
|
|
border-color: var(--ots-border-soft, #243047);
|
|
|
|
|
|
}
|
|
|
|
|
|
.ots-upload-file-name {
|
|
|
|
|
|
color: var(--ots-text, #e6eefb);
|
|
|
|
|
|
}
|
|
|
|
|
|
.ots-upload-file-meta {
|
|
|
|
|
|
color: var(--ots-text-muted, #a9b6cc);
|
|
|
|
|
|
}
|
|
|
|
|
|
.ots-upload-footer {
|
|
|
|
|
|
background: var(--ots-bg, #0b111a);
|
|
|
|
|
|
border-top-color: var(--ots-border, #2c3a54);
|
|
|
|
|
|
}
|
|
|
|
|
|
.ots-upload-btn-cancel {
|
|
|
|
|
|
color: var(--ots-text-muted, #a9b6cc);
|
|
|
|
|
|
border-color: var(--ots-border, #2c3a54);
|
|
|
|
|
|
}
|
|
|
|
|
|
.ots-upload-btn-cancel:hover {
|
|
|
|
|
|
background: rgba(255,255,255,0.06);
|
|
|
|
|
|
color: var(--ots-text, #e6eefb);
|
|
|
|
|
|
}
|
|
|
|
|
|
.ots-upload-option {
|
2026-03-23 21:09:27 -04:00
|
|
|
|
background: rgba(232,120,0,0.04);
|
|
|
|
|
|
border-color: rgba(232,120,0,0.08);
|
2026-02-11 20:47:09 -05:00
|
|
|
|
color: var(--ots-text, #e6eefb);
|
|
|
|
|
|
}
|
|
|
|
|
|
.ots-upload-option small {
|
|
|
|
|
|
color: var(--ots-text-muted, #a9b6cc);
|
|
|
|
|
|
}
|