/* =========================================================
   CLARIS - SIDEBAR PREMIUM
   Intervention isolée, sans toucher au métier
   ========================================================= */

:root {
  --claris-sidebar-open: 246px;
  --claris-sidebar-closed: 82px;

  --claris-sidebar-bg: #ffffff;
  --claris-sidebar-border: rgba(52, 71, 103, 0.10);
  --claris-sidebar-text: #344767;
  --claris-sidebar-text-soft: #67748e;
  --claris-sidebar-title: #1f2b49;

  --claris-sidebar-hover-bg: rgba(37, 99, 235, 0.08);
  --claris-sidebar-active-bg: linear-gradient(135deg, #1e3a6e 0%, #2563eb 100%);
  --claris-sidebar-active-shadow: 0 10px 24px rgba(37, 99, 235, 0.20);

  --claris-sidebar-icon-bg: #eff6ff;
  --claris-sidebar-icon-color: #2563eb;

  --claris-sidebar-submenu-bg: #f8fafc;
  --claris-sidebar-submenu-border: rgba(37, 99, 235, 0.10);

  --claris-sidebar-scrollbar: rgba(103, 116, 142, 0.30);
  --claris-sidebar-toggle-bg: #344767;
  --claris-sidebar-toggle-bg-hover: #24324b;

  --claris-radius-xl: 20px;
  --claris-radius-lg: 16px;
  --claris-radius-md: 12px;
  --claris-radius-sm: 10px;
}

/* =========================
   STRUCTURE GÉNÉRALE
   ========================= */

body.g-sidenav-show {
  overflow-x: hidden;
}

#sidenav-main.claris-sidenav {
  position: fixed !important;
  inset: 0 auto 0 0 !important;
  width: var(--claris-sidebar-open) !important;
  min-width: var(--claris-sidebar-open) !important;
  max-width: var(--claris-sidebar-open) !important;
  height: 100vh !important;
  margin: 0 !important;
  padding: 0 !important;
  border-radius: 0 !important;
  border-right: 1px solid var(--claris-sidebar-border) !important;
  background: var(--claris-sidebar-bg) !important;
  box-shadow: 0 0 0 1px rgba(255,255,255,0.4), 0 12px 32px rgba(15, 23, 42, 0.04) !important;
  overflow-x: hidden !important;
  overflow-y: auto !important;
  z-index: 1040 !important;
  transition:
    width .18s ease,
    min-width .18s ease,
    max-width .18s ease,
    transform .18s ease !important;
  will-change: width, transform;
}

#sidenav-main.claris-sidebar-closed {
  width: var(--claris-sidebar-closed) !important;
  min-width: var(--claris-sidebar-closed) !important;
  max-width: var(--claris-sidebar-closed) !important;
}

#sidenav-main.claris-sidebar-open {
  width: var(--claris-sidebar-open) !important;
  min-width: var(--claris-sidebar-open) !important;
  max-width: var(--claris-sidebar-open) !important;
}

/* =========================
   HEADER / MARQUE
   ========================= */

#sidenav-main .claris-sidenav-header {
  min-height: 84px !important;
  height: 84px !important;
  display: flex !important;
  align-items: center !important;
  padding: 0 14px !important;
  position: relative !important;
  background:
    linear-gradient(180deg, rgba(94, 114, 228, 0.06) 0%, rgba(94, 114, 228, 0.02) 100%),
    #ffffff !important;
}

#sidenav-main .claris-brand {
  width: 100% !important;
  min-height: 56px !important;
  display: flex !important;
  align-items: center !important;
  gap: 12px !important;
  padding: 10px 12px !important;
  border-radius: 16px !important;
  text-decoration: none !important;
  overflow: hidden !important;
  transition: background-color .18s ease, transform .18s ease !important;
}

#sidenav-main .claris-brand:hover {
  background: rgba(94, 114, 228, 0.05) !important;
}

#sidenav-main .claris-brand-logo-wrap {
  width: 42px !important;
  height: 42px !important;
  min-width: 42px !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  border-radius: 14px !important;
  background: #ffffff !important;
  box-shadow: 0 6px 16px rgba(15, 23, 42, 0.07) !important;
  overflow: hidden !important;
}

#sidenav-main .claris-brand-logo {
  width: 30px !important;
  height: 30px !important;
  object-fit: contain !important;
}

#sidenav-main .claris-brand-text-wrap {
  display: flex !important;
  flex-direction: column !important;
  min-width: 0 !important;
  opacity: 1;
  transition: opacity .12s ease !important;
}

