/* ========================================================================== 
   ESPELHO PIMS V16.3.9 — DENSIDADE RESPONSIVA E RELATÓRIOS FIÉIS

   Escopo visual deliberadamente restrito:
   1. distribuir a altura livre entre as categorias do Semáforo;
   2. compactar a matriz de Disponibilidade no desktop sem scroll horizontal;
   3. preservar cores e densidade no Modo Print dos relatórios.

   Nenhuma regra operacional, classificação, cálculo ou fonte de dados.
   ========================================================================== */

/* --------------------------------------------------------------------------
   SIDEBAR — o espaço livre do Semáforo passa a pertencer às seis categorias.
   -------------------------------------------------------------------------- */
@media (min-width:901px){
  body:not(.sidebar-collapsed) #sidebarPrincipal #sidebarSemaforo{
    display:flex!important;
    flex-direction:column!important;
    min-height:0!important;
    overflow:hidden!important;
  }

  body:not(.sidebar-collapsed) #sidebarPrincipal #sidebarSemaforo .semaforo-sidebar-head{
    flex:0 0 auto!important;
  }

  body:not(.sidebar-collapsed) #sidebarPrincipal #sidebarSemaforo .semaforo-sidebar-grid{
    display:grid!important;
    grid-template-columns:1fr!important;
    grid-template-rows:repeat(6,minmax(29px,1fr))!important;
    align-content:stretch!important;
    flex:1 1 auto!important;
    min-height:0!important;
    height:auto!important;
    max-height:none!important;
    gap:clamp(3px,.55vh,7px)!important;
    overflow:hidden!important;
  }

  body:not(.sidebar-collapsed) #sidebarPrincipal #sidebarSemaforo .semaforo-sidebar-card{
    width:100%!important;
    height:auto!important;
    min-height:29px!important;
    max-height:58px!important;
    flex:1 1 auto!important;
    flex-basis:auto!important;
    align-self:stretch!important;
    padding-block:clamp(3px,.55vh,8px)!important;
  }
}

/* Telas desktop baixas mantêm todas as áreas visíveis, sem comprimir demais. */
@media (min-width:901px) and (max-height:820px){
  body:not(.sidebar-collapsed) #sidebarPrincipal #sidebarSemaforo .semaforo-sidebar-grid{
    grid-template-rows:repeat(6,minmax(27px,1fr))!important;
    gap:3px!important;
  }
  body:not(.sidebar-collapsed) #sidebarPrincipal #sidebarSemaforo .semaforo-sidebar-card{
    min-height:27px!important;
    max-height:39px!important;
    padding-block:2px!important;
  }
}

/* --------------------------------------------------------------------------
   DISPONIBILIDADE — 24 horas dentro da largura e densidade vertical adaptativa.
   A regra vale no desktop. O mobile mantém sua apresentação própria em cards.
   -------------------------------------------------------------------------- */
