/* ============================================================
   base.css — SGC
   Variáveis, reset e estilos globais
   ============================================================ */

   /* =========================== OVERLAY ============================= */
/* Sol + Terra (sólido, sem rastro) */
:root{
  --overlay-bg: rgba(255,255,255,.86);
  --overlay-text: var(--text-color);
  --overlay-orbit: rgba(var(--bs-primary-rgb), .35);
  --sun: #FFC107;
  --sun-soft: #FFE082;
  --earth: #2E86FF;
}
[data-bs-theme="dark"]{
  --overlay-bg: rgba(0,0,0,.88);
  --overlay-orbit: rgba(255,255,255,.22);
}

.loading-overlay{
  display:none; position:fixed; inset:0; z-index:9999;
  background: var(--overlay-bg);
  align-items:center; justify-content:center; flex-direction:column;
  text-align:center; padding: 2rem;
}
.overlay-title{
  margin-top: 1.25rem;
  font-size: clamp(1.1rem, 1.6vw, 1.35rem);
  font-weight: 700;
  color: var(--overlay-text);
}
.overlay-sub{
  margin-top:.25rem;
  font-size:.95rem;
  color: var(--muted-color);
}

.orbita-container{ position: relative; width: 200px; height: 200px; }
.nucleo{
  position:absolute; top:50%; left:50%;
  width:46px; height:46px; border-radius:50%;
  transform: translate(-50%, -50%);
  background: radial-gradient(circle at 30% 30%, var(--sun-soft), var(--sun));
  box-shadow: 0 0 14px var(--sun), 0 0 28px var(--sun);
}
.orbit{
  position:absolute; top:50%; left:50%;
  width:150px; height:150px; border-radius:50%;
  transform: translate(-50%, -50%);
  border: 2px solid var(--overlay-orbit);
  animation: overlaySpin 6s linear infinite;
  will-change: transform;
}
.orbit::before{ /* Terra */
  content:""; position:absolute; top:50%; left:100%;
  width:16px; height:16px; border-radius:50%;
  transform: translate(-50%, -50%);
  background: var(--earth);
  box-shadow: 0 0 6px var(--earth), 0 0 12px var(--earth);
  z-index: 1;
}
/* garante que nenhum rastro antigo apareça */
.orbit::after{ content: none !important; }

@keyframes overlaySpin{
  0% { transform: translate(-50%, -50%) rotate(0); }
  100% { transform: translate(-50%, -50%) rotate(360deg); }
}
@media (max-width: 480px){
  .orbita-container{ width: 160px; height: 160px; }
  .orbit{ width: 120px; height: 120px; }
  .nucleo{ width: 38px; height: 38px; }
}

