/* Controle de rolagem horizontal
   - menus principais e barras de filtros podem rolar lateralmente;
   - conteúdo, submenus e formulários/modais nunca criam rolagem horizontal. */
html,body{max-width:100%;overflow-x:hidden!important;overflow-y:auto}
*,*::before,*::after{box-sizing:border-box}
img,video,canvas,svg,iframe{max-width:100%;height:auto}
main,section,article,header,footer,div,form,fieldset,label{min-width:0;max-width:100%}
input,select,textarea,button{max-width:100%;min-width:0}

/* Seleção de equipamentos da escala: busca e caixas de marcação. */
.schedule-equipment-picker{display:grid;gap:8px;width:100%;max-height:300px;overflow-x:hidden!important;overflow-y:auto!important;padding:8px;border:1px solid #d9dce3;border-radius:12px;background:#fff}
.schedule-equipment-option{display:flex;align-items:flex-start;gap:10px;width:100%;padding:11px;border:1px solid #e0e3e9;border-radius:10px;cursor:pointer}
.schedule-equipment-option input{flex:0 0 auto;width:20px;height:20px;margin-top:2px}
.schedule-equipment-option span{display:grid;gap:3px;min-width:0}
.schedule-equipment-option strong,.schedule-equipment-option small{overflow-wrap:anywhere}
.schedule-equipment-option:has(input:checked){border-color:#ed1018;background:#fff2f3}
.schedule-equipment-empty{margin:8px}

/* Exceções autorizadas: navegação principal e filtros. */
.tabs,.ops-nav,.monitor-nav,.fleet-tabs,
.schedule-filters,.report-filters,.ranking-filters,.smart-filters,.tracking-filters,.filters,.location-filters,
.calendar-toolbar{
  max-width:100%;
  overflow-x:auto!important;
  overflow-y:hidden!important;
  overscroll-behavior-inline:contain;
  -webkit-overflow-scrolling:touch;
  scrollbar-width:thin;
}
.tabs,.ops-nav,.monitor-nav,.fleet-tabs{flex-wrap:nowrap!important}
.tabs>*,.ops-nav>*,.monitor-nav>*,.fleet-tabs>*{flex:0 0 auto}
.report-filters,.ranking-filters,.smart-filters,.tracking-filters,.filters,.location-filters{display:flex!important;flex-wrap:nowrap!important;align-items:end}
.report-filters>*,.ranking-filters>*,.smart-filters>*,.tracking-filters>*,.filters>*,.location-filters>*{flex:0 0 220px;min-width:220px;max-width:220px}

/* Escala: funcionários e filtros são réguas horizontais, não grades móveis. */
#schedules .schedule-people{
  display:flex!important;
  flex-wrap:nowrap!important;
  gap:12px;
  width:100%;
  max-width:100%;
  overflow-x:auto!important;
  overflow-y:hidden!important;
  overscroll-behavior-inline:contain;
  -webkit-overflow-scrolling:touch;
  scrollbar-width:thin;
}
#schedules .schedule-people>*{flex:0 0 220px;min-width:220px;max-width:220px}
#schedules .schedule-filters{
  display:flex!important;
  flex-wrap:nowrap!important;
  align-items:flex-end;
  width:100%;
  max-width:100%;
  overflow-x:auto!important;
  overflow-y:hidden!important;
  overscroll-behavior-inline:contain;
  -webkit-overflow-scrolling:touch;
  scrollbar-width:thin;
}
#schedules .schedule-filters>.field{flex:0 0 220px;min-width:220px;max-width:220px;width:220px!important}
#schedules .schedule-filters>.button{flex:0 0 160px;min-width:160px;max-width:160px;width:160px!important}

/* Tabelas comuns se ajustam ao painel sem gerar uma segunda barra lateral. */
.table-wrap,.location-table-wrap{width:100%;max-width:100%;overflow-x:hidden!important}
table{width:100%;max-width:100%;table-layout:fixed}
th,td{white-space:normal!important;overflow-wrap:anywhere;word-break:break-word}

/* Escala: calendário e relatório precisam preservar as colunas no celular.
   A rolagem fica contida no próprio componente e não desloca a página. */
#schedules .schedule-calendar-shell,
#schedules>.table-wrap{
  max-width:100%;
  overflow-x:auto!important;
  overflow-y:hidden!important;
  overscroll-behavior-inline:contain;
  -webkit-overflow-scrolling:touch;
  scrollbar-width:thin;
}
#schedules>.table-wrap{width:100%}
#schedules .calendar-toolbar,
#schedules .calendar-weekdays,
#schedules .schedule-calendar{
  width:900px!important;
  min-width:900px!important;
  max-width:none!important;
}
#schedules>.table-wrap>table{
  width:100%;
  min-width:1180px;
  max-width:none!important;
  table-layout:auto;
}
#schedules>.table-wrap th,
#schedules>.table-wrap td{
  white-space:nowrap!important;
  overflow-wrap:normal;
  word-break:normal;
  vertical-align:top;
}
#schedules>.table-wrap .schedule-activity{
  min-width:190px;
  max-width:320px;
  white-space:normal;
  overflow-wrap:break-word;
}
#schedules>.table-wrap .product-actions{min-width:150px}

/* Cartões e ações internas quebram linha dentro do próprio módulo. */
.cards,.agent-grid,.device-grid,.infrastructure-grid,.vehicle-grid,.fleet-list{min-width:0}
.project-actions,.product-actions,.card-actions,.schedule-heading-actions,
.fleet-toolbar>div:last-child,.view-head>div:last-child{flex-wrap:wrap}

/* Submenus e formulários: somente rolagem vertical. */
dialog{
  max-width:min(94vw,1000px);
  overflow-x:hidden!important;
  overflow-y:auto;
}
dialog .dialog-form,dialog .ops-form,dialog .bi-form,dialog .monitor-form{
  width:100%;
  max-width:100%!important;
  min-width:0!important;
  overflow-x:hidden!important;
  overflow-y:auto;
}
dialog .dialog-form *,dialog .ops-form *,dialog .bi-form *,dialog .monitor-form *{
  min-width:0;
  max-width:100%;
}
dialog .columns,dialog .grid2,dialog .grid3,dialog .form-grid{
  grid-template-columns:repeat(2,minmax(0,1fr));
  width:100%;
}
dialog input,dialog select,dialog textarea,dialog button{
  box-sizing:border-box;
  max-width:100%;
}
dialog input:not([type=checkbox]):not([type=radio]),dialog select,dialog textarea{width:100%}

@media(max-width:700px){
  th,td{padding-left:6px!important;padding-right:6px!important;font-size:.78rem}
  .ops-shell,.monitor-shell,.fleet-shell{max-width:100%;overflow-x:hidden}
  dialog .columns,dialog .grid2,dialog .grid3,dialog .form-grid{grid-template-columns:1fr!important}
}
