/* [PW-20260726012-SIDEBAR-TOGGLE-ICON]
   Sidebar compacta: botão no topo e coluna vertical de ícones lineares
   monocromáticos para cada subsecção. O botão usa ícone próprio de
   painel lateral a recolher/expandir. */
#app-screen .sidebar{
  transition:width .18s ease;
}
#app-screen .sidebar-icon-toggle{
  flex:0 0 auto;
  width:100%;
  min-height:44px;
  display:flex;
  align-items:center;
  gap:10px;
  padding:10px 18px;
  border:0;
  border-bottom:1px solid rgba(255,255,255,.08);
  background:rgba(255,255,255,.03);
  color:#C9D3DC;
  font:600 12px 'Inter',system-ui,sans-serif;
  text-align:left;
}
#app-screen .sidebar-icon-toggle:hover{
  background:rgba(255,255,255,.07);
  color:#fff;
}
#app-screen .nav-line-icon{
  width:20px;
  height:20px;
  flex:0 0 20px;
  fill:none;
  stroke:currentColor;
  stroke-width:1.65;
  stroke-linecap:round;
  stroke-linejoin:round;
}
#app-screen .nav-item .nav-line-icon{
  color:currentColor;
}
#app-screen .sidebar.sidebar-icon-mode{
  width:66px!important;
  min-width:66px!important;
}
#app-screen .sidebar.sidebar-icon-mode .sidebar-icon-toggle{
  justify-content:center;
  padding:10px 0;
}
#app-screen .sidebar.sidebar-icon-mode .sidebar-toggle-label,
#app-screen .sidebar.sidebar-icon-mode .brand span,
#app-screen .sidebar.sidebar-icon-mode .nav-section-title,
#app-screen .sidebar.sidebar-icon-mode .nav-item .label,
#app-screen .sidebar.sidebar-icon-mode .nav-item .tag,
#app-screen .sidebar.sidebar-icon-mode .sidebar-foot{
  display:none!important;
}
#app-screen .sidebar.sidebar-icon-mode .brand{
  justify-content:center;
  padding:14px 0;
}
#app-screen .sidebar.sidebar-icon-mode .sidebar-logo{
  width:30px;
  height:30px;
}
#app-screen .sidebar.sidebar-icon-mode .nav-section-group{
  display:block!important;
  max-height:none!important;
  overflow:visible!important;
  width:100%!important;
}
#app-screen .sidebar.sidebar-icon-mode .nav-item{
  width:100%;
  min-height:42px;
  justify-content:center;
  padding:10px 0!important;
  border-left:0!important;
  border-right:3px solid transparent;
  position:relative;
}
#app-screen .sidebar.sidebar-icon-mode .nav-item.active{
  border-right-color:var(--accent);
  background:rgba(240,162,2,.14);
}
#app-screen .sidebar.sidebar-icon-mode .nav-badge{
  position:absolute;
  top:5px;
  right:8px;
  margin-left:0;
  transform:scale(.86);
}
#app-screen .sidebar.sidebar-icon-mode .sidebar-toggle-icon{
  transform:scaleX(-1);
}

/* Entidades: manter os titulos das colunas centrados sobre a coluna, mesmo com zoom.
   Exclui as vistas que têm cabeçalhos/colunas próprios. */
