/* Zera qualquer margem e garante altura total */
html, body { height: 100%; }
body { margin: 0; }

/* Wrapper principal ocupa a viewport inteira */
#main-wrapper,
.page-wrapper { min-height: 100vh; }

/* Coluna: header no topo, conteúdo no meio, footer embaixo */
.body-wrapper {
  display: flex;
  flex-direction: column;
  min-height: 100vh;         /* garante altura cheia mesmo com pouco conteúdo */
  margin-top: 0 !important;  /* remove qualquer espaço acidental no topo */
  padding-top: 0 !important;
}

/* Header grudado no topo da viewport */
.app-header {
  position: sticky;          /* fica colado ao rolar */
  top: 0;
  z-index: 1050;             /* acima do conteúdo */
  margin-top: 0;             /* sem gap */
}

/* O miolo expande, empurrando o footer para baixo */
.body-wrapper-inner {
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;            /* ocupa o espaço disponível */
}

/* O container do conteúdo cresce, o footer fica após ele */
.body-wrapper-inner > .container-fluid {
  flex: 1 1 auto;
}

/* Footer sempre no final (colado na base da página) */
.app-footer {
  margin-top: auto;          /* magia do sticky footer */
}

/* (Opcional) remove qualquer espaçamento do tema que empurre o header */
.body-wrapper > .app-header:first-child { margin-top: 0 !important; }

/* ====== HEADER & SIDEBAR ALINHADOS NO TOPO ====== */

/* Header já está sticky; zera qualquer respiro */
.app-header {
  position: sticky;
  top: 0;
  z-index: 1050;
  margin-top: 0 !important;
}

/* A sidebar do tema costuma ganhar um offset quando o header é fixed.
   Removemos esse deslocamento e colamos no topo. */
#main-wrapper[data-header-position="fixed"] .left-sidebar,
#main-wrapper .left-sidebar {
  top: 0 !important;          /* cola no topo */
  margin-top: 0 !important;   /* remove gap */
}

/* Mantém a sidebar visível toda a altura da viewport */
.left-sidebar {
  position: sticky;           /* pode ser fixed, se preferir */
  height: 100vh;
}

/* Área rolável da sidebar: ocupa o que sobra abaixo do logo */
.left-sidebar .scroll-sidebar {
  max-height: calc(100vh - 76px); /* ajuste fino conforme a altura do seu .brand-logo */
  overflow-y: auto;
}

/* Só pra garantir que o conteúdo não crie espaço extra no topo */
.body-wrapper {
  display: flex;
  flex-direction: column;
  min-height: 100vh;
  padding-top: 0 !important;
  margin-top: 0 !important;
}


/* Card central com 90% da largura visível */
.card-wide-90 {
  max-width: 90%;
  margin-left: auto;
  margin-right: auto;
  width: 100%;
}

/* Espaçamentos e cabeçalho de página (opcional) */
.page-head { margin-bottom: 1.25rem; }
.page-head .page-title { margin: 0; }
.page-section { margin-bottom: 1.25rem; }



/* ========= PAGE HERO ======== */

.page-hero {
  background: #eef5ff;            /* tom “ice” parecido com o Pro */
  border-radius: 12px;
}
.page-hero-inner {
  position: relative;
  padding: 20px 24px;
  min-height: 120px;
}
.page-hero-art {
  max-height: 130px;
  object-fit: contain;
  margin-left: 16px;
  border-radius: 12px;             /* se a arte tiver fundo */
}



/* ====== BRAND LOGO ====== */
.logo-link { gap: .5rem; text-decoration: none; }

.logo-full,
.logo-compact {
  display: block;
  height: auto;
  object-fit: contain;
}

/* Tamanhos "bonitos" controlados por CSS */
.logo-full   { max-width: 180px; max-height: 44px; }  /* desktop */
.logo-compact{ max-width: 40px;  max-height: 40px; }  /* mobile/mini */

/* Por padrão, mostra o completo em telas grandes */
@media (min-width: 1200px) {
  .logo-full   { display: block; }
  .logo-compact{ display: none;  }
}

/* Em telas menores (ou quando a sidebar fica estreita), usa o compacto */
@media (max-width: 1199.98px) {
  .logo-full   { display: none;  }
  .logo-compact{ display: block; }
}

/* Garante que a imagem nunca extrapole a área */
.brand-logo .logo-link img { max-width: 100%; }


.app-spinner{position:fixed;inset:0;background:rgba(255,255,255,.6);z-index:1055;display:flex;align-items:center;justify-content:center}
.app-spinner .lds-dual-ring{width:64px;height:64px}
.app-spinner .lds-dual-ring:after{content:" ";display:block;width:46px;height:46px;margin:1px;border-radius:50%;border:5px solid #4e73df;border-color:#4e73df transparent #4e73df transparent;animation:lds-dual-ring 1.2s linear infinite}
@keyframes lds-dual-ring{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}
.d-none{display:none!important}


 /* spinner overlay padrão */
    .spinner-overlay {
        position: fixed;
        inset: 0;
        background: rgba(255, 255, 255, .55);
        display: none;
        align-items: center;
        justify-content: center;
        z-index: 2000
    }

    .spinner-overlay .spinner-border {
        width: 3rem;
        height: 3rem
    }

    .dt-actions .dropdown-toggle::after {
        display: none
    }

    .dt-actions .btn {
        padding: .25rem .5rem
    }