/**
 * Layout ACSI — elimina la “riga” del contenitore app-wrapper
 * e lascia padding tra contenuto e footerbar.
 * NON altera il grid Bootstrap (email, calendario, ecc. restano a colonne)
 * salvo dove si usano classi esplicite .acsi-fill-*.
 */

html,
body {
  min-height: 100%;
  background-color: var(--bodybg-color) !important;
}

.app-wrapper,
.app-wrapper.default,
.app-wrapper.gold,
.app-wrapper.warm,
.app-wrapper.happy,
.app-wrapper.nature,
.app-wrapper.cold,
.app-wrapper.hot {
  min-height: 100vh !important;
  box-shadow: none !important;
  border: 0 !important;
  outline: none !important;
  background-color: var(--bodybg-color) !important;
  background-image: none !important;
}

.app-wrapper > .app-content,
.app-wrapper .app-content {
  min-height: 100vh !important;
  height: auto !important;
  box-shadow: none !important;
  border: 0 !important;
  outline: none !important;
  overflow-x: hidden;
  overflow-y: visible;
  background-color: var(--bodybg-color) !important;
  /* spazio sopra la footerbar fissa */
  padding-bottom: 4.75rem !important;
}

/* Solo spazio sotto: non toccare width/display delle row Bootstrap */
.app-wrapper .app-content > main,
.app-wrapper .app-content main {
  padding-bottom: 1.25rem !important;
}

div > footer,
div > footer.z-1 {
  box-shadow: none !important;
  border-top: 1px solid rgba(var(--secondary), 0.08) !important;
}

/**
 * Fill verticale SOLO dove esplicitamente richiesto
 * (Dashboard → Prossimi Eventi: .acsi-fill-row / .acsi-fill-card)
 * Altezza = viewport - header (65px) - padding footerbar, con gap residuo.
 */
.app-wrapper > .app-content:has(.acsi-fill-row) {
  display: flex !important;
  flex-direction: column !important;
  min-height: 100vh !important;
}

.app-wrapper > .app-content:has(.acsi-fill-row) > header.header-main {
  flex: 0 0 auto;
}

.app-wrapper > .app-content:has(.acsi-fill-row) > main {
  display: flex !important;
  flex-direction: column !important;
  flex: 1 1 auto !important;
  min-height: calc(100vh - 65px - 4.75rem) !important;
  /* spazio residuo sopra la footer bar (card non a filo) */
  padding-bottom: 1.75rem !important;
}

.app-wrapper > .app-content:has(.acsi-fill-row) > main > .container-fluid {
  display: flex !important;
  flex-direction: column !important;
  flex: 1 1 auto !important;
  min-height: 0 !important;
  height: 100% !important;
}

.app-wrapper > .app-content:has(.acsi-fill-row) > main > .container-fluid > .row:not(.acsi-fill-row) {
  flex: 0 0 auto;
}

.acsi-fill-row {
  flex: 1 1 auto !important;
  display: flex !important;
  flex-wrap: nowrap !important;
  flex-direction: column !important;
  min-height: 0 !important;
  margin-bottom: 0 !important;
}

.acsi-fill-row > .col-12 {
  display: flex !important;
  flex-direction: column !important;
  flex: 1 1 auto !important;
  min-height: 0 !important;
}

.acsi-fill-row > .col-12 > .row.h-100 {
  flex: 1 1 auto !important;
  display: flex !important;
  flex-wrap: nowrap !important;
  flex-direction: column !important;
  min-height: 0 !important;
  height: auto !important;
}

.acsi-fill-row > .col-12 > .row.h-100 > .col-12.d-flex {
  flex: 1 1 auto !important;
  display: flex !important;
  flex-direction: column !important;
  min-height: 0 !important;
}

.acsi-fill-card {
  flex: 1 1 auto !important;
  width: 100% !important;
  min-height: 0 !important;
  height: 100% !important;
  display: flex !important;
  flex-direction: column !important;
}

.acsi-fill-card > .card-header {
  flex: 0 0 auto;
}

.acsi-fill-card > .card-body {
  flex: 1 1 auto !important;
  min-height: 0 !important;
  overflow: hidden;
}

.acsi-fill-card > .card-body > .flex-grow-1 {
  flex: 1 1 auto !important;
  min-height: 0 !important;
  overflow-y: auto;
}