#sidenav-main .claris-brand-title {
  color: var(--claris-sidebar-title) !important;
  font-weight: 800 !important;
  font-size: 1rem !important;
  line-height: 1.05 !important;
  letter-spacing: 0.01em !important;
}

#sidenav-main .claris-brand-subtitle {
  color: var(--claris-sidebar-text-soft) !important;
  font-size: 0.74rem !important;
  line-height: 1.15 !important;
  margin-top: 2px !important;
  white-space: nowrap !important;
}

#sidenav-main.claris-sidebar-closed .claris-brand {
  justify-content: flex-start !important;
  padding-left: 12px !important;
  padding-right: 12px !important;
  gap: 0 !important;
}

#sidenav-main.claris-sidebar-closed .claris-brand-text-wrap {
  opacity: 0 !important;
  width: 0 !important;
  min-width: 0 !important;
  overflow: hidden !important;
  pointer-events: none !important;
}

#sidenav-main.claris-sidebar-closed .claris-brand-logo-wrap {
  margin: 0 !important;
}

/* =========================
   SÉPARATEUR
   ========================= */

#sidenav-main .claris-sidenav-separator {
  margin: 0 16px 8px !important;
  border-top: 1px solid rgba(52, 71, 103, 0.08) !important;
  opacity: 1 !important;
}

/* =========================
   CORPS SIDEBAR
   ========================= */

#sidenav-main .claris-sidenav-body {
  padding: 8px 12px 18px !important;
}

#sidenav-main .claris-nav-root {
  gap: 4px !important;
}

#sidenav-main .navbar-nav,
#sidenav-main .collapse,
#sidenav-main .nav,
#sidenav-main .sidenav-scrollbar {
  overflow: visible !important;
}

#sidenav-main .nav-item {
  width: 100% !important;
}

/* =========================
   LIENS PRINCIPAUX
   ========================= */

#sidenav-main .navbar-nav .nav-link {
  min-height: 48px !important;
  display: flex !important;
  align-items: center !important;
  justify-content: flex-start !important;
  border-radius: 14px !important;
  padding: 10px 12px !important;
  margin: 2px 0 !important;
  color: var(--claris-sidebar-text) !important;
  transition:
    background-color .18s ease,
    color .18s ease,
    transform .18s ease,
    box-shadow .18s ease !important;
  overflow: hidden !important;
}

#sidenav-main .navbar-nav .nav-link:hover,
#sidenav-main .navbar-nav .nav-link:focus {
  background: var(--claris-sidebar-hover-bg) !important;
  color: var(--claris-sidebar-title) !important;
  transform: translateX(1px);
}

#sidenav-main .navbar-nav .nav-link.active {
  background: var(--claris-sidebar-active-bg) !important;
  color: #ffffff !important;
  box-shadow: var(--claris-sidebar-active-shadow) !important;
}

#sidenav-main .navbar-nav .nav-link .nav-link-text {
  color: inherit !important;
  font-size: 0.93rem !important;
  font-weight: 600 !important;
  line-height: 1.2 !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  opacity: 1 !important;
  max-width: 180px !important;
  transition: color .18s ease, opacity .10s ease, max-width .14s ease !important;
}

/* =========================
   ICÔNES
   ========================= */

#sidenav-main .claris-nav-icon,
#sidenav-main .navbar-nav .nav-link .icon {
  width: 34px !important;
  min-width: 34px !important;
  height: 34px !important;
  border-radius: 11px !important;
  margin-right: 10px !important;
  background: var(--claris-sidebar-icon-bg) !important;
  transition:
    background-color .18s ease,
    transform .18s ease,
    box-shadow .18s ease !important;
}

#sidenav-main .navbar-nav .nav-link i {
  font-size: 1.1rem !important;
  color: var(--claris-sidebar-icon-color) !important;
  opacity: 1 !important;
  transition:
    color .18s ease,
    transform .18s ease,
    opacity .18s ease !important;
}

#sidenav-main .navbar-nav .nav-link:hover .icon,
#sidenav-main .navbar-nav .nav-link:focus .icon {
  background: rgba(94, 114, 228, 0.12) !important;
}

#sidenav-main .navbar-nav .nav-link.active .icon {
  background: rgba(255,255,255,0.16) !important;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,0.10) !important;
}

#sidenav-main .navbar-nav .nav-link:hover i,
#sidenav-main .navbar-nav .nav-link:focus i {
  transform: scale(1.03) !important;
}