body[data-nav-group="entidades"]:not([data-current-view="trabalhadores"]):not([data-current-view="veiculos"]):not([data-current-view="documentacao_empresa"]):not([data-current-view="maquinas"]):not([data-current-view="maquinas_soltas"]):not([data-current-view="maquinas_kits"]):not([data-current-view="maquinas_manutencao"]):not([data-current-view="maquinas_documentos"]) #content-root table thead th{
  text-align:center!important;
  vertical-align:middle!important;
}
body[data-nav-group="entidades"]:not([data-current-view="trabalhadores"]):not([data-current-view="veiculos"]):not([data-current-view="documentacao_empresa"]):not([data-current-view="maquinas"]):not([data-current-view="maquinas_soltas"]):not([data-current-view="maquinas_kits"]):not([data-current-view="maquinas_manutencao"]):not([data-current-view="maquinas_documentos"]) #content-root table thead th > *{
  margin-left:auto;
  margin-right:auto;
}
#content-root .pw-entidade-table{
  width:100%!important;
  table-layout:fixed!important;
  border-collapse:collapse;
  border-spacing:0!important;
}
#content-root .pw-entidade-table th,
#content-root .pw-entidade-table td{
  display:table-cell!important;
  position:static!important;
  left:auto!important;
  top:auto!important;
  right:auto!important;
  bottom:auto!important;
  float:none!important;
  box-sizing:border-box;
  overflow-wrap:anywhere;
  min-width:0!important;
  max-width:none!important;
  transform:none!important;
}
#content-root .pw-entidade-table th{
  text-align:center!important;
  white-space:normal;
}
#content-root table.pw-entidade-table > thead,
#content-root table.pw-entidade-table > tbody{
  display:table-row-group!important;
  position:static!important;
  transform:none!important;
}
#content-root table.pw-entidade-table > thead{
  display:table-header-group!important;
}
#content-root table.pw-entidade-table > thead > tr,
#content-root table.pw-entidade-table > tbody > tr{
  display:table-row!important;
  position:static!important;
  transform:none!important;
}
#content-root table.pw-entidade-table > thead > tr > th{
  position:static!important;
  top:auto!important;
  left:auto!important;
  text-align:center!important;
  vertical-align:middle!important;
}
#content-root .pw-entidade-table td{
  vertical-align:middle;
}
#content-root .pw-entidade-table input,
#content-root .pw-entidade-table select,
#content-root .pw-entidade-table textarea{
  width:100%!important;
  max-width:100%!important;
  box-sizing:border-box;
}
#content-root .pw-obras-table td:nth-child(8),
#content-root .pw-clientes-table td:nth-child(6),
#content-root .pw-fornecedores-table td:nth-child(8),
#content-root .pw-subempreiteiros-table td:nth-child(9){
  white-space:nowrap;
  overflow-wrap:normal;
}

/* Entidades normais: isola estas tabelas dos estilos sticky globais.
   O alinhamento fica preso ao colgroup; o zoom deixa de recalcular thead e tbody
   como grelhas diferentes. */
body[data-nav-group="entidades"] #content-root .pw-entidade-table,
body[data-nav-group="entidades"] #content-root .pw-entidade-table thead,
body[data-nav-group="entidades"] #content-root .pw-entidade-table tbody,
body[data-nav-group="entidades"] #content-root .pw-entidade-table tr{
  position:static!important;
  transform:none!important;
}
body[data-nav-group="entidades"] #content-root .pw-entidade-table{
  display:table!important;
  width:100%!important;
  min-width:100%!important;
  max-width:100%!important;
  table-layout:fixed!important;
  border-collapse:collapse!important;
  border-spacing:0!important;
}
body[data-nav-group="entidades"] #content-root .pw-entidade-table col{
  display:table-column!important;
}
body[data-nav-group="entidades"] #content-root .pw-entidade-table thead{
  display:table-header-group!important;
}
body[data-nav-group="entidades"] #content-root .pw-entidade-table tbody{
  display:table-row-group!important;
}
body[data-nav-group="entidades"] #content-root .pw-entidade-table tr{
  display:table-row!important;
}
body[data-nav-group="entidades"] #content-root .pw-entidade-table th,
body[data-nav-group="entidades"] #content-root .pw-entidade-table td{
  display:table-cell!important;
  position:static!important;
  left:auto!important;
  top:auto!important;
  right:auto!important;
  bottom:auto!important;
  float:none!important;
  width:auto!important;
  min-width:0!important;
  max-width:none!important;
  box-sizing:border-box!important;
}
body[data-nav-group="entidades"] #content-root .pw-entidade-table th{
  text-align:center!important;
  vertical-align:middle!important;
  white-space:normal!important;
}
body[data-nav-group="entidades"] #content-root .pw-entidade-table td{
  vertical-align:middle!important;
}

/* Listagens limpas: Obras, Clientes, Equipas, Subempreiteiros, Materiais e Fornecedores.
   Cada cabecalho e cada linha usam a mesma grelha CSS, evitando desalinhamentos por zoom. */
