@font-face {
  font-family: "TT Firs";
  src: url("../fonts/TTFirs/TT Firs Neue Trial Regular.ttf") format("truetype");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "TT Firs";
  src: url("../fonts/TTFirs/TT Firs Neue Trial Medium.ttf") format("truetype");
  font-weight: 500;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "TT Firs";
  src: url("../fonts/TTFirs/TT Firs Neue Trial Bold.ttf") format("truetype");
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "JetBrains Mono";
  src: url("../fonts/JetBrains/JetBrainsMono-Regular.ttf") format("truetype");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "JetBrains Mono";
  src: url("../fonts/JetBrains/JetBrainsMono-Bold.ttf") format("truetype");
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}

:root {
  /* Catalyst palette */
  --catalyst-blue: #2e5bff;
  --catalyst-blue-400: #587cff;
  --catalyst-blue-medium: #829dff;
  --catalyst-blue-200: #abbeff;
  --catalyst-blue-light: #d5deff;
  --catalyst-blue-lighter: #eef1ff;

  --catalyst-green: #2ecc71;
  --catalyst-green-400: #58d68d;
  --catalyst-green-medium: #82e0aa;
  --catalyst-green-200: #abebc6;
  --catalyst-green-light: #d5f5e3;
  --catalyst-green-lighter: #eafaf1;

  --catalyst-text: #1a1a1b;
  --catalyst-text-medium: #474748;
  --catalyst-text-light: #757576;
  --catalyst-text-lighter: #a3a3a4;
  --catalyst-surface: #d1d1d2;

  /* Bridge to existing Bootstrap/admin theme tokens */
  --bs-primary: var(--catalyst-blue);
  --bs-primary-rgb: 46, 91, 255;
  --bs-success: var(--catalyst-green);
  --bs-success-rgb: 46, 204, 113;
  --bs-body-color: var(--catalyst-text);
  --admin-font-sans: "TT Firs", "Segoe UI", sans-serif;
  --admin-font-mono: "JetBrains Mono", "Consolas", monospace;
}

body {
  color: var(--catalyst-text);
  font-family: var(--admin-font-sans);
}

.navbar,
.sidebar,
.main-panel,
.content-wrapper,
.page-title,
.card-title,
.btn,
.form-control,
.modal-title,
.breadcrumb-item,
.dataTables_wrapper {
  font-family: var(--admin-font-sans) !important;
}

table.dataTable tbody td,
.dataTables_wrapper .dataTables_info,
.dataTables_wrapper .dataTables_paginate .paginate_button {
  font-family: var(--admin-font-mono);
}

.text-muted {
  color: var(--catalyst-text-light) !important;
}

.text-primary {
  color: var(--catalyst-blue) !important;
}

.text-success {
  color: var(--catalyst-green) !important;
}

.bg-gradient-primary {
  background: linear-gradient(90deg, var(--catalyst-blue), var(--catalyst-blue-400)) !important;
}

.bg-gradient-success,
.bg-gradient-danger {
  background: linear-gradient(90deg, var(--catalyst-green), var(--catalyst-green-400)) !important;
}

.badge-primary {
  background-color: var(--catalyst-blue);
}

.badge-success {
  background-color: var(--catalyst-green);
}

.btn-primary {
  background-color: var(--catalyst-blue);
  border-color: var(--catalyst-blue);
}

.btn-primary:hover,
.btn-primary:focus,
.btn-primary:active {
  background-color: var(--catalyst-blue-400) !important;
  border-color: var(--catalyst-blue-400) !important;
}

.btn-success {
  background-color: var(--catalyst-green);
  border-color: var(--catalyst-green);
}

.btn-success:hover,
.btn-success:focus,
.btn-success:active {
  background-color: var(--catalyst-green-400) !important;
  border-color: var(--catalyst-green-400) !important;
}

.gauge-brand-logo {
  font-weight: 900;
  color: var(--catalyst-blue);
  text-decoration: none;
}

.gauge-brand-logo:hover,
.gauge-brand-logo:focus,
.gauge-brand-logo:active {
  color: var(--catalyst-blue-400);
  text-decoration: none;
}

.gauge-navbar-logo {
  width: 34px !important;
  height: 34px !important;
  object-fit: contain;
  display: block;
}

.gauge-navbar-logo-mini {
  width: 26px !important;
  height: 26px !important;
  object-fit: contain;
  display: block;
}

.gauge-auth-logo {
  width: 64px !important;
  height: 64px !important;
  object-fit: contain;
  display: block;
}

.gauge-auth-logo-with-name {
  width: 58px !important;
  height: auto !important;
  max-width: 100%;
  object-fit: contain;
  display: block;
}