@media (min-width:901px){
  html body[data-current-menu="disponibilidade"] #appView #menuHost .disponibilidade-page{
    gap:6px!important;
    min-height:0!important;
    overflow:hidden!important;
  }

  html body[data-current-menu="disponibilidade"] #appView #menuHost .disp-filters{
    height:auto!important;
    min-height:0!important;
    max-height:none!important;
    margin:0!important;
    padding:8px 10px!important;
    gap:7px!important;
    align-items:end!important;
  }

  html body[data-current-menu="disponibilidade"] #appView #menuHost .disp-filters :is(input,select,.ms-filter-button){
    height:36px!important;
    min-height:36px!important;
    max-height:36px!important;
    padding-block:5px!important;
    font-size:9px!important;
  }

  html body[data-current-menu="disponibilidade"] #appView #menuHost #dispResumo.disp-summary{
    min-height:0!important;
    margin:0!important;
    gap:6px!important;
  }

  html body[data-current-menu="disponibilidade"] #appView #menuHost #dispResumo .disp-summary-card{
    min-height:38px!important;
    height:auto!important;
    padding:5px 8px!important;
  }

  html body[data-current-menu="disponibilidade"] #appView #menuHost .disp-table-shell{
    min-height:0!important;
    max-height:none!important;
    width:100%!important;
    max-width:100%!important;
    margin:0!important;
    overflow-x:hidden!important;
    overflow-y:auto!important;
    scrollbar-gutter:auto!important;
  }

  html body[data-current-menu="disponibilidade"] #appView #menuHost #tabelaDisponibilidade.matrix,
  html body[data-current-menu="disponibilidade"] #appView #menuHost #tabelaDisponibilidade.matrix.disp-compact-hours{
    display:table!important;
    width:100%!important;
    min-width:0!important;
    max-width:100%!important;
    table-layout:fixed!important;
    margin:0!important;
  }

  html body[data-current-menu="disponibilidade"] #appView #menuHost #tabelaDisponibilidade col.disp-col-label{
    width:clamp(142px,13.2vw,190px)!important;
  }

  html body[data-current-menu="disponibilidade"] #appView #menuHost #tabelaDisponibilidade col.disp-col-total{
    width:46px!important;
  }

  html body[data-current-menu="disponibilidade"] #appView #menuHost #tabelaDisponibilidade col.disp-col-hour{
    width:auto!important;
  }

  html body[data-current-menu="disponibilidade"] #appView #menuHost #tabelaDisponibilidade.matrix th,
  html body[data-current-menu="disponibilidade"] #appView #menuHost #tabelaDisponibilidade.matrix td{
    box-sizing:border-box!important;
    width:auto!important;
    min-width:0!important;
    max-width:none!important;
    height:auto!important;
    min-height:0!important;
    padding:3px 1px!important;
    font-size:clamp(7px,.50vw,9.5px)!important;
    line-height:1.02!important;
    overflow:hidden!important;
    text-overflow:clip!important;
  }

  html body[data-current-menu="disponibilidade"] #appView #menuHost #tabelaDisponibilidade.matrix th{
    height:34px!important;
    padding-block:5px!important;
  }

  html body[data-current-menu="disponibilidade"] #appView #menuHost #tabelaDisponibilidade.matrix tbody td{
    height:var(--disp-v1639-row-height,38px)!important;
  }

  html body[data-current-menu="disponibilidade"] #appView #menuHost #tabelaDisponibilidade.matrix th:first-child,
  html body[data-current-menu="disponibilidade"] #appView #menuHost #tabelaDisponibilidade.matrix td:first-child{
    width:clamp(142px,13.2vw,190px)!important;
    min-width:clamp(142px,13.2vw,190px)!important;
    max-width:clamp(142px,13.2vw,190px)!important;
  }

  html body[data-current-menu="disponibilidade"] #appView #menuHost #tabelaDisponibilidade.matrix th:last-child,
  html body[data-current-menu="disponibilidade"] #appView #menuHost #tabelaDisponibilidade.matrix td:last-child{
    width:46px!important;
    min-width:46px!important;
    max-width:46px!important;
  }

  html body[data-current-menu="disponibilidade"] #appView #menuHost #tabelaDisponibilidade.matrix .disp-item-cell{
    padding:3px 5px!important;
  }

  html body[data-current-menu="disponibilidade"] #appView #menuHost #tabelaDisponibilidade.matrix .disp-item-cell b{
    min-height:0!important;
    gap:4px!important;
    font-size:clamp(8.5px,.58vw,10.5px)!important;
    line-height:1.02!important;
  }

  html body[data-current-menu="disponibilidade"] #appView #menuHost #tabelaDisponibilidade.matrix .disp-item-cell small,
  html body[data-current-menu="disponibilidade"] #appView #menuHost #tabelaDisponibilidade.matrix .disp-item-cell em{
    margin-top:1px!important;
    font-size:clamp(6px,.42vw,7.5px)!important;
    line-height:1!important;
  }

  html body[data-current-menu="disponibilidade"] #appView #menuHost #tabelaDisponibilidade.matrix .disp-process-icon-p26{
    width:24px!important;
    height:18px!important;
    flex:0 0 24px!important;
  }

  html body[data-current-menu="disponibilidade"] #appView #menuHost #tabelaDisponibilidade.matrix .disp-process-icon-p26 svg{
    width:24px!important;
    height:17px!important;
  }
}

/* --------------------------------------------------------------------------
   RELATÓRIO DE DISPONIBILIDADE — cores fortes e print manual compacto.
   -------------------------------------------------------------------------- */
#modalRoot .relatorio-disponibilidade-colorido .disp-report-compact-hours td.disp-ok,
#reportCaptureModeR91 .relatorio-disponibilidade-colorido .disp-report-compact-hours td.disp-ok,
.report-image-r93.relatorio-disponibilidade-colorido .disp-report-compact-hours td.disp-ok{
  background:#079447!important;
  background-color:#079447!important;
  color:#fff!important;
  border-color:#078341!important;
  -webkit-print-color-adjust:exact!important;
  print-color-adjust:exact!important;
}

