/* KMS styles. Layout and the sliding main menu are ported from CMS static/css/custom.css; every colour comes from
   the tenant theme's CSS variables (app/services/theme.py), which base.html writes into :root. */
:root {
  --bs-primary: var(--kms-primary);
  --bs-primary-rgb: var(--kms-primary-rgb);
  --bs-link-color: var(--kms-primary);
  --bs-link-color-rgb: var(--kms-primary-rgb);
  --bs-link-hover-color: var(--kms-primary-dark);
  --bs-focus-ring-color: rgba(var(--kms-primary-rgb), .25);
  --kms-sidebar-width: 264px;
}
body { background-color: var(--kms-page-bg); color: var(--kms-page-ink); }

.btn-primary {
  --bs-btn-bg: var(--kms-primary); --bs-btn-border-color: var(--kms-primary); --bs-btn-color: var(--kms-primary-ink);
  --bs-btn-hover-bg: var(--kms-primary-dark); --bs-btn-hover-border-color: var(--kms-primary-dark);
  --bs-btn-hover-color: var(--kms-primary-ink);
  --bs-btn-active-bg: var(--kms-primary-dark); --bs-btn-active-border-color: var(--kms-primary-dark);
  --bs-btn-disabled-bg: var(--kms-primary); --bs-btn-disabled-border-color: var(--kms-primary);
  --bs-btn-focus-shadow-rgb: var(--kms-primary-rgb);
}
.btn-outline-primary {
  --bs-btn-color: var(--kms-primary); --bs-btn-border-color: var(--kms-primary);
  --bs-btn-hover-bg: var(--kms-primary); --bs-btn-hover-border-color: var(--kms-primary);
  --bs-btn-hover-color: var(--kms-primary-ink);
  --bs-btn-active-bg: var(--kms-primary); --bs-btn-active-border-color: var(--kms-primary);
}
.btn-link { --bs-btn-color: var(--kms-primary); --bs-btn-hover-color: var(--kms-primary-dark); }
.pagination {
  --bs-pagination-color: var(--kms-primary); --bs-pagination-active-bg: var(--kms-primary);
  --bs-pagination-active-border-color: var(--kms-primary);
}
.nav-tabs .nav-link { color: var(--kms-primary); }
.nav-tabs .nav-link.active { border-top: 3px solid var(--kms-accent); font-weight: 600; color: var(--kms-page-ink); }
.form-control:focus, .form-select:focus, .form-check-input:focus {
  border-color: rgba(var(--kms-primary-rgb), .55); box-shadow: 0 0 0 .25rem rgba(var(--kms-primary-rgb), .2);
}
.form-check-input:checked { background-color: var(--kms-primary); border-color: var(--kms-primary); }
.card { border-top: 3px solid var(--kms-accent) !important; }

/* ---------------------------------------------------------------- shell + main menu */
#app-shell { min-height: 100vh; }
.kms-sidebar {
  width: var(--kms-sidebar-width); min-width: var(--kms-sidebar-width);
  background: var(--kms-menu-bg); color: var(--kms-menu-ink);
  border-right: 4px solid var(--kms-active-bg);
  position: sticky; top: 0; height: 100vh; overflow-y: auto;
  transition: margin-left .22s ease;
}
.kms-sidebar a, .kms-sidebar .nav-link, .kms-sidebar button { color: var(--kms-menu-ink); }
.kms-sidebar .kms-muted { color: var(--kms-menu-ink); opacity: .78; }
.kms-sidebar hr { border-color: currentColor; opacity: .3; }
.kms-sidebar .nav-link { border-radius: .375rem; padding: .4rem .65rem; }
.kms-sidebar .nav-link:not(.active):hover { background: var(--kms-menu-hover); }
.kms-sidebar .nav-link.active { background: var(--kms-active-bg); color: var(--kms-active-ink); font-weight: 600; }
.kms-sidebar .kms-group-toggle .bi-chevron-down { transition: transform .15s ease; }
.kms-sidebar .kms-group-toggle.collapsed .bi-chevron-down { transform: rotate(-90deg); }
.kms-brand { font-weight: 700; letter-spacing: .02em; }
.kms-logout button { background: none; border: 0; padding: 0; }

/* Sliding main menu (CMS): hide with the « button, Ctrl+\ or [; remembered in this browser. */
.kms-nav-hide { border: 0; padding: .1rem .35rem; line-height: 1; background: transparent; }
.kms-nav-hide:hover, .kms-nav-hide:focus-visible { background: var(--kms-menu-hover); }
.kms-nav-show { display: none; position: fixed; top: .75rem; left: 0; z-index: 1031; padding: .3rem .55rem;
  background: var(--kms-menu-bg); color: var(--kms-menu-ink); border: 0; border-radius: 0 .5rem .5rem 0;
  border-right: 3px solid var(--kms-active-bg); box-shadow: 0 .25rem .75rem rgba(0,0,0,.15); font-size: 1.15rem;
  line-height: 1; }
