1515 lines
36 KiB
CSS
1515 lines
36 KiB
CSS
/* ============================================================================
|
|
XIBO CMS MODERN THEME - OTS Signance
|
|
Design Token System & Component Overrides
|
|
============================================================================ */
|
|
|
|
/* ---------------------------------------------------------------------------
|
|
DESIGN TOKENS - Color Palette, Typography & Spacing
|
|
---------------------------------------------------------------------------
|
|
These CSS variables define the modern design system. Update here to
|
|
theme entire CMS. Supports light and dark mode via data-theme attr.
|
|
--------------------------------------------------------------------------- */
|
|
|
|
:root {
|
|
/* Color Tokens */
|
|
--color-primary: #2563eb;
|
|
--color-primary-dark: #1d4ed8;
|
|
--color-primary-light: #3b82f6;
|
|
--color-primary-lighter: #dbeafe;
|
|
--color-secondary: #7c3aed;
|
|
--color-success: #10b981;
|
|
--color-warning: #f59e0b;
|
|
--color-danger: #ef4444;
|
|
--color-info: #0ea5e9;
|
|
|
|
/* Neutral Palette (Gray) */
|
|
--color-gray-50: #f9fafb;
|
|
--color-gray-100: #f3f4f6;
|
|
--color-gray-200: #e5e7eb;
|
|
--color-gray-300: #d1d5db;
|
|
--color-gray-400: #9ca3af;
|
|
--color-gray-500: #6b7280;
|
|
--color-gray-600: #4b5563;
|
|
--color-gray-700: #374151;
|
|
--color-gray-800: #1f2937;
|
|
--color-gray-900: #111827;
|
|
|
|
/* Semantic Colors */
|
|
--color-background: #ffffff;
|
|
--color-surface: #f9fafb;
|
|
--color-surface-elevated: #ffffff;
|
|
--color-border: #e5e7eb;
|
|
--color-border-light: #f3f4f6;
|
|
--color-text-primary: #1f2937;
|
|
--color-text-secondary: #6b7280;
|
|
--color-text-tertiary: #9ca3af;
|
|
--color-text-inverse: #ffffff;
|
|
|
|
/* Component Colors */
|
|
--color-link: var(--color-primary);
|
|
--color-link-hover: var(--color-primary-dark);
|
|
--color-link-visited: #7c3aed;
|
|
|
|
/* Typography */
|
|
--font-family-base: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
|
|
--font-family-mono: "SF Mono", Monaco, "Cascadia Code", "Roboto Mono", Menlo, Courier, monospace;
|
|
|
|
--font-size-xs: 0.75rem; /* 12px */
|
|
--font-size-sm: 0.875rem; /* 14px */
|
|
--font-size-base: 1rem; /* 16px */
|
|
--font-size-lg: 1.125rem; /* 18px */
|
|
--font-size-xl: 1.25rem; /* 20px */
|
|
--font-size-2xl: 1.5rem; /* 24px */
|
|
--font-size-3xl: 1.875rem; /* 30px */
|
|
--font-size-4xl: 2.25rem; /* 36px */
|
|
|
|
--font-weight-normal: 400;
|
|
--font-weight-medium: 500;
|
|
--font-weight-semibold: 600;
|
|
--font-weight-bold: 700;
|
|
|
|
--line-height-tight: 1.25;
|
|
--line-height-snug: 1.375;
|
|
--line-height-normal: 1.5;
|
|
--line-height-relaxed: 1.625;
|
|
--line-height-loose: 2;
|
|
|
|
/* Spacing (8px base unit) */
|
|
--space-0: 0;
|
|
--space-1: 0.25rem; /* 4px */
|
|
--space-2: 0.5rem; /* 8px */
|
|
--space-3: 0.75rem; /* 12px */
|
|
--space-4: 1rem; /* 16px */
|
|
--space-5: 1.25rem; /* 20px */
|
|
--space-6: 1.5rem; /* 24px */
|
|
--space-7: 1.75rem; /* 28px */
|
|
--space-8: 2rem; /* 32px */
|
|
--space-10: 2.5rem; /* 40px */
|
|
--space-12: 3rem; /* 48px */
|
|
--space-16: 4rem; /* 64px */
|
|
--space-20: 5rem; /* 80px */
|
|
|
|
/* Border Radius */
|
|
--radius-none: 0;
|
|
--radius-sm: 0.25rem;
|
|
--radius-base: 0.375rem;
|
|
--radius-md: 0.5rem;
|
|
--radius-lg: 0.75rem;
|
|
--radius-xl: 1rem;
|
|
--radius-2xl: 1.5rem;
|
|
--radius-full: 9999px;
|
|
|
|
/* Shadows (elevation system) */
|
|
--shadow-none: none;
|
|
--shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
|
|
--shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06);
|
|
--shadow-base: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
|
|
--shadow-md: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
|
|
--shadow-lg: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
|
|
--shadow-xl: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
|
|
|
|
/* Transitions */
|
|
--transition-fast: 150ms ease-in-out;
|
|
--transition-base: 200ms ease-in-out;
|
|
--transition-slow: 300ms ease-in-out;
|
|
|
|
/* Breakpoints (mobile-first) */
|
|
--breakpoint-sm: 640px;
|
|
--breakpoint-md: 768px;
|
|
--breakpoint-lg: 1024px;
|
|
--breakpoint-xl: 1280px;
|
|
--breakpoint-2xl: 1536px;
|
|
}
|
|
|
|
/* Dark mode overrides (opt-in)
|
|
Add data-theme="dark" to <html> or <body> to enable */
|
|
:root {
|
|
color-scheme: light;
|
|
}
|
|
|
|
:root[data-theme="dark"],
|
|
body[data-theme="dark"] {
|
|
--color-background: #0f172a;
|
|
--color-surface: #1e293b;
|
|
--color-surface-elevated: #334155;
|
|
--color-border: #475569;
|
|
--color-border-light: #1e293b;
|
|
--color-text-primary: #f1f5f9;
|
|
--color-text-secondary: #cbd5e1;
|
|
--color-text-tertiary: #94a3b8;
|
|
--color-text-inverse: #0f172a;
|
|
color-scheme: dark;
|
|
}
|
|
|
|
/* ---------------------------------------------------------------------------
|
|
GLOBAL STYLES
|
|
--------------------------------------------------------------------------- */
|
|
|
|
html {
|
|
font-size: 16px;
|
|
}
|
|
|
|
body {
|
|
background-color: var(--color-background);
|
|
color: var(--color-text-primary);
|
|
font-family: var(--font-family-base);
|
|
font-size: var(--font-size-base);
|
|
line-height: var(--line-height-normal);
|
|
transition: background-color var(--transition-base), color var(--transition-base);
|
|
}
|
|
|
|
/* ---------------------------------------------------------------------------
|
|
TYPOGRAPHY
|
|
--------------------------------------------------------------------------- */
|
|
|
|
h1, h2, h3, h4, h5, h6 {
|
|
color: var(--color-text-primary);
|
|
font-weight: var(--font-weight-semibold);
|
|
line-height: var(--line-height-tight);
|
|
margin-top: var(--space-6);
|
|
margin-bottom: var(--space-4);
|
|
}
|
|
|
|
h1 {
|
|
font-size: var(--font-size-4xl);
|
|
}
|
|
|
|
h2 {
|
|
font-size: var(--font-size-3xl);
|
|
}
|
|
|
|
h3 {
|
|
font-size: var(--font-size-2xl);
|
|
}
|
|
|
|
h4 {
|
|
font-size: var(--font-size-xl);
|
|
}
|
|
|
|
h5 {
|
|
font-size: var(--font-size-lg);
|
|
}
|
|
|
|
h6 {
|
|
font-size: var(--font-size-base);
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.05em;
|
|
}
|
|
|
|
p {
|
|
margin-bottom: var(--space-4);
|
|
line-height: var(--line-height-relaxed);
|
|
}
|
|
|
|
small {
|
|
font-size: var(--font-size-sm);
|
|
}
|
|
|
|
/* ---------------------------------------------------------------------------
|
|
LINKS & INTERACTIVE ELEMENTS
|
|
--------------------------------------------------------------------------- */
|
|
|
|
a {
|
|
color: var(--color-link);
|
|
text-decoration: none;
|
|
transition: color var(--transition-fast);
|
|
outline: none;
|
|
}
|
|
|
|
a:hover {
|
|
color: var(--color-link-hover);
|
|
text-decoration: underline;
|
|
}
|
|
|
|
a:focus-visible {
|
|
outline: 2px solid var(--color-primary);
|
|
outline-offset: 2px;
|
|
border-radius: var(--radius-sm);
|
|
}
|
|
|
|
/* ---------------------------------------------------------------------------
|
|
HEADER / NAVIGATION BAR
|
|
--------------------------------------------------------------------------- */
|
|
|
|
.row.header {
|
|
background-color: var(--color-surface-elevated);
|
|
border-bottom: 1px solid var(--color-border);
|
|
box-shadow: var(--shadow-xs);
|
|
padding: var(--space-4);
|
|
margin-bottom: var(--space-6);
|
|
}
|
|
|
|
.navbar-default {
|
|
background-color: var(--color-surface-elevated);
|
|
border-bottom: 1px solid var(--color-border);
|
|
border-radius: 0;
|
|
box-shadow: none;
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
.navbar-default .navbar-brand {
|
|
color: var(--color-primary);
|
|
font-weight: var(--font-weight-bold);
|
|
font-size: var(--font-size-lg);
|
|
padding: var(--space-2) var(--space-4);
|
|
}
|
|
|
|
.navbar-default .navbar-nav > li > a {
|
|
color: var(--color-text-primary);
|
|
font-weight: var(--font-weight-normal);
|
|
padding: var(--space-3) var(--space-4);
|
|
transition: color var(--transition-fast), background-color var(--transition-fast);
|
|
}
|
|
|
|
.navbar-default .navbar-nav > li > a:hover,
|
|
.navbar-default .navbar-nav > li > a:focus,
|
|
.navbar-default .navbar-nav > .open > a,
|
|
.navbar-default .navbar-nav > .open > a:hover,
|
|
.navbar-default .navbar-nav > .open > a:focus,
|
|
.navbar-default .navbar-nav > .show > a,
|
|
.navbar-default .navbar-nav > .show > a:hover,
|
|
.navbar-default .navbar-nav > .show > a:focus {
|
|
background-color: var(--color-primary-lighter);
|
|
color: var(--color-primary-dark);
|
|
}
|
|
|
|
/* ---------------------------------------------------------------------------
|
|
SIDEBAR NAVIGATION
|
|
--------------------------------------------------------------------------- */
|
|
|
|
#sidebar-wrapper {
|
|
background-color: var(--color-surface);
|
|
border-right: 1px solid var(--color-border);
|
|
}
|
|
|
|
ul.sidebar .sidebar-main a,
|
|
.sidebar-footer {
|
|
background-color: var(--color-primary);
|
|
color: var(--color-text-inverse);
|
|
padding: var(--space-4);
|
|
}
|
|
|
|
ul.sidebar .sidebar-main a:hover {
|
|
background-color: var(--color-primary-dark);
|
|
}
|
|
|
|
ul.sidebar .sidebar-title a {
|
|
color: var(--color-primary);
|
|
font-weight: var(--font-weight-semibold);
|
|
font-size: var(--font-size-sm);
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.05em;
|
|
padding: var(--space-3) var(--space-4);
|
|
}
|
|
|
|
ul.sidebar .sidebar-list a {
|
|
color: var(--color-text-primary);
|
|
padding: var(--space-3) var(--space-4);
|
|
padding-left: var(--space-6);
|
|
transition: background-color var(--transition-fast), color var(--transition-fast);
|
|
border-left: 3px solid transparent;
|
|
}
|
|
|
|
ul.sidebar .sidebar-list a:hover,
|
|
ul.sidebar .sidebar-list a:focus,
|
|
#page-wrapper:not(.active) ul.sidebar .sidebar-title.separator {
|
|
background-color: var(--color-primary-lighter);
|
|
color: var(--color-primary);
|
|
border-left-color: var(--color-primary);
|
|
}
|
|
|
|
ul.sidebar .sidebar-list a.active {
|
|
background-color: var(--color-primary-lighter);
|
|
color: var(--color-primary);
|
|
border-left-color: var(--color-primary);
|
|
font-weight: var(--font-weight-semibold);
|
|
}
|
|
|
|
/* Mobile: hamburger toggle for sidebar */
|
|
@media (max-width: 768px) {
|
|
#sidebar-wrapper {
|
|
position: absolute;
|
|
top: 0;
|
|
left: -100%;
|
|
width: 100%;
|
|
max-width: 250px;
|
|
height: 100vh;
|
|
transition: left var(--transition-base);
|
|
z-index: 999;
|
|
}
|
|
|
|
#sidebar-wrapper.active {
|
|
left: 0;
|
|
}
|
|
|
|
#page-wrapper {
|
|
margin-left: 0;
|
|
}
|
|
}
|
|
|
|
/* ---------------------------------------------------------------------------
|
|
WELL & CONTAINER COMPONENTS
|
|
--------------------------------------------------------------------------- */
|
|
|
|
.well {
|
|
background-color: var(--color-surface);
|
|
border: 1px solid var(--color-border);
|
|
border-radius: var(--radius-md);
|
|
padding: var(--space-6);
|
|
margin-bottom: var(--space-6);
|
|
box-shadow: var(--shadow-xs);
|
|
}
|
|
|
|
.well.well-sm {
|
|
padding: var(--space-4);
|
|
}
|
|
|
|
.well.well-lg {
|
|
padding: var(--space-8);
|
|
}
|
|
|
|
/* ---------------------------------------------------------------------------
|
|
WIDGET CARD STYLING
|
|
--------------------------------------------------------------------------- */
|
|
|
|
.widget {
|
|
background-color: var(--color-surface-elevated);
|
|
border: 1px solid var(--color-border);
|
|
border-radius: var(--radius-lg);
|
|
box-shadow: var(--shadow-sm);
|
|
overflow: hidden;
|
|
transition: box-shadow var(--transition-base), transform var(--transition-base);
|
|
}
|
|
|
|
.widget:hover {
|
|
box-shadow: var(--shadow-base);
|
|
transform: translateY(-1px);
|
|
}
|
|
|
|
.widget .widget-title {
|
|
background-color: var(--color-primary-lighter);
|
|
color: var(--color-primary);
|
|
font-size: var(--font-size-lg);
|
|
font-weight: var(--font-weight-semibold);
|
|
padding: var(--space-4) var(--space-6);
|
|
margin: 0;
|
|
border-bottom: 1px solid var(--color-border);
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
}
|
|
|
|
.widget-body {
|
|
padding: var(--space-6);
|
|
}
|
|
|
|
.widget-footer {
|
|
background-color: var(--color-surface);
|
|
border-top: 1px solid var(--color-border);
|
|
padding: var(--space-4) var(--space-6);
|
|
}
|
|
|
|
/* Dashboard grid responsiveness */
|
|
.dashboard-widget-container {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
|
|
gap: var(--space-6);
|
|
margin-bottom: var(--space-8);
|
|
}
|
|
|
|
@media (max-width: 768px) {
|
|
.dashboard-widget-container {
|
|
grid-template-columns: 1fr;
|
|
gap: var(--space-4);
|
|
}
|
|
}
|
|
|
|
/* ---------------------------------------------------------------------------
|
|
BUTTONS & FORM CONTROLS
|
|
--------------------------------------------------------------------------- */
|
|
|
|
button,
|
|
.btn {
|
|
font-family: var(--font-family-base);
|
|
font-size: var(--font-size-base);
|
|
font-weight: var(--font-weight-medium);
|
|
padding: var(--space-3) var(--space-4);
|
|
border-radius: var(--radius-md);
|
|
border: 1px solid transparent;
|
|
cursor: pointer;
|
|
transition: all var(--transition-fast);
|
|
text-decoration: none;
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: var(--space-2);
|
|
}
|
|
|
|
.btn:focus-visible {
|
|
outline: 2px solid var(--color-primary);
|
|
outline-offset: 2px;
|
|
}
|
|
|
|
.btn-primary {
|
|
background-color: var(--color-primary);
|
|
color: var(--color-text-inverse);
|
|
border-color: var(--color-primary);
|
|
}
|
|
|
|
.btn-primary:hover {
|
|
background-color: var(--color-primary-dark);
|
|
border-color: var(--color-primary-dark);
|
|
}
|
|
|
|
.btn-secondary {
|
|
background-color: var(--color-gray-200);
|
|
color: var(--color-text-primary);
|
|
border-color: var(--color-gray-300);
|
|
}
|
|
|
|
.btn-secondary:hover {
|
|
background-color: var(--color-gray-300);
|
|
border-color: var(--color-gray-400);
|
|
}
|
|
|
|
.btn-success {
|
|
background-color: var(--color-success);
|
|
color: var(--color-text-inverse);
|
|
}
|
|
|
|
.btn-success:hover {
|
|
background-color: #059669;
|
|
}
|
|
|
|
.btn-danger {
|
|
background-color: var(--color-danger);
|
|
color: var(--color-text-inverse);
|
|
}
|
|
|
|
.btn-danger:hover {
|
|
background-color: #dc2626;
|
|
}
|
|
|
|
/* ---------------------------------------------------------------------------
|
|
FORM ELEMENTS
|
|
--------------------------------------------------------------------------- */
|
|
|
|
input[type="text"],
|
|
input[type="email"],
|
|
input[type="password"],
|
|
input[type="search"],
|
|
input[type="url"],
|
|
input[type="number"],
|
|
input[type="date"],
|
|
input[type="time"],
|
|
textarea,
|
|
select {
|
|
background-color: var(--color-background);
|
|
border: 1px solid var(--color-border);
|
|
border-radius: var(--radius-md);
|
|
color: var(--color-text-primary);
|
|
font-family: var(--font-family-base);
|
|
font-size: var(--font-size-base);
|
|
padding: var(--space-3) var(--space-4);
|
|
transition: border-color var(--transition-fast), box-shadow var(--transition-fast);
|
|
}
|
|
|
|
input[type="text"]:focus,
|
|
input[type="email"]:focus,
|
|
input[type="password"]:focus,
|
|
input[type="search"]:focus,
|
|
input[type="url"]:focus,
|
|
input[type="number"]:focus,
|
|
input[type="date"]:focus,
|
|
input[type="time"]:focus,
|
|
textarea:focus,
|
|
select:focus {
|
|
outline: none;
|
|
border-color: var(--color-primary);
|
|
box-shadow: 0 0 0 3px var(--color-primary-lighter);
|
|
}
|
|
|
|
/* ---------------------------------------------------------------------------
|
|
ALERTS & MESSAGES
|
|
--------------------------------------------------------------------------- */
|
|
|
|
.alert {
|
|
border-radius: var(--radius-md);
|
|
padding: var(--space-4) var(--space-6);
|
|
margin-bottom: var(--space-6);
|
|
border-left: 4px solid;
|
|
}
|
|
|
|
.alert-success {
|
|
background-color: #d1fae5;
|
|
border-color: var(--color-success);
|
|
color: #047857;
|
|
}
|
|
|
|
.alert-danger {
|
|
background-color: #fee2e2;
|
|
border-color: var(--color-danger);
|
|
color: #991b1b;
|
|
}
|
|
|
|
.alert-warning {
|
|
background-color: #fef3c7;
|
|
border-color: var(--color-warning);
|
|
color: #92400e;
|
|
}
|
|
|
|
.alert-info {
|
|
background-color: #cffafe;
|
|
border-color: var(--color-info);
|
|
color: #0c4a6e;
|
|
}
|
|
|
|
/* ---------------------------------------------------------------------------
|
|
TABLES
|
|
--------------------------------------------------------------------------- */
|
|
|
|
table {
|
|
width: 100%;
|
|
border-collapse: collapse;
|
|
margin-bottom: var(--space-6);
|
|
}
|
|
|
|
thead {
|
|
background-color: var(--color-surface);
|
|
border-bottom: 2px solid var(--color-border);
|
|
}
|
|
|
|
th {
|
|
color: var(--color-text-primary);
|
|
font-weight: var(--font-weight-semibold);
|
|
padding: var(--space-4);
|
|
text-align: left;
|
|
}
|
|
|
|
td {
|
|
border-bottom: 1px solid var(--color-border);
|
|
padding: var(--space-4);
|
|
}
|
|
|
|
tbody tr:hover {
|
|
background-color: var(--color-surface);
|
|
}
|
|
|
|
/* ---------------------------------------------------------------------------
|
|
RESPONSIVE GRID & LAYOUT
|
|
---------------------------------------------------------------------------
|
|
Note: Do not override Bootstrap grid classes (row/col/container) here.
|
|
These overrides can shift button placement and layout flow in Xibo.
|
|
Use component-specific wrappers instead.
|
|
--------------------------------------------------------------------------- */
|
|
|
|
/* ---------------------------------------------------------------------------
|
|
UTILITIES
|
|
--------------------------------------------------------------------------- */
|
|
|
|
.text-muted {
|
|
color: var(--color-text-secondary);
|
|
}
|
|
|
|
.text-danger {
|
|
color: var(--color-danger);
|
|
}
|
|
|
|
.text-success {
|
|
color: var(--color-success);
|
|
}
|
|
|
|
.text-warning {
|
|
color: var(--color-warning);
|
|
}
|
|
|
|
.text-info {
|
|
color: var(--color-info);
|
|
}
|
|
|
|
.bg-light {
|
|
background-color: var(--color-surface);
|
|
}
|
|
|
|
.bg-white {
|
|
background-color: var(--color-background);
|
|
}
|
|
|
|
.border {
|
|
border: 1px solid var(--color-border);
|
|
}
|
|
|
|
.rounded {
|
|
border-radius: var(--radius-md);
|
|
}
|
|
|
|
.shadow {
|
|
box-shadow: var(--shadow-base);
|
|
}
|
|
|
|
/* ---------------------------------------------------------------------------
|
|
DASHBOARD VIEW (custom override)
|
|
--------------------------------------------------------------------------- */
|
|
|
|
.dashboard-modern {
|
|
--dashboard-bg: #0b1224;
|
|
--dashboard-surface: #0f172a;
|
|
--dashboard-surface-2: #111b32;
|
|
--dashboard-border: rgba(148, 163, 184, 0.18);
|
|
--dashboard-text: #e2e8f0;
|
|
--dashboard-text-muted: #94a3b8;
|
|
--dashboard-accent: #22c55e;
|
|
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: var(--space-6);
|
|
background: radial-gradient(1200px 600px at 0% 0%, #0f1a3a 0%, #0b1224 45%, #0a1020 100%);
|
|
color: var(--dashboard-text);
|
|
border-radius: var(--radius-lg);
|
|
padding: var(--space-6);
|
|
}
|
|
|
|
.dashboard-hero {
|
|
background-color: transparent;
|
|
border: none;
|
|
border-radius: 0;
|
|
padding: 0;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: var(--space-4);
|
|
box-shadow: none;
|
|
}
|
|
|
|
.dashboard-hero__title h1 {
|
|
margin: 0;
|
|
color: var(--dashboard-text);
|
|
font-size: var(--font-size-3xl);
|
|
}
|
|
|
|
.dashboard-hero__title p {
|
|
margin: var(--space-2) 0 0 0;
|
|
color: var(--dashboard-text-muted);
|
|
}
|
|
|
|
.dashboard-hero__actions {
|
|
display: flex;
|
|
gap: var(--space-3);
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.dashboard-hero__actions .btn-icon {
|
|
width: 40px;
|
|
height: 40px;
|
|
border-radius: var(--radius-md);
|
|
background-color: #ffffff;
|
|
color: #0f172a;
|
|
font-size: 1.25rem;
|
|
line-height: 1;
|
|
border: 1px solid rgba(0, 0, 0, 0.08);
|
|
box-shadow: var(--shadow-xs);
|
|
}
|
|
|
|
.dashboard-hero__actions .btn-icon:hover {
|
|
transform: translateY(-1px);
|
|
box-shadow: var(--shadow-sm);
|
|
}
|
|
|
|
@media (max-width: 768px) {
|
|
.dashboard-hero {
|
|
flex-direction: column;
|
|
align-items: flex-start;
|
|
}
|
|
}
|
|
|
|
/* Dashboard widget cards */
|
|
.dashboard-modern .widget,
|
|
.dashboard-modern .well,
|
|
.dashboard-modern .panel {
|
|
background-color: var(--dashboard-surface);
|
|
border: 1px solid var(--dashboard-border);
|
|
box-shadow: none;
|
|
color: var(--dashboard-text);
|
|
}
|
|
|
|
.dashboard-modern .widget .widget-title,
|
|
.dashboard-modern .panel-heading,
|
|
.dashboard-modern .well h1,
|
|
.dashboard-modern .well h2,
|
|
.dashboard-modern .well h3 {
|
|
background-color: transparent;
|
|
color: var(--dashboard-text);
|
|
border-bottom: 1px solid var(--dashboard-border);
|
|
}
|
|
|
|
.dashboard-modern .widget-body,
|
|
.dashboard-modern .panel-body {
|
|
background-color: transparent;
|
|
color: var(--dashboard-text);
|
|
}
|
|
|
|
.dashboard-modern .text-muted,
|
|
.dashboard-modern .muted,
|
|
.dashboard-modern .help-block {
|
|
color: var(--dashboard-text-muted);
|
|
}
|
|
|
|
.dashboard-modern table,
|
|
.dashboard-modern thead,
|
|
.dashboard-modern tbody,
|
|
.dashboard-modern th,
|
|
.dashboard-modern td {
|
|
color: var(--dashboard-text);
|
|
border-color: var(--dashboard-border);
|
|
}
|
|
|
|
.dashboard-modern a {
|
|
color: #60a5fa;
|
|
}
|
|
|
|
.dashboard-modern a:hover {
|
|
color: #93c5fd;
|
|
}
|
|
|
|
.dashboard-modern .btn-primary {
|
|
background-color: #0ea5e9;
|
|
border-color: #0ea5e9;
|
|
color: #0b1224;
|
|
}
|
|
|
|
.dashboard-modern .btn-secondary {
|
|
background-color: transparent;
|
|
border-color: var(--dashboard-border);
|
|
color: var(--dashboard-text);
|
|
}
|
|
|
|
/* Spacing utilities */
|
|
.m-0 { margin: 0; }
|
|
.mt-4 { margin-top: var(--space-4); }
|
|
.mb-4 { margin-bottom: var(--space-4); }
|
|
.mt-6 { margin-top: var(--space-6); }
|
|
.mb-6 { margin-bottom: var(--space-6); }
|
|
|
|
.p-4 { padding: var(--space-4); }
|
|
.p-6 { padding: var(--space-6); }
|
|
.px-4 { padding-left: var(--space-4); padding-right: var(--space-4); }
|
|
.py-4 { padding-top: var(--space-4); padding-bottom: var(--space-4); }
|
|
|
|
.gap-4 { gap: var(--space-4); }
|
|
.gap-6 { gap: var(--space-6); }
|
|
|
|
/* ---------------------------------------------------------------------------
|
|
GLOBAL LAYOUT & SHELL
|
|
--------------------------------------------------------------------------- */
|
|
|
|
#page-wrapper {
|
|
background-color: var(--color-background);
|
|
min-height: 100vh;
|
|
}
|
|
|
|
.page-title,
|
|
.page-title h1,
|
|
.page-title h2 {
|
|
color: var(--color-text-primary);
|
|
font-weight: var(--font-weight-semibold);
|
|
}
|
|
|
|
.breadcrumb {
|
|
background: transparent;
|
|
margin-bottom: var(--space-4);
|
|
padding: 0;
|
|
}
|
|
|
|
.breadcrumb > li + li:before {
|
|
color: var(--color-text-tertiary);
|
|
}
|
|
|
|
/* ---------------------------------------------------------------------------
|
|
TOP NAVIGATION
|
|
--------------------------------------------------------------------------- */
|
|
|
|
.navbar-default {
|
|
background-color: var(--color-surface-elevated);
|
|
border-bottom: 1px solid var(--color-border);
|
|
}
|
|
|
|
.navbar-default .navbar-brand {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: var(--space-2);
|
|
}
|
|
|
|
.navbar-default .navbar-nav > li > a {
|
|
color: var(--color-text-primary);
|
|
font-weight: var(--font-weight-medium);
|
|
}
|
|
|
|
.navbar-default .navbar-nav > li > a .badge,
|
|
.navbar-default .navbar-nav > li > a .label {
|
|
margin-left: var(--space-2);
|
|
}
|
|
|
|
.navbar-default .dropdown-menu {
|
|
border: 1px solid var(--color-border);
|
|
box-shadow: var(--shadow-sm);
|
|
border-radius: var(--radius-md);
|
|
padding: var(--space-2);
|
|
}
|
|
|
|
.navbar-default .dropdown-menu > li > a {
|
|
padding: var(--space-2) var(--space-4);
|
|
border-radius: var(--radius-sm);
|
|
}
|
|
|
|
.navbar-default .dropdown-menu > li > a:hover {
|
|
background-color: var(--color-primary-lighter);
|
|
color: var(--color-primary-dark);
|
|
}
|
|
|
|
/* ---------------------------------------------------------------------------
|
|
SIDEBAR NAVIGATION (enhanced)
|
|
--------------------------------------------------------------------------- */
|
|
|
|
ul.sidebar .sidebar-title.separator {
|
|
padding: var(--space-2) var(--space-4);
|
|
color: var(--color-text-tertiary);
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.08em;
|
|
font-size: var(--font-size-xs);
|
|
}
|
|
|
|
ul.sidebar .sidebar-list a .icon {
|
|
margin-right: var(--space-2);
|
|
}
|
|
|
|
/* ---------------------------------------------------------------------------
|
|
CARDS & PANELS
|
|
--------------------------------------------------------------------------- */
|
|
|
|
.card,
|
|
.panel,
|
|
.panel-default {
|
|
background-color: var(--color-surface-elevated);
|
|
border: 1px solid var(--color-border);
|
|
border-radius: var(--radius-lg);
|
|
box-shadow: var(--shadow-xs);
|
|
overflow: hidden;
|
|
}
|
|
|
|
.card-header,
|
|
.panel-heading {
|
|
background-color: var(--color-surface);
|
|
border-bottom: 1px solid var(--color-border);
|
|
padding: var(--space-4) var(--space-6);
|
|
font-weight: var(--font-weight-semibold);
|
|
}
|
|
|
|
.card-body,
|
|
.panel-body {
|
|
padding: var(--space-6);
|
|
}
|
|
|
|
.card-footer,
|
|
.panel-footer {
|
|
background-color: var(--color-surface);
|
|
border-top: 1px solid var(--color-border);
|
|
padding: var(--space-4) var(--space-6);
|
|
}
|
|
|
|
/* ---------------------------------------------------------------------------
|
|
BUTTONS (sizes & variants)
|
|
--------------------------------------------------------------------------- */
|
|
|
|
.btn-sm {
|
|
padding: var(--space-2) var(--space-3);
|
|
font-size: var(--font-size-sm);
|
|
border-radius: var(--radius-sm);
|
|
}
|
|
|
|
.btn-lg {
|
|
padding: var(--space-4) var(--space-6);
|
|
font-size: var(--font-size-lg);
|
|
border-radius: var(--radius-lg);
|
|
}
|
|
|
|
.btn-outline {
|
|
background-color: transparent;
|
|
border-color: var(--color-border);
|
|
color: var(--color-text-primary);
|
|
}
|
|
|
|
.btn-outline:hover {
|
|
background-color: var(--color-primary-lighter);
|
|
color: var(--color-primary-dark);
|
|
border-color: var(--color-primary-light);
|
|
}
|
|
|
|
/* ---------------------------------------------------------------------------
|
|
FORMS & INPUTS (Bootstrap compatible)
|
|
--------------------------------------------------------------------------- */
|
|
|
|
.form-control {
|
|
background-color: var(--color-background);
|
|
border: 1px solid var(--color-border);
|
|
border-radius: var(--radius-md);
|
|
box-shadow: none;
|
|
transition: border-color var(--transition-fast), box-shadow var(--transition-fast);
|
|
}
|
|
|
|
.form-control:focus {
|
|
border-color: var(--color-primary);
|
|
box-shadow: 0 0 0 3px var(--color-primary-lighter);
|
|
}
|
|
|
|
.input-group-addon,
|
|
.input-group-text {
|
|
background-color: var(--color-surface);
|
|
border: 1px solid var(--color-border);
|
|
border-radius: var(--radius-md);
|
|
}
|
|
|
|
.control-label,
|
|
label {
|
|
color: var(--color-text-secondary);
|
|
font-weight: var(--font-weight-medium);
|
|
}
|
|
|
|
/* ---------------------------------------------------------------------------
|
|
TABLES & DATA GRIDS
|
|
--------------------------------------------------------------------------- */
|
|
|
|
.table,
|
|
table.table {
|
|
background-color: var(--color-surface-elevated);
|
|
border: 1px solid var(--color-border);
|
|
border-radius: var(--radius-lg);
|
|
overflow: hidden;
|
|
}
|
|
|
|
.table > thead > tr > th,
|
|
table.table > thead > tr > th {
|
|
background-color: var(--color-surface);
|
|
color: var(--color-text-primary);
|
|
font-weight: var(--font-weight-semibold);
|
|
border-bottom: 1px solid var(--color-border);
|
|
padding: var(--space-4);
|
|
}
|
|
|
|
.table > tbody > tr > td,
|
|
table.table > tbody > tr > td {
|
|
padding: var(--space-4);
|
|
border-bottom: 1px solid var(--color-border);
|
|
}
|
|
|
|
.table-striped > tbody > tr:nth-of-type(odd) {
|
|
background-color: var(--color-surface);
|
|
}
|
|
|
|
.table-hover > tbody > tr:hover {
|
|
background-color: var(--color-primary-lighter);
|
|
}
|
|
|
|
.dataTables_wrapper .dataTables_filter input,
|
|
.dataTables_wrapper .dataTables_length select {
|
|
border-radius: var(--radius-md);
|
|
border: 1px solid var(--color-border);
|
|
padding: var(--space-2) var(--space-3);
|
|
}
|
|
|
|
/* ---------------------------------------------------------------------------
|
|
TABS & NAV PILLS
|
|
--------------------------------------------------------------------------- */
|
|
|
|
.nav-tabs {
|
|
border-bottom: 1px solid var(--color-border);
|
|
}
|
|
|
|
.nav-tabs > li > a {
|
|
border: 1px solid transparent;
|
|
border-radius: var(--radius-md) var(--radius-md) 0 0;
|
|
color: var(--color-text-secondary);
|
|
padding: var(--space-3) var(--space-4);
|
|
}
|
|
|
|
.nav-tabs > li.active > a,
|
|
.nav-tabs > li.active > a:hover,
|
|
.nav-tabs > li.active > a:focus {
|
|
background-color: var(--color-surface-elevated);
|
|
border-color: var(--color-border);
|
|
color: var(--color-text-primary);
|
|
}
|
|
|
|
.nav-pills > li > a {
|
|
border-radius: var(--radius-full);
|
|
padding: var(--space-2) var(--space-4);
|
|
}
|
|
|
|
/* ---------------------------------------------------------------------------
|
|
BADGES & LABELS
|
|
--------------------------------------------------------------------------- */
|
|
|
|
.badge,
|
|
.label {
|
|
border-radius: var(--radius-full);
|
|
padding: 0.2em 0.6em;
|
|
font-weight: var(--font-weight-semibold);
|
|
}
|
|
|
|
.label-success,
|
|
.badge-success {
|
|
background-color: var(--color-success);
|
|
}
|
|
|
|
.label-danger,
|
|
.badge-danger {
|
|
background-color: var(--color-danger);
|
|
}
|
|
|
|
.label-warning,
|
|
.badge-warning {
|
|
background-color: var(--color-warning);
|
|
}
|
|
|
|
.label-info,
|
|
.badge-info {
|
|
background-color: var(--color-info);
|
|
}
|
|
|
|
/* ---------------------------------------------------------------------------
|
|
MODALS
|
|
--------------------------------------------------------------------------- */
|
|
|
|
.modal-content {
|
|
border-radius: var(--radius-lg);
|
|
border: 1px solid var(--color-border);
|
|
box-shadow: var(--shadow-lg);
|
|
}
|
|
|
|
.modal-header {
|
|
background-color: var(--color-surface);
|
|
border-bottom: 1px solid var(--color-border);
|
|
padding: var(--space-4) var(--space-6);
|
|
}
|
|
|
|
.modal-title {
|
|
font-weight: var(--font-weight-semibold);
|
|
}
|
|
|
|
.modal-body {
|
|
padding: var(--space-6);
|
|
}
|
|
|
|
.modal-footer {
|
|
background-color: var(--color-surface);
|
|
border-top: 1px solid var(--color-border);
|
|
padding: var(--space-4) var(--space-6);
|
|
}
|
|
|
|
/* ---------------------------------------------------------------------------
|
|
PAGINATION
|
|
--------------------------------------------------------------------------- */
|
|
|
|
.pagination > li > a,
|
|
.pagination > li > span {
|
|
border: 1px solid var(--color-border);
|
|
color: var(--color-text-primary);
|
|
border-radius: var(--radius-md);
|
|
margin: 0 var(--space-1);
|
|
}
|
|
|
|
.pagination > .active > a,
|
|
.pagination > .active > span {
|
|
background-color: var(--color-primary);
|
|
border-color: var(--color-primary);
|
|
color: var(--color-text-inverse);
|
|
}
|
|
|
|
/* ---------------------------------------------------------------------------
|
|
TWO-COLUMN LAYOUT (Displays, Media Library)
|
|
--------------------------------------------------------------------------- */
|
|
|
|
.ots-theme.two-column-layout {
|
|
display: flex;
|
|
gap: var(--space-4);
|
|
padding: var(--space-6);
|
|
min-height: calc(100vh - var(--topbar-height, 60px) - var(--space-6) * 2);
|
|
}
|
|
|
|
.ots-theme .left-panel {
|
|
flex: 0 0 260px;
|
|
background-color: var(--color-surface);
|
|
border-radius: var(--radius-lg);
|
|
border: 1px solid var(--color-border);
|
|
padding: var(--space-4);
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: var(--space-4);
|
|
}
|
|
|
|
.ots-theme .left-panel .panel-header {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
gap: var(--space-2);
|
|
}
|
|
|
|
.ots-theme .left-panel h3 {
|
|
margin: 0;
|
|
font-size: var(--font-size-sm);
|
|
font-weight: var(--font-weight-semibold);
|
|
text-transform: uppercase;
|
|
color: var(--color-text-secondary);
|
|
letter-spacing: 0.05em;
|
|
}
|
|
|
|
.ots-theme .folder-tree {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: var(--space-1);
|
|
}
|
|
|
|
.ots-theme .folder-item {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: var(--space-2);
|
|
padding: var(--space-2) var(--space-3);
|
|
border-radius: var(--radius-md);
|
|
cursor: pointer;
|
|
user-select: none;
|
|
transition: background-color 150ms ease;
|
|
font-size: var(--font-size-sm);
|
|
}
|
|
|
|
.ots-theme .folder-item:hover {
|
|
background-color: var(--color-border-light);
|
|
}
|
|
|
|
.ots-theme .folder-item.active {
|
|
background-color: var(--color-primary-lighter);
|
|
color: var(--color-primary);
|
|
font-weight: var(--font-weight-semibold);
|
|
}
|
|
|
|
.ots-theme .folder-icon {
|
|
display: inline-block;
|
|
font-size: 1.2em;
|
|
flex: 0 0 auto;
|
|
}
|
|
|
|
.ots-theme .folder-name {
|
|
flex: 1;
|
|
white-space: nowrap;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
}
|
|
|
|
.ots-theme .content-panel {
|
|
flex: 1;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: var(--space-6);
|
|
}
|
|
|
|
.ots-theme .page-header {
|
|
padding-bottom: var(--space-4);
|
|
border-bottom: 1px solid var(--color-border);
|
|
}
|
|
|
|
.ots-theme .page-header h1 {
|
|
margin: 0 0 var(--space-1) 0;
|
|
font-size: var(--font-size-3xl);
|
|
font-weight: var(--font-weight-bold);
|
|
}
|
|
|
|
.ots-theme .page-header .text-muted {
|
|
margin: 0;
|
|
color: var(--color-text-secondary);
|
|
}
|
|
|
|
.ots-theme .content-toolbar {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
gap: var(--space-4);
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.ots-theme .search-field {
|
|
flex: 1;
|
|
min-width: 200px;
|
|
max-width: 400px;
|
|
}
|
|
|
|
.ots-theme .toolbar-actions {
|
|
display: flex;
|
|
gap: var(--space-3);
|
|
align-items: center;
|
|
}
|
|
|
|
.ots-theme .stat-row {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
|
|
gap: var(--space-4);
|
|
}
|
|
|
|
.ots-theme .stat-box {
|
|
background-color: var(--color-surface);
|
|
border: 1px solid var(--color-border);
|
|
border-radius: var(--radius-lg);
|
|
padding: var(--space-4);
|
|
text-align: center;
|
|
}
|
|
|
|
.ots-theme .stat-label {
|
|
display: block;
|
|
font-size: var(--font-size-sm);
|
|
color: var(--color-text-secondary);
|
|
margin-bottom: var(--space-1);
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.05em;
|
|
}
|
|
|
|
.ots-theme .stat-value {
|
|
display: block;
|
|
font-size: var(--font-size-2xl);
|
|
font-weight: var(--font-weight-bold);
|
|
color: var(--color-text-primary);
|
|
}
|
|
|
|
.ots-theme .stat-value.text-success {
|
|
color: var(--color-success);
|
|
}
|
|
|
|
.ots-theme .stat-value.text-danger {
|
|
color: var(--color-danger);
|
|
}
|
|
|
|
/* Table wrapper for sticky header */
|
|
.ots-theme .table-wrapper {
|
|
background-color: var(--color-surface);
|
|
border-radius: var(--radius-lg);
|
|
border: 1px solid var(--color-border);
|
|
overflow-x: auto;
|
|
}
|
|
|
|
.ots-theme .table-wrapper .table {
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
.ots-theme .table-wrapper th {
|
|
position: sticky;
|
|
top: 0;
|
|
background-color: var(--color-surface-elevated);
|
|
font-weight: var(--font-weight-semibold);
|
|
z-index: 10;
|
|
}
|
|
|
|
/* Media Grid */
|
|
.ots-theme .media-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
|
|
gap: var(--space-6);
|
|
padding: var(--space-6);
|
|
background-color: var(--color-surface);
|
|
border-radius: var(--radius-lg);
|
|
border: 1px solid var(--color-border);
|
|
min-height: 300px;
|
|
}
|
|
|
|
.ots-theme .media-item {
|
|
background-color: var(--color-background);
|
|
border-radius: var(--radius-lg);
|
|
border: 1px solid var(--color-border);
|
|
overflow: hidden;
|
|
transition: all 200ms ease;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.ots-theme .media-item:hover {
|
|
box-shadow: var(--shadow-md);
|
|
transform: translateY(-2px);
|
|
}
|
|
|
|
.ots-theme .media-item-thumbnail {
|
|
width: 100%;
|
|
aspect-ratio: 4 / 3;
|
|
background-color: var(--color-surface);
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
font-size: 2em;
|
|
border-bottom: 1px solid var(--color-border);
|
|
}
|
|
|
|
.ots-theme .media-item-info {
|
|
padding: var(--space-3);
|
|
}
|
|
|
|
.ots-theme .media-item-name {
|
|
font-weight: var(--font-weight-semibold);
|
|
font-size: var(--font-size-sm);
|
|
margin: 0 0 var(--space-1) 0;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.ots-theme .media-item-size {
|
|
font-size: var(--font-size-xs);
|
|
color: var(--color-text-secondary);
|
|
margin: 0;
|
|
}
|
|
|
|
.ots-theme .empty-state {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
justify-content: center;
|
|
padding: var(--space-12);
|
|
text-align: center;
|
|
}
|
|
|
|
.ots-theme .empty-icon {
|
|
font-size: 3em;
|
|
margin-bottom: var(--space-4);
|
|
}
|
|
|
|
.ots-theme .empty-state h3 {
|
|
margin: 0 0 var(--space-2) 0;
|
|
font-size: var(--font-size-xl);
|
|
color: var(--color-text-primary);
|
|
}
|
|
|
|
.ots-theme .empty-state p {
|
|
margin: 0 0 var(--space-6) 0;
|
|
color: var(--color-text-secondary);
|
|
max-width: 300px;
|
|
}
|
|
|
|
/* ---------------------------------------------------------------------------
|
|
RESPONSIVE ADJUSTMENTS
|
|
--------------------------------------------------------------------------- */
|
|
|
|
@media (max-width: 1024px) {
|
|
.ots-theme.two-column-layout {
|
|
flex-direction: column;
|
|
}
|
|
|
|
.ots-theme .left-panel {
|
|
flex: 1;
|
|
}
|
|
|
|
.ots-theme.two-column-layout .left-panel {
|
|
max-width: 100%;
|
|
}
|
|
}
|
|
|
|
@media (max-width: 768px) {
|
|
.ots-theme.two-column-layout {
|
|
padding: var(--space-4);
|
|
gap: var(--space-3);
|
|
}
|
|
|
|
.ots-theme .content-toolbar {
|
|
flex-direction: column;
|
|
align-items: stretch;
|
|
}
|
|
|
|
.ots-theme .search-field {
|
|
max-width: 100%;
|
|
}
|
|
|
|
.ots-theme .toolbar-actions {
|
|
flex-direction: column;
|
|
}
|
|
|
|
.ots-theme .toolbar-actions .btn {
|
|
width: 100%;
|
|
}
|
|
|
|
.ots-theme .media-grid {
|
|
grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
|
|
gap: var(--space-4);
|
|
padding: var(--space-4);
|
|
}
|
|
|
|
.ots-theme .page-header h1 {
|
|
font-size: var(--font-size-2xl);
|
|
}
|
|
}
|
|
|
|
/* ---------------------------------------------------------------------------
|
|
DARK MODE OVERRIDES FOR COMPONENTS
|
|
--------------------------------------------------------------------------- */
|
|
|
|
[data-theme="dark"] .ots-theme .left-panel {
|
|
background-color: var(--color-surface);
|
|
border-color: var(--color-border);
|
|
}
|
|
|
|
[data-theme="dark"] .ots-theme .folder-item:hover {
|
|
background-color: var(--color-gray-700);
|
|
}
|
|
|
|
[data-theme="dark"] .ots-theme .stat-box,
|
|
[data-theme="dark"] .ots-theme .table-wrapper,
|
|
[data-theme="dark"] .ots-theme .media-grid {
|
|
background-color: var(--color-surface);
|
|
border-color: var(--color-border);
|
|
}
|
|
|
|
[data-theme="dark"] .ots-theme .media-item {
|
|
background-color: var(--color-gray-800);
|
|
border-color: var(--color-border);
|
|
}
|
|
|
|
[data-theme="dark"] .ots-theme .media-item:hover {
|
|
background-color: var(--color-gray-750);
|
|
}
|
|
|
|
[data-theme="dark"] .ots-theme .table-wrapper th {
|
|
background-color: var(--color-gray-800);
|
|
}
|
|
|
|
/* ---------------------------------------------------------------------------
|
|
UTILITY CLASSES
|
|
--------------------------------------------------------------------------- */
|
|
|
|
.ots-theme .btn-icon-sm {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
width: 32px;
|
|
height: 32px;
|
|
padding: 0;
|
|
border: none;
|
|
background-color: transparent;
|
|
border-radius: var(--radius-md);
|
|
cursor: pointer;
|
|
transition: background-color 150ms ease;
|
|
font-size: 1em;
|
|
}
|
|
|
|
.ots-theme .btn-icon-sm:hover {
|
|
background-color: var(--color-border-light);
|
|
}
|
|
|
|
.ots-theme .text-muted {
|
|
color: var(--color-text-secondary) !important;
|
|
}
|
|
|
|
.ots-theme .text-success {
|
|
color: var(--color-success) !important;
|
|
}
|
|
|
|
.ots-theme .text-danger {
|
|
color: var(--color-danger) !important;
|
|
}
|
|
|
|
.ots-theme .text-warning {
|
|
color: var(--color-warning) !important;
|
|
}
|
|
|
|
.ots-theme .text-info {
|
|
color: var(--color-info) !important;
|
|
} |