.gauge-navbar-brand {
  display: flex !important;
  align-items: center;
  justify-content: flex-start;
  gap: 0;
  /* padding-left: 1rem !important; */
  width: auto !important;
}

body.sidebar-icon-only .navbar .navbar-brand-wrapper .navbar-brand {
    padding-left: 0 !important;
}

.gauge-navbar-logo-with-name {
  width: auto !important;
  height: 24px !important;
  max-width: 128px !important;
  object-fit: contain;
  display: block;
}

.gauge-navbar-logo-main {
  width: 34px !important;
  height: 34px !important;
  object-fit: contain;
  display: block;
}

.brand-logo-mini {
  justify-content: center !important;
}

.brand-logo .gauge-navbar-logo {
  margin-left: 0;
}

.auth .brand-logo {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  margin-bottom: 18px;
}

@media (max-width: 991px) {
  .gauge-navbar-brand {
    padding-left: 0 !important;
    justify-content: center;
  }

  .gauge-navbar-logo-with-name {
    display: none !important;
  }

  .gauge-navbar-logo-mini {
    width: 24px !important;
    height: 24px !important;
  }
}

/* Ensure only one navbar logo is visible per state */
.navbar .navbar-brand-wrapper .brand-logo {
  display: flex !important;
}

.navbar .navbar-brand-wrapper .brand-logo-mini {
  display: none !important;
}

.sidebar-icon-only .navbar .navbar-brand-wrapper .brand-logo {
  display: none !important;
}

.sidebar-icon-only .navbar .navbar-brand-wrapper .brand-logo-mini {
  display: flex !important;
  align-items: center;
  justify-content: center;
}

@media (max-width: 991px) {
  .navbar .navbar-brand-wrapper .brand-logo {
    display: none !important;
  }

  .navbar .navbar-brand-wrapper .brand-logo-mini {
    display: flex !important;
    align-items: center;
    justify-content: center;
  }
}

.gauge-text-medium {
  color: var(--catalyst-text-medium) !important;
}

.gauge-text-light {
  color: var(--catalyst-text-light) !important;
}

.gauge-text-lighter {
  color: var(--catalyst-text-lighter) !important;
}

.gauge-surface {
  background-color: var(--catalyst-surface) !important;
}

/* Profile modal is outside <nav> so the adjacent sibling selector + no longer matches — use ~ instead */
.navbar.fixed-top ~ .page-body-wrapper {
  padding-top: 70px;
}

/* Whole page backgrounds */
.content-wrapper {
  background: var(--catalyst-blue-lighter) !important;
}