.kms-nav-show:hover, .kms-nav-show:focus-visible { background: var(--kms-menu-hover); color: var(--kms-menu-ink); }
html.kms-nav-collapsed .kms-sidebar { margin-left: calc(-1 * var(--kms-sidebar-width)); visibility: hidden;
  transition: margin-left .22s ease, visibility 0s .22s; }
html.kms-nav-collapsed .kms-nav-show { display: block; }
html.kms-nav-collapsed .kms-main > .container-fluid { padding-left: 3.5rem !important; }
@media print { .kms-sidebar, .kms-nav-show, .kms-help-fab { display: none !important; } }

.kms-main { min-width: 0; }
.kms-page-header { display: flex; justify-content: space-between; align-items: center; gap: 1rem; margin-bottom: 1rem;
  flex-wrap: wrap; }
.kms-page-header h1 .bi { color: var(--kms-primary); }
.kms-help-fab { position: fixed; right: 1.25rem; bottom: 1.25rem; width: 2.75rem; height: 2.75rem; z-index: 1030; }
.kms-kv dt { font-weight: 500; color: var(--bs-secondary-color); }
.kms-placeholder { max-width: 560px; margin: 4rem auto; text-align: center; }
.kms-phrase .badge { font-size: .95rem; font-weight: 500; }

/* ---------------------------------------------------------------- login pages */
.kms-auth-wrap { min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: 1.5rem;
  background: linear-gradient(135deg, var(--kms-menu-bg), var(--kms-active-bg)); }
.kms-auth-card { width: 100%; max-width: 440px; border-top: 4px solid var(--kms-accent) !important; }

/* ---------------------------------------------------------------- theme screen */
.kms-swatch { display: inline-block; width: 2.25rem; height: 2.25rem; border-radius: .4rem;
  border: 1px solid rgba(0,0,0,.15); vertical-align: middle; }
.kms-swatch-lg { width: 100%; height: 3.5rem; }
.kms-theme-preview { border: 1px solid rgba(0,0,0,.12); border-radius: .5rem; overflow: hidden; display: flex;
  min-height: 150px; }
.kms-theme-preview .pv-menu { width: 34%; padding: .75rem; }
.kms-theme-preview .pv-item { border-radius: .3rem; padding: .25rem .5rem; margin-bottom: .25rem; font-size: .85rem; }
.kms-theme-preview .pv-page { flex: 1; padding: .75rem; }
.kms-theme-preview .pv-btn { display: inline-block; border-radius: .3rem; padding: .25rem .65rem; font-size: .85rem; }

code { color: var(--kms-primary-dark); }

/* Small screens: the menu floats over the page instead of squeezing it, and starts hidden (base.html). */
@media (max-width: 767.98px) {
  .kms-sidebar { position: fixed; left: 0; top: 0; z-index: 1040; box-shadow: 0 0 1.5rem rgba(0,0,0,.25); }
  .kms-main > .container-fluid { padding-left: 3.5rem !important; padding-right: 1rem !important; }
}

/* Long free-text notes on record pages: full width, line breaks kept, long words wrap instead of overflowing. */
.kms-notes { white-space: pre-wrap; overflow-wrap: anywhere; line-height: 1.55; }

/* Lookup tables: marker for nested lists (and values that have sub-values). */
.kms-nested { color: var(--kms-primary); }
.kms-nested-badge { background: var(--kms-accent); color: var(--kms-page-ink); font-weight: 500; margin-left: .35rem; }

/* Documents: the original shown inside the page, and extracted text. */
.kms-original-frame { height: 75vh; min-height: 420px; background: #fff; }
.kms-doc-text { max-height: 360px; overflow: auto; white-space: pre-wrap; }
.kms-doc-text-full { white-space: pre-wrap; overflow-wrap: anywhere; }

/* Research case Discussion (ported from CMS) */
.kms-chat-list { max-height: 62vh; overflow-y: auto; }
.kms-chat-msg { padding: .6rem .75rem; border-left: 3px solid var(--bs-border-color); border-radius: .25rem; margin-bottom: .6rem; background: #fff; }
.kms-chat-msg.mine { border-left-color: var(--kms-accent); background: var(--bs-tertiary-bg); }
.kms-chat-msg.reply { margin-left: 1.5rem; }
.kms-chat-msg:target { box-shadow: 0 0 0 .2rem rgba(var(--bs-primary-rgb), .25); }
.kms-chat-body { white-space: normal; overflow-wrap: anywhere; }
/* Case folder tree */
.kms-tree-toggle .bi-chevron-down { transition: transform .15s ease; }
.kms-tree-toggle.collapsed .bi-chevron-down { transform: rotate(-90deg); }
.kms-folder-card { min-height: 5.5rem; }