/**
 * Pagine elenco (Utenti / Categorie): card fino alla footer fissa,
 * senza overflow/scrollbar di pagina.
 */
.app-wrapper > .app-content:has(#utenti-dynamic-content),
.app-wrapper > .app-content:has(#categorie-dynamic-content),
.app-wrapper > .app-content:has(#ruoli-dynamic-content),
.app-wrapper > .app-content:has(#referenti-dynamic-content),
.app-wrapper > .app-content:has(#tecnici-dynamic-content),
.app-wrapper > .app-content:has(#atleti-dynamic-content),
.app-wrapper > .app-content:has(#livelli-dynamic-content),
.app-wrapper > .app-content:has(#discipline-dynamic-content),
.app-wrapper > .app-content:has(#attrezzi-dynamic-content),
.app-wrapper > .app-content:has(#comuni-dynamic-content),
.app-wrapper > .app-content:has(#enti-dynamic-content),
.app-wrapper > .app-content:has(#comitati-dynamic-content),
.app-wrapper > .app-content:has(#email-settings-dynamic-content),
.app-wrapper > .app-content:has(#f2b-dynamic-content),
.app-wrapper > .app-content:has(#societa-dynamic-content) {
  display: flex !important;
  flex-direction: column !important;
  height: 100vh !important;
  max-height: 100vh !important;
  min-height: 0 !important;
  overflow: hidden !important;
  padding-bottom: 4.875rem !important;
  box-sizing: border-box !important;
}

.app-wrapper > .app-content:has(#utenti-dynamic-content) > header.header-main,
.app-wrapper > .app-content:has(#categorie-dynamic-content) > header.header-main,
.app-wrapper > .app-content:has(#ruoli-dynamic-content) > header.header-main,
.app-wrapper > .app-content:has(#referenti-dynamic-content) > header.header-main,
.app-wrapper > .app-content:has(#tecnici-dynamic-content) > header.header-main,
.app-wrapper > .app-content:has(#atleti-dynamic-content) > header.header-main,
.app-wrapper > .app-content:has(#livelli-dynamic-content) > header.header-main,
.app-wrapper > .app-content:has(#discipline-dynamic-content) > header.header-main,
.app-wrapper > .app-content:has(#attrezzi-dynamic-content) > header.header-main,
.app-wrapper > .app-content:has(#comuni-dynamic-content) > header.header-main,
.app-wrapper > .app-content:has(#enti-dynamic-content) > header.header-main,
.app-wrapper > .app-content:has(#comitati-dynamic-content) > header.header-main,
.app-wrapper > .app-content:has(#email-settings-dynamic-content) > header.header-main,
.app-wrapper > .app-content:has(#f2b-dynamic-content) > header.header-main,
.app-wrapper > .app-content:has(#societa-dynamic-content) > header.header-main {
  flex: 0 0 auto !important;
}

.app-wrapper > .app-content:has(#utenti-dynamic-content) > main,
.app-wrapper > .app-content:has(#categorie-dynamic-content) > main,
.app-wrapper > .app-content:has(#ruoli-dynamic-content) > main,
.app-wrapper > .app-content:has(#referenti-dynamic-content) > main,
.app-wrapper > .app-content:has(#tecnici-dynamic-content) > main,
.app-wrapper > .app-content:has(#atleti-dynamic-content) > main,
.app-wrapper > .app-content:has(#livelli-dynamic-content) > main,
.app-wrapper > .app-content:has(#discipline-dynamic-content) > main,
.app-wrapper > .app-content:has(#attrezzi-dynamic-content) > main,
.app-wrapper > .app-content:has(#comuni-dynamic-content) > main,
.app-wrapper > .app-content:has(#enti-dynamic-content) > main,
.app-wrapper > .app-content:has(#comitati-dynamic-content) > main,
.app-wrapper > .app-content:has(#email-settings-dynamic-content) > main,
.app-wrapper > .app-content:has(#f2b-dynamic-content) > main,
.app-wrapper > .app-content:has(#societa-dynamic-content) > main {
  display: flex !important;
  flex-direction: column !important;
  flex: 1 1 auto !important;
  min-height: 0 !important;
  max-height: 100% !important;
  height: auto !important;
  overflow: hidden !important;
  padding-bottom: 0.2rem !important;
  box-sizing: border-box !important;
}

.app-wrapper > .app-content:has(#utenti-dynamic-content) > main > .container-fluid,
.app-wrapper > .app-content:has(#categorie-dynamic-content) > main > .container-fluid,
.app-wrapper > .app-content:has(#ruoli-dynamic-content) > main > .container-fluid,
.app-wrapper > .app-content:has(#referenti-dynamic-content) > main > .container-fluid,
.app-wrapper > .app-content:has(#tecnici-dynamic-content) > main > .container-fluid,
.app-wrapper > .app-content:has(#atleti-dynamic-content) > main > .container-fluid,
.app-wrapper > .app-content:has(#livelli-dynamic-content) > main > .container-fluid,
.app-wrapper > .app-content:has(#discipline-dynamic-content) > main > .container-fluid,
.app-wrapper > .app-content:has(#attrezzi-dynamic-content) > main > .container-fluid,
.app-wrapper > .app-content:has(#comuni-dynamic-content) > main > .container-fluid,
.app-wrapper > .app-content:has(#enti-dynamic-content) > main > .container-fluid,
.app-wrapper > .app-content:has(#comitati-dynamic-content) > main > .container-fluid,
.app-wrapper > .app-content:has(#email-settings-dynamic-content) > main > .container-fluid,
.app-wrapper > .app-content:has(#f2b-dynamic-content) > main > .container-fluid,
.app-wrapper > .app-content:has(#societa-dynamic-content) > main > .container-fluid {
  display: flex !important;
  flex-direction: column !important;
  flex: 1 1 auto !important;
  min-height: 0 !important;
  max-height: 100% !important;
  height: 100% !important;
  overflow: hidden !important;
}

.app-wrapper > .app-content:has(#utenti-dynamic-content) > main > .container-fluid > .row:not(.acsi-fill-row),
.app-wrapper > .app-content:has(#utenti-dynamic-content) > main > .container-fluid > #utenti-ajax-alert-container,
.app-wrapper > .app-content:has(#categorie-dynamic-content) > main > .container-fluid > .row:not(.acsi-fill-row),
.app-wrapper > .app-content:has(#categorie-dynamic-content) > main > .container-fluid > #categorie-ajax-alert-container,
.app-wrapper > .app-content:has(#ruoli-dynamic-content) > main > .container-fluid > .row:not(.acsi-fill-row),
.app-wrapper > .app-content:has(#ruoli-dynamic-content) > main > .container-fluid > #ruoli-ajax-alert-container,
.app-wrapper > .app-content:has(#referenti-dynamic-content) > main > .container-fluid > .row:not(.acsi-fill-row),
.app-wrapper > .app-content:has(#tecnici-dynamic-content) > main > .container-fluid > .row:not(.acsi-fill-row),
.app-wrapper > .app-content:has(#atleti-dynamic-content) > main > .container-fluid > .row:not(.acsi-fill-row),
.app-wrapper > .app-content:has(#referenti-dynamic-content) > main > .container-fluid > #referenti-ajax-alert-container,
.app-wrapper > .app-content:has(#tecnici-dynamic-content) > main > .container-fluid > #tecnici-ajax-alert-container,
.app-wrapper > .app-content:has(#atleti-dynamic-content) > main > .container-fluid > #atleti-ajax-alert-container,
.app-wrapper > .app-content:has(#livelli-dynamic-content) > main > .container-fluid > .row:not(.acsi-fill-row),
.app-wrapper > .app-content:has(#livelli-dynamic-content) > main > .container-fluid > #livelli-ajax-alert-container,
.app-wrapper > .app-content:has(#discipline-dynamic-content) > main > .container-fluid > .row:not(.acsi-fill-row),
.app-wrapper > .app-content:has(#discipline-dynamic-content) > main > .container-fluid > #discipline-ajax-alert-container,
.app-wrapper > .app-content:has(#attrezzi-dynamic-content) > main > .container-fluid > .row:not(.acsi-fill-row),
.app-wrapper > .app-content:has(#attrezzi-dynamic-content) > main > .container-fluid > #attrezzi-ajax-alert-container,
.app-wrapper > .app-content:has(#comuni-dynamic-content) > main > .container-fluid > .row:not(.acsi-fill-row),
.app-wrapper > .app-content:has(#comuni-dynamic-content) > main > .container-fluid > #comuni-ajax-alert-container,
.app-wrapper > .app-content:has(#enti-dynamic-content) > main > .container-fluid > .row:not(.acsi-fill-row),
.app-wrapper > .app-content:has(#enti-dynamic-content) > main > .container-fluid > #enti-ajax-alert-container,
.app-wrapper > .app-content:has(#comitati-dynamic-content) > main > .container-fluid > .row:not(.acsi-fill-row),
.app-wrapper > .app-content:has(#comitati-dynamic-content) > main > .container-fluid > #comitati-ajax-alert-container,
.app-wrapper > .app-content:has(#email-settings-dynamic-content) > main > .container-fluid > .row:not(.acsi-fill-row),
.app-wrapper > .app-content:has(#email-settings-dynamic-content) > main > .container-fluid > #email-settings-ajax-alert-container,
.app-wrapper > .app-content:has(#f2b-dynamic-content) > main > .container-fluid > .row:not(.acsi-fill-row),
.app-wrapper > .app-content:has(#societa-dynamic-content) > main > .container-fluid > .row:not(.acsi-fill-row),
.app-wrapper > .app-content:has(#societa-dynamic-content) > main > .container-fluid > #societa-ajax-alert-container {
  flex: 0 0 auto !important;
}

.app-wrapper > .app-content:has(#utenti-dynamic-content) > main > .container-fluid > #utenti-dynamic-content,
.app-wrapper > .app-content:has(#categorie-dynamic-content) > main > .container-fluid > #categorie-dynamic-content,
.app-wrapper > .app-content:has(#ruoli-dynamic-content) > main > .container-fluid > #ruoli-dynamic-content,
.app-wrapper > .app-content:has(#referenti-dynamic-content) > main > .container-fluid > #referenti-dynamic-content,
.app-wrapper > .app-content:has(#tecnici-dynamic-content) > main > .container-fluid > #tecnici-dynamic-content,
.app-wrapper > .app-content:has(#atleti-dynamic-content) > main > .container-fluid > #atleti-dynamic-content,
.app-wrapper > .app-content:has(#livelli-dynamic-content) > main > .container-fluid > #livelli-dynamic-content,
.app-wrapper > .app-content:has(#discipline-dynamic-content) > main > .container-fluid > #discipline-dynamic-content,
.app-wrapper > .app-content:has(#attrezzi-dynamic-content) > main > .container-fluid > #attrezzi-dynamic-content,
.app-wrapper > .app-content:has(#comuni-dynamic-content) > main > .container-fluid > #comuni-dynamic-content,
.app-wrapper > .app-content:has(#enti-dynamic-content) > main > .container-fluid > #enti-dynamic-content,
.app-wrapper > .app-content:has(#comitati-dynamic-content) > main > .container-fluid > #comitati-dynamic-content,
.app-wrapper > .app-content:has(#email-settings-dynamic-content) > main > .container-fluid > #email-settings-dynamic-content,
.app-wrapper > .app-content:has(#f2b-dynamic-content) > main > .container-fluid > #f2b-dynamic-content,
.app-wrapper > .app-content:has(#societa-dynamic-content) > main > .container-fluid > #societa-dynamic-content {
  display: flex !important;
  flex-direction: column !important;
  flex: 1 1 auto !important;
  min-height: 0 !important;
  overflow: hidden !important;
}

#utenti-dynamic-content > .row:not(.acsi-fill-row),
#categorie-dynamic-content > .row:not(.acsi-fill-row),
#categorie-dynamic-content > #categorie-dynamic-loading,
#ruoli-dynamic-content > .row:not(.acsi-fill-row),
#referenti-dynamic-content > .row:not(.acsi-fill-row),
#tecnici-dynamic-content > .row:not(.acsi-fill-row),
#atleti-dynamic-content > .row:not(.acsi-fill-row),
#livelli-dynamic-content > .row:not(.acsi-fill-row),
#livelli-dynamic-content > #livelli-dynamic-loading,
#discipline-dynamic-content > .row:not(.acsi-fill-row),
#discipline-dynamic-content > #discipline-dynamic-loading,
#attrezzi-dynamic-content > .row:not(.acsi-fill-row),
#attrezzi-dynamic-content > #attrezzi-dynamic-loading,
#comuni-dynamic-content > .row:not(.acsi-fill-row),
#comuni-dynamic-content > #comuni-dynamic-loading,
#enti-dynamic-content > .row:not(.acsi-fill-row),
#enti-dynamic-content > #enti-dynamic-loading,
#comitati-dynamic-content > .row:not(.acsi-fill-row),
#comitati-dynamic-content > #comitati-dynamic-loading,
#email-settings-dynamic-content > .row:not(.acsi-fill-row),
#f2b-dynamic-content > .row:not(.acsi-fill-row),
#societa-dynamic-content > .row:not(.acsi-fill-row) {
  flex: 0 0 auto !important;
}

#utenti-dynamic-content > .acsi-fill-row,
#categorie-dynamic-content > .acsi-fill-row,
#ruoli-dynamic-content > .acsi-fill-row,
#referenti-dynamic-content > .acsi-fill-row,
#tecnici-dynamic-content > .acsi-fill-row,
#atleti-dynamic-content > .acsi-fill-row,
#livelli-dynamic-content > .acsi-fill-row,
#discipline-dynamic-content > .acsi-fill-row,
#attrezzi-dynamic-content > .acsi-fill-row,
#comuni-dynamic-content > .acsi-fill-row,
#enti-dynamic-content > .acsi-fill-row,
#comitati-dynamic-content > .acsi-fill-row,
#email-settings-dynamic-content > .acsi-fill-row,
#f2b-dynamic-content > .acsi-fill-row,
#societa-dynamic-content > .acsi-fill-row {
  flex: 1 1 auto !important;
  min-height: 0 !important;
  max-height: 100% !important;
  margin-bottom: 0 !important;
  overflow: hidden !important;
}

#utenti-dynamic-content > .acsi-fill-row > .col-12,
#categorie-dynamic-content > .acsi-fill-row > .col-12,
#ruoli-dynamic-content > .acsi-fill-row > .col-12,
#referenti-dynamic-content > .acsi-fill-row > .col-12,
#tecnici-dynamic-content > .acsi-fill-row > .col-12,
#atleti-dynamic-content > .acsi-fill-row > .col-12,
#livelli-dynamic-content > .acsi-fill-row > .col-12,
#discipline-dynamic-content > .acsi-fill-row > .col-12,
#attrezzi-dynamic-content > .acsi-fill-row > .col-12,
#comuni-dynamic-content > .acsi-fill-row > .col-12,
#enti-dynamic-content > .acsi-fill-row > .col-12,
#comitati-dynamic-content > .acsi-fill-row > .col-12,
#email-settings-dynamic-content > .acsi-fill-row > .col-12,
#f2b-dynamic-content > .acsi-fill-row > .col-12,
#societa-dynamic-content > .acsi-fill-row > .col-12 {
  min-height: 0 !important;
  overflow: hidden !important;
}

#utenti-dynamic-content .acsi-fill-card,
#categorie-dynamic-content .acsi-fill-card,
#ruoli-dynamic-content .acsi-fill-card,
#referenti-dynamic-content .acsi-fill-card,
#tecnici-dynamic-content .acsi-fill-card,
#atleti-dynamic-content .acsi-fill-card,
#livelli-dynamic-content .acsi-fill-card,
#discipline-dynamic-content .acsi-fill-card,
#attrezzi-dynamic-content .acsi-fill-card,
#comuni-dynamic-content .acsi-fill-card,
#enti-dynamic-content .acsi-fill-card,
#comitati-dynamic-content .acsi-fill-card,
#email-settings-dynamic-content .acsi-fill-card,
#f2b-dynamic-content .acsi-fill-card,
#societa-dynamic-content .acsi-fill-card {
  flex: 1 1 auto !important;
  min-height: 0 !important;
  height: auto !important;
  max-height: 100% !important;
  overflow: hidden !important;
}

.acsi-fill-card > .card-body > .table-responsive.flex-grow-1 {
  flex: 1 1 auto !important;
  min-height: 0 !important;
  max-height: none !important;
  overflow-y: auto !important;
}