.main-panel {
  background: linear-gradient(180deg, #ffffff 0%, var(--catalyst-blue-lighter) 100%);
}

.page-body-wrapper.full-page-wrapper {
  background: linear-gradient(160deg, var(--catalyst-blue-lighter) 0%, #ffffff 100%);
}

/* Sidebar after login */
.sidebar {
  background: #ffffff !important;
  border-right: 1px solid var(--catalyst-blue-light);
}

/* Mobile offcanvas toggle button in brand wrapper */
.navbar .navbar-brand-wrapper .navbar-toggler {
  border: 0;
  color: #000;
  font-size: 1.5rem;
  padding: 0 8px;
  background: none;
  outline: none;
  box-shadow: none;
}

@media (max-width: 991px) {
  .navbar .navbar-brand-wrapper .navbar-toggler:focus,
  .navbar .navbar-brand-wrapper .navbar-toggler:active {
    outline: none !important;
    box-shadow: none !important;
    border: none !important;
  }
}

@media (max-width: 991px) {
  /* Widen brand wrapper to fit logo + hamburger button */
  .navbar .navbar-brand-wrapper {
    width: 110px !important;
  }

  /* Increase mini logo size on mobile */
  .gauge-navbar-logo-mini {
    width: 36px !important;
    height: 36px !important;
  }
}

/* Mobile: slide sidebar in from the left instead of right */
@media (max-width: 991px) {
  .sidebar.sidebar-offcanvas {
    right: auto !important;
    left: -260px;
    transition: left 0.25s ease-out;
  }

  .sidebar.sidebar-offcanvas.active {
    left: 0;
  }
}

/* Desktop only: fix sidebar so body scroll doesn't move it, and offset main-panel */
@media (min-width: 992px) {
  .sidebar {
    position: fixed !important;
    top: 70px;
    height: calc(100vh - 70px);
    overflow-y: auto;
  }

  .main-panel {
    margin-left: 260px !important;
  }

  .sidebar-icon-only .main-panel {
    margin-left: 63px !important;
  }
}

.sidebar .nav .nav-item .nav-link {
  color: var(--catalyst-text-medium) !important;
}

.sidebar .nav .nav-item .nav-link i.menu-icon {
  color: var(--catalyst-text-lighter) !important;
}

.sidebar .nav .nav-item.active {
  background: var(--catalyst-blue-lighter) !important;
}

.sidebar .nav .nav-item.active > .nav-link .menu-title,
.sidebar .nav .nav-item.active > .nav-link i {
  color: var(--catalyst-blue) !important;
}

.sidebar .nav .nav-item:hover {
  background: var(--catalyst-blue-lighter) !important;
}

/* Auth pages */
.auth .auth-form-light {
  border: 1px solid var(--catalyst-blue-light);
  border-radius: 12px;
  box-shadow: 0 12px 30px rgba(46, 91, 255, 0.08);
}

.auth .auth-form-light h4,
.auth .auth-form-light h6 {
  color: var(--catalyst-text);
}

.auth-link.text-primary {
  color: var(--catalyst-blue) !important;
}

.auth-link.text-primary:hover {
  color: var(--catalyst-blue-400) !important;
}

.btn-gradient-primary {
  background: linear-gradient(to right, var(--catalyst-blue), var(--catalyst-blue-400)) !important;
}

.btn-outline-success {
  color: var(--catalyst-green);
  border-color: var(--catalyst-green);
}

.btn-outline-success:hover,
.btn-outline-success:focus,
.btn-outline-success:active {
  color: #ffffff !important;
  background-color: var(--catalyst-green) !important;
  border-color: var(--catalyst-green) !important;
}

/* Remove grey placeholder color from select dropdowns */
select.form-control {
  color: var(--catalyst-text) !important;
}

/* DataTables */
div.dataTables_wrapper {
  margin-top: 14px;
}

div.dataTables_wrapper .dataTables_length,
div.dataTables_wrapper .dataTables_filter {
  margin-bottom: 10px;
}

div.dataTables_wrapper table.dataTable {
  margin-top: 8px !important;
}

table.dataTable,
.table.dataTable {
  border: 1px solid var(--catalyst-blue-light);
  border-radius: 10px;
  overflow: hidden;
  background: #ffffff;
}

table.dataTable thead th,
table.dataTable thead td {
  background: var(--catalyst-blue-lighter) !important;
  color: var(--catalyst-text) !important;
  border-bottom: 1px solid var(--catalyst-blue-light) !important;
}

table.dataTable tbody tr,
.table tbody tr {
  background-color: #ffffff;
}

table.dataTable.stripe > tbody > tr.odd > *,
table.dataTable.display > tbody > tr.odd > *,
.table-striped > tbody > tr:nth-of-type(odd) > * {
  background-color: #f8faff !important;
}

table.dataTable.hover > tbody > tr:hover > *,
table.dataTable.display > tbody > tr:hover > *,
.table-hover > tbody > tr:hover > * {
  background-color: var(--catalyst-green-light) !important;
  color: var(--catalyst-text) !important;
}

table.dataTable tbody tr:hover td,
.table-hover tbody tr:hover td,
.table-hover tbody td {
  color: var(--catalyst-text) !important;
}

/* Force hover for project DataTables (prevents plugin-specific cells from overriding) */
#usersTable.table-hover > tbody > tr:hover > *,
#kpisTable.table-hover > tbody > tr:hover > *,
#kpiDataTable.table-hover > tbody > tr:hover > *,
#allkpisTable.table-hover > tbody > tr:hover > * {
  background-color: var(--catalyst-green-light) !important;
  color: var(--catalyst-text) !important;
  box-shadow: inset 0 0 0 9999px var(--catalyst-green-light) !important;
}

#usersTable.dataTable.display > tbody > tr:hover > .sorting_1,
#kpisTable.dataTable.display > tbody > tr:hover > .sorting_1,
#kpiDataTable.dataTable.display > tbody > tr:hover > .sorting_1,
#allkpisTable.dataTable.display > tbody > tr:hover > .sorting_1 {
  background-color: var(--catalyst-green-light) !important;
  box-shadow: inset 0 0 0 9999px var(--catalyst-green-light) !important;
}

div.dataTables_wrapper div.dataTables_filter input,
div.dataTables_wrapper div.dataTables_length select {
  border: 1px solid var(--catalyst-blue-200) !important;
  border-radius: 8px !important;
  color: var(--catalyst-text) !important;
  background-color: #ffffff !important;
}

div.dataTables_wrapper div.dataTables_filter input:focus,
div.dataTables_wrapper div.dataTables_length select:focus {
  border-color: var(--catalyst-blue) !important;
  box-shadow: 0 0 0 0.15rem rgba(46, 91, 255, 0.15) !important;
  outline: none;
}

.dataTables_wrapper .dataTables_info {
  color: var(--catalyst-text-light) !important;
}

