/*
 * nova-ui.css — the layout layer for the admin interface.
 *
 * This replaces the Bootstrap CDN link that used to sit in the layouts. Two
 * reasons, and the second is the one that matters:
 *
 *  1. The platform's stated rule is no third-party runtime dependencies. A CDN
 *     stylesheet is exactly that, with an added third party.
 *  2. A control panel that stops being usable when a public CDN is unreachable
 *     is not a control panel. Firewalled servers, content blockers, strict CSP
 *     and simple outages all produce the same result: the page renders, the
 *     grid collapses, and it looks broken.
 *
 * It implements the class subset the views actually use — deliberately not all
 * of Bootstrap. Class names are kept identical so the views did not have to be
 * rewritten, and so a future maintainer's Bootstrap knowledge still applies.
 */

/* ---------------------------------------------------------------- tokens -- */
:root {
  --nv-ink: #101828;
  --nv-muted: #667085;
  --nv-line: #e4e7ec;
  --nv-bg: #f7f8fa;
  --nv-surface: #ffffff;
  --nv-primary: #0b5fff;
  --nv-primary-dark: #0847c4;
  --nv-success: #12b76a;
  --nv-danger: #f04438;
  --nv-warning: #f79009;
  --nv-info: #06aed4;
  --nv-secondary: #667085;
  --nv-radius: 8px;
  --nv-radius-sm: 5px;
  --nv-shadow: 0 1px 2px rgba(16, 24, 40, .06), 0 1px 3px rgba(16, 24, 40, .04);
}

*, *::before, *::after { box-sizing: border-box; }

body {
  margin: 0;
  font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;
  font-size: 16px;
  line-height: 1.5;
  color: var(--nv-ink);
  background: var(--nv-bg);
  -webkit-font-smoothing: antialiased;
}

a { color: var(--nv-primary); text-decoration: none; }
a:hover { text-decoration: underline; }

h1, h2, h3, h4, h5, h6 { margin: 0 0 .5rem; font-weight: 600; line-height: 1.3; }
.h4 { font-size: 1.4rem; } .h5 { font-size: 1.15rem; } .h6 { font-size: .95rem; }
.display-5 { font-size: 2.5rem; font-weight: 300; line-height: 1.2; }
p { margin: 0 0 1rem; }
code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: .875em; color: #b02a37; }
pre { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; }
hr { border: 0; border-top: 1px solid var(--nv-line); margin: 1rem 0; }

/* ------------------------------------------------------------------ grid -- */
.container-fluid { width: 100%; padding: 0 12px; margin: 0 auto; }

.row { display: flex; flex-wrap: wrap; margin: 0 -12px; }
.row > * { padding: 0 12px; width: 100%; }

.g-1 { margin: -4px -4px 0; }    .g-1 > * { padding: 4px; }
.g-2 { margin: -6px -6px 0; }    .g-2 > * { padding: 6px; }
.g-3 { margin: -12px -12px 0; }  .g-3 > * { padding: 12px; }

/* Twelfths, one rule per width. Verbose, but it is generated once and read
   often, and a loop-generated stylesheet nobody can grep is a poor trade. */
.col     { flex: 1 0 0%; }
.col-1  { flex: 0 0 auto; width: 8.3333%; }
.col-2  { flex: 0 0 auto; width: 16.6667%; }
.col-3  { flex: 0 0 auto; width: 25%; }
.col-4  { flex: 0 0 auto; width: 33.3333%; }
.col-5  { flex: 0 0 auto; width: 41.6667%; }
.col-6  { flex: 0 0 auto; width: 50%; }
.col-7  { flex: 0 0 auto; width: 58.3333%; }
.col-8  { flex: 0 0 auto; width: 66.6667%; }
.col-9  { flex: 0 0 auto; width: 75%; }
.col-10 { flex: 0 0 auto; width: 83.3333%; }
.col-11 { flex: 0 0 auto; width: 91.6667%; }
.col-12 { flex: 0 0 auto; width: 100%; }

