/* SV Seguros V440 — layout adaptativo PC / portátil / tablet / telemóvel
   Camada exclusivamente visual. Não altera dados nem regras de negócio. */
:root{
  --sv440-touch:44px;
  --sv440-gap:12px;
  --sv440-page-max:1920px;
  --sv440-sidebar-max:272px;
}
*{box-sizing:border-box}
html,body{max-width:100%;overflow-x:hidden}
img,svg,video,canvas{max-width:100%}
.app,.content,.view,.panel,.table-panel{min-width:0}
.content{width:100%}

/* PC / ecrã grande: aproveitar largura sem esticar texto indefinidamente. */
@media(min-width:1500px){
  .content{max-width:var(--sv440-page-max)!important;margin-inline:auto!important;padding-left:34px!important;padding-right:34px!important}
  .panel,.table-panel,.card{border-radius:16px}
}
@media(min-width:1921px){
  .content{padding-left:42px!important;padding-right:42px!important}
}

/* Portátil / ecrã intermédio */
@media(min-width:1025px) and (max-width:1499px){
  .content{padding-left:22px!important;padding-right:22px!important}
  .topbar{gap:14px!important}
}

/* A grelha nunca rebenta a página: a tabela é que faz scroll horizontal. */
.table-panel,.table-wrap,.v416-table-wrap,.v432-tablewrap,.v433-tablewrap,.v434-tablewrap,
.v437-tablewrap,.client-geography-table-wrap,.client-geography-correction-table-wrap,
.admin-client-audit-table-wrap,.reports-table-wrap,.cotacoes-table-wrap{
  max-width:100%;overflow-x:auto!important;-webkit-overflow-scrolling:touch;overscroll-behavior-inline:contain;
  scrollbar-gutter:stable both-edges;
}
.table-panel table,.table-wrap table,.v416-table,.v432-table,.v433-table,.v434-table,.v437-table{max-width:none}

/* Cabeçalhos de tabela mais fáceis de seguir em listas longas. */
@media(min-width:701px){
  .table-panel thead th,.v416-table thead th,.v432-table thead th,.v433-table thead th,.v434-table thead th,.v437-table thead th{
    position:sticky;top:0;z-index:2;
  }
}