#content-root .pw-fixed-list-card{
  padding:0!important;
  overflow:visible!important;
}
#content-root .pw-fixed-grid-table,
#content-root .pw-fixed-grid-table thead,
#content-root .pw-fixed-grid-table tbody{
  display:block!important;
  width:100%!important;
  border-collapse:separate!important;
  border-spacing:0!important;
}
#content-root .pw-fixed-grid-table{
  min-width:var(--pw-grid-min, 980px)!important;
}
#content-root .pw-fixed-grid-table colgroup{
  display:none!important;
}
#content-root .pw-fixed-grid-table thead{
  position:sticky!important;
  top:0!important;
  z-index:20!important;
  background:#F8FAFC!important;
  box-shadow:0 1px 0 var(--line), 0 2px 5px rgba(15,23,42,.08)!important;
}
#content-root .pw-fixed-grid-table tr{
  display:grid!important;
  grid-template-columns:var(--pw-grid-cols)!important;
  min-width:var(--pw-grid-min, 980px)!important;
  width:100%!important;
  align-items:stretch!important;
}
#content-root .pw-fixed-grid-table th,
#content-root .pw-fixed-grid-table td{
  display:flex!important;
  align-items:center!important;
  min-width:0!important;
  max-width:none!important;
  width:auto!important;
  box-sizing:border-box!important;
  position:static!important;
  left:auto!important;
  right:auto!important;
  top:auto!important;
  bottom:auto!important;
  transform:none!important;
  float:none!important;
  overflow:hidden!important;
  overflow-wrap:anywhere!important;
}
#content-root .pw-fixed-grid-table th{
  justify-content:center!important;
  text-align:center!important;
  padding:9px 10px!important;
  min-height:36px!important;
  background:#F8FAFC!important;
  color:#475569!important;
  font-size:11px!important;
  font-weight:800!important;
  letter-spacing:.02em!important;
  text-transform:uppercase!important;
  white-space:normal!important;
}
#content-root .pw-fixed-grid-table td{
  justify-content:flex-start!important;
  padding:9px 10px!important;
  min-height:40px!important;
  border-bottom:1px solid var(--line)!important;
  background:#fff!important;
}
#content-root .pw-fixed-grid-table tbody tr:hover td{
  background:#FAFBFC!important;
}
#content-root .pw-fixed-grid-table .row-actions,
#content-root .pw-fixed-grid-table th:last-child,
#content-root .pw-fixed-grid-table td:last-child{
  justify-content:center!important;
  text-align:center!important;
  white-space:nowrap!important;
}
#content-root .pw-fixed-grid-table input,
#content-root .pw-fixed-grid-table select,
#content-root .pw-fixed-grid-table textarea{
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  box-sizing:border-box!important;
}
#content-root .pw-grid-obras{
  --pw-grid-min:1120px;
  --pw-grid-cols:92px minmax(250px,2.6fr) minmax(135px,1.15fr) 100px 120px 130px 92px 110px 72px;
}
#content-root .pw-grid-clientes{
  --pw-grid-min:980px;
  --pw-grid-cols:minmax(220px,1.7fr) 150px 125px 170px minmax(230px,1.8fr) 105px;
}
#content-root .pw-grid-equipas{
  --pw-grid-min:960px;
  --pw-grid-cols:minmax(180px,1fr) minmax(220px,1.25fr) minmax(260px,1.45fr) minmax(170px,1fr) 95px;
}
#content-root .pw-grid-subempreiteiros{
  --pw-grid-min:1280px;
  --pw-grid-cols:minmax(190px,1.15fr) minmax(160px,.9fr) minmax(160px,.95fr) 125px minmax(220px,1.2fr) 185px 155px 105px 140px;
}
#content-root .pw-grid-materiais{
  --pw-grid-min:1380px;
  --pw-grid-cols:70px 90px 150px minmax(320px,2.2fr) minmax(230px,1.35fr) 100px minmax(210px,1.2fr) minmax(180px,1fr) 55px;
}
#content-root .pw-grid-fornecedores{
  --pw-grid-min:1120px;
  --pw-grid-cols:minmax(220px,1.45fr) 120px minmax(180px,1.1fr) 130px minmax(210px,1.25fr) minmax(220px,1.35fr) minmax(150px,.9fr) 60px;
}

/* v1409 — Listagens recriadas sem <table>.
   Estas seis secoes usam divs em CSS Grid para impedir que estilos globais de
   tabelas/sticky alterem o cabecalho separadamente do corpo. */