.dataTables_wrapper .dataTables_paginate .paginate_button {
  color: var(--catalyst-text-medium) !important;
  border: 1px solid var(--catalyst-blue-200) !important;
  border-radius: 6px !important;
  margin: 0 2px;
  background: #ffffff !important;
}

.dataTables_wrapper .dataTables_paginate .paginate_button:hover {
  color: #ffffff !important;
  border-color: var(--catalyst-blue) !important;
  background: var(--catalyst-blue) !important;
  box-shadow: none !important;
}

.dataTables_wrapper .dataTables_paginate .paginate_button.current,
.dataTables_wrapper .dataTables_paginate .paginate_button.current:hover {
  color: #ffffff !important;
  border-color: var(--catalyst-green) !important;
  background: var(--catalyst-green) !important;
  box-shadow: none !important;
}

.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,
.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover {
  color: var(--catalyst-text-lighter) !important;
  border-color: var(--catalyst-blue-light) !important;
  background: #ffffff !important;
  cursor: default !important;
  box-shadow: none !important;
}

/* Profile update modal */
#profileModal .profile-modal-content {
  border: 1px solid var(--catalyst-blue-light);
  border-radius: 12px;
  overflow: hidden;
}

#profileModal .profile-modal-header {
  background: linear-gradient(90deg, var(--catalyst-blue), var(--catalyst-blue-400));
  border-bottom: 1px solid var(--catalyst-blue-light);
}

#profileModal .modal-body {
  background: #ffffff;
}

#profileModal .modal-footer {
  background: linear-gradient(90deg, var(--catalyst-blue-lighter) 0%, var(--catalyst-green-lighter) 100%);
  border-top: 1px solid var(--catalyst-blue-light);
}

#profileModal .form-control:focus {
  border-color: var(--catalyst-blue) !important;
  box-shadow: 0 0 0 0.15rem rgba(46, 91, 255, 0.15) !important;
}

/* DataTable processing loader z-index fix */
.dataTables_processing {
  z-index: 10 !important;
  position: absolute !important;
}

/* Modal z-index fix — --bs-modal-zindex and --bs-backdrop-zindex are undefined (commented out in style.css) */
:root {
  --bs-backdrop-zindex: 1050;
  --bs-backdrop-opacity: 0.5;
  --bs-modal-zindex: 1055;
}

.modal {
  z-index: 1055 !important;
}

.modal-backdrop {
  position: fixed !important;
  top: 0 !important;
  left: 0 !important;
  z-index: 1050 !important;
  width: 100vw !important;
  height: 100vh !important;
  background-color: #000 !important;
}
.modal-backdrop.fade { opacity: 0 !important; }
.modal-backdrop.show { opacity: 0.5 !important; }

/* Edit modals */
#editUserModal .modal-content,
#editKpiModal .modal-content,
#editKpiDataModal .modal-content,
#subscriptionHistoryModal .modal-content {
  border: 1px solid var(--catalyst-blue-light);
  border-radius: 12px;
  overflow: hidden;
}

#editUserModal .modal-header,
#editKpiModal .modal-header,
#editKpiDataModal .modal-header,
#subscriptionHistoryModal .modal-header {
  border-bottom: 1px solid var(--catalyst-blue-light);
}

#editUserModal .modal-body,
#editKpiModal .modal-body,
#editKpiDataModal .modal-body,
#subscriptionHistoryModal .modal-body {
  background: #ffffff;
}

#editUserModal .modal-footer,
#editKpiModal .modal-footer,
#editKpiDataModal .modal-footer,
#subscriptionHistoryModal .modal-footer {
  background: var(--catalyst-blue-lighter);
  border-top: 1px solid var(--catalyst-blue-light);
}

/* SweetAlert global button theme */
.swal2-popup .swal2-confirm {
  background-color: var(--catalyst-blue) !important;
  border-color: var(--catalyst-blue) !important;
  color: #ffffff !important;
}

.swal2-popup .swal2-confirm:hover,
.swal2-popup .swal2-confirm:focus {
  background-color: var(--catalyst-blue-400) !important;
  border-color: var(--catalyst-blue-400) !important;
  box-shadow: 0 0 0 0.15rem rgba(46, 91, 255, 0.2) !important;
}

.swal2-popup .swal2-cancel {
  background-color: var(--catalyst-green) !important;
  border-color: var(--catalyst-green) !important;
  color: #ffffff !important;
}

.swal2-popup .swal2-cancel:hover,
.swal2-popup .swal2-cancel:focus {
  background-color: var(--catalyst-green-400) !important;
  border-color: var(--catalyst-green-400) !important;
  box-shadow: 0 0 0 0.15rem rgba(46, 204, 113, 0.2) !important;
}