/* Filtros dos módulos mais recentes. */
.v434-filters,.v433-filters,.v437-filters{min-width:0}
@media(min-width:1201px) and (max-width:1550px){
  .v434-filters,.v437-filters{grid-template-columns:repeat(4,minmax(0,1fr))!important}
  .v434-filters .v434-search,.v437-filters .v437-search{grid-column:span 2!important}
}
@media(min-width:901px) and (max-width:1200px){
  .v434-filters,.v433-filters,.v437-filters{grid-template-columns:repeat(3,minmax(0,1fr))!important}
  .v434-filters .v434-search,.v433-filters .v433-search,.v437-filters .v437-search{grid-column:1/-1!important}
  .v434-kpis,.v433-kpis,.v432-kpis,.v437-kpis,#cotacoes .cotacoes-kpis-v429{grid-template-columns:repeat(3,minmax(0,1fr))!important}
  .v416-kpis{grid-template-columns:repeat(3,minmax(0,1fr))!important}
}
@media(min-width:701px) and (max-width:900px){
  .v434-filters,.v433-filters,.v437-filters{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .v434-filters .v434-search,.v433-filters .v433-search,.v437-filters .v437-search{grid-column:1/-1!important}
  .v434-kpis,.v433-kpis,.v432-kpis,.v437-kpis,#cotacoes .cotacoes-kpis-v429,.v416-kpis{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}

/* Diálogos. */
dialog,.modal,.v432-dialog,.retention-dialog,.retention-history-dialog,.client-geography-dialog,
.client-geography-missing-dialog,.admin-client-audit-dialog,.admin-bulk-email-detail-dialog,
.admin-bulk-html-preview-dialog{max-width:calc(100vw - 24px)}
.modal-head,.v432-dhead,.retention-auto-head,.client-geography-head,.record-dialog-head{min-width:0}
.record-dialog-head-actions,.sv-window-head-actions,.v416-head>div:last-child{display:flex!important;align-items:center!important;gap:10px!important;flex:0 0 auto!important}

/* Área mínima para toque. */
@media(pointer:coarse){
  button,.primary,.secondary,.filter,.icon-btn,.nav-item,.v432-btn,.v434-btn,.v437-btn,.v434-clear,.v437-clear,
  input,select,textarea{min-height:var(--sv440-touch)}
}

/* Tablet */
@media(min-width:701px) and (max-width:1024px){
  .content{padding-left:16px!important;padding-right:16px!important}
  .toolbar,.filters,.topbar,.v432-head,.v434-top,.v437-top{flex-wrap:wrap!important}
  dialog,.v432-dialog,.retention-dialog,.retention-history-dialog{width:min(95vw,980px)!important;max-height:93dvh!important}
}

/* Telemóvel */
@media(max-width:700px){
  body{font-size:14px}
  .app{max-width:100vw!important}
  .content{padding-left:9px!important;padding-right:9px!important;padding-bottom:max(24px,env(safe-area-inset-bottom))!important;overflow-x:hidden!important}
  .topbar{gap:8px!important;margin-bottom:12px!important;align-items:flex-start!important}
  .topbar-main{min-width:0!important;flex:1 1 auto!important}
  .topbar h1,.topbar h2{font-size:20px!important;line-height:1.15!important;overflow-wrap:anywhere}
  .topbar p{font-size:11px!important;line-height:1.35!important;max-width:none!important}
  .user-chip{max-width:48vw!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

  /* Menu lateral mantém-se drawer e deixa margem visual. */
  .sidebar{width:min(86vw,320px)!important;max-width:320px!important;padding-bottom:max(14px,env(safe-area-inset-bottom))!important}
  .app.mobile-nav-open .sidebar{box-shadow:18px 0 48px rgba(22,30,44,.24)}
  .nav-item{min-height:46px!important}
  .mobile-menu-toggle{min-width:44px!important;min-height:44px!important}

  /* Filtros / barras: uma coluna, sem campos esmagados. */
  .toolbar,.filters,.v432-head,.v434-top,.v437-top,.cotacoes-layout-v429 .toolbar{align-items:stretch!important}
  .v434-filters,.v433-filters,.v437-filters,.v416-tools{grid-template-columns:1fr!important;gap:8px!important;padding:10px!important}
  .v434-filters .v434-search,.v433-filters .v433-search,.v437-filters .v437-search,.v416-tools label:nth-child(3){grid-column:auto!important}
  .v434-clear,.v437-clear,.v434-btn,.v437-btn,.v433-clear,.v416-refresh{width:100%!important}
  .v437-top-actions{display:grid!important;grid-template-columns:1fr 1fr!important;width:100%!important;gap:8px!important}

  /* Cartões KPI legíveis em duas colunas. */
  .v434-kpis,.v433-kpis,.v432-kpis,.v437-kpis,#cotacoes .cotacoes-kpis-v429,.v416-kpis{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:8px!important;
  }
  .v434-kpi,.v433-kpi,.v432-kpi,.v437-kpi,.cotacoes-kpi-v429,.v416-kpi{min-height:78px!important;padding:10px!important}
  .v434-kpi strong,.v433-kpi strong,.v432-kpi strong,.v437-kpi strong,.cotacoes-kpi-v429>strong,.v416-kpi strong{font-size:20px!important}

  /* Tabelas: scroll horizontal controlado em vez de texto ilegível. */
  .table-panel,.table-wrap,.v416-table-wrap,.v432-tablewrap,.v433-tablewrap,.v434-tablewrap,.v437-tablewrap{border-radius:12px!important;max-width:100%!important}
  .v416-table{min-width:980px!important}.v432-table,.v433-table{min-width:940px!important}.v434-table,.v437-table{min-width:1180px!important}
  th,td{font-size:11px}

  /* Modais quase full-screen, cabeçalho e rodapé sempre acessíveis. */
  dialog,.modal,.v432-dialog,.retention-dialog,.retention-history-dialog,.client-geography-dialog,.client-geography-missing-dialog,
  .admin-client-audit-dialog,.admin-bulk-email-detail-dialog,.admin-bulk-html-preview-dialog{
    width:calc(100vw - 8px)!important;max-width:calc(100vw - 8px)!important;max-height:97dvh!important;margin:auto!important;border-radius:14px!important;
  }
  dialog::backdrop{background:rgba(15,23,42,.34)}
  .modal-head,.v432-dhead,.record-dialog-head,.retention-auto-head{position:sticky!important;top:0!important;z-index:8!important;background:#fff!important}
  .modal-body,.v432-dbody{padding:12px!important;overflow-wrap:anywhere}
  .v432-dbody{grid-template-columns:1fr!important}
  .v432-span2,.v432-hist,.v432-msg{grid-column:1!important}
  .modal-actions,.v432-dfoot{position:sticky!important;bottom:0!important;background:#fff!important;z-index:8!important;padding:10px 12px!important;flex-wrap:wrap!important}
  .modal-actions>button,.v432-dfoot>button{flex:1 1 140px}

  /* Botões de janela juntos, iguais e fáceis de tocar. */
  .record-dialog-head-actions,.sv-window-head-actions,.v416-head>div:last-child{gap:8px!important}
  .record-dialog-head-actions button,.sv-window-head-actions button,.v416-head>div:last-child button{width:44px!important;height:44px!important;min-width:44px!important;padding:0!important;border-radius:999px!important}

  /* Formulários em grelha passam a uma coluna. */
  .form-grid,.two-col,.two-column,.details-grid,.v432-form-grid{grid-template-columns:1fr!important}
  textarea{max-width:100%!important}
}

@media(max-width:420px){
  .v434-kpis,.v433-kpis,.v432-kpis,.v437-kpis,#cotacoes .cotacoes-kpis-v429,.v416-kpis{grid-template-columns:1fr!important}
  .v437-top-actions{grid-template-columns:1fr!important}
  .content{padding-left:7px!important;padding-right:7px!important}
  .topbar h1,.topbar h2{font-size:19px!important}
}

/* Telemóvel horizontal: evitar que o modal ultrapasse a altura útil. */
@media(max-height:540px) and (orientation:landscape){
  dialog,.modal,.v432-dialog,.retention-dialog,.retention-history-dialog{max-height:98dvh!important}
  .modal-body,.v432-dbody{padding-top:8px!important;padding-bottom:8px!important}
}

/* Menos trabalho gráfico em dispositivos lentos / preferência do utilizador. */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}
}

/* V441 — afinação visual adicional: PC + telemóvel, com tabelas-chave em cartões no ecrã pequeno. */
@media(min-width:1200px){
  .panel,.table-panel{margin-bottom:16px!important}
  .v434-kpis,.v437-kpis,#cotacoes .cotacoes-kpis-v429,.v416-kpis{gap:12px!important}
  .v434-table td,.v437-table td,.v416-table td,#cotacoes .table-panel td{vertical-align:top}
}

@media(max-width:700px){
  /* Recuperação: no telemóvel deixa de obrigar a percorrer 11 colunas na horizontal. */
  .v434-table,.v437-table{min-width:0!important;width:100%!important;display:block!important}
  .v434-table thead,.v437-table thead{display:none!important}
  .v434-table tbody,.v437-table tbody{display:block!important;width:100%!important}
  .v434-table tr,.v437-table tr{display:block!important;background:#fff;border:1px solid #dfe6ef;border-radius:14px;margin:0 0 10px;padding:7px 10px;box-shadow:0 2px 8px rgba(28,44,66,.05)}
  .v434-table td,.v437-table td{display:grid!important;grid-template-columns:minmax(108px,34%) minmax(0,1fr);gap:9px;padding:7px 2px!important;border:0!important;border-bottom:1px solid #eef2f7!important;white-space:normal!important;min-width:0!important;overflow-wrap:anywhere}
  .v434-table td:last-child,.v437-table td:last-child{border-bottom:0!important}
  .v434-table td::before,.v437-table td::before{font-size:10px;font-weight:900;letter-spacing:.03em;text-transform:uppercase;color:#6a7b90;line-height:1.3}
  .v434-table td:nth-child(1)::before,.v437-table td:nth-child(1)::before{content:'Cliente'}
  .v434-table td:nth-child(2)::before,.v437-table td:nth-child(2)::before{content:'Ramo perdido'}
  .v434-table td:nth-child(3)::before,.v437-table td:nth-child(3)::before{content:'Apólice'}
  .v434-table td:nth-child(4)::before,.v437-table td:nth-child(4)::before{content:'Seguradora'}
  .v434-table td:nth-child(5)::before,.v437-table td:nth-child(5)::before{content:'Último prémio'}
  .v434-table td:nth-child(6)::before,.v437-table td:nth-child(6)::before{content:'Motivo perda'}
  .v434-table td:nth-child(7)::before,.v437-table td:nth-child(7)::before{content:'Data perda'}
  .v434-table td:nth-child(8)::before,.v437-table td:nth-child(8)::before{content:'Recuperar em'}
  .v434-table td:nth-child(9)::before,.v437-table td:nth-child(9)::before{content:'Estado'}
  .v434-table td:nth-child(10)::before,.v437-table td:nth-child(10)::before{content:'Responsável'}
  .v434-table td:nth-child(11)::before,.v437-table td:nth-child(11)::before{content:'Ações'}
  .v434-actions{justify-content:flex-start!important}
  .v434-actions .v434-btn{width:auto!important;min-width:120px}

  /* Cotações: cartões verticais no telemóvel. */
  #cotacoes .table-panel{overflow:visible!important}
  #cotacoes .table-panel table{min-width:0!important;width:100%!important;display:block!important}
  #cotacoes .table-panel thead{display:none!important}
  #cotacoes .table-panel tbody{display:block!important}
  #cotacoes .table-panel tr{display:block!important;border:1px solid #dfe6ef;border-radius:14px;background:#fff;margin:0 0 10px;padding:7px 10px}
  #cotacoes .table-panel td{display:grid!important;grid-template-columns:minmax(102px,32%) minmax(0,1fr);gap:8px;padding:7px 2px!important;border:0!important;border-bottom:1px solid #eef2f7!important;white-space:normal!important;overflow-wrap:anywhere}
  #cotacoes .table-panel td:last-child{border-bottom:0!important}
  #cotacoes .table-panel td::before{font-size:10px;font-weight:900;text-transform:uppercase;color:#6a7b90}
  #cotacoes .table-panel td:nth-child(1)::before{content:'Data'}
  #cotacoes .table-panel td:nth-child(2)::before{content:'Origem'}
  #cotacoes .table-panel td:nth-child(3)::before{content:'Cliente'}
  #cotacoes .table-panel td:nth-child(4)::before{content:'Contacto'}
  #cotacoes .table-panel td:nth-child(5)::before{content:'Pedido'}
  #cotacoes .table-panel td:nth-child(6)::before{content:'Ramo'}
  #cotacoes .table-panel td:nth-child(7)::before{content:'Estado'}
  #cotacoes .table-panel td:nth-child(8)::before{content:'Ações'}

  /* Retenção Automóvel: a mesma leitura por cartão, sem tabela de 980px. */
  .v416-table{min-width:0!important;width:100%!important;display:block!important}
  .v416-table thead{display:none!important}
  .v416-table tbody{display:block!important}
  .v416-table tr{display:block!important;border:1px solid #dfe6ef;border-radius:14px;background:#fff;margin:0 0 10px;padding:7px 10px}
  .v416-table td{display:grid!important;grid-template-columns:minmax(105px,33%) minmax(0,1fr);gap:8px;padding:7px 2px!important;border:0!important;border-bottom:1px solid #eef2f7!important;white-space:normal!important;overflow-wrap:anywhere}
  .v416-table td:last-child{border-bottom:0!important}
  .v416-table td::before{font-size:10px;font-weight:900;text-transform:uppercase;color:#6a7b90}
  .v416-table td:nth-child(1)::before{content:'Cliente'}
  .v416-table td:nth-child(2)::before{content:'Seguradora'}
  .v416-table td:nth-child(3)::before{content:'Apólice / recibo'}
  .v416-table td:nth-child(4)::before{content:'Vencimento'}
  .v416-table td:nth-child(5)::before{content:'Prémio anterior'}
  .v416-table td:nth-child(6)::before{content:'Renovação'}
  .v416-table td:nth-child(7)::before{content:'Diferença'}
  .v416-table td:nth-child(8)::before{content:'Variação'}
  .v416-table td:nth-child(9)::before{content:'Prioridade'}
  .v416-table td:nth-child(10)::before{content:'Ações'}
  .v416-table-wrap{overflow:visible!important}

  /* Filtros ficam logo acessíveis sem ocupar metade do ecrã com margens. */
  .v434-filters,.v433-filters,.v437-filters,.v416-tools{position:relative!important;margin-bottom:10px!important}
  .v434-top h2,.v437-top h2{font-size:20px!important;margin-bottom:4px!important}
  .v434-sub{font-size:11px!important;line-height:1.35!important}
}
