Files
mostovik-backend/src/static/admin/css/mostovik-admin-theme.css
Aleksandr Meshchriakov 69e6dc4c6d
Some checks failed
CI/CD Pipeline / Run Tests (push) Successful in 4m16s
CI/CD Pipeline / Code Quality Checks (push) Failing after 7m27s
CI/CD Pipeline / Telegram Notify Success (push) Has been skipped
fix(admin): add dashboard gutters on right column
2026-03-20 14:14:52 +01:00

623 lines
12 KiB
CSS

@import url("https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600;700&family=JetBrains+Mono:wght@500&display=swap");
:root {
--mx-bg: #031015;
--mx-bg-elevated: #071a20;
--mx-bg-soft: #0c2830;
--mx-surface: rgba(7, 22, 29, 0.9);
--mx-surface-strong: rgba(10, 30, 36, 0.97);
--mx-border: rgba(71, 170, 171, 0.2);
--mx-border-strong: rgba(98, 119, 211, 0.28);
--mx-text: #e1f5f3;
--mx-text-muted: #9ec8c6;
--mx-text-dim: #668c8b;
--mx-azure: #49d0c8;
--mx-violet: #5664c9;
--mx-violet-soft: #4352aa;
--mx-success: #2dd4bf;
--mx-warning: #ffc857;
--mx-danger: #ff6b9f;
--mx-shadow: 0 24px 60px rgba(1, 8, 11, 0.44);
}
html,
body,
.wrapper,
.content-wrapper,
.main-footer,
.login-page,
.register-page {
background:
radial-gradient(circle at 50% 12%, rgba(58, 208, 198, 0.24), transparent 26%),
radial-gradient(circle at 20% 30%, rgba(26, 133, 136, 0.18), transparent 24%),
radial-gradient(circle at 85% 18%, rgba(86, 100, 201, 0.12), transparent 18%),
linear-gradient(180deg, #020a0d 0%, #041218 22%, var(--mx-bg) 58%, #02080b 100%);
color: var(--mx-text);
font-family: "IBM Plex Sans", "Segoe UI", sans-serif;
}
body,
.content-wrapper,
.main-footer,
.content-header h1,
.content-header h1 small,
.content-wrapper .content,
.card-title,
.small-box,
.table,
.table th,
.table td,
.form-control,
.form-control:focus,
.select2-container--default .select2-selection--single,
.select2-container--default .select2-selection--multiple,
.select2-results__option,
.btn,
.nav-sidebar .nav-link,
.brand-text,
.login-box-msg,
.help,
.text-muted,
.small,
.errornote,
.messagelist li {
color: var(--mx-text);
}
.main-header.navbar {
background: linear-gradient(90deg, rgba(4, 14, 18, 0.95), rgba(8, 28, 33, 0.96));
border-bottom: 1px solid rgba(73, 208, 200, 0.14);
box-shadow: 0 10px 35px rgba(1, 7, 10, 0.32);
backdrop-filter: blur(14px);
}
.main-header .nav-link,
.main-header .navbar-nav .nav-link {
color: var(--mx-text-muted);
}
.main-header .nav-link:hover,
.main-header .navbar-nav .nav-link:hover {
color: var(--mx-text);
}
.main-sidebar {
background:
linear-gradient(180deg, rgba(3, 13, 17, 0.985) 0%, rgba(5, 19, 24, 0.985) 100%),
radial-gradient(circle at top, rgba(73, 208, 200, 0.1), transparent 34%);
border-right: 1px solid rgba(73, 208, 200, 0.1);
box-shadow: inset -1px 0 0 rgba(255, 255, 255, 0.03);
overflow-x: hidden;
}
.brand-link {
border-bottom: 1px solid rgba(73, 208, 200, 0.14);
background: linear-gradient(90deg, rgba(6, 18, 22, 0.97), rgba(10, 32, 37, 0.96));
}
.brand-link .brand-text {
font-weight: 700;
letter-spacing: 0.04em;
text-transform: uppercase;
}
.nav-sidebar > .nav-item > .nav-link {
margin: 0 0 0.4rem;
border-radius: 14px;
color: var(--mx-text-muted);
transition: background-color 0.18s ease, color 0.18s ease, transform 0.18s ease;
}
.nav-sidebar > .nav-item > .nav-link:hover,
.nav-sidebar > .nav-item.menu-open > .nav-link,
.nav-sidebar .nav-treeview > .nav-item > .nav-link:hover {
background: rgba(73, 208, 200, 0.1);
color: var(--mx-text);
transform: translateX(2px);
}
.nav-sidebar > .nav-item > .nav-link.active,
.nav-sidebar .nav-treeview > .nav-item > .nav-link.active {
background: linear-gradient(90deg, rgba(73, 208, 200, 0.18), rgba(86, 100, 201, 0.18));
border: 1px solid rgba(73, 208, 200, 0.16);
color: #ffffff;
box-shadow:
inset 0 1px 0 rgba(255, 255, 255, 0.04),
0 8px 18px rgba(6, 18, 22, 0.28);
}
#jazzy-sidebar .sidebar {
padding: 0.85rem 0.75rem 1rem;
}
#jazzy-sidebar .user-panel {
margin-left: 0;
margin-right: 0;
padding-left: 0.25rem;
padding-right: 0.25rem;
}
#jazzy-sidebar .nav-sidebar {
padding-right: 0.1rem;
}
.nav-sidebar .nav-header {
color: var(--mx-text-dim);
font-size: 0.7rem;
font-weight: 700;
letter-spacing: 0.12em;
text-transform: uppercase;
}
.content-wrapper {
background-color: transparent;
}
.content-wrapper > .content {
padding: 1rem 1.1rem 1.4rem 1.15rem;
}
.content-wrapper > .content > .container-fluid {
padding-left: 0.35rem;
padding-right: 1rem;
}
.content-header h1 {
font-weight: 700;
letter-spacing: 0.01em;
}
.content-header,
.main-footer,
.card,
.small-box,
.info-box,
.module,
div.breadcrumbs,
#changelist-filter,
.submit-row,
.inline-group,
.selector,
.selector-available h2,
.selector-chosen h2,
.login-card-body,
.card-body,
.card-header,
.login-logo,
.messagelist li,
.object-tools a,
.paginator,
.results,
fieldset.module,
.tabular.inline-related,
.tabular tr.form-row td,
.tabular tr.form-row th {
background: var(--mx-surface);
border: 1px solid var(--mx-border);
box-shadow: var(--mx-shadow);
}
.content-header,
.main-footer,
.card,
.info-box,
.module,
.inline-group,
.selector,
.login-card-body,
fieldset.module {
border-radius: 14px;
}
.card,
.module,
.inline-group,
fieldset.module,
.submit-row,
#changelist-filter,
.paginator {
backdrop-filter: blur(12px);
}
.card-header,
.module h2,
.module caption,
.inline-group h2,
.selector-available h2,
.selector-chosen h2 {
background: linear-gradient(90deg, rgba(10, 34, 40, 0.96), rgba(12, 40, 47, 0.94));
border-bottom: 1px solid rgba(73, 208, 200, 0.12);
color: #f6f9ff;
font-weight: 700;
letter-spacing: 0.04em;
text-transform: uppercase;
}
.card-header,
.module h2,
.module caption,
.inline-group h2 {
border-radius: 12px 12px 0 0;
}
a,
.breadcrumb a,
div.breadcrumbs a,
.historylink,
.viewsitelink {
color: var(--mx-azure);
}
a:hover,
.breadcrumb a:hover,
div.breadcrumbs a:hover {
color: #88d9ff;
}
div.breadcrumbs,
.breadcrumb {
color: var(--mx-text-muted);
}
table,
.results table,
#result_list,
.table {
background: transparent;
border-collapse: separate;
border-spacing: 0;
}
.results thead th,
.table thead th {
background: rgba(10, 34, 40, 0.96);
border-bottom: 1px solid rgba(73, 208, 200, 0.12);
color: #d5f6f2;
font-size: 0.76rem;
font-weight: 700;
letter-spacing: 0.08em;
text-transform: uppercase;
}
.results tbody tr,
.table tbody tr {
background: rgba(5, 18, 23, 0.68);
}
.results tbody tr:nth-child(even),
.table tbody tr:nth-child(even) {
background: rgba(8, 25, 31, 0.8);
}
.results tbody tr:hover,
.table tbody tr:hover {
background: rgba(13, 40, 48, 0.9);
}
.results td,
.results th,
.table td,
.table th {
border-color: rgba(73, 208, 200, 0.08);
padding-top: 0.78rem;
padding-bottom: 0.78rem;
vertical-align: middle;
}
input[type="text"],
input[type="password"],
input[type="email"],
input[type="number"],
input[type="url"],
input[type="search"],
input[type="date"],
input[type="file"],
select,
textarea,
.form-control,
.vTextField,
.vLargeTextField,
.vURLField,
.vIntegerField,
.select2-container--default .select2-selection--single,
.select2-container--default .select2-selection--multiple {
background: rgba(4, 14, 18, 0.92);
border: 1px solid rgba(73, 208, 200, 0.14);
border-radius: 10px;
color: var(--mx-text);
min-height: 2.7rem;
}
textarea,
.vLargeTextField {
min-height: 8rem;
}
input:focus,
select:focus,
textarea:focus,
.form-control:focus,
.select2-container--default.select2-container--focus .select2-selection--multiple,
.select2-container--default.select2-container--open .select2-selection--single {
background: rgba(7, 22, 27, 0.99);
border-color: rgba(73, 208, 200, 0.44);
box-shadow: 0 0 0 0.22rem rgba(73, 208, 200, 0.13);
}
label,
.aligned label,
fieldset label,
.required label,
.form-row label {
color: #d8e7ff;
font-weight: 600;
}
.help,
.helptext,
p.help,
.form-text,
small,
.text-muted {
color: var(--mx-text-dim) !important;
}
.submit-row,
.object-tools,
.actions,
.paginator {
border-radius: 12px;
}
.button,
input[type="submit"],
input[type="button"],
.submit-row input,
.object-tools a,
.btn,
a.button {
background: linear-gradient(135deg, rgba(23, 97, 100, 0.62), rgba(42, 72, 133, 0.46));
border: 1px solid rgba(73, 208, 200, 0.18);
border-radius: 10px;
color: #f5fbff;
font-weight: 700;
letter-spacing: 0.02em;
text-shadow: none;
box-shadow: 0 12px 30px rgba(2, 10, 13, 0.25);
}
.button.default,
input[type="submit"].default,
.btn-primary,
.object-tools a.addlink {
background: linear-gradient(135deg, rgba(51, 179, 168, 0.9), rgba(65, 112, 196, 0.82));
border-color: rgba(98, 119, 211, 0.48);
color: #ffffff;
}
.button:hover,
input[type="submit"]:hover,
input[type="button"]:hover,
.btn:hover,
a.button:hover,
.object-tools a:hover {
filter: brightness(1.08);
transform: translateY(-1px);
}
.deletelink,
.btn-danger {
background: linear-gradient(135deg, rgba(255, 107, 159, 0.82), rgba(167, 53, 118, 0.88));
border-color: rgba(255, 107, 159, 0.55);
}
.messagelist li,
.errornote,
.success,
.warning {
border-radius: 12px;
padding: 0.95rem 1.1rem;
}
.messagelist .success,
li.success {
border-left: 4px solid var(--mx-success);
}
.messagelist .warning,
li.warning {
border-left: 4px solid var(--mx-warning);
}
.messagelist .error,
.errornote,
li.error {
border-left: 4px solid var(--mx-danger);
}
code,
pre,
tt,
.mono,
.readonly,
.file-upload,
.field-file_hash .readonly {
font-family: "JetBrains Mono", monospace;
}
pre,
code {
background: rgba(4, 15, 19, 0.94);
border: 1px solid rgba(73, 208, 200, 0.12);
border-radius: 12px;
color: #b6f4eb;
}
#changelist-filter h2,
#changelist-filter h3 {
color: #eff5ff;
font-weight: 700;
letter-spacing: 0.08em;
text-transform: uppercase;
}
#changelist-filter li.selected a,
#changelist-filter a:hover {
color: #ffffff;
}
.login-box .card,
.login-card-body {
border-radius: 16px;
}
.login-logo a {
color: #f5fbff;
font-weight: 700;
letter-spacing: 0.08em;
text-transform: uppercase;
}
.login-page .card {
background:
linear-gradient(180deg, rgba(6, 18, 22, 0.97), rgba(8, 28, 33, 0.97)),
radial-gradient(circle at top, rgba(73, 208, 200, 0.12), transparent 28%);
}
.pagination .page-link,
.paginator a,
.paginator .this-page {
background: rgba(4, 15, 19, 0.86);
border: 1px solid rgba(73, 208, 200, 0.12);
color: var(--mx-text);
}
.pagination .active .page-link,
.paginator .this-page {
background: linear-gradient(135deg, rgba(51, 179, 168, 0.82), rgba(65, 112, 196, 0.76));
border-color: rgba(73, 208, 200, 0.28);
color: #ffffff;
}
::-webkit-scrollbar {
width: 12px;
height: 12px;
}
::-webkit-scrollbar-track {
background: rgba(3, 12, 15, 0.92);
}
::-webkit-scrollbar-thumb {
background: linear-gradient(180deg, rgba(73, 208, 200, 0.7), rgba(65, 112, 196, 0.66));
border: 2px solid rgba(3, 12, 15, 0.92);
border-radius: 999px;
}
.dashboard .admin-dashboard-grid > [class*="col-"],
.dashboard .admin-dashboard-grid .row > [class*="col-"],
.dashboard .card,
.dashboard .card-header,
.dashboard .card-body,
#content-related,
#recent-actions-module,
.timeline,
.timeline-item,
.content-wrapper .content,
.content-wrapper .container-fluid {
min-width: 0;
}
.dashboard .admin-dashboard-grid {
row-gap: 1rem;
margin-left: 0;
margin-right: 0;
padding-right: 1rem;
}
.dashboard .card,
.dashboard .module,
#recent-actions-module {
overflow: hidden;
}
.dashboard .admin-dashboard-grid > [class*="col-"] {
padding-left: 0.6rem;
padding-right: 0.6rem;
}
.dashboard #content-related {
padding-right: 0.45rem;
}
.dashboard .card-header h5,
.dashboard .timeline-item,
.dashboard .timeline-header,
.dashboard .table td,
.dashboard .table th {
overflow-wrap: anywhere;
}
.main-header .navbar-nav,
.main-header .form-inline,
.main-header .input-group {
min-width: 0;
}
.main-header .form-inline {
flex: 0 1 auto;
}
.main-header .form-control-navbar {
width: clamp(8rem, 12vw, 12rem);
}
@media (max-width: 1360px) {
.main-header .form-inline.ml-3 {
margin-left: 0.5rem !important;
}
.main-header .form-control-navbar {
width: clamp(7rem, 10vw, 10rem);
}
}
@media (max-width: 991.98px) {
.dashboard .admin-dashboard-grid {
padding-right: 0.15rem;
}
.dashboard .admin-dashboard-grid > [class*="col-"] {
padding-left: 0.15rem;
padding-right: 0.15rem;
}
.dashboard #content-related {
padding-right: 0;
}
.content-wrapper > .content {
padding: 0.85rem 0.7rem 1.1rem;
}
.content-wrapper > .content > .container-fluid {
padding-left: 0.1rem;
padding-right: 0.1rem;
}
.main-header.navbar {
flex-wrap: wrap;
row-gap: 0.5rem;
}
.main-header .form-inline {
width: 100%;
margin-left: 0 !important;
}
.main-header .input-group,
.main-header .form-control-navbar {
width: 100%;
}
}