@media (min-width: 576px) {
  .col-sm-1  { flex: 0 0 auto; width: 8.3333%; }
  .col-sm-2  { flex: 0 0 auto; width: 16.6667%; }
  .col-sm-3  { flex: 0 0 auto; width: 25%; }
  .col-sm-4  { flex: 0 0 auto; width: 33.3333%; }
  .col-sm-5  { flex: 0 0 auto; width: 41.6667%; }
  .col-sm-6  { flex: 0 0 auto; width: 50%; }
  .col-sm-8  { flex: 0 0 auto; width: 66.6667%; }
  .col-sm-9  { flex: 0 0 auto; width: 75%; }
  .col-sm-12 { flex: 0 0 auto; width: 100%; }
}
@media (min-width: 768px) {
  .col-md-1  { flex: 0 0 auto; width: 8.3333%; }
  .col-md-2  { flex: 0 0 auto; width: 16.6667%; }
  .col-md-3  { flex: 0 0 auto; width: 25%; }
  .col-md-4  { flex: 0 0 auto; width: 33.3333%; }
  .col-md-5  { flex: 0 0 auto; width: 41.6667%; }
  .col-md-6  { flex: 0 0 auto; width: 50%; }
  .col-md-7  { flex: 0 0 auto; width: 58.3333%; }
  .col-md-8  { flex: 0 0 auto; width: 66.6667%; }
  .col-md-9  { flex: 0 0 auto; width: 75%; }
  .col-md-12 { flex: 0 0 auto; width: 100%; }
}
@media (min-width: 992px) {
  .col-lg-2  { flex: 0 0 auto; width: 16.6667%; }
  .col-lg-3  { flex: 0 0 auto; width: 25%; }
  .col-lg-4  { flex: 0 0 auto; width: 33.3333%; }
  .col-lg-5  { flex: 0 0 auto; width: 41.6667%; }
  .col-lg-6  { flex: 0 0 auto; width: 50%; }
  .col-lg-7  { flex: 0 0 auto; width: 58.3333%; }
  .col-lg-8  { flex: 0 0 auto; width: 66.6667%; }
  .col-lg-9  { flex: 0 0 auto; width: 75%; }
}

/* ------------------------------------------------------------- utilities -- */
.d-flex { display: flex !important; }
.d-inline { display: inline !important; }
.d-inline-block { display: inline-block !important; }
.d-none { display: none !important; }
.d-block { display: block !important; }
.flex-grow-1 { flex-grow: 1 !important; }
.flex-column { flex-direction: column !important; }
.flex-wrap { flex-wrap: wrap !important; }
.justify-content-between { justify-content: space-between !important; }
.justify-content-center  { justify-content: center !important; }
.justify-content-end     { justify-content: flex-end !important; }
.align-items-center { align-items: center !important; }
.align-items-start  { align-items: flex-start !important; }
.align-items-end    { align-items: flex-end !important; }
.gap-1 { gap: .25rem !important; } .gap-2 { gap: .5rem !important; } .gap-3 { gap: 1rem !important; }
.w-100 { width: 100% !important; } .h-100 { height: 100% !important; }
.text-center { text-align: center !important; }
.text-end { text-align: right !important; }
.text-start { text-align: left !important; }
.text-muted   { color: var(--nv-muted) !important; }
.text-danger  { color: var(--nv-danger) !important; }
.text-success { color: var(--nv-success) !important; }
.text-warning { color: #b45309 !important; }
.text-dark    { color: var(--nv-ink) !important; }
.text-white   { color: #fff !important; }
.small { font-size: .82rem; }
.fw-semibold { font-weight: 600 !important; }
.fw-bold { font-weight: 700 !important; }
.list-unstyled { padding-left: 0; list-style: none; }
.border-bottom { border-bottom: 1px solid var(--nv-line) !important; }
.border-top    { border-top: 1px solid var(--nv-line) !important; }
.border-warning { border-color: var(--nv-warning) !important; }
.border-primary { border-color: var(--nv-primary) !important; }
.rounded { border-radius: var(--nv-radius) !important; }
.position-relative { position: relative !important; }
.overflow-auto { overflow: auto !important; }
.bg-light { background: #f2f4f7 !important; }
.bg-white { background: #fff !important; }

/* Spacing scale: 0, .25, .5, 1, 1.5, 3 rem — Bootstrap's, so muscle memory
   and copied markup both keep working. */
.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}
.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}
.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}
.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-auto{margin-left:auto!important}
.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-auto{margin-right:auto!important}
.mx-auto{margin-left:auto!important;margin-right:auto!important}
.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}
.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}
.pb-0{padding-bottom:0!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}
.py-0{padding-top:0!important;padding-bottom:0!important}
.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}
.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}
.py-3{padding-top:1rem!important;padding-bottom:1rem!important}
.px-2{padding-left:.5rem!important;padding-right:.5rem!important}
.px-3{padding-left:1rem!important;padding-right:1rem!important}

