/* Final cross-role UI corrections. Loaded after all legacy page styles. */
:root {
  --kl-sidebar-width: 276px;
  --kl-header-height: 68px;
}

html {
  font-size: 14px !important;
  scrollbar-gutter: stable;
  scroll-behavior: auto !important;
}

html.kl-ui-booting body {
  visibility: hidden !important;
}

html.kl-ui-ready body {
  visibility: visible !important;
}

body.kanisa-legacy-shell {
  font-size: .92rem;
}

body.kanisa-legacy-shell *,
body.kanisa-legacy-shell *::before,
body.kanisa-legacy-shell *::after {
  scroll-behavior: auto !important;
}

/* Fixed header must never cover page content. */
body.kanisa-legacy-shell .app-header {
  position: fixed !important;
  top: 0;
  right: 0;
  left: var(--kl-sidebar-width);
  z-index: 1035;
  height: var(--kl-header-height);
  min-height: var(--kl-header-height);
  border-bottom: 1px solid var(--kl-border);
  background: rgba(255, 255, 255, .98) !important;
  box-shadow: 0 4px 16px rgba(35, 50, 73, .045);
}

body.kanisa-legacy-shell .app-header .navbar {
  min-height: var(--kl-header-height);
  padding-top: 8px;
  padding-bottom: 8px;
}

body.kanisa-legacy-shell .body-wrapper {
  padding-top: var(--kl-header-height) !important;
}

body.kanisa-legacy-shell .body-wrapper > .container-fluid,
body.kanisa-legacy-shell .body-wrapper > .container {
  padding-top: 16px !important;
}

/* Lock sidebar dimensions so navigation does not shrink and expand on click. */
body.kanisa-legacy-shell .left-sidebar {
  width: var(--kl-sidebar-width) !important;
  min-width: var(--kl-sidebar-width) !important;
  max-width: var(--kl-sidebar-width) !important;
  height: 100dvh !important;
  flex: 0 0 var(--kl-sidebar-width) !important;
  contain: layout paint;
  overflow: hidden !important;
  transition: none !important;
}

body.kanisa-legacy-shell .left-sidebar > div {
  display: flex;
  height: 100%;
  min-height: 0;
  flex-direction: column;
}

body.kanisa-legacy-shell .left-sidebar .brand-logo,
body.kanisa-legacy-shell .left-sidebar .kl-sidebar-tools {
  flex: 0 0 auto;
}

body.kanisa-legacy-shell .left-sidebar .scroll-sidebar {
  min-height: 0 !important;
  flex: 1 1 auto;
  overflow-y: auto !important;
  overflow-x: hidden !important;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
  touch-action: pan-y;
}

body.kanisa-legacy-shell .left-sidebar .simplebar-wrapper,
body.kanisa-legacy-shell .left-sidebar .simplebar-mask,
body.kanisa-legacy-shell .left-sidebar .simplebar-offset,
body.kanisa-legacy-shell .left-sidebar .simplebar-content-wrapper {
  height: 100% !important;
  min-height: 0 !important;
}

body.kanisa-legacy-shell .left-sidebar .simplebar-content-wrapper {
  overflow-y: auto !important;
  overflow-x: hidden !important;
  touch-action: pan-y;
  -webkit-overflow-scrolling: touch;
}

body.kanisa-legacy-shell .left-sidebar .scroll-sidebar,
body.kanisa-legacy-shell .left-sidebar .simplebar-content-wrapper,
body.kanisa-legacy-shell .left-sidebar .simplebar-content {
  width: 100% !important;
  min-width: 100% !important;
  box-sizing: border-box;
  scrollbar-gutter: stable;
}

body.kanisa-legacy-shell .left-sidebar .simplebar-track,
body.kanisa-legacy-shell .left-sidebar .simplebar-scrollbar {
  opacity: 0 !important;
  pointer-events: none !important;
}

@media (min-width: 1200px) {
  body.kanisa-legacy-shell .body-wrapper {
    width: calc(100% - var(--kl-sidebar-width)) !important;
    margin-left: var(--kl-sidebar-width) !important;
    transition: none !important;
  }
}