#content-root .pw-grid-list-card{
  padding:0!important;
  overflow:visible!important;
  max-width:100%!important;
  position:relative!important;
  border:1px solid var(--line)!important;
  background:#fff!important;
}
#content-root:has(.pw-grid-list-card){
  overflow-x:auto!important;
}
#content-root .pw-grid-list{
  display:block!important;
  min-width:var(--pw-grid-min, 980px)!important;
  width:max(100%, var(--pw-grid-min, 980px))!important;
  border:0!important;
  border-collapse:initial!important;
  position:relative!important;
  isolation:isolate!important;
}
#content-root .pw-grid-head,
#content-root .pw-grid-row{
  display:grid!important;
  grid-template-columns:var(--pw-grid-cols)!important;
  width:100%!important;
  min-width:0!important;
  box-sizing:border-box!important;
  align-items:stretch!important;
}
#content-root .pw-grid-head{
  position:sticky!important;
  top:0!important;
  z-index:5000!important;
  background:#F8FAFC!important;
  box-shadow:0 1px 0 var(--line),0 3px 8px rgba(15,23,42,.10)!important;
  isolation:isolate!important;
  overflow:hidden!important;
  transform:translateZ(0)!important;
}
#content-root .pw-grid-head::after{
  content:""!important;
  position:absolute!important;
  left:0!important;
  right:0!important;
  bottom:-1px!important;
  height:1px!important;
  background:var(--line)!important;
  z-index:3!important;
  pointer-events:none!important;
}
#content-root .pw-grid-body,
#content-root .pw-grid-row{
  position:relative!important;
  z-index:1!important;
}
#content-root .pw-grid-head-cell,
#content-root .pw-grid-cell{
  min-width:0!important;
  width:auto!important;
  max-width:none!important;
  box-sizing:border-box!important;
  display:flex!important;
  align-items:center!important;
  overflow:hidden!important;
  border-bottom:1px solid var(--line)!important;
}
#content-root .pw-grid-head-cell{
  position:relative!important;
  z-index:2!important;
  justify-content:center!important;
  text-align:center!important;
  min-height:38px!important;
  padding:9px 10px!important;
  background:#F8FAFC!important;
  background-clip:border-box!important;
  color:#475569!important;
  font-size:11px!important;
  font-weight:800!important;
  letter-spacing:.02em!important;
  text-transform:uppercase!important;
  line-height:1.2!important;
  white-space:normal!important;
  overflow-wrap:anywhere!important;
}
#content-root .pw-grid-cell{
  position:relative!important;
  z-index:1!important;
  justify-content:flex-start!important;
  min-height:40px!important;
  padding:8px 10px!important;
  background:#fff!important;
  color:var(--ink)!important;
  font-size:13px!important;
  line-height:1.25!important;
  overflow-wrap:anywhere!important;
}
#content-root .pw-grid-row:hover .pw-grid-cell{
  background:#FAFBFC!important;
}
#content-root .pw-grid-cell.row-actions,
#content-root .pw-grid-head-cell:last-child,
#content-root .pw-grid-cell:last-child{
  justify-content:center!important;
  text-align:center!important;
  gap:6px!important;
  white-space:nowrap!important;
}
#content-root .pw-grid-cell input,
#content-root .pw-grid-cell select,
#content-root .pw-grid-cell textarea{
  width:100%!important;
  min-width:0!important;
  max-width:100%!important;
  box-sizing:border-box!important;
}


/* PWPLADUR 1443 — seleção de utilizadores pelo próprio nome */
.pw-user-select-list{
  display:flex!important;
  flex-direction:row!important;
  flex-wrap:wrap!important;
  align-items:flex-start!important;
  align-content:flex-start!important;
  gap:7px!important;
}
.pw-user-select-option{
  position:relative!important;
  display:inline-flex!important;
  align-items:center!important;
  width:auto!important;
  min-width:0!important;
  margin:0!important;
  padding:0!important;
  border:0!important;
  background:transparent!important;
  cursor:pointer!important;
}
.pw-user-select-option input[type="checkbox"]{
  position:absolute!important;
  width:1px!important;
  height:1px!important;
  margin:0!important;
  opacity:0!important;
  pointer-events:none!important;
}
.pw-user-select-option span{
  display:block!important;
  min-width:0!important;
  padding:8px 12px!important;
  border:1px solid #CBD5E1!important;
  border-radius:999px!important;
  background:#F8FAFC!important;
  color:#334155!important;
  font-size:12.5px!important;
  font-weight:700!important;
  line-height:1.2!important;
  text-align:center!important;
  white-space:normal!important;
  overflow-wrap:anywhere!important;
  transition:background .15s ease,border-color .15s ease,color .15s ease,box-shadow .15s ease,transform .15s ease!important;
}
.pw-user-select-option:hover span{
  border-color:#94A3B8!important;
  background:#F1F5F9!important;
}
.pw-user-select-option input[type="checkbox"]:checked + span{
  border-color:var(--accent,#2563EB)!important;
  background:var(--accent,#2563EB)!important;
  color:#FFFFFF!important;
  box-shadow:0 0 0 2px rgba(37,99,235,.16)!important;
}
.pw-user-select-option input[type="checkbox"]:focus-visible + span{
  outline:3px solid rgba(37,99,235,.28)!important;
  outline-offset:2px!important;
}
.pw-user-select-option:active span{
  transform:scale(.98)!important;
}
@media(max-width:700px){
  .pw-user-select-option span{
    padding:9px 12px!important;
    font-size:13px!important;
  }
}