#sidenav-main .navbar-nav .nav-link.active i,
#sidenav-main .navbar-nav .nav-link.active .nav-link-text {
  color: #ffffff !important;
}

/* =========================
   DROPDOWNS
   ========================= */

#sidenav-main .claris-dropdown-group > .nav-link {
  justify-content: flex-start !important;
}

#sidenav-main .dropdown-icon {
  margin-left: auto !important;
  color: currentColor !important;
  opacity: .9 !important;
  transition: transform .18s ease, opacity .18s ease !important;
}

#sidenav-main .dropdown-icon.rotate-180 {
  transform: rotate(180deg) !important;
}

#sidenav-main .claris-submenu,
#adv-menu,
#params-menu,
#espace-rh-menu,
#historique-menu {
  position: relative !important;
  margin: 6px 0 8px 0 !important;
  padding: 8px !important;
  border-radius: 16px !important;
  background: var(--claris-sidebar-submenu-bg) !important;
  border: 1px solid var(--claris-sidebar-submenu-border) !important;
}

#sidenav-main .claris-submenu::before {
  content: "" !important;
  position: absolute !important;
  left: 16px !important;
  top: 12px !important;
  bottom: 12px !important;
  width: 1px !important;
  background: rgba(94, 114, 228, 0.16) !important;
}

#sidenav-main .claris-submenu .nav-item {
  position: relative !important;
}

#sidenav-main .claris-submenu .nav-link {
  min-height: 42px !important;
  padding: 8px 10px 8px 14px !important;
  border-radius: 12px !important;
  background: transparent !important;
  box-shadow: none !important;
}

#sidenav-main .claris-submenu .nav-link .nav-link-text {
  font-size: 0.88rem !important;
  font-weight: 600 !important;
}

#sidenav-main .claris-submenu .nav-link:hover,
#sidenav-main .claris-submenu .nav-link:focus {
  background: rgba(94, 114, 228, 0.08) !important;
  transform: none !important;
}

#sidenav-main .claris-submenu .nav-link.active {
  background: #ffffff !important;
  color: #3d4f79 !important;
  box-shadow: 0 6px 18px rgba(15, 23, 42, 0.06) !important;
}

#sidenav-main .claris-submenu .nav-link.active i,
#sidenav-main .claris-submenu .nav-link.active .nav-link-text,
#sidenav-main .claris-submenu .nav-link.active .dropdown-icon {
  color: #44567f !important;
}

#sidenav-main .claris-submenu .icon {
  width: 30px !important;
  min-width: 30px !important;
  height: 30px !important;
  border-radius: 10px !important;
  background: #ffffff !important;
  box-shadow: inset 0 0 0 1px rgba(94, 114, 228, 0.08) !important;
}

#sidenav-main .claris-submenu .nav-link.active .icon {
  background: rgba(94, 114, 228, 0.08) !important;
  box-shadow: none !important;
}

#params-menu .nav-link {
  padding-left: 14px !important;
}

#params-menu .icon {
  margin-right: 10px !important;
}

#sidenav-main .nav-items {
  margin-left: 0 !important;
  padding-left: 8px !important;
}

#sidenav-main #params-menu,
#sidenav-main #adv-menu,
#sidenav-main #espace-rh-menu {
  flex-direction: column !important;
}

/* =========================
   MODE COMPACT
   ========================= */

#sidenav-main.claris-sidebar-closed .claris-sidenav-body {
  padding-left: 8px !important;
  padding-right: 8px !important;
}

#sidenav-main.claris-sidebar-closed .navbar-nav .nav-link {
  justify-content: flex-start !important;
  padding-left: 12px !important;
  padding-right: 12px !important;
}

#sidenav-main.claris-sidebar-closed .navbar-nav .nav-link .icon {
  margin-right: 0 !important;
}

#sidenav-main.claris-sidebar-closed .nav-link-text,
#sidenav-main.claris-sidebar-closed .dropdown-icon {
  opacity: 0 !important;
  max-width: 0 !important;
  width: 0 !important;
  margin: 0 !important;
  pointer-events: none !important;
}

#sidenav-main.claris-sidebar-closed #adv-menu,
#sidenav-main.claris-sidebar-closed #params-menu,
#sidenav-main.claris-sidebar-closed .claris-submenu,
#sidenav-main.claris-sidebar-closed .nav-items {
  display: none !important;
}

#sidenav-main.claris-sidebar-closed .navbar-nav .nav-link i {
  font-size: 1.06rem !important;
}