/* Only the exact destination is selected. Open parents remain neutral. */
body.kanisa-legacy-shell .sidebar-nav .sidebar-item.has-submenu.is-open > .sidebar-link:not(.active),
body.kanisa-legacy-shell .sidebar-nav .sidebar-item.is-current > .sidebar-link:not(.active),
body.kanisa-legacy-shell .sidebar-nav .sidebar-item.is-current.is-open > .sidebar-link:not(.active) {
  border-color: transparent !important;
  background: #fff !important;
  color: #344158 !important;
  box-shadow: none !important;
}

body.kanisa-legacy-shell .sidebar-nav .sidebar-item.has-submenu.is-open > .sidebar-link:not(.active) i,
body.kanisa-legacy-shell .sidebar-nav .sidebar-item.is-current > .sidebar-link:not(.active) i,
body.kanisa-legacy-shell .sidebar-nav .sidebar-item.has-submenu.is-open > .sidebar-link:not(.active) .kl-inline-icon {
  color: #3d4b62 !important;
}

body.kanisa-legacy-shell .sidebar-nav .sidebar-link {
  min-height: 42px;
  padding: 8px 11px;
  font-size: .82rem;
}

body.kanisa-legacy-shell .sidebar-nav .sidebar-link i,
body.kanisa-legacy-shell .sidebar-nav .sidebar-link .kl-inline-icon {
  font-size: 1.12rem;
}

body.kanisa-legacy-shell .sidebar-nav .submenu li a {
  padding-top: 7px;
  padding-bottom: 7px;
  font-size: .74rem;
}

body.kanisa-legacy-shell .sidebar-nav .nav-small-cap {
  font-size: .62rem;
}

/* Reliable inline SVG icons. */
.kl-inline-icon {
  display: inline-grid !important;
  width: 1em;
  height: 1em;
  flex: 0 0 1em;
  place-items: center;
  vertical-align: -.12em;
  line-height: 1;
}

.kl-inline-icon::before {
  display: none !important;
  content: none !important;
}

.kl-inline-icon svg {
  display: block;
  width: 100%;
  height: 100%;
  overflow: visible;
}

.workflow-section-icon .kl-inline-icon,
.workflow-guide-icon .kl-inline-icon,
.structure-guidance-icon .kl-inline-icon,
.structure-quick-link-icon .kl-inline-icon,
.kl-related-action-icon .kl-inline-icon,
.kl-related-icon .kl-inline-icon {
  width: 18px;
  height: 18px;
  flex-basis: 18px;
}

.sidebar-link > span:first-child .kl-inline-icon {
  width: 20px;
  height: 20px;
  flex-basis: 20px;
}

/* More compact application typography. */
.kl-auto-page-heading h1,
.records-title,
.expense-title,
.structure-title {
  font-size: clamp(1.28rem, 1.8vw, 1.72rem) !important;
}

.kl-auto-page-heading p,
.records-copy,
.expense-copy,
.structure-copy {
  font-size: .8rem !important;
}

body.kanisa-legacy-shell .body-wrapper .card-title,
body.kanisa-legacy-shell .modal-title {
  font-size: 1rem;
}

body.kanisa-legacy-shell .body-wrapper .form-control,
body.kanisa-legacy-shell .body-wrapper .form-select,
body.kanisa-legacy-shell .select2-container .select2-selection--single,
body.kanisa-legacy-shell .select2-container .select2-selection--multiple {
  min-height: 40px !important;
  font-size: .82rem !important;
}

body.kanisa-legacy-shell .btn {
  font-size: .78rem;
}

body.kanisa-legacy-shell .table {
  font-size: .79rem;
}

/* Stable and modern icon treatment. */
body.kanisa-legacy-shell .sidebar-link > span:first-child,
body.kanisa-legacy-shell .kl-context-chip i,
body.kanisa-legacy-shell .structure-quick-link-icon,
body.kanisa-legacy-shell .kl-related-icon {
  border-radius: 9px;
}

body.kanisa-legacy-shell .sidebar-link.active > span:first-child {
  background: rgba(255, 255, 255, .14);
}

body.kanisa-legacy-shell .sidebar-link > span:first-child {
  min-height: 27px;
}