#modalRoot .relatorio-disponibilidade-colorido .disp-report-compact-hours td.disp-bad,
#reportCaptureModeR91 .relatorio-disponibilidade-colorido .disp-report-compact-hours td.disp-bad,
.report-image-r93.relatorio-disponibilidade-colorido .disp-report-compact-hours td.disp-bad{
  background:#c82e38!important;
  background-color:#c82e38!important;
  color:#fff!important;
  border-color:#b4252f!important;
  -webkit-print-color-adjust:exact!important;
  print-color-adjust:exact!important;
}

#reportCaptureModeR91 .report-capture-content-r91.relatorio-disponibilidade-colorido{
  width:100%!important;
  padding:7px!important;
}

#reportCaptureModeR91 .report-capture-content-r91.relatorio-disponibilidade-colorido .disp-report-hero-p251{
  min-height:52px!important;
  margin-bottom:4px!important;
  padding:7px 10px!important;
  border-radius:7px!important;
}

#reportCaptureModeR91 .report-capture-content-r91.relatorio-disponibilidade-colorido .disp-report-hero-p251 h2{
  margin:2px 0!important;
  font-size:18px!important;
}

#reportCaptureModeR91 .report-capture-content-r91.relatorio-disponibilidade-colorido .disp-report-context-p251{
  margin-bottom:4px!important;
  padding:4px 6px!important;
}

#reportCaptureModeR91 .report-capture-content-r91.relatorio-disponibilidade-colorido .disp-report-summary-c3{
  gap:4px!important;
  margin:4px 0!important;
}

#reportCaptureModeR91 .report-capture-content-r91.relatorio-disponibilidade-colorido .disp-report-summary-c3 article{
  min-height:30px!important;
  padding:4px 6px!important;
}

#reportCaptureModeR91 .report-capture-content-r91.relatorio-disponibilidade-colorido .disp-report-legend-compact{
  margin:4px 0!important;
  gap:4px!important;
}

#reportCaptureModeR91 .report-capture-content-r91.relatorio-disponibilidade-colorido .disp-report-compact-hours th,
#reportCaptureModeR91 .report-capture-content-r91.relatorio-disponibilidade-colorido .disp-report-compact-hours td{
  height:auto!important;
  min-height:0!important;
  padding:3px 3px!important;
  font-size:8px!important;
  line-height:1.02!important;
}

#reportCaptureModeR91 .report-capture-content-r91.relatorio-disponibilidade-colorido .disp-report-item-cell b{
  gap:3px!important;
  font-size:8.5px!important;
  line-height:1!important;
}

#reportCaptureModeR91 .report-capture-content-r91.relatorio-disponibilidade-colorido .disp-report-item-cell small{
  margin-top:1px!important;
  font-size:6.4px!important;
  line-height:1!important;
}

/* --------------------------------------------------------------------------
   RELATÓRIO DE ALOCAÇÃO — o Modo Print também conserva a tabela compacta.
   -------------------------------------------------------------------------- */
#reportCaptureModeR91 .report-capture-content-r91.relatorio-alocacao-total-frente .rel-paradas-section{
  margin:6px 0!important;
  padding:0!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
  overflow:visible!important;
}

#reportCaptureModeR91 .report-capture-content-r91.relatorio-alocacao-total-frente .rel-paradas-section > h3{
  display:block!important;
  margin:0 0 4px!important;
  padding:0!important;
  font-size:12px!important;
  line-height:1.05!important;
}

#reportCaptureModeR91 .report-capture-content-r91.relatorio-alocacao-total-frente .rel-paradas-section > h3::before{
  display:none!important;
  content:none!important;
}

#reportCaptureModeR91 .report-capture-content-r91.relatorio-alocacao-total-frente .rel-paradas-table-shell{
  padding:0!important;
  overflow:visible!important;
}

#reportCaptureModeR91 .report-capture-content-r91.relatorio-alocacao-total-frente .report-table-obs-apont{
  width:100%!important;
  border-radius:0!important;
  border-collapse:collapse!important;
  box-shadow:none!important;
}

#reportCaptureModeR91 .report-capture-content-r91.relatorio-alocacao-total-frente .report-table-obs-apont th,
#reportCaptureModeR91 .report-capture-content-r91.relatorio-alocacao-total-frente .report-table-obs-apont td{
  height:auto!important;
  min-height:0!important;
  padding:3px 4px!important;
  font-size:8px!important;
  line-height:1.04!important;
  vertical-align:middle!important;
}

@media print{
  html,body,.report-print-root,.report-print-root *{
    -webkit-print-color-adjust:exact!important;
    print-color-adjust:exact!important;
  }
}