#sidenav-main.claris-sidebar-closed .navbar-nav .nav-link.active .icon {
  background: rgba(94, 114, 228, 0.15) !important;
}

#sidenav-main.claris-sidebar-closed .claris-sidenav-separator {
  margin-left: 10px !important;
  margin-right: 10px !important;
}

/* =========================
   CONTENU PRINCIPAL
   ========================= */

.main-content {
  margin-left: var(--claris-sidebar-closed) !important;
  width: calc(100% - var(--claris-sidebar-closed)) !important;
  max-width: calc(100% - var(--claris-sidebar-closed)) !important;
  transition:
    margin-left .18s ease,
    width .18s ease,
    max-width .18s ease !important;
}

body.claris-sidebar-is-open .main-content,
html.claris-sidebar-preopen .main-content {
  margin-left: var(--claris-sidebar-open) !important;
  width: calc(100% - var(--claris-sidebar-open)) !important;
  max-width: calc(100% - var(--claris-sidebar-open)) !important;
}

html.claris-sidebar-preopen #sidenav-main {
  width: var(--claris-sidebar-open) !important;
  min-width: var(--claris-sidebar-open) !important;
  max-width: var(--claris-sidebar-open) !important;
}

html:not(.claris-sidebar-preopen) .main-content {
  margin-left: var(--claris-sidebar-closed) !important;
  width: calc(100% - var(--claris-sidebar-closed)) !important;
  max-width: calc(100% - var(--claris-sidebar-closed)) !important;
}

/* =========================
   TOGGLE LATÉRAL
   ========================= */

.claris-sidebar-toggle {
  position: fixed !important;
  top: 18px !important;
  left: 75px !important;
  width: 20px !important;
  height: 40px !important;
  border-radius: 12px !important;
  background: var(--claris-sidebar-toggle-bg) !important;
  color: #ffffff !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  cursor: pointer !important;
  z-index: 3001 !important;
  box-shadow: 0 10px 24px rgba(15, 23, 42, 0.18) !important;
  transition:
    left .18s ease,
    background-color .18s ease,
    transform .18s ease !important;
}

.claris-sidebar-toggle::before {
  content: "›";
  font-size: 12px !important;
  font-weight: 800 !important;
  line-height: 1 !important;
  transition: transform .18s ease !important;
}

.claris-sidebar-toggle:hover {
  background: var(--claris-sidebar-toggle-bg-hover) !important;
  transform: translateY(-1px);
}

body.claris-sidebar-is-open .claris-sidebar-toggle,
html.claris-sidebar-preopen .claris-sidebar-toggle {
  left: calc(var(--claris-sidebar-open) - 20px) !important;
}

body.claris-sidebar-is-open .claris-sidebar-toggle::before,
html.claris-sidebar-preopen .claris-sidebar-toggle::before {
  transform: rotate(180deg) !important;
}

#sidenav-main #iconSidenav,
#sidebarOpenBtn {
  display: none !important;
}

/* =========================
   SCROLLBAR
   ========================= */

#sidenav-main::-webkit-scrollbar {
  width: 6px !important;
}

#sidenav-main::-webkit-scrollbar-thumb {
  background: var(--claris-sidebar-scrollbar) !important;
  border-radius: 999px !important;
}

#sidenav-main::-webkit-scrollbar-track {
  background: transparent !important;
}

.ps__rail-y,
.ps__rail-x {
  display: none !important;
}

/* =========================
   HYGIÈNE VISUELLE
   ========================= */

#sidenav-main,
#sidenav-main *,
#params-menu,
#adv-menu,
.nav-items,
#sidenav-collapse-main,
#sidenav-main .navbar-collapse,
#sidenav-main .collapse {
  background-image: none !important;
}

#params-menu::after,
#adv-menu::after,
.nav-items::before,
.nav-items::after,
#sidenav-collapse-main::before,
#sidenav-collapse-main::after {
  display: none !important;
  content: none !important;
}

/* =========================
   RESPONSIVE
   ========================= */

@media (max-width: 991.98px) {
  #sidenav-main.claris-sidenav {
    transform: translateX(-100%) !important;
    width: var(--claris-sidebar-open) !important;
    min-width: var(--claris-sidebar-open) !important;
    max-width: var(--claris-sidebar-open) !important;
  }

  body.claris-sidebar-is-open #sidenav-main,
  html.claris-sidebar-preopen #sidenav-main {
    transform: translateX(0) !important;
  }

  .main-content,
  body.claris-sidebar-is-open .main-content,
  html.claris-sidebar-preopen .main-content,
  html:not(.claris-sidebar-preopen) .main-content {
    margin-left: 0 !important;
    width: 100% !important;
    max-width: 100% !important;
  }

  .claris-sidebar-toggle {
    left: 8px !important;
    top: 14px !important;
  }

  body.claris-sidebar-is-open .claris-sidebar-toggle,
  html.claris-sidebar-preopen .claris-sidebar-toggle {
    left: 8px !important;
  }
}