/* Eliminate page-load and menu movement. */
body.kanisa-legacy-shell .body-wrapper,
body.kanisa-legacy-shell .body-wrapper > .container-fluid,
body.kanisa-legacy-shell .body-wrapper > .container,
body.kanisa-legacy-shell .left-sidebar,
body.kanisa-legacy-shell .sidebar-item,
body.kanisa-legacy-shell .sidebar-link,
body.kanisa-legacy-shell .submenu,
body.kanisa-legacy-shell .card,
body.kanisa-legacy-shell .workflow-workspace,
body.kanisa-legacy-shell .structure-workspace,
body.kanisa-legacy-shell .records-shell,
body.kanisa-legacy-shell .expense-workspace,
body.kanisa-legacy-shell .kl-related-navigation {
  animation: none !important;
  transition: none !important;
  transform: none;
}

/* Every modal remains reachable on short screens. */
body.kanisa-legacy-shell .modal {
  padding: 8px !important;
  overflow-y: auto !important;
}

body.kanisa-legacy-shell .modal-dialog {
  min-height: calc(100dvh - 16px);
  max-height: calc(100dvh - 16px) !important;
  margin: 0 auto !important;
}

body.kanisa-legacy-shell .modal-content {
  max-height: calc(100dvh - 16px) !important;
}

body.kanisa-legacy-shell .modal-body {
  overflow-y: auto !important;
  -webkit-overflow-scrolling: touch;
}

/* Authentication controls. */
.kl-password-wrap {
  position: relative;
}

.kl-password-wrap .form-control {
  padding-right: 44px !important;
}

.kl-password-toggle {
  position: absolute;
  top: 50%;
  right: 7px;
  display: grid;
  width: 34px;
  height: 34px;
  place-items: center;
  padding: 0;
  border: 0;
  border-radius: 9px;
  background: transparent;
  color: #617087;
  transform: translateY(-50%);
}

.kl-password-toggle:hover,
.kl-password-toggle:focus {
  background: #eef3ff;
  color: #315bc4;
}

/* Progressive SPA navigation status without movement. */
html.kl-spa-loading::after {
  position: fixed;
  top: 0;
  right: 0;
  left: 0;
  z-index: 3000;
  height: 3px;
  background: #5d87ff;
  content: '';
}

html.kl-spa-loading .body-wrapper > .container-fluid,
html.kl-spa-loading .body-wrapper > .container {
  opacity: .72;
  pointer-events: none;
}

/* Mobile must retain clear outer margins and usable controls. */
@media (max-width: 1199.98px) {
  body.kanisa-legacy-shell .app-header {
    left: 0;
  }

  body.kanisa-legacy-shell .body-wrapper {
    width: 100% !important;
    margin-left: 0 !important;
  }
}

@media (max-width: 767.98px) {
  :root {
    --kl-header-height: 62px;
  }

  html {
    font-size: 13.5px !important;
  }

  body.kanisa-legacy-shell .body-wrapper > .container-fluid,
  body.kanisa-legacy-shell .body-wrapper > .container {
    padding: 14px 16px 28px !important;
  }

  body.kanisa-legacy-shell .app-header .navbar {
    padding-right: 12px;
    padding-left: 12px;
  }

  body.kanisa-legacy-shell .app-header .navbar .btn {
    min-height: 34px;
    padding: 6px 9px !important;
    font-size: .68rem !important;
  }

  .kl-auto-page-heading,
  .records-hero,
  .expense-hero,
  .structure-hero {
    padding: 15px !important;
    border-radius: 14px !important;
  }

  body.kanisa-legacy-shell .body-wrapper .card,
  body.kanisa-legacy-shell .body-wrapper .panel,
  body.kanisa-legacy-shell .body-wrapper .content-card {
    border-radius: 14px !important;
  }

  body.kanisa-legacy-shell .body-wrapper .card-body {
    padding: 15px !important;
  }

  body.kanisa-legacy-shell .modal {
    padding: 6px !important;
  }

  body.kanisa-legacy-shell .modal-dialog,
  body.kanisa-legacy-shell .modal-content {
    min-height: auto;
    max-height: calc(100dvh - 12px) !important;
  }
}

@media (max-width: 380px) {
  body.kanisa-legacy-shell .body-wrapper > .container-fluid,
  body.kanisa-legacy-shell .body-wrapper > .container {
    padding-right: 12px !important;
    padding-left: 12px !important;
  }
}
