/* Produção v23 — matriz responsiva e densidade de navegação.
   Esta camada fecha conflitos entre regras legadas sem tocar em dados,
   permissões ou rotas. */

html { -webkit-text-size-adjust:100%; text-size-adjust:100%; }
img, svg, video, canvas { max-width:100%; }
.main-content { min-width:0; }
.sidebar, .sidebar-nav { min-width:0; }
.sidebar-nav { overflow-x:hidden !important; overscroll-behavior-x:none; }
.view-actions, .form-actions, .action-row { gap:10px; }
.sidebar button.nav-item {
  width:calc(100% - 16px); border:0; background:transparent; text-align:left;
  font:inherit; color:var(--sb-mt);
}
.sidebar button.nav-item:focus-visible { outline:none; box-shadow:var(--prod-ring,0 0 0 4px rgba(44,102,201,.14)); }

/* Alvos tácteis previsíveis, inclusive em páginas antigas que usam botões
   pequenos apenas com ícone. */
@media (pointer:coarse) {
  .btn-icon, .topbar-icon-btn, .topbar-avatar, .sidebar-toggle,
  .sidebar-close, .nav-item, .bn-item { min-width:44px; min-height:44px; }
  .nav-item { min-width:0; }
}

/* Tablet em retrato e ecrãs compactos: a barra lateral torna-se drawer, tal
   como no telemóvel, mas mantém mais espaço para tabelas e formulários. */
@media (min-width:769px) and (max-width:1024px) {
  :root { --sidebar-w:252px; }
  .main-content { padding:20px; }
  .stats-grid { grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); }
  .hier-grid { grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); }
  .dashboard-grid { grid-template-columns:minmax(0,1fr); }
  .view-actions { flex-wrap:wrap; }
}

/* Telefone e tablet pequeno: hierarquia visual simples, sem conteúdo
   espremido. A navegação inferior tem exatamente cinco itens. */
@media (max-width:768px) {
  .topbar { min-height:60px; }
  .topbar-title { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .view-header { gap:12px; }
  .view-actions, .form-actions, .action-row { width:100%; flex-wrap:wrap; }
  .view-actions > .btn, .form-actions > .btn { flex:1 1 150px; }
  .stats-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  /* Vistas anteriores à matriz responsiva usam estas grelhas em linha.
     O !important é intencional: elas foram escritas como style inline. */
  .kpi-grid, .sidebar-style-grid,
  .stats-grid[style*="grid-template-columns:repeat(3"],
  .stats-grid[style*="grid-template-columns: repeat(3"] {
    grid-template-columns:repeat(2,minmax(0,1fr)) !important;
  }
  .doc-footer-grid, .doc-cb-grid,
  [style*="grid-template-columns:auto 1fr"] {
    grid-template-columns:1fr !important;
  }
  .bn-item { min-width:0; min-height:54px; }
  .bn-label { overflow:hidden; max-width:100%; text-overflow:ellipsis; }
  /* A navegação móvel inferior foi removida: a sidebar drawer é a única
     fonte de navegação e o conteúdo pode ocupar todo o ecrã. */
  #main-content { padding-bottom:24px; }
}

@media (max-width:480px) {
  .main-content { width:100%; overflow-x:hidden; }
  .view-actions > .btn, .form-actions > .btn { flex-basis:100%; }
  .stat-card { min-width:0; }
  .stat-label { overflow-wrap:anywhere; }
  .kpi-grid, .sidebar-style-grid,
  .stats-grid[style*="grid-template-columns:repeat(3"],
  .stats-grid[style*="grid-template-columns: repeat(3"] {
    grid-template-columns:1fr !important;
  }
  .modal-footer .btn { flex:1 1 132px; }
}

@media (max-width:359px) {
  .stats-grid { grid-template-columns:1fr; }
  .bn-label { font-size:.55rem; }
}

@media (min-width:1440px) {
  .main-content { padding:28px 32px 36px; }
  .view-header, .widget, .table-wrap { max-width:1600px; }
}

@media (prefers-reduced-motion:reduce) {
  .nav-item, .bn-item, .btn, .widget, .stat-card { transition:none !important; }
}