/* ----------------------------------------------------------------- cards -- */
.card {
  position: relative;
  display: flex;
  flex-direction: column;
  background: var(--nv-surface);
  border: 1px solid var(--nv-line);
  border-radius: var(--nv-radius);
  box-shadow: var(--nv-shadow);
}
.card-body { flex: 1 1 auto; padding: 1rem 1.15rem; }
.card-header { padding: .75rem 1.15rem; border-bottom: 1px solid var(--nv-line); background: #fcfcfd; }
.card + .card { margin-top: 1rem; }

/* --------------------------------------------------------------- buttons -- */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .35rem;
  padding: .45rem .9rem;
  font-size: .9rem;
  font-weight: 500;
  line-height: 1.4;
  border: 1px solid transparent;
  border-radius: var(--nv-radius-sm);
  background: transparent;
  color: var(--nv-ink);
  cursor: pointer;
  text-decoration: none;
  transition: background-color .12s ease, border-color .12s ease, color .12s ease;
}
.btn:hover { text-decoration: none; }
.btn:focus-visible { outline: 2px solid var(--nv-primary); outline-offset: 2px; }
.btn:disabled, .btn[disabled] { opacity: .55; cursor: not-allowed; }
.btn-sm { padding: .28rem .6rem; font-size: .8rem; }
.btn-lg { padding: .6rem 1.2rem; font-size: 1rem; }