/* =========================================================
   SIDEBAR — ESPACE RH / NOTIFICATIONS RH
   ========================================================= */

#sidenav-main .drh-notif-bell {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

#sidenav-main .drh-notif-bell-badge {
  position: absolute;
  top: -6px;
  right: -7px;
  min-width: 16px;
  height: 16px;
  padding: 0 4px;
  border-radius: 999px;
  background: #ef4444;
  color: #fff;
  font-size: 10px;
  font-weight: 700;
  line-height: 16px;
  text-align: center;
  box-shadow: 0 4px 10px rgba(239, 68, 68, 0.28);
}

#sidenav-main #espace-rh-menu .nav-link .nav-link-text {
  overflow: visible !important;
  text-overflow: unset !important;
  white-space: normal !important;
}
/* =========================================================
   SIDEBAR — FIX FINAL TOGGLE (PROPRE / SANS BUG)
   - Le bouton NE BOUGE PLUS au hover
   - Il suit UNIQUEMENT l'état réel open/closed
   - Aucun impact sur le design existant
   ========================================================= */

/* Sidebar : transitions propres (pas de lag) */
#sidenav-main.claris-sidenav {
  backface-visibility: hidden !important;
  transform: translateZ(0) !important;
  transition: width .12s ease !important;
  will-change: width !important;
}

.main-content {
  transition: margin-left .12s ease !important;
  will-change: margin-left !important;
}

/* Texte : évite les clignotements */
#sidenav-main .nav-link-text,
#sidenav-main .claris-brand-text-wrap,
#sidenav-main .dropdown-icon {
  transition: opacity .06s ease !important;
}

#sidenav-main.claris-sidebar-closed .nav-link-text,
#sidenav-main.claris-sidebar-closed .claris-brand-text-wrap,
#sidenav-main.claris-sidebar-closed .dropdown-icon {
  opacity: 0 !important;
}

#sidenav-main.claris-sidebar-open .nav-link-text,
#sidenav-main.claris-sidebar-open .claris-brand-text-wrap,
#sidenav-main.claris-sidebar-open .dropdown-icon {
  opacity: 1 !important;
}

/* =========================================================
   BOUTON TOGGLE — CORRECTION COMPORTEMENT
   ========================================================= */

/* Position fermée (stable) */
.claris-sidebar-toggle {
  left: calc(var(--claris-sidebar-closed) - 7px) !important;
  transition: left .12s ease !important;
}

/* Position ouverte UNIQUEMENT quand la sidebar est ouverte */
#sidenav-main.claris-sidebar-open ~ .claris-sidebar-toggle {
  left: calc(var(--claris-sidebar-open) - 7px) !important;
}

/* IMPORTANT : on neutralise les anciennes règles qui causaient le bug */
body.claris-sidebar-is-open .claris-sidebar-toggle,
html.claris-sidebar-preopen .claris-sidebar-toggle {
  left: calc(var(--claris-sidebar-closed) - 7px) !important;
}

/* Flèche : rotation uniquement quand ouvert */
.claris-sidebar-toggle::before {
  transform: none !important;
}

#sidenav-main.claris-sidebar-open ~ .claris-sidebar-toggle::before {
  transform: rotate(180deg) !important;
}

/* =========================================================
   PERFORMANCE (évite lenteurs globales)
   ========================================================= */

/* Supprime animations inutiles sur les menus */
#sidenav-main .collapse,
#sidenav-main .collapsing,
#adv-menu,
#params-menu,
#espace-rh-menu,
#historique-menu {
  transition: none !important;
}

/* Supprime micro lag au clic */
#sidenav-main .navbar-nav .nav-link:active {
  transform: none !important;
}
/* ============================================================================
   PHASE H+ : Garantir la lisibilité de TOUS les textes de la sidebar
   ----------------------------------------------------------------------------
   Sur certains écrans (notamment quand un groupe parent est expanded mais
   son enfant n'est pas actif), un état intermédiaire faisait apparaître du
   texte très clair sur un fond très clair (cf. capture utilisateur sur
   "Gestion des demandes"). Cette section verrouille un contraste minimum
   garanti sur tous les états : repos, hover, focus, expanded, active,
   parent-actif. Texte foncé sur fond clair, texte blanc sur fond bleu —
   jamais l'un sur l'autre.
   ============================================================================ */