/* Hover dos links da navbar */
  .navbar-nav .nav-link { transition: background-color .3s ease, color .3s ease; }
  .navbar-nav .nav-link:hover { background-color: rgba(0,123,255,.1); color: #007bff; border-radius: 4px; }

  .ui-autocomplete { z-index: 9999; }
  .fade-out { opacity: 0; transform: translateX(30px); transition: all .4s ease; }

  /* ===== Variáveis globais ===== */
  :root{
    --navbar-h: 56px;
    --footer-h: 48px;
    --navbar-extra-gap: 16px;

    /* paleta */
    --bg-page: #f6f8fb;
    --card-bg: #ffffff;
    --text-color: #212529;
    --muted-color: #6c757d;
    --divider: rgba(0,0,0,.08);
  }

  body { background: var(--bg-page); color: var(--text-color); }

  /* Compensa a navbar fixa */
  body.has-fixed-footer { padding-top: calc(var(--navbar-h) + var(--navbar-extra-gap)); }

  .page-content{
    max-width: 1400px;
    margin: 0 auto;
    padding: 0 10px;
    padding-bottom: calc(var(--footer-h) + 56px);
  }

  .card { background: var(--card-bg); }
  .border-top { border-top-color: var(--divider) !important; }
  .container .card-title { letter-spacing: .2px; }
  .container .text-muted { color: var(--muted-color) !important; }

  /* Footer fixo */
  .app-footer{
  font-size: .875rem;
  line-height: 1.25;
  }
  
  /* Footer mais estreito */
  .footer-inner{  
    max-width: 980px;     /* controla o “tamanho horizontal” */
    margin: 0 auto;
    padding: 0 .75rem;    /* menos respiro lateral */
  }

  @media (max-width: 575.98px){
    :root{ --navbar-h: 64px; --footer-h: 56px; }
  }

  /* ---------- BOTÕES ---------- */
  .btn-min { min-width: 140px; }
  .btn-sm .bi { margin-right: .35rem; }
  .btn:focus-visible{ outline: 0; box-shadow: 0 0 0 .2rem rgba(var(--bs-primary-rgb), .25); }

  .btn-soft-primary{ color: var(--bs-primary); background: rgba(var(--bs-primary-rgb), .12); border: 1px solid rgba(var(--bs-primary-rgb), .25); }
  .btn-soft-primary:hover{ background: rgba(var(--bs-primary-rgb), .18); border-color: rgba(var(--bs-primary-rgb), .35); }
  .btn-soft-secondary{ color: var(--bs-secondary); background: rgba(var(--bs-secondary-rgb), .12); border: 1px solid rgba(var(--bs-secondary-rgb), .25); }
  .btn-soft-secondary:hover{ background: rgba(var(--bs-secondary-rgb), .18); border-color: rgba(var(--bs-secondary-rgb), .35); }
  .btn-soft-success{ color: var(--bs-success); background: rgba(var(--bs-success-rgb), .12); border: 1px solid rgba(var(--bs-success-rgb), .25); }
  .btn-soft-success:hover{ background: rgba(var(--bs-success-rgb), .18); border-color: rgba(var(--bs-success-rgb), .35); }
  .btn-soft-info{ color: var(--bs-info); background: rgba(var(--bs-info-rgb), .12); border: 1px solid rgba(var(--bs-info-rgb), .25); }
  .btn-soft-info:hover{ background: rgba(var(--bs-info-rgb), .18); border-color: rgba(var(--bs-info-rgb), .35); }
  .btn-soft-warning{ color: var(--bs-warning); background: rgba(var(--bs-warning-rgb), .18); border: 1px solid rgba(var(--bs-warning-rgb), .35); }
  .btn-soft-warning:hover{ background: rgba(var(--bs-warning-rgb), .24); border-color: rgba(var(--bs-warning-rgb), .45); }
  .btn-soft-danger{ color: var(--bs-danger); background: rgba(var(--bs-danger-rgb), .12); border: 1px solid rgba(var(--bs-danger-rgb), .25); }
  .btn-soft-danger:hover{ background: rgba(var(--bs-danger-rgb), .18); border-color: rgba(var(--bs-danger-rgb), .35); }
  .btn-soft-dark{ color: var(--bs-dark); background: rgba(var(--bs-dark-rgb), .08); border: 1px solid rgba(var(--bs-dark-rgb), .2); }
  .btn-soft-dark:hover{ background: rgba(var(--bs-dark-rgb), .12); border-color: rgba(var(--bs-dark-rgb), .32); }
  .btn-ghost{ background: transparent; border: 1px solid transparent; color: var(--bs-secondary); }
  .btn-ghost:hover{ background: rgba(var(--bs-secondary-rgb), .08); border-color: rgba(var(--bs-secondary-rgb), .15); }

  /* Ícones utilitários para cards */
  .icon-xl { font-size: 2.25rem; line-height: 1; }
  .icon-muted { opacity: .95; }
  .card-hover .icon-xl { transition: transform .2s ease; }
  .card-hover:hover .icon-xl { transform: translateY(-2px); }

  /* Breadcrumbs */
  .breadcrumb { background: transparent; margin-bottom: .75rem; }
  .breadcrumb-item a { text-decoration: none; }
  .breadcrumb-item a:hover { text-decoration: underline; }
  .breadcrumb-item a, .breadcrumb-item.active {
    max-width: 40ch; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: inline-block; vertical-align: bottom;
  }

  /* Navbar */
  .navbar.app-nav {
    background: #fff !important;
    border-bottom: 1px solid var(--divider);
    box-shadow: 0 .25rem .5rem rgba(0,0,0,.04);
  }
  .navbar.app-nav .navbar-brand {
    font-weight: 600; letter-spacing: .2px; display: inline-flex; align-items: center; gap: .5rem;
  }
  .navbar.app-nav .navbar-brand .brand-mark {
    width: 28px; height: 28px; border-radius: 8px;
    display: inline-flex; align-items: center; justify-content: center;
    background: rgba(var(--bs-primary-rgb), .12);
    color: var(--bs-primary);
  }
  .navbar.app-nav .nav-link { position: relative; border-radius: .4rem; padding: .5rem .75rem; transition: background-color .2s ease, color .2s ease; }
  .navbar.app-nav .nav-link:hover { background: rgba(var(--bs-primary-rgb), .08); color: var(--bs-primary); }
  .navbar.app-nav .nav-link.active, .navbar.app-nav .show > .nav-link { color: var(--bs-primary); background: rgba(var(--bs-primary-rgb), .10); }
  .navbar.app-nav .nav-link.active::after {
    content: ""; position: absolute; left: .5rem; right: .5rem; bottom: .25rem;
    height: 2px; background: var(--bs-primary); border-radius: 999px; opacity: .85;
  }
  .navbar.app-nav .dropdown-menu { border: 1px solid var(--divider); box-shadow: 0 .5rem 1rem rgba(0,0,0,.08); border-radius: .75rem; padding: .35rem; }
  .navbar.app-nav .dropdown-item { border-radius: .5rem; padding: .5rem .75rem; }
  .navbar.app-nav .dropdown-item:hover { background: rgba(var(--bs-primary-rgb), .08); color: var(--bs-primary); }

  /* Chip do usuário */
  .user-chip { display: inline-flex; align-items: center; gap: .5rem; padding: .35rem .6rem; border-radius: 999px; border: 1px solid rgba(0,0,0,.06); background: #fff; }
  .user-avatar { width: 28px; height: 28px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; background: rgba(0,0,0,.06); font-weight: 600; font-size: .85rem; }

  .navbar.app-nav .navbar-toggler { border: 1px solid var(--divider); }

  /* ======= Toasts ======= */
  :root{
    --navbar-offset: 64px;
    --toast-max-width: 480px;
    --toast-font-size: 0.975rem;
    --toast-icon-size: 1.1rem;
    --toast-padding-y: .75rem;
    --toast-gap: .5rem;
  }
  .toast-container{ gap: var(--toast-gap) !important; }
  .toast.accent{ position: relative; overflow: hidden; font-size: var(--toast-font-size); display: inline-flex; align-items: center; --bs-toast-padding-x: .25rem; }
  .toast.accent::before{ content: ""; position: absolute; inset: 0 auto 0 0; width: 6px; background: var(--accent, rgba(255,255,255,.35)); opacity: .9; }
  .toast .toast-body{ padding-top: var(--toast-padding-y) !important; padding-bottom: var(--toast-padding-y) !important; padding-left: 0 !important; padding-right: 0 !important; margin-left: .5rem; line-height: 1.35; }
  .toast .toast-icon i{ font-size: var(--toast-icon-size) !important; }
  .toast .toast-progress{ height: 3px; opacity: .35; border-radius: 0 0 .5rem .5rem; animation: toastProgress var(--toast-delay, 4000ms) linear forwards; background: rgba(255,255,255,.9); }
  .bg-warning .toast-progress, .bg-info .toast-progress { background: rgba(0,0,0,.35); }
  @keyframes toastProgress { from { width: 100%; } to { width: 0%; } }
  .toast-badge{ width: 26px; height: 26px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; margin: .35rem .25rem .35rem .5rem; background: rgba(255,255,255,.14); color: inherit; flex: 0 0 26px; }
  .bg-warning .toast-badge, .bg-info .toast-badge{ background: rgba(0,0,0,.08); }
  .toast-badge i{ font-size: 1rem; line-height: 1; }
  @media (prefers-reduced-motion: reduce){ .toast .toast-progress { animation: none; width: 0; } }
  @media (min-width: 992px){ :root{ --toast-max-width: 520px; } }
  @media (max-width: 576px){ :root{ --toast-font-size: .95rem; --toast-icon-size: 1rem; } }