.btn-primary   { background: var(--nv-primary); border-color: var(--nv-primary); color: #fff; }
.btn-primary:hover { background: var(--nv-primary-dark); border-color: var(--nv-primary-dark); color: #fff; }
.btn-secondary { background: var(--nv-secondary); border-color: var(--nv-secondary); color: #fff; }
.btn-danger    { background: var(--nv-danger); border-color: var(--nv-danger); color: #fff; }
.btn-success   { background: var(--nv-success); border-color: var(--nv-success); color: #fff; }

.btn-outline-primary   { border-color: var(--nv-primary); color: var(--nv-primary); }
.btn-outline-primary:hover { background: var(--nv-primary); color: #fff; }
.btn-outline-secondary { border-color: var(--nv-line); color: var(--nv-ink); background: #fff; }
.btn-outline-secondary:hover { background: #f2f4f7; }
.btn-outline-danger    { border-color: var(--nv-danger); color: var(--nv-danger); }
.btn-outline-danger:hover { background: var(--nv-danger); color: #fff; }
.btn-outline-success   { border-color: var(--nv-success); color: var(--nv-success); }
.btn-outline-success:hover { background: var(--nv-success); color: #fff; }
.btn-outline-warning   { border-color: var(--nv-warning); color: #b45309; }
.btn-outline-warning:hover { background: var(--nv-warning); color: #fff; }
.btn-outline-light     { border-color: rgba(255,255,255,.35); color: #e7eaf0; }
.btn-outline-light:hover { background: rgba(255,255,255,.12); color: #fff; }

/* ----------------------------------------------------------------- forms -- */
.form-label { display: inline-block; margin-bottom: .3rem; font-size: .85rem; font-weight: 500; }
.form-control, .form-select {
  display: block;
  width: 100%;
  padding: .45rem .7rem;
  font-size: .9rem;
  font-family: inherit;
  line-height: 1.5;
  color: var(--nv-ink);
  background: #fff;
  border: 1px solid var(--nv-line);
  border-radius: var(--nv-radius-sm);
  transition: border-color .12s ease, box-shadow .12s ease;
}
.form-control:focus, .form-select:focus {
  outline: 0;
  border-color: var(--nv-primary);
  box-shadow: 0 0 0 3px rgba(11, 95, 255, .13);
}
.form-control::placeholder { color: #98a2b3; }
.form-control:disabled, .form-select:disabled { background: #f2f4f7; }
.form-control-sm, .form-select-sm { padding: .25rem .5rem; font-size: .8rem; }
.form-select {
  appearance: none;
  padding-right: 2rem;
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23667085' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: right .6rem center;
  background-size: 12px;
}
textarea.form-control { min-height: 3rem; }
.form-text { margin-top: .25rem; font-size: .78rem; color: var(--nv-muted); }

.form-check { display: block; min-height: 1.4rem; padding-left: 1.6rem; margin-bottom: .2rem; }
.form-check-input {
  float: left; margin-left: -1.6rem; margin-top: .22rem;
  width: 1rem; height: 1rem; vertical-align: top;
  border: 1px solid #b8bfca; border-radius: 3px; background: #fff;
  appearance: none; cursor: pointer;
}
.form-check-input[type="radio"] { border-radius: 50%; }
.form-check-input:checked {
  background: var(--nv-primary); border-color: var(--nv-primary);
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-width='3' d='M6 10l3 3 6-6'/%3e%3c/svg%3e");
  background-repeat: no-repeat; background-position: center; background-size: 12px;
}
.form-check-input:focus-visible { outline: 2px solid var(--nv-primary); outline-offset: 1px; }
.form-check-label { font-size: .88rem; cursor: pointer; }
.form-check-inline { display: inline-block; margin-right: 1rem; }

/* ---------------------------------------------------------------- tables -- */
.table { width: 100%; margin-bottom: 1rem; border-collapse: collapse; color: var(--nv-ink); }
.table > thead th {
  padding: .55rem .7rem;
  font-size: .78rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .02em;
  color: var(--nv-muted);
  border-bottom: 1px solid var(--nv-line);
  text-align: left;
  white-space: nowrap;
}
.table > tbody td, .table > tfoot td, .table > tfoot th {
  padding: .55rem .7rem;
  border-bottom: 1px solid var(--nv-line);
  vertical-align: top;
}
.table > tbody tr:last-child td { border-bottom: 0; }
.table-sm > thead th, .table-sm > tbody td, .table-sm > tfoot td { padding: .35rem .55rem; }
.table > tbody tr:hover { background: #fafbfc; }
.align-middle, .align-middle td, .align-middle th { vertical-align: middle !important; }
.table-responsive { overflow-x: auto; }
.table-warning, tr.table-warning > td { background: #fff8e6 !important; }
.table-danger,  tr.table-danger  > td { background: #fef1f0 !important; }

/* --------------------------------------------------------------- badges --- */
.badge {
  display: inline-block;
  padding: .22em .5em;
  font-size: .72rem;
  font-weight: 600;
  line-height: 1.2;
  color: #fff;
  border-radius: 4px;
  vertical-align: middle;
  white-space: nowrap;
}
.bg-primary   { background: var(--nv-primary) !important; }
.bg-secondary { background: var(--nv-secondary) !important; }
.bg-success   { background: var(--nv-success) !important; }
.bg-danger    { background: var(--nv-danger) !important; }
.bg-warning   { background: var(--nv-warning) !important; }
.bg-info      { background: var(--nv-info) !important; }
.bg-light     { background: #f2f4f7 !important; }
.badge.bg-light, .badge.text-dark { color: var(--nv-ink); }

/* --------------------------------------------------------------- alerts --- */
.alert {
  position: relative;
  padding: .7rem 1rem;
  margin-bottom: 1rem;
  border: 1px solid transparent;
  border-radius: var(--nv-radius-sm);
  font-size: .9rem;
}
.alert-success { background: #eafaf1; border-color: #b7ebd0; color: #08653c; }
.alert-danger  { background: #fef1f0; border-color: #fbc9c5; color: #a12018; }
.alert-warning { background: #fff8e6; border-color: #fadfa0; color: #7a4a00; }
.alert-info    { background: #e7f8fb; border-color: #b3e5ef; color: #06657a; }
.alert-secondary { background: #f2f4f7; border-color: var(--nv-line); color: var(--nv-ink); }

/* ------------------------------------------------------------- progress --- */
.progress { height: 8px; background: #eceff3; border-radius: 999px; overflow: hidden; }
.progress-bar { height: 100%; background: var(--nv-primary); transition: width .3s ease; }

/* --------------------------------------------------------------- navbar --- */
.navbar { position: relative; display: flex; flex-wrap: wrap; align-items: center; padding: .5rem 0; }
.navbar > .container-fluid { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; }
.navbar-brand { display: inline-flex; align-items: center; gap: .5rem; padding: .3rem 0; margin-right: 1rem; font-size: 1.05rem; text-decoration: none; }
.navbar-brand:hover { text-decoration: none; }
.navbar-nav { display: flex; flex-direction: column; padding-left: 0; margin: 0; list-style: none; }
.nav-item { display: block; }
.nav-link { display: block; padding: .4rem .6rem; text-decoration: none; }
.nav-link:hover { text-decoration: none; }

.navbar-toggler {
  padding: .25rem .5rem;
  background: transparent;
  border: 1px solid rgba(255,255,255,.35);
  border-radius: var(--nv-radius-sm);
  cursor: pointer;
  line-height: 1;
}
.navbar-toggler-icon {
  display: inline-block; width: 1.4em; height: 1.4em; vertical-align: middle;
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba(255,255,255,.85)' stroke-width='2' stroke-linecap='round' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
  background-repeat: no-repeat; background-position: center; background-size: 100%;
}

/* Collapse: closed by default on small screens, always open from lg up. The
   toggler is only shown where it does something. */
.collapse:not(.show) { display: none; }
.navbar-collapse { flex-basis: 100%; flex-grow: 1; align-items: center; }
@media (min-width: 992px) {
  .navbar-expand-lg { flex-wrap: nowrap; justify-content: flex-start; }
  .navbar-expand-lg > .container-fluid { flex-wrap: nowrap; }
  .navbar-expand-lg .navbar-collapse { display: flex !important; flex-basis: auto; align-items: center; }
  .navbar-expand-lg .navbar-nav { flex-direction: row; align-items: center; flex-wrap: wrap; }
  .navbar-expand-lg .navbar-nav .nav-link { padding: .4rem .55rem; white-space: nowrap; }
  .navbar-expand-lg .navbar-toggler { display: none; }
}

/* ------------------------------------------------------------- dropdown --- */
.dropdown { position: relative; }
.dropdown-toggle::after {
  content: ""; display: inline-block; margin-left: .4em; vertical-align: .2em;
  border-top: .3em solid; border-right: .3em solid transparent; border-left: .3em solid transparent;
}
.dropdown-menu {
  position: absolute;
  z-index: 1000;
  display: none;
  min-width: 12rem;
  padding: .35rem 0;
  margin-top: .25rem;
  background: #fff;
  border: 1px solid var(--nv-line);
  border-radius: var(--nv-radius);
  box-shadow: 0 8px 24px rgba(16, 24, 40, .12);
  list-style: none;
}
.dropdown-menu.show { display: block; }
.dropdown-menu-end { right: 0; left: auto; }
.dropdown-item { display: block; width: 100%; padding: .4rem 1rem; color: var(--nv-ink); text-decoration: none; background: none; border: 0; text-align: left; cursor: pointer; }
.dropdown-item:hover { background: #f2f4f7; text-decoration: none; }
.dropdown-item-text { display: block; padding: .3rem 1rem; }
.dropdown-divider { height: 0; margin: .3rem 0; border-top: 1px solid var(--nv-line); }

/* ---------------------------------------------------------------- misc ----- */
[hidden] { display: none !important; }
:focus-visible { outline: 2px solid var(--nv-primary); outline-offset: 2px; }

@media (max-width: 991.98px) {
  .navbar-nav { width: 100%; }
  .nav-link { padding: .5rem .2rem; border-bottom: 1px solid rgba(255,255,255,.08); }
}

/* --------------------------------------------- remaining used components -- */
/* Found by auditing class usage across the views rather than by guessing at
   what a stylesheet "should" contain. */

.btn-warning { background: var(--nv-warning); border-color: var(--nv-warning); color: #fff; }
.btn-warning:hover { background: #d97b06; border-color: #d97b06; }

.btn-group { display: inline-flex; vertical-align: middle; }
.btn-group > .btn { border-radius: 0; margin-left: -1px; }
.btn-group > .btn:first-child { border-radius: var(--nv-radius-sm) 0 0 var(--nv-radius-sm); margin-left: 0; }
.btn-group > .btn:last-child  { border-radius: 0 var(--nv-radius-sm) var(--nv-radius-sm) 0; }
.btn-group > .btn:only-child  { border-radius: var(--nv-radius-sm); }
.btn-group-sm > .btn { padding: .28rem .6rem; font-size: .8rem; }

.btn-close {
  box-sizing: content-box; width: .8em; height: .8em; padding: .25em;
  border: 0; border-radius: 4px; background: transparent
    url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath stroke='%23667085' stroke-width='2' d='M2 2l12 12M14 2L2 14'/%3e%3c/svg%3e")
    center/.8em auto no-repeat;
  opacity: .6; cursor: pointer;
}
.btn-close:hover { opacity: 1; }

.alert-dismissible { padding-right: 2.5rem; }
.alert-dismissible .btn-close { position: absolute; top: .5rem; right: .5rem; }

/* Alerts are faded in by class, so without this rule a dismissible alert that
   never receives .show would stay invisible. */
.fade { transition: opacity .15s linear; }
.fade:not(.show) { opacity: 0; }
.alert.fade:not(.show) { display: none; }

.pagination { display: flex; padding-left: 0; list-style: none; gap: 2px; }
.page-item .page-link {
  display: block; padding: .35rem .65rem; font-size: .85rem;
  color: var(--nv-primary); background: #fff;
  border: 1px solid var(--nv-line); border-radius: var(--nv-radius-sm);
  text-decoration: none;
}
.page-item .page-link:hover { background: #f2f4f7; text-decoration: none; }
.page-item.active .page-link { background: var(--nv-primary); border-color: var(--nv-primary); color: #fff; }
.page-item.disabled .page-link { color: var(--nv-muted); pointer-events: none; opacity: .6; }
.pagination-sm .page-link { padding: .2rem .45rem; font-size: .78rem; }

.text-primary { color: var(--nv-primary) !important; }
.text-truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
