/**
 * Sidebar disclosure contract — accordion / Apps menus must not clip or bleed.
 * Outer rail clips; inner rail scrolls; open groups never use nested max-height traps.
 * v3.90.44 (2026-05-24)
 */

/* ── Canvas scroll: sidebar column fills grid row, single inner scroll ── */
body.control-plane-shell[data-rmc-cp-scroll="canvas"] .rmc-app-shell__sidebar,
body.admin-manager-shell[data-rmc-cp-scroll="canvas"] .rmc-app-shell__sidebar {
  display: flex;
  flex-direction: column;
  min-height: 0;
  overflow: hidden;
}

/* Phone: the canvas-scroll sidebar above asserts display:flex with no mobile
   breakpoint (specificity 0,3,1), which overrode the base shell collapse
   (rmc-app-shell.css @media max-width:991.98px) and every lower-specificity
   mobile rule — so the 280px sidebar stayed mounted and, once the grid collapses
   to a single column on phones, stacked ON TOP of the canvas (z-index 30),
   hiding the page content (the MFA "Verify" card rendered behind the nav).
   Hide it here at matching specificity + later source so the collapse wins;
   offcanvas drawer mode still slides it in over the canvas when toggled. */
@media (max-width: 991.98px) {
  body.control-plane-shell[data-rmc-cp-scroll="canvas"] .rmc-app-shell__sidebar,
  body.admin-manager-shell[data-rmc-cp-scroll="canvas"] .rmc-app-shell__sidebar {
    display: none;
  }
  body.control-plane-shell[data-rmc-cp-scroll="canvas"] .rmc-app-shell[data-rmc-shell-sidebar="offcanvas"] .rmc-app-shell__sidebar,
  body.admin-manager-shell[data-rmc-cp-scroll="canvas"] .rmc-app-shell[data-rmc-shell-sidebar="offcanvas"] .rmc-app-shell__sidebar {
    display: flex;
  }
}

body.control-plane-shell[data-rmc-cp-scroll="canvas"] #cp-sidebar-col,
body.admin-manager-shell[data-rmc-cp-scroll="canvas"] #cp-sidebar-col {
  flex: 1 1 auto;
  min-height: 0;
  width: 100%;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

body.control-plane-shell[data-rmc-cp-scroll="canvas"] .cp-sidebar-inner,
body.admin-manager-shell[data-rmc-cp-scroll="canvas"] .cp-sidebar-inner,
body.control-plane-shell[data-rmc-cp-scroll="canvas"] nav.cp-sidebar-inner,
body.admin-manager-shell[data-rmc-cp-scroll="canvas"] nav.cp-sidebar-inner {
  flex: 1 1 auto;
  min-height: 0;
  max-height: none;
  overflow-y: auto;
  overflow-x: hidden;
  -webkit-overflow-scrolling: touch;
}

/* ── Control plane / manager accordion groups: never clip open children ── */
.cp-sidebar-inner .cp-sidebar__group,
.cp-sidebar-inner details.cp-sidebar__group,
.cp-sidebar-nav .cp-sidebar__group {
  overflow: visible;
  max-height: none;
}

.cp-sidebar-inner .cp-sidebar__group[open],
.cp-sidebar-nav .cp-sidebar__group[open] {
  overflow: visible;
  max-height: none;
}

/* Long labels wrap inside the rail instead of bleeding horizontally */
.cp-sidebar__item-label .cp-nav-label,
.cp-sidebar__item .cp-nav-label {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  min-width: 0;
}

.cp-sidebar__group[open] .cp-sidebar__item-label .cp-nav-label {
  white-space: normal;
  overflow-wrap: anywhere;
  word-break: break-word;
  text-overflow: clip;
}

/* ── Tenant + manager Django admin: Apps tree scrolls on #nav-sidebar-apps ── */
#nav-sidebar,
#nav-sidebar-inner {
  min-height: 0;
}

#nav-sidebar-apps,
.admin-sidebar-apps {
  min-height: 0;
  overflow-x: hidden;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}

#nav-sidebar .admin-sidebar-model-list,
#nav-sidebar-apps .admin-sidebar-model-list,
.admin-sidebar-app-groups,
.admin-sidebar-all-apps,
.admin-sidebar-app-group {
  overflow: visible !important;
  max-height: none !important;
}

#nav-sidebar .admin-sidebar-link-text,
#nav-sidebar-apps .admin-sidebar-link-text,
#nav-sidebar .admin-sidebar-model-link-text,
#nav-sidebar-apps .admin-sidebar-model-link-text {
  min-width: 0;
  overflow-wrap: anywhere;
  word-break: break-word;
}

#nav-sidebar .admin-sidebar-app-title a,
#nav-sidebar-apps .admin-sidebar-app-title a {
  min-width: 0;
  overflow-wrap: anywhere;
}

/* Remove nested scroll traps — parent rail owns vertical scroll */
body.admin-manager-shell .cp-platform-admin-app-tree,
body.admin-manager-shell #cp-admin-sidebar-apps,
body.admin-manager-shell #cp-admin-sidebar-apps.admin-sidebar-apps--embed {
  max-height: none !important;
  overflow: visible !important;
}

.cp-sidebar-platform-admin .cp-platform-admin-app-tree {
  max-height: none;
  overflow: visible;
}

/* ── Tenant portal sidebar: collapsible blocks + long nav labels ── */
.portal-sidebar-col .sidebar,
#portal-sidebar-col .sidebar,
.tp-sidebar-inner.sidebar {
  min-height: 0;
  overflow-x: hidden;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}

.portal-sidebar-col .sidebar-collapsible__body,
.tp-sidebar-inner .sidebar-collapsible__body {
  overflow: visible;
  max-height: none;
}

.portal-sidebar-col .nav-link,
.portal-sidebar-col .nav-pill,
.tp-sidebar-inner .nav-link {
  min-width: 0;
  overflow-wrap: anywhere;
}

/* ── Scrollbar paint: removed 2026-09-18 ──
   This file used to paint the tenant/operator/admin sidebar thumb with a
   literal rgba(0,0,0,.22)/.28 (off-token-allow: sidebar-scroll-thumb). On a
   dark theme that is a near-invisible black-on-black bar, and it was one of
   four files colouring the same element (audit/scrollbars_pass1.md §1.6
   finding 1, §9 row 2). static/css/rmc-scrollbar.css now owns the paint for
   every scroller including these; this file keeps only the disclosure/
   overflow contract above. Do not reintroduce scrollbar paint here. */
