#infra td, #infra th { min-width: 120px; text-align: center; }
#infra thead th { font-weight: bold; vertical-align: top; }
#infra thead input.col-search { margin-top: 4px; font-weight: normal; }
#infra thead input.col-search.is-invalid { border-color: #dc3545; }

.columns-list { max-height: 320px; overflow-y: auto; }
.columns-list .form-check { margin-bottom: 2px; }
.columns-list .form-check-label { word-break: break-word; }

.busy {
  position: fixed; inset: 0; z-index: 2000;
  background: rgba(255, 255, 255, .7);
  display: flex; flex-direction: column; align-items: center; justify-content: center;
}
.busy.d-none { display: none !important; }

/* Tablettes : même logique que le CSS Shiny (sidebar plus large) */
@media (min-width: 767px) and (max-width: 1279px) {
  #sidebarPanel { width: 40%; }
  #mainPanel { width: 60%; }
}