/* État de repos : texte foncé visible */
#sidenav-main .navbar-nav .nav-link {
  color: #1f2d4a !important;
}

#sidenav-main .navbar-nav .nav-link .nav-link-text {
  color: #1f2d4a !important;
}

/* Hover/focus sur fond clair : texte reste foncé */
#sidenav-main .navbar-nav .nav-link:hover,
#sidenav-main .navbar-nav .nav-link:focus {
  color: #11203d !important;
}

#sidenav-main .navbar-nav .nav-link:hover .nav-link-text,
#sidenav-main .navbar-nav .nav-link:focus .nav-link-text {
  color: #11203d !important;
}

/* Trigger de dropdown expanded mais non-actif (cas de l'image 5).
   Avant : restait en couleur claire car un override hover lui collait
   à un fond pâle. On garantit du foncé. */
#sidenav-main .navbar-nav .nav-link[aria-expanded="true"]:not(.active) {
  background: rgba(94, 114, 228, 0.06) !important;
  color: #11203d !important;
}

#sidenav-main .navbar-nav .nav-link[aria-expanded="true"]:not(.active) .nav-link-text,
#sidenav-main .navbar-nav .nav-link[aria-expanded="true"]:not(.active) i,
#sidenav-main .navbar-nav .nav-link[aria-expanded="true"]:not(.active) .dropdown-icon {
  color: #11203d !important;
}

/* État actif fond bleu : texte blanc impératif (pas d'override possible) */
#sidenav-main .navbar-nav > .nav-item > .nav-link.active,
#sidenav-main .navbar-nav > .nav-item > .nav-link.active * {
  color: #ffffff !important;
}

/* Sub-menu actif fond blanc : texte foncé impératif */
#sidenav-main .claris-submenu .nav-link.active,
#sidenav-main .claris-submenu .nav-link.active * {
  color: #2c3a5d !important;
}

/* Texte des items NON-actifs dans un sub-menu : foncé visible
   (dans les sub-menus le fond est très clair, donc texte sombre obligatoire) */
#sidenav-main .claris-submenu .nav-link:not(.active),
#sidenav-main .claris-submenu .nav-link:not(.active) .nav-link-text,
#sidenav-main .claris-submenu .nav-link:not(.active) i {
  color: #44567f !important;
}

#sidenav-main .claris-submenu .nav-link:not(.active):hover,
#sidenav-main .claris-submenu .nav-link:not(.active):focus,
#sidenav-main .claris-submenu .nav-link:not(.active):hover .nav-link-text,
#sidenav-main .claris-submenu .nav-link:not(.active):focus .nav-link-text,
#sidenav-main .claris-submenu .nav-link:not(.active):hover i,
#sidenav-main .claris-submenu .nav-link:not(.active):focus i {
  color: #1f2d4a !important;
}

/* Garde-fou universel : pas de blanc-sur-blanc nulle part dans la sidebar,
   pas de noir-sur-noir non plus.
   Tout texte sans couleur explicite hérite de #1f2d4a. */
#sidenav-main {
  color: #1f2d4a;
}

#sidenav-main * {
  /* Ne pas poser de !important global ici pour ne pas casser les
     overrides ciblés ci-dessus. Le héritage par défaut suffit pour
     les éléments décoratifs (séparateurs, badges...). */
}

/* Headings de la sidebar (catégories type "ESPACE RH", "ADMINISTRATION"...) */
#sidenav-main .navbar-heading {
  color: #6b7896 !important;
  font-weight: 700 !important;
  letter-spacing: .04em !important;
  text-transform: uppercase !important;
  opacity: 1 !important;
}

/* =========================================================
   FIX #2 — Lisibilité sous-menu actif (anti blanc-sur-blanc)
   custom_style.css ligne 408 force color:#fff sur tout
   .nav-link.active .nav-link-text avec spécificité 3.
   Cette règle a une spécificité 4 + sélecteur ciblé .claris-submenu
   pour gagner sans toucher aux autres modules.
   ========================================================= */
#sidenav-main .navbar-nav .claris-submenu .nav-link.active,
#sidenav-main .navbar-nav .claris-submenu .nav-link.active .nav-link-text,
#sidenav-main .navbar-nav .claris-submenu .nav-link.active i,
#sidenav-main .navbar-nav .claris-submenu .nav-link.active .icon i,
#sidenav-main .navbar-nav .claris-submenu .nav-link.active .dropdown-icon {
  color: #1e3a8a !important;
  background-image: none !important;
}

