.sidebar-item:hover {
  background-color: rgba(255, 255, 255, 0.08);
}

/* --- App-shell layout ---
   Only <main> scrolls vertically. Sidebar and topbar stay fixed in view. */
html, body { height: 100%; margin: 0; }
body { overflow: hidden; }

body > .d-flex:first-child {
  height: 100vh;
  overflow: hidden;
}

.sidebar {
  height: 100vh;
  overflow-y: auto;
  flex-shrink: 0;
}

.flex-grow-1.d-flex.flex-column {
  min-width: 0;
  height: 100%;
  overflow: hidden;
}

.flex-grow-1.d-flex.flex-column > header,
.flex-grow-1.d-flex.flex-column > footer {
  flex-shrink: 0;
}

.flex-grow-1.d-flex.flex-column > main {
  min-width: 0;
  min-height: 0;
  flex: 1 1 auto;
  overflow-y: auto;
}

.module-card {
  color: inherit;
  transition: transform 0.12s ease, box-shadow 0.12s ease;
}
.module-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 0.5rem 1.25rem rgba(0, 0, 0, 0.08) !important;
}

/* `.print-only` shows only in print; `.no-print` hides in print. */
.print-only { display: none; }

@media print {
  body { overflow: visible !important; background: #fff !important; }
  body, html { height: auto !important; }
  .sidebar, .topbar, header:not(.print-keep), .no-print, [data-no-print], .btn, button {
    display: none !important;
  }
  .flex-grow-1.d-flex.flex-column,
  .flex-grow-1.d-flex.flex-column > main {
    overflow: visible !important;
    height: auto !important;
  }
  main { padding: 0 !important; background: #fff !important; }
  .print-only { display: block !important; }
}
