/* Empty-state canvas: faint grid overlay hinting where widgets will snap. */
#dashboard-empty {
  min-height: 60vh;
  cursor: pointer;
  border: 1px dashed var(--bs-border-color);
  border-radius: .5rem;
  background-image:
    repeating-linear-gradient(0deg, transparent, transparent 59px, var(--bs-border-color-translucent) 60px),
    repeating-linear-gradient(90deg, transparent, transparent 79px, var(--bs-border-color-translucent) 80px);
  display: flex; align-items: center; justify-content: center; text-align: center;
}
/* Each widget is a flex-column card filling its grid cell: the card-header stays put while
   only the card-body scrolls. */
.grid-stack-item-content { overflow: hidden; }
.grid-stack-item-content > .card { height: 100%; display: flex; flex-direction: column; }
.grid-stack-item-content > .card > .card-header { flex: 0 0 auto; }
.grid-stack-item-content > .card > .card-body { flex: 1 1 auto; min-height: 0; overflow-y: auto; }