#sidenav-main .navbar-nav .claris-submenu .nav-link.active {
  background: #eef3ff !important;
  background-image: none !important;
  border-left: 3px solid #1e3a8a !important;
  box-shadow: 0 4px 12px rgba(30, 58, 138, .12) !important;
}

#sidenav-main .navbar-nav .claris-submenu .nav-link.active .icon {
  background: #ffffff !important;
  box-shadow: inset 0 0 0 1px rgba(30, 58, 138, .15) !important;
}

/* ============================================================================
   CLARIS — SIDEBAR PUSH LAYOUT LOCK / NO OVERLAY
   ----------------------------------------------------------------------------
   Objectif : quand le sidebar est ouvert volontairement, il ne doit jamais
   recouvrir les données de la page. Le contenu principal est poussé/décalé.

   Périmètre strict : CSS layout sidebar uniquement.
   Aucun impact sur : routes, contrôleurs, SQL, Spotlight, modules métier,
   formulaires, filtres, tris, boutons ou recherches.

   Pourquoi ce bloc est en fin de fichier : il verrouille l'ordre CSS et évite
   qu'une ancienne règle "fermée" reprenne le dessus après l'ouverture.
   ============================================================================ */

:root {
  --claris-sidebar-open-width: var(--claris-sidebar-open, 246px);
  --claris-sidebar-closed-width: var(--claris-sidebar-closed, 82px);
}

@media (min-width: 992px) {
  body.g-sidenav-show main.main-content,
  body:not(.claris-sidebar-is-open) main.main-content {
    margin-left: var(--claris-sidebar-closed-width) !important;
    width: calc(100% - var(--claris-sidebar-closed-width)) !important;
    max-width: calc(100% - var(--claris-sidebar-closed-width)) !important;
  }

  body.claris-sidebar-is-open main.main-content,
  html.claris-sidebar-restore-open body main.main-content,
  html.claris-sidebar-preopen body main.main-content,
  #sidenav-main.claris-sidebar-open ~ main.main-content {
    margin-left: var(--claris-sidebar-open-width) !important;
    width: calc(100% - var(--claris-sidebar-open-width)) !important;
    max-width: calc(100% - var(--claris-sidebar-open-width)) !important;
  }

  body:not(.claris-sidebar-is-open) #sidenav-main.claris-sidebar-closed ~ main.main-content,
  #sidenav-main.claris-sidebar-closed ~ main.main-content {
    margin-left: var(--claris-sidebar-closed-width) !important;
    width: calc(100% - var(--claris-sidebar-closed-width)) !important;
    max-width: calc(100% - var(--claris-sidebar-closed-width)) !important;
  }

  #sidenav-main.claris-sidenav,
  main.main-content {
    transition-property: width, min-width, max-width, margin-left !important;
    transition-duration: .12s !important;
    transition-timing-function: ease !important;
  }

  main.main-content .container,
  main.main-content .container-fluid {
    max-width: 100% !important;
  }
}

@media (max-width: 991.98px) {
  body.claris-sidebar-is-open main.main-content,
  body:not(.claris-sidebar-is-open) main.main-content,
  #sidenav-main.claris-sidebar-open ~ main.main-content,
  #sidenav-main.claris-sidebar-closed ~ main.main-content {
    margin-left: 0 !important;
    width: 100% !important;
    max-width: 100% !important;
  }
}

/* =========================================================
   CLARIS — VERROUILLAGE PUSH LAYOUT (anti-overlay desktop)
   ---------------------------------------------------------
   Sur desktop (>=992px), si le sidebar est ouvert (peu importe
   la cause : bouton toggle ou clic sur un menu à sous-menu),
   il pousse le contenu principal à droite. Jamais d'overlay.
   Aucun impact sur les modules, formulaires, recherches ou
   contrôleurs : ce bloc n'agit que sur le layout du sidebar
   et de son contenu principal.
   ========================================================= */
@media (min-width: 992px) {
  /* Le sidebar reste positionné fixe à gauche, jamais par-dessus */
  #sidenav-main.claris-sidenav {
    z-index: 1040 !important;
  }
  /* Le contenu principal possède son propre empilement, dans le flux */
  main.main-content {
    position: relative !important;
    z-index: 1 !important;
  }
}

