html, body {
  height: 100%;
}

body {
  display: flex;
  flex-direction: column;
  min-height: 100vh;
  padding-top: 56px; /* Hauteur de la navbar fixe */
}

/* Wrapper principal */
.page-wrapper {
    flex-grow: 1;
    display: flex;
    flex-direction: column;
}

/* Conteneur pour la mise en page dashboard */
.dashboard-layout {
    flex-grow: 1;
    display: flex;
    position: relative;
}

/* --- Styles Sidebar --- */
.sidebar {
  position: fixed;
  top: 56px; /* Hauteur de la navbar fixe */
  left: 0;
  bottom: 0; /* Pleine hauteur pour le menu mobile en overlay */
  width: 280px;
  /* MODIFIÉ: z-index inférieur à la navbar (Bootstrap fixed-top default: 1030) */
  z-index: 1029; 
  padding: 0;
  background-color: #f8f9fa; 
  box-shadow: 0 2px 5px rgba(0,0,0,0.1), 0 0 1px rgba(0,0,0,0.1); 
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  transform: translateX(-280px); 
  transition: transform 0.3s ease-in-out; 
}

/* Classe ajoutée par JavaScript pour afficher le menu sur mobile */
.sidebar.show {
  transform: translateX(0); 
  box-shadow: 2px 0 8px rgba(0,0,0,0.15);
}

/* Styles spécifiques pour le bureau (desktop) */
@media (min-width: 768px) {
  .sidebar {
    transform: translateX(0) !important; 
    left: 0; 
    bottom: 55px; 
    /* Z-index pour desktop, peut être différent si besoin, mais 1000 est courant pour les sidebars fixes */
    z-index: 1000; 
    box-shadow: inset -1px 0 0 rgba(0, 0, 0, .1); 
  }
}

/* Styles internes du sidebar (padding, flex-grow pour la liste nav) */
.sidebar > div {
    display: flex;
    flex-direction: column;
    flex-grow: 1;
    padding: 1rem;
}
.sidebar ul.nav {
    flex-grow: 1;
}

/* --- Overlay pour le menu mobile --- */
.sidebar-overlay {
  display: none; 
  position: fixed;
  top: 0;
  left: 0;
  width: 100%; 
  height: 100%; 
  background-color: rgba(0, 0, 0, 0.5); 
  /* MODIFIÉ: z-index inférieur au sidebar et à la navbar */
  z-index: 1028; 
  opacity: 0; 
  transition: opacity 0.3s ease-in-out; 
}

.sidebar-overlay.show {
  display: block; 
  opacity: 1; 
}

/* --- Classe pour le body lorsque le menu mobile est ouvert --- */
/* Empêche le défilement du contenu principal */
body.sidebar-open-mobile { 
  overflow: hidden; 
}

/* --- Contenu Principal --- */
.main-content {
  padding: 1.5rem;
  overflow-y: auto; /* Permet le défilement si le contenu dépasse */
  margin-left: 0; /* Par défaut pour mobile */
  flex-grow: 1;
  position: relative; /* Contexte d'empilement pour s'assurer qu'il est sous l'overlay */
  z-index: 1; 
}

@media (min-width: 768px) {
  .main-content {
    margin-left: 280px; /* Décalé par le sidebar sur desktop */
  }
}

/* Ajustement pour les pages centrées (login, register) */
.form-signin-wrapper {
    flex-grow: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1.5rem;
}

/* --- Styles Liens Sidebar (inchangés) --- */
.sidebar .nav-link {
  font-weight: 500;
  color: #333;
}
.sidebar .nav-link .bi {
  margin-right: 8px;
  font-size: 1.1rem;
  vertical-align: text-bottom;
}
.sidebar .nav-link.active {
  color: #fff;
  background-color: #0d6efd;
}
.sidebar .nav-link:hover:not(.active) {
    background-color: #e9ecef;
}

/* --- Footer --- */
footer.site-footer {
    flex-shrink: 0;
    background-color: #343a40; /* Votre couleur de fond originale */
    color: rgba(255, 255, 255, 0.5); /* Votre couleur de texte originale */
    padding-top: 1rem;
    padding-bottom: 1rem;
    position: relative; 
    z-index: 1001; /* Au-dessus du contenu par défaut, mais peut être sous l'overlay du sidebar */
}
footer.site-footer .text-muted {
    color: rgba(255, 255, 255, 0.5) !important;
}

/* --- Debug Info Box --- */
#debug-session-info {
    flex-shrink: 0;
    margin-bottom: 1rem;
    padding-left: 15px;
    padding-right: 15px;
    margin-left: 0; /* Default for mobile */
}

@media (min-width: 768px) {
    #debug-session-info {
        margin-left: 280px; /* Pushed by sidebar on desktop */
    }
}

#debug-session-info .card {
    margin-bottom: 0;
}
#debug-session-info .card-body {
    max-height: 150px;
    overflow-y: auto;
    background-color: #fff;
}
#debug-session-info pre {
    font-size: 0.75rem;
    margin-bottom: 0;
    white-space: pre-wrap;
    word-break: break-all;
}

/* --- Styles Cartes Dashboard (inchangés) --- */
.card.border-left-primary { border-left: .25rem solid #4e73df!important; }
.card.border-left-success { border-left: .25rem solid #1cc88a!important; }
.text-gray-300 { color: #dddfeb!important; }
.text-gray-800 { color: #5a5c69!important; }
.text-xs { font-size: .7rem; }
.font-weight-bold { font-weight: 700!important; }