/* 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)); }
[role="button"]:focus-visible { outline:3px solid rgba(44,102,201,.42); outline-offset:3px; }

/* Ação pessoal na área escura: contraste consistente, inclusive quando
   regras legadas da sidebar alteram a cor de texto herdada. */
.sidebar .sidebar-user-action {
  margin-top:10px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:6px;
  min-height:36px;
  padding:7px 12px;
  border:1px solid rgba(177,211,255,.52);
  border-radius:var(--r-md,8px);
  background:rgba(15,51,90,.42);
  color:#f5f9ff !important;
  font:600 .78rem/1.2 inherit;
  letter-spacing:.01em;
  cursor:pointer;
  transition:background .18s ease,border-color .18s ease,transform .18s ease,box-shadow .18s ease;
}
.sidebar .sidebar-user-action svg { color:#8dd5ff; flex:0 0 auto; }
.sidebar .sidebar-user-action:hover {
  background:rgba(49,110,196,.34);
  border-color:#b9ddff;
  box-shadow:0 5px 14px rgba(0,0,0,.18);
  transform:translateY(-1px);
}
.sidebar .sidebar-user-action:focus-visible {
  outline:3px solid #8dd5ff;
  outline-offset:3px;
}

.audit-filters input {
  width:100%; min-height:38px; padding:7px 9px;
  border:1px solid var(--border, #d6deea); border-radius:8px;
  background:var(--surface, #fff); color:var(--text, #182337); font:inherit;
}
.audit-filters input:focus { outline:3px solid rgba(44,102,201,.18); border-color:var(--primary); }

/* 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; }
  .audit-filters { grid-template-columns:repeat(2,minmax(0,1fr)) !important; }
  .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%; }
  .audit-filters { grid-template-columns:1fr !important; }
  .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; }
}