/* =========================================================
   CLARIS — VERROU TOTAL ANTI-OVERLAY (source de vérité unique)
   ---------------------------------------------------------
   La largeur du sidebar ET la marge du .main-content suivent
   STRICTEMENT `body.claris-sidebar-is-open`. Aucun :hover,
   :focus, :focus-within, :active, ni classe parasite vendor
   (`g-sidenav-pinned` / `g-sidenav-hidden`, `.navbar-vertical:hover`)
   ne peuvent élargir le sidebar tant que l'utilisateur n'a pas
   ouvert volontairement le sidebar via :
     (1) le bouton officiel #sidebarToggle
     (2) un menu sidebar à sous-menu
   ========================================================= */
@media (min-width: 992px) {

  /* SIDEBAR FERMÉ : verrouillage strict de la largeur réduite ─────── */
  body:not(.claris-sidebar-is-open) #sidenav-main.claris-sidenav,
  body:not(.claris-sidebar-is-open) #sidenav-main.claris-sidenav:hover,
  body:not(.claris-sidebar-is-open) #sidenav-main.claris-sidenav:focus,
  body:not(.claris-sidebar-is-open) #sidenav-main.claris-sidenav:focus-within,
  body:not(.claris-sidebar-is-open) #sidenav-main.claris-sidenav:active {
    width: var(--claris-sidebar-closed) !important;
    min-width: var(--claris-sidebar-closed) !important;
    max-width: var(--claris-sidebar-closed) !important;
  }

  /* SIDEBAR OUVERT : verrouillage strict de la largeur étendue ────── */
  body.claris-sidebar-is-open #sidenav-main.claris-sidenav,
  body.claris-sidebar-is-open #sidenav-main.claris-sidenav:hover,
  body.claris-sidebar-is-open #sidenav-main.claris-sidenav:focus,
  body.claris-sidebar-is-open #sidenav-main.claris-sidenav:focus-within,
  body.claris-sidebar-is-open #sidenav-main.claris-sidenav:active {
    width: var(--claris-sidebar-open) !important;
    min-width: var(--claris-sidebar-open) !important;
    max-width: var(--claris-sidebar-open) !important;
  }

  /* MAIN-CONTENT : marges/largeur liées UNIQUEMENT à body.claris-sidebar-is-open
     - neutralise les règles vendor `.navbar-vertical:hover + .main-content`
     - neutralise tout effet de survol parasite du sidebar */
  body:not(.claris-sidebar-is-open) main.main-content,
  body:not(.claris-sidebar-is-open) #sidenav-main:hover + main.main-content,
  body:not(.claris-sidebar-is-open) #sidenav-main:hover ~ main.main-content,
  body:not(.claris-sidebar-is-open) .navbar-vertical:hover + main.main-content,
  body:not(.claris-sidebar-is-open) .navbar-vertical:hover.fixed-start + main.main-content,
  body:not(.claris-sidebar-is-open) .navbar-vertical:hover ~ main.main-content {
    margin-left: var(--claris-sidebar-closed) !important;
    width: calc(100% - var(--claris-sidebar-closed)) !important;
    max-width: calc(100% - var(--claris-sidebar-closed)) !important;
  }

  body.claris-sidebar-is-open main.main-content,
  body.claris-sidebar-is-open #sidenav-main:hover + main.main-content,
  body.claris-sidebar-is-open #sidenav-main:hover ~ main.main-content,
  body.claris-sidebar-is-open .navbar-vertical:hover + main.main-content,
  body.claris-sidebar-is-open .navbar-vertical:hover.fixed-start + main.main-content,
  body.claris-sidebar-is-open .navbar-vertical:hover ~ main.main-content {
    margin-left: var(--claris-sidebar-open) !important;
    width: calc(100% - var(--claris-sidebar-open)) !important;
    max-width: calc(100% - var(--claris-sidebar-open)) !important;
  }

  /* Sous-menus : toujours masqués quand le sidebar est fermé,
     même si PHP a posé display:block via inline style sur la route active. */
  body:not(.claris-sidebar-is-open) #sidenav-main .claris-submenu,
  body:not(.claris-sidebar-is-open) #sidenav-main #adv-menu,
  body:not(.claris-sidebar-is-open) #sidenav-main #params-menu,
  body:not(.claris-sidebar-is-open) #sidenav-main #espace-rh-menu,
  body:not(.claris-sidebar-is-open) #sidenav-main #historique-menu,
  body:not(.claris-sidebar-is-open) #sidenav-main #studio-pages-menu {
    display: none !important;
  }
}
