/* =====================================================================
   Estados: vazio, carregando, movimento reduzido e impressão
   Partial: componentes/_vazio
   ===================================================================== */
.vazio { text-align: center; padding: var(--espaco-10) var(--espaco-5); display: flex; flex-direction: column; align-items: center; gap: var(--espaco-2); }
.vazio-icone { font-size: 40px; line-height: 1; margin-bottom: var(--espaco-1-5); }
.vazio h3 { font-size: 17px; }
.vazio p { color: var(--texto-2); max-width: 44ch; font-size: var(--tamanho-md); }
.vazio .acoes { display: flex; gap: var(--espaco-2); flex-wrap: wrap; justify-content: center; margin-top: var(--espaco-2-5); }
.vazio-compacto { padding: var(--espaco-5) var(--espaco-3); }
.vazio-compacto .vazio-icone { font-size: 28px; }

.spinner { width: 22px; height: 22px; border-radius: 50%; border: 3px solid var(--borda-forte); border-top-color: var(--primaria); animation: girar 700ms linear infinite; display: inline-block; flex: none; }
.btn-primario .spinner { border-color: rgba(255,255,255,.4); border-top-color: currentColor; }

.esqueleto { background: linear-gradient(90deg, var(--superficie-3) 25%, var(--superficie-2) 50%, var(--superficie-3) 75%); background-size: 200% 100%; animation: brilho 1.2s ease-in-out infinite; border-radius: var(--raio-sm); }
.esqueleto-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: var(--espaco-4); }
.esqueleto-card { height: 96px; }
.esqueleto-bloco { height: 260px; margin-top: var(--espaco-4); }

.erro-pagina { max-width: 520px; margin: var(--espaco-10) auto; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 1ms !important; animation-iteration-count: 1 !important; transition-duration: 1ms !important; scroll-behavior: auto !important; }
}

@media print {
  .sidebar, .topo, .nav-inferior, .fab, .toasts, .lanc-acoes, .conta-acoes, .acoes { display: none !important; }
  .principal { margin: 0; }
  .conteudo { padding: 0; }
  .card { box-shadow: none; break-inside: avoid; }
}
