/* Comercial FERCOPOR — estilos específicos, carregados DEPOIS do FERCOPOR Design System (ver ds.lock.json):
   as regras da camada visual que só o Comercial usa (calendário, agenda, resumo do Início, lembretes, agendamento…),
   a pesquisa da equipa, o carregamento e as Oportunidades Comerciais. Os tokens e os componentes comuns estão no DS. */
/* ---------- Tipografia ---------- */
.cal-mes h1, .detalhe h1 { font-family: var(--ds-serifa); font-weight: 600; letter-spacing: -.01em; color: var(--ds-texto); }
.cal-mes h1 { font-size: clamp(28px, 4vw, 34px); }
.detalhe h1 { font-size: 22px; line-height: 1.25; }
.ag-dia h2, .cab-calendario, .sem-resultado-cab h2 { font-family: var(--ds-serifa); font-weight: 600; letter-spacing: -.005em; }
.grupo-inicio, .etiqueta-dia, .titulo-grupo-links, .pre-visualizacao .rotulo, .detalhe .tipo { font-family: var(--letra); font-size: var(--ds-t-etiqueta); font-weight: 700; letter-spacing: .16em; text-transform: uppercase; color: var(--ds-dourado); }
.grupo-inicio { margin-top: var(--ds-e2); display: flex; align-items: center; gap: var(--ds-e3); }
.grupo-inicio::after { content: ""; flex: 1; height: 1px; background: linear-gradient(90deg, var(--ds-linha-forte), transparent); }
.botao-mais { width: 44px; height: 44px; font-size: 0; background: linear-gradient(160deg, #94803F, var(--ds-dourado) 60%); box-shadow: 0 4px 14px rgba(126, 106, 50, .35), inset 0 1px 0 rgba(255, 255, 255, .18); transition: transform var(--ds-rapido) var(--ds-curva), box-shadow var(--ds-rapido) ease; }
.botao-mais::before { content: ""; width: 18px; height: 18px; background: #FFFFFF; -webkit-mask: var(--ds-icone-mais) center / contain no-repeat; mask: var(--ds-icone-mais) center / contain no-repeat; }
.botao-mais:active { transform: scale(.94); }
.rodape-fixo { bottom: calc(74px + env(safe-area-inset-bottom)); padding-bottom: 12px; }
@media (min-width: 900px) {
  .rodape-fixo { bottom: 0; }
  }
.quadrado { width: 44px; min-height: 44px; border-radius: var(--ds-r-pilula); }
.botao-registar { min-height: 40px; border-radius: var(--ds-r-pilula); }
.botao-microfone { border-radius: var(--ds-r-pilula); }
/* ---------- Superfícies: cartões, painéis, detalhes ---------- */
.detalhe, .classificar, .contacto-escolhido, .resultados-pesquisa, .calendario, .sem-resultado, .barra-vistas { border-radius: var(--ds-r-cartao); border-color: var(--ds-linha); box-shadow: var(--ds-sombra-2); }
.detalhe { padding: 20px; gap: 14px; }
.cartao .horas { min-width: 56px; padding-right: 14px; border-right: 1px solid var(--ds-linha); }
.cartao .horas strong { font-size: 17px; font-weight: 700; letter-spacing: -.01em; }
.cartao .titulo { font-size: 15.5px; font-weight: 650; line-height: 1.3; }
.cartao.outlook { background: var(--ds-superficie-2); }
.notas { border-radius: var(--ds-r); background: var(--ds-superficie-2); border-color: var(--ds-linha); }
.pre-visualizacao { background: var(--ds-dourado-vela); border-radius: var(--ds-r-cartao); padding: 16px; }
.espera { border-radius: var(--ds-r); background: var(--ds-dourado-vela); border-color: var(--ds-linha); }
.zona-demo { border-radius: 22px; }
.resumo { gap: 10px; }
.resumo a { position: relative; padding: 14px 14px 12px; gap: 4px; border-radius: var(--ds-r-cartao); border-color: var(--ds-linha); background: linear-gradient(180deg, #FFFFFF, var(--ds-superficie-2)); box-shadow: var(--ds-sombra-1); transition: transform var(--ds-medio) var(--ds-curva), box-shadow var(--ds-medio) var(--ds-curva), border-color var(--ds-rapido) ease; }
.resumo a::before { content: ""; width: 34px; height: 34px; margin-bottom: 6px; border-radius: 11px; background-color: var(--ds-dourado-vela); background-image: none; display: block; position: relative; -webkit-mask: none; mask: none; }
.resumo a::after { content: ""; position: absolute; top: 22px; left: 22px; width: 18px; height: 18px; background: var(--ds-dourado); -webkit-mask: var(--ds-icone-calendario) center / contain no-repeat; mask: var(--ds-icone-calendario) center / contain no-repeat; }
.resumo a:nth-child(2)::after { -webkit-mask-image: var(--ds-icone-proximas); mask-image: var(--ds-icone-proximas); }
.resumo a.ambar::after, .resumo a:nth-child(3)::after { -webkit-mask-image: var(--ds-icone-alerta); mask-image: var(--ds-icone-alerta); }
.resumo a.ambar { background: linear-gradient(180deg, #FFF8EA, var(--ds-aviso-fundo)); border-color: var(--ds-aviso-linha); }
.resumo a.ambar::before { background-color: rgba(255, 255, 255, .7); }
.resumo a.ambar::after { background: var(--ds-aviso); }
.resumo strong { font-size: 28px; font-weight: 750; letter-spacing: -.02em; line-height: 1.05; }
.resumo span { font-size: 13px; font-weight: 600; color: var(--ds-texto-2); }
.resumo a:hover { transform: translateY(-2px); box-shadow: var(--ds-sombra-2); border-color: var(--ds-linha-forte); }
.resumo a:active { transform: scale(.98); }
.contagens li { padding: 10px 0; border-top-color: var(--ds-linha); }
.contagens strong { font-weight: 750; }
/* ---------- Lembretes ---------- */
.lembrete { padding: 12px 0; border-top-color: var(--ds-linha); }
.lembrete a, .lembrete > span:nth-child(2) { font-weight: 650; line-height: 1.3; }
/* ---------- Pastilhas de estado ---------- */
.chip { font-size: 11.5px; font-weight: 700; letter-spacing: .01em; padding: 4px 10px; line-height: 1.2; }
.r-SCHEDULED { background: var(--ds-info-fundo); }
.r-COMPLETED { background: var(--ds-sucesso-fundo); }
.e-atraso { background: var(--ds-erro-fundo); }
.cal-vistas button, .vista-opcao { min-height: 42px; border-radius: var(--ds-r-pilula); border-color: var(--ds-linha-forte); background: var(--ds-superficie); font-weight: 600; transition: background-color var(--ds-rapido) ease, color var(--ds-rapido) ease, border-color var(--ds-rapido) ease, transform var(--ds-rapido) var(--ds-curva); }
.cal-vistas button[aria-pressed="true"], .vista-opcao[aria-pressed="true"] { background: var(--ds-grafite); border-color: var(--ds-grafite); color: var(--creme); box-shadow: 0 4px 12px rgba(28, 24, 16, .18); }
.grupo-vista { border-radius: var(--ds-r-pilula); border-color: var(--ds-linha-forte); padding: 3px; gap: 3px; background: var(--ds-superficie); }
.grupo-vista button { border-radius: var(--ds-r-pilula); min-height: 38px; }
.grupo-vista button[aria-pressed="true"] { background: var(--ds-grafite); color: var(--creme); }
.opcao[aria-pressed="true"] { background: var(--ds-grafite); border-color: var(--ds-grafite); color: var(--creme); }
.caixa-check input { accent-color: var(--ds-dourado); }
.opcao-tipo, .sala-linha { border-radius: var(--ds-r); border-color: var(--ds-linha-forte); }
.opcao-tipo:has(input:checked), .sala-linha:has(input:checked) { background: var(--ds-dourado-vela); }
.convidados li, .lista-simples li { border-radius: var(--ds-r); }
.titulo-bloco { font-family: var(--ds-serifa); font-size: 17px; font-weight: 600; border-bottom-color: var(--ds-linha); }
.resultados-pesquisa button:hover { background: var(--ds-dourado-vela); }
.rodape-fixo { background: var(--ds-fundo); border-top: 1px solid var(--ds-linha); padding-top: 12px; box-shadow: 0 -10px 18px -12px rgba(28, 24, 16, .18); }
/* ---------- Menus ---------- */
.menu-partilha { border-radius: 18px; border-color: var(--ds-linha); box-shadow: var(--ds-sombra-3); padding: 6px; transform-origin: top right; animation: ds-surgir var(--ds-medio) var(--ds-curva); }
.menu-partilha a, .menu-partilha button { border-radius: 12px; border-bottom: 0; min-height: 46px; }
.faixa-estado { border-radius: var(--ds-r-cartao); box-shadow: var(--ds-sombra-2); }
.sem-resultado { border-width: 1.5px; }
/* ---------- Calendário ---------- */
.cal-faixa { background: rgba(246, 244, 239, .92); -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px); border-bottom-color: var(--ds-linha); }
.cal-faixa strong { transition: background-color var(--ds-rapido) ease, color var(--ds-rapido) ease; }
.cal-faixa [aria-selected="true"] strong { background: var(--ds-dourado); box-shadow: 0 4px 12px rgba(126, 106, 50, .3); }
.ag-item { border-radius: var(--ds-r); padding: 12px 10px; margin: 0 -10px; }
.ag-item:hover { background: var(--ds-superficie); box-shadow: var(--ds-sombra-1); }
.ag-barra { border-radius: 4px; width: 4px; }
.ag-dia h2 { font-size: 21px; }
.ag-dia-inteiro { background: var(--ds-dourado-vela); border-radius: var(--ds-r); }
.cab-dia.hoje { background: var(--ds-dourado-vela); }
.evento { border-radius: 10px; box-shadow: 0 1px 2px rgba(28, 24, 16, .06); }
/* ---------- Computador ---------- */
@media (min-width: 900px) {
  .detalhe { padding: 22px 24px; }
  .resumo { gap: 14px; }
  }
/* Movimento reduzido: sem animações de entrada nem deslocações */
@media (prefers-reduced-motion: reduce) {
  .menu-partilha { animation: none !important; }
  .resumo a:hover { transform: none; }
  }
/* «Confirmar agendamento» fica no fim do formulário (não acompanha o scroll) */
.rodape-fixo { position: static; box-shadow: none; border-top: 0; padding: 16px 0 8px; background: transparent; }
/* Agendar › Tipologia: várias opções (T1…T6) em pílulas */
.campo-tipologias { border: 0; margin: 0; padding: 0; min-width: 0; }
.campo-tipologias legend { padding: 0; margin-bottom: 6px; font-weight: 700; }
.campo-tipologias legend .subtitulo { font-weight: 400; }
.chips-tipologia { display: flex; flex-wrap: wrap; gap: 5px; }
.chip-tipologia { position: relative; display: inline-flex; }
.chip-tipologia input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.chip-tipologia span { display: inline-flex; align-items: center; justify-content: center; min-width: 42px; min-height: 44px; padding: 0 8px; border: 1px solid var(--ds-linha-forte, #D9D5C9); border-radius: 999px; background: var(--ds-superficie, #FFFFFF); font-weight: 700; cursor: pointer; transition: background-color .15s ease, color .15s ease, border-color .15s ease; }
.chip-tipologia input:checked + span { background: var(--ds-preto, #141414); border-color: var(--ds-preto, #141414); color: var(--creme, #FFF9EB); }
.chip-tipologia input:focus-visible + span { outline: 3px solid var(--bronze, #7E6A32); outline-offset: 2px; }
.grelha-2 > .campo-tipologias { grid-column: 1 / -1; }
/* Agendar › «Adicionar da equipa FERCOPOR»: lista com pesquisa e várias escolhas */
.seletor-equipa { border: 1px solid var(--ds-linha-forte, #D9D5C9); border-radius: var(--ds-r, 14px); background: var(--ds-superficie, #FFFFFF); }
.seletor-equipa > summary { list-style: none; cursor: pointer; display: flex; flex-direction: column; gap: 2px; padding: 12px 44px 12px 16px; min-height: 50px; position: relative; }
.seletor-equipa > summary::-webkit-details-marker { display: none; }
.seletor-equipa > summary::after { content: ""; position: absolute; right: 18px; top: 50%; width: 9px; height: 9px; border-right: 2px solid var(--bronze, #7E6A32); border-bottom: 2px solid var(--bronze, #7E6A32); transform: translateY(-70%) rotate(45deg); transition: transform .15s ease; }
.seletor-equipa[open] > summary::after { transform: translateY(-30%) rotate(-135deg); }
.seletor-equipa .rotulo-campo { font-weight: 700; font-size: 14px; }
.seletor-equipa .resumo-equipa { color: var(--texto-3, #666666); font-size: 15px; }
.painel-equipa { padding: 0 12px 12px; display: flex; flex-direction: column; gap: 8px; }
.painel-equipa input[type="search"] { width: 100%; min-height: 44px; }
/* Lista de «Adicionar da equipa FERCOPOR»: classe própria (.lista-equipa é a das reuniões da equipa no Início) */
.lista-convidar-equipa { list-style: none; margin: 0; padding: 0; max-height: 320px; overflow-y: auto; border-top: 1px solid var(--linha, #E8E5DC); }
.lista-convidar-equipa li { border-bottom: 1px solid var(--linha, #E8E5DC); }
.lista-convidar-equipa .caixa-check { display: flex; align-items: center; gap: 12px; min-height: 52px; padding: 6px 4px; cursor: pointer; }
.lista-convidar-equipa .caixa-check span { display: flex; flex-direction: column; min-width: 0; }
.lista-convidar-equipa small { color: var(--texto-3, #666666); font-size: 12px; overflow-wrap: anywhere; }
.lista-convidar-equipa input[type="checkbox"] { width: 22px; height: 22px; flex: none; accent-color: var(--ds-preto, #141414); }
/* Pesquisa dentro de «Adicionar da equipa FERCOPOR»: o mesmo aspeto dos outros campos */
.painel-equipa input[type="search"] { box-sizing: border-box; padding: 0 14px; border: 1px solid var(--ds-linha-forte, #D9D5C9); border-radius: var(--ds-r, 14px); background: var(--ds-superficie, #FFFFFF); font: inherit; font-size: 16px; color: var(--tinta, #202020); }
.painel-equipa input[type="search"]:focus { outline: none; border-color: var(--bronze, #7E6A32); box-shadow: var(--ds-anel-foco, 0 0 0 3px rgba(126, 106, 50, .25)); }
.tabela-cedencias td .esqueleto { margin: 3px 0; }
.lista-cedencias li .esqueleto + .esqueleto { margin-top: 12px; }


/* Oportunidades Comerciais (só computador): cartões de empreendimentos e frações, progresso da pesquisa, filtros,
   tabela de resultados com detalhe por linha. A classe de compatibilidade está sempre escrita (não só na cor). */
.op-grelha { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 16px; }
.op-cartao { justify-content: space-between; }
.op-cartao h2 { margin: 0; font-size: 20px; }
.op-cartao .botao { align-self: flex-start; }
.op-dados { margin: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 8px 16px; }
.op-dados div { min-width: 0; }
.op-dados dt { font-size: 12px; color: var(--texto-3); }
.op-dados dd { margin: 0; font-weight: 650; overflow-wrap: anywhere; }
.op-caminho { margin: 0; font-size: 17px; font-weight: 700; }
.op-resumo-fracao { margin: 0; color: var(--texto-2); }
.op-titulo-seccao { margin: 8px 0 0; font-size: 20px; }
.op-progresso { display: flex; flex-direction: column; gap: 6px; }
.op-progresso progress { width: 100%; max-width: 520px; height: 10px; accent-color: var(--bronze); }
.op-indicadores { grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); }
.op-parcial p { margin: 0 0 6px; }
.op-filtros { border: 1px solid var(--linha); border-radius: var(--raio); background: var(--superficie); padding: 12px 16px 8px; margin: 0;
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px 16px; align-items: end; }
.op-filtros legend { font-weight: 700; padding: 0 4px; }
.op-caixas { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: 4px 20px; }
.op-caixa { display: inline-flex; align-items: center; gap: 8px; min-height: 40px; font-size: 14px; cursor: pointer; }
.op-caixa input { width: 18px; height: 18px; accent-color: var(--bronze); }
.op-filtros [data-acao="op-limpar"] { justify-self: start; }
.tabela-op th, .tabela-op td { font-size: 13px; padding: 10px 8px; vertical-align: top; }
.tabela-op .num { text-align: right; white-space: nowrap; }
.tabela-op th[scope="row"] .botao-texto { min-height: 0; padding: 0; text-align: left; }
.op-linha { cursor: pointer; }
.op-linha:hover, .op-linha.aberta { background: var(--bronze-claro); }
.op-detalhe-linha td { background: var(--superficie); padding: 12px 16px 16px; }
.op-detalhe h3 { margin: 0 0 8px; font-size: 16px; }
.op-detalhe p { margin: 6px 0 0; }
.op-motivos { list-style: none; margin: 0; padding: 0; display: grid; gap: 4px; }
.op-motivos li { display: flex; gap: 8px; }
.op-motivos li.ok > span[aria-hidden] { color: var(--ds-sucesso, #245C45); font-weight: 800; }
.op-motivos li.info > span[aria-hidden] { color: var(--texto-3); }
.op-pontos { display: inline-block; min-width: 52px; padding: 2px 8px; border-radius: 999px; font-weight: 800; text-align: center; border: 1px solid var(--linha-forte); }
.op-pontos small { font-weight: 600; font-size: 11px; }
.op-muito-elevada { background: var(--ds-sucesso-fundo, #E7F2EC); color: var(--ds-sucesso, #245C45); border-color: currentColor; }
.op-elevada { background: var(--bronze-claro); color: var(--bronze-escuro); }
.op-moderada { background: var(--ambar-fundo); color: var(--ambar-texto); }
.op-reduzida { background: var(--fundo); color: var(--texto-2); }
.op-classe { font-size: 12px; font-weight: 650; }
.op-qualidade { display: block; font-size: 12px; color: var(--texto-3); margin-top: 2px; }
.botao-op { min-height: 36px; padding: 0 10px; font-size: 13px; white-space: nowrap; }
.op-paginacao { display: flex; align-items: center; gap: 12px; justify-content: flex-end; margin-top: 10px; }

/* Agenda da equipa (Diretora Comercial e ADM): seleção de colaboradores, cor fixa por pessoa (faixa à direita e etiqueta
   com o nome; a faixa da esquerda continua a ser a da tipologia) e reuniões simultâneas lado a lado */
.pc-0 { --cor-pessoa: #C2410C; } .pc-1 { --cor-pessoa: #0E7490; } .pc-2 { --cor-pessoa: #A21CAF; } .pc-3 { --cor-pessoa: #4D7C0F; }
.pc-4 { --cor-pessoa: #B91C1C; } .pc-5 { --cor-pessoa: #1D4ED8; } .pc-6 { --cor-pessoa: #A16207; } .pc-7 { --cor-pessoa: #475569; }
.agenda-equipa { display: flex; flex-wrap: wrap; gap: 8px; margin: 12px 0 4px; }
.filtro-pessoa { display: inline-flex; align-items: center; gap: 8px; min-height: 40px; padding: 0 14px; border: 1px solid var(--ds-linha-forte); border-radius: var(--ds-r-pilula); background: var(--ds-superficie); color: var(--tinta); font: inherit; font-weight: 600; cursor: pointer; }
.filtro-pessoa i { width: 10px; height: 10px; border-radius: 50%; background: var(--cor-pessoa); flex: none; }
.filtro-pessoa[aria-pressed="true"] { background: var(--ds-grafite); border-color: var(--ds-grafite); color: var(--creme); }
.filtro-pessoa[aria-pressed="true"] i { box-shadow: 0 0 0 2px var(--creme); }
.filtro-pessoa:focus-visible { outline: 3px solid var(--bronze); outline-offset: 2px; }
.filtro-todas { border-style: dashed; }
.filtro-todas[aria-pressed="true"] { border-style: solid; }
.etq-pessoa { display: inline-flex; align-items: center; gap: 4px; align-self: flex-start; max-width: 100%; padding: 0 6px; border: 1px solid var(--cor-pessoa); border-radius: 999px; background: #FFFFFF; color: #1C1B19; font-size: 11px; font-style: normal; font-weight: 700; line-height: 16px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.etq-pessoa::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: var(--cor-pessoa); flex: none; }
.evento.com-pessoa { box-shadow: inset -5px 0 0 var(--cor-pessoa), 0 1px 2px rgba(28, 24, 16, .06); padding-right: 10px; }
.evento.curto .etq-pessoa { flex: none; max-width: 45%; }
.ag-item.com-pessoa .etq-pessoa { border-width: 2px; }
.ag-item.com-pessoa .etq-pessoa { margin-bottom: 2px; }
.cab-dia .dia-inteiro.com-pessoa { border-left: 4px solid var(--cor-pessoa); }
.nota-agenda-equipa { margin-top: 8px; }
.evento.evento-mais { align-items: center; justify-content: center; border: 1px solid var(--ds-linha-forte); background: var(--ds-superficie); color: var(--tinta); font: inherit; font-size: 13px; font-weight: 800; cursor: pointer; }
.evento.evento-mais:hover { background: var(--bronze-claro); }
.evento.evento-mais:focus-visible { outline: 3px solid var(--bronze); outline-offset: 1px; }
.cal-dia.cal-pessoas { max-width: none; overflow-x: auto; }
.grelha-dia-pessoas { display: grid; grid-template-columns: 56px repeat(var(--colunas, 2), minmax(150px, 1fr)); }
.grelha-dia-pessoas .coluna-dia { border-left: 1px solid var(--linha); }
.cab-pessoa { display: flex; align-items: center; gap: 6px; padding: 8px 10px; border-left: 1px solid var(--linha); border-bottom: 3px solid var(--cor-pessoa); font-size: 13px; font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cab-pessoa i { width: 10px; height: 10px; border-radius: 50%; background: var(--cor-pessoa); flex: none; }
.evento.com-pessoa.curto .etq-pessoa { max-width: 50%; }
.evento.curto .etq-pessoa::before { display: none; }
/* ---------- Pré-lançamento (2026-11-04) ----------
   Menu «Calendário» (submenu do DS «nav-grupo»), registo na reunião (tabela comercial, frações, tipologias,
   características), aviso no telemóvel e Agenda de Pré-Lançamentos da Diretora Comercial (cor por responsável,
   reuniões simultâneas lado a lado, janela de detalhe). */
.nav-grupo { position: relative; display: flex; }
.nav-grupo > summary { display: flex; align-items: center; gap: 6px; list-style: none; cursor: pointer; font-size: 14px; }
.nav-grupo > summary::-webkit-details-marker { display: none; }
.nav-grupo > summary::after { content: ""; width: 6px; height: 6px; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: translateY(-2px) rotate(45deg); opacity: .8; }
.nav-grupo[open] > summary::after { transform: translateY(1px) rotate(-135deg); }
.nav-grupo-itens { position: absolute; left: 0; min-width: 260px; display: flex; flex-direction: column; border: 1px solid var(--ds-linha); }
.nav-grupo-itens a { display: flex; align-items: center; text-decoration: none; font-size: 14px; white-space: nowrap; }
.nav-grupo:last-of-type .nav-grupo-itens { left: 0; right: auto; transform-origin: top left; }   /* «Calendário» não é o último item do menu */
.tipo-prelancamento { background: #F3E8E1; color: #8A3B12; }
.ag-item.tipo-prelancamento .ag-barra { color: #8A3B12; }

/* Registo na reunião: blocos no topo da coluna direita */
.pre-bloco { display: flex; flex-direction: column; gap: 18px; padding-bottom: 18px; margin-bottom: 4px; border-bottom: 1px solid var(--ds-linha); }
.campo-pre { display: flex; flex-direction: column; gap: 8px; border: 0; padding: 0; margin: 0; min-width: 0; position: relative; }
.campo-pre > .rotulo-campo, .campo-pre > legend { font-size: 14px; font-weight: 700; color: var(--ds-texto); padding: 0; margin-bottom: 2px; }
.zona-ficheiro { position: relative; display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 18px 16px; text-align: center;
  border: 1.5px dashed var(--ds-linha-forte); border-radius: var(--ds-r-cartao); background: var(--ds-superficie-2); color: var(--ds-texto-2); }
.zona-ficheiro svg, .ficheiro-escolhido svg, .pre-tabelas svg { width: 24px; height: 24px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; flex: none; }
.zona-ficheiro svg { color: var(--ds-dourado); }
.zona-ficheiro p { margin: 0; font-size: 14px; }
.zona-ficheiro small { font-size: 12.5px; color: var(--texto-3); }
.zona-ficheiro label { cursor: pointer; text-decoration: underline; }
.zona-ficheiro.a-largar { border-color: var(--ds-dourado); background: var(--ds-dourado-vela); }
.zona-ficheiro:focus-within { outline: 3px solid var(--bronze); outline-offset: 2px; }
.entrada-ficheiro { position: absolute; width: 1px; height: 1px; opacity: 0; overflow: hidden; }
.ficheiro-escolhido { display: flex; align-items: center; gap: 12px; padding: 12px 14px; border: 1px solid var(--ds-linha-forte); border-radius: var(--ds-r-cartao); background: var(--ds-superficie); }
.ficheiro-escolhido span { display: flex; flex-direction: column; min-width: 0; flex: 1; }
.ficheiro-escolhido strong { overflow-wrap: anywhere; font-size: 14px; }
.ficheiro-escolhido small { font-size: 12.5px; color: var(--texto-3); }
.pre-tabelas { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.pre-tabelas li { display: flex; align-items: flex-start; gap: 8px; font-size: 14px; }
.pre-tabelas li span { display: flex; flex-direction: column; min-width: 0; }
.pre-tabelas a { font-weight: 700; overflow-wrap: anywhere; }
.pre-tabelas small { font-size: 12.5px; color: var(--texto-3); }
.pre-tabelas button.botao-texto { font-weight: 700; text-align: left; padding: 0; }
/* Versão da tabela comercial apresentada: lista pré-escolhida pela hora da reunião; o ficheiro fica como alternativa */
.versao-pre { display: flex; flex-direction: column; gap: 6px; }
.versao-pre > .rotulo-campo { font-size: 13.5px; font-weight: 600; color: var(--ds-texto-2); }
.versao-pre-linha { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.versao-pre select { flex: 1 1 280px; min-width: 0; min-height: 44px; padding: 0 12px; font: inherit; font-size: 15px; border: 1px solid var(--ds-linha-forte); border-radius: var(--ds-r); background: var(--ds-superficie); color: var(--ds-texto); }
.versao-pre .ajuda { font-size: 12.5px; color: var(--texto-3); }
.pre-outro-ficheiro summary { cursor: pointer; font-size: 13.5px; color: var(--ds-texto-2); padding: 4px 0; }
.pre-outro-ficheiro[open] summary { margin-bottom: 8px; }
.erro-campo { margin: 0; font-size: 13.5px; font-weight: 600; color: #A32020; }
.multi-pre { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; padding: 6px 8px; min-height: 48px; border: 1px solid var(--ds-linha-forte); border-radius: var(--ds-r); background: var(--ds-superficie); }
.multi-pre:focus-within { outline: 3px solid var(--bronze); outline-offset: 1px; }
.multi-pre input { flex: 1; min-width: 160px; min-height: 34px; border: 0; padding: 0 4px; font: inherit; font-size: 15px; background: transparent; }
.multi-pre input:focus { outline: none; }
.etiquetas-pre { display: contents; list-style: none; }
.etiquetas-pre li { display: inline-flex; align-items: center; gap: 2px; padding: 0 2px 0 10px; min-height: 32px; border-radius: var(--ds-r-pilula); background: var(--ds-grafite); color: var(--creme); font-size: 13.5px; font-weight: 700; }
.etiquetas-pre button { width: 28px; height: 28px; border: 0; border-radius: 50%; background: transparent; color: inherit; font-size: 17px; line-height: 1; cursor: pointer; }
.etiquetas-pre button:hover { background: rgba(255, 249, 235, .18); }
.etiquetas-pre button:focus-visible { outline: 2px solid var(--creme); outline-offset: -2px; }
.sugestoes-pre { position: absolute; z-index: 30; top: 100%; left: 0; right: 0; margin: 4px 0 0; padding: 4px; list-style: none; max-height: 260px; overflow-y: auto;
  border: 1px solid var(--ds-linha); border-radius: 14px; background: var(--ds-superficie); box-shadow: var(--ds-sombra-3); }
.sugestoes-pre li { min-height: 40px; display: flex; align-items: center; padding: 0 12px; border-radius: 10px; font-weight: 650; cursor: pointer; }
.sugestoes-pre li[aria-selected="true"], .sugestoes-pre li:hover { background: var(--ds-dourado-vela); }
.sugestoes-pre .sem-sugestao { color: var(--texto-3); font-weight: 500; cursor: default; }
.opcoes-pre { display: flex; flex-wrap: wrap; gap: 8px; }
.opcao-pre { position: relative; display: inline-flex; }
.opcao-pre input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.opcao-pre span { display: inline-flex; align-items: center; gap: 6px; min-height: 38px; padding: 0 14px; border: 1px solid var(--ds-linha-forte); border-radius: var(--ds-r-pilula); background: var(--ds-superficie); font-size: 14px; font-weight: 600; cursor: pointer; }
.opcao-pre input:checked + span { background: var(--ds-grafite); border-color: var(--ds-grafite); color: var(--creme); }
.opcao-pre input:checked + span::before { content: "✓"; font-weight: 800; }
.opcao-pre input:focus-visible + span { outline: 3px solid var(--bronze); outline-offset: 2px; }
/* Observação: a ajuda longa passou para um «?» compacto ao lado do «Ditar» */
.cab-observacao-acoes { display: inline-flex; align-items: center; gap: 8px; }
.ajuda-mini > summary { list-style: none; display: grid; place-items: center; width: 32px; height: 32px; border: 1px solid var(--ds-linha-forte); border-radius: 50%; font-size: 14px; font-weight: 800; color: var(--ds-texto-2); cursor: pointer; }
.ajuda-mini > summary::-webkit-details-marker { display: none; }
.ajuda-mini > summary:focus-visible { outline: 3px solid var(--bronze); outline-offset: 2px; }
.ajuda-mini[open] > summary { background: var(--ds-grafite); color: var(--creme); }
.ajuda-mini { position: relative; }
.ajuda-mini p { margin: 0 0 6px; font-size: 13px; line-height: 1.45; color: var(--ds-texto-2); }
.ajuda-mini[open] > p:first-of-type { margin-top: 8px; }
.ajuda-mini[open] { position: absolute; right: 0; top: 100%; z-index: 25; width: min(340px, 80vw); padding: 0 12px 6px; border: 1px solid var(--ds-linha); border-radius: 14px; background: var(--ds-superficie); box-shadow: var(--ds-sombra-3); }
.ajuda-mini[open] > summary { position: absolute; right: 0; top: -40px; }
.cab-observacao { position: relative; }
.aviso-computador { display: flex; gap: 14px; align-items: flex-start; padding: 16px 18px; border: 1px solid var(--ds-linha-forte); border-left: 4px solid var(--ds-dourado); border-radius: var(--ds-r-cartao); background: var(--ds-dourado-vela); }
.aviso-computador p { margin: 0 0 6px; font-size: 14.5px; line-height: 1.45; }
.aviso-computador p:last-child { margin-bottom: 0; }
.icone-aviso { width: 30px; height: 30px; flex: none; fill: none; stroke: #6E5A22; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.pre-resumo h2 { font-size: 16px; margin: 0 0 8px; }
.pre-resumo .linhas { display: flex; flex-direction: column; gap: 6px; font-size: 14px; }

/* Agenda de Pré-Lançamentos */
.cal-pre:focus-visible { outline: 3px solid var(--bronze); outline-offset: 2px; }
.evento.evento-pre { font: inherit; text-align: left; cursor: pointer; border: 0; border-left: 5px solid var(--cor-pessoa);
  background: color-mix(in srgb, var(--cor-pessoa) 11%, #FFFFFF); color: #1C1B19; }
.evento.evento-pre strong { color: color-mix(in srgb, var(--cor-pessoa) 78%, #000000); }
.evento.evento-pre .pre-cliente { overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow-wrap: anywhere; }
.evento.evento-pre small { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; color: #46423A; }
.evento.evento-pre:hover, .evento.evento-pre[aria-expanded="true"] { background: color-mix(in srgb, var(--cor-pessoa) 20%, #FFFFFF); z-index: 3; }
.evento.evento-pre:focus-visible { outline: 3px solid var(--bronze); outline-offset: 1px; z-index: 3; }
.evento.evento-pre.sem-cliente .pre-cliente { font-style: italic; }
.evento.evento-pre.estado-cancelada, .evento.evento-pre.estado-substituida { background: repeating-linear-gradient(135deg, #F4F2EE 0 6px, #ECE9E3 6px 12px); color: #5A564E; }
.evento.evento-pre.estado-cancelada .pre-cliente, .evento.evento-pre.estado-substituida .pre-cliente, .evento.evento-pre.estado-cancelada strong { text-decoration: line-through; }
.evento.evento-pre.estado-concluida strong::after { content: " ✓"; }
.evento.evento-pre.curto { flex-direction: row; align-items: center; gap: 6px; }
.evento.evento-pre.curto .pre-cliente, .evento.evento-pre.medio .pre-cliente { -webkit-line-clamp: 1; }
.evento.evento-pre.medio small { display: block; }
.legenda i.cor-pessoa { background: var(--cor-pessoa); border-color: var(--cor-pessoa); border-radius: 50%; }
.legenda i.legenda-cancelada { background: repeating-linear-gradient(135deg, #F4F2EE 0 3px, #D9D5CC 3px 6px); }
.pre-popover { position: fixed; z-index: 60; width: min(360px, calc(100vw - 16px)); max-height: calc(100vh - 16px); overflow-y: auto; padding: 16px 18px;
  border: 1px solid var(--ds-linha); border-radius: 18px; background: var(--ds-superficie); box-shadow: var(--ds-sombra-3); }
.pre-popover:focus { outline: none; }
.pre-popover:focus-visible { outline: 3px solid var(--bronze); }
.pre-popover h3 { margin: 0 0 8px; font-family: var(--ds-serifa); font-size: 19px; font-weight: 600; }
.pre-pop-dados { display: grid; grid-template-columns: auto 1fr; gap: 6px 12px; margin: 0 0 10px; font-size: 13.5px; }
.pre-pop-dados dt { color: var(--texto-3); font-weight: 600; }
.pre-pop-dados dd { margin: 0; font-weight: 600; overflow-wrap: anywhere; }
.pre-popover .sem-valor { color: var(--texto-3); font-weight: 500; }
.pre-popover p { margin: 0; font-size: 13.5px; }

/* Espera de um envio: etapa + aviso para não repetir */
.espera-textos { display: grid; gap: 2px; min-width: 0; }
.espera-aviso { font-size: 13.5px; color: var(--texto-2); }

/* ---------- Resultado comercial ao concluir e «Frações com possíveis propostas» (2026-11-10) ---------- */
.bloco-comercial { display: flex; flex-direction: column; gap: 12px; padding: 14px; border: 1px solid var(--ds-linha); border-radius: var(--ds-r-cartao); background: var(--ds-superficie); }
.bloco-comercial fieldset { margin: 0; padding: 0; border: 0; display: flex; flex-direction: column; gap: 8px; }
.bloco-comercial legend { font-weight: 700; margin-bottom: 6px; }
.bloco-comercial .ajuda { margin: 0; font-size: 13.5px; color: var(--texto-2); }
.linha-cliente { margin: 0; }
.sugestoes-comercial { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 2px; }
.sugestoes-comercial .botao-texto { min-height: 40px; text-align: left; }
.fracoes-escolhidas { display: flex; flex-direction: column; gap: 10px; }
.fracao-escolhida { display: flex; flex-direction: column; gap: 8px; padding: 12px; border: 1px solid var(--ds-linha); border-radius: var(--ds-r); background: var(--ds-superficie-2, var(--bronze-claro)); }
.fracao-titulo { margin: 0; overflow-wrap: anywhere; }
.lista-propostas { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
.proposta { display: grid; grid-template-columns: minmax(0, 1fr); row-gap: 2px; padding: 10px 0; border-top: 1px solid var(--linha); }
.proposta:first-child { border-top: 0; padding-top: 0; }
.proposta-fracao { font-weight: 700; color: var(--tinta); overflow-wrap: anywhere; }
.proposta-cliente { font-weight: 650; color: var(--bronze); width: fit-content; }
/* uma só linha, com reticências quando é longa (o texto completo fica no título e na nota do HubSpot) */
.proposta-obs { min-width: 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; font-size: 14px; }
.proposta-meta { font-size: 13px; color: var(--texto-3); }

/* Apresentação de frações (Material de Apoio) */
.bloco-apres { display: flex; flex-direction: column; gap: 14px; align-items: flex-start; }
.bloco-apres > .campo, .bloco-apres .apres-passo { width: 100%; max-width: 720px; }
.apres-passo { margin: 0; padding: 0; border: 0; }
.apres-passo legend { font-weight: 700; margin-bottom: 8px; }
.apres-fracoes { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.apres-fracao { display: grid; grid-template-columns: auto minmax(0, 1.6fr) minmax(0, .6fr) minmax(0, 1fr) minmax(0, .9fr); gap: 4px 12px; align-items: center; padding: 10px 12px; border: 1px solid var(--ds-linha); border-radius: var(--ds-r); background: var(--ds-superficie); cursor: pointer; min-height: 44px; }
.apres-fracao:has(input:checked) { border-color: var(--bronze); box-shadow: inset 0 0 0 1px var(--bronze); }
.apres-fracao:has(input:disabled) { cursor: default; color: var(--texto-2); }
.apres-fracao input { width: 20px; height: 20px; margin: 0; }
.apres-fracao-nome { font-weight: 700; }
.apres-estado { display: inline-block; margin-left: 6px; padding: 1px 8px; border-radius: 999px; border: 1px solid var(--ds-linha); font-size: 12.5px; font-weight: 600; color: var(--texto-2); }
.apres-idiomas { display: flex; flex-wrap: wrap; gap: 0 20px; }
.apres-idiomas .caixa-check { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; cursor: pointer; }
.apres-idiomas input { width: 20px; height: 20px; margin: 0; }
.apres-preco { font-variant-numeric: tabular-nums; }
.apres-acoes { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.apres-pronta { padding: 14px; border: 1px solid var(--ds-linha); border-radius: var(--ds-r-cartao); background: var(--ds-superficie); width: 100%; max-width: 720px; }
.apres-pronta p { margin: 0; }
.apres-pronta .campo { width: 100%; }
.bloco-apres .ajuda { margin: 0; font-size: 13.5px; color: var(--texto-2); }
@media (max-width: 640px) {
  .apres-fracao { grid-template-columns: auto 1fr auto; }
  .apres-fracao-nome { grid-column: 2 / 4; }
  .apres-fracao > span:nth-of-type(2) { grid-column: 2; }
  .apres-preco { grid-column: 3; text-align: right; }
  .apres-planta { grid-column: 2 / 4; font-size: 13.5px; }
  .apres-fracao input { grid-row: 1 / 4; align-self: start; margin-top: 2px; }
}

/* «i» dos painéis do Início: explicação ao passar o rato, ao focar ou ao tocar */
.cabecalho-seccao { position: relative; }
.info-painel { position: static; display: inline-flex; align-items: center; margin-left: 8px; vertical-align: middle; }
.botao-info { width: 24px; height: 24px; min-width: 24px; padding: 0; border-radius: 50%; border: 1px solid var(--linha, #d9d3c4); background: transparent; color: var(--texto-2, #555); font: italic 700 13px/1 Georgia, serif; cursor: help; display: inline-flex; align-items: center; justify-content: center; }
.botao-info::before { content: ''; position: absolute; inset: -10px; }
.botao-info:hover, .botao-info:focus-visible, .botao-info[aria-expanded="true"] { border-color: currentColor; color: var(--texto, #222); }
.info-texto { display: none; position: absolute; top: calc(100% + 6px); left: 0; z-index: 30; width: max-content; max-width: min(360px, 100%); padding: 10px 12px; background: #222; color: #fff; font-size: 13px; font-weight: 400; line-height: 1.45; letter-spacing: 0; text-transform: none; border-radius: 8px; box-shadow: 0 6px 20px rgba(0,0,0,.18); }
.info-painel:hover .info-texto, .botao-info:focus-visible + .info-texto, .botao-info[aria-expanded="true"] + .info-texto { display: block; }

/* Resultado comercial: frações do pré-lançamento (só leitura) */
.lista-fracoes-pre { display: flex; flex-wrap: wrap; gap: 6px; margin: 4px 0 8px; }
.lista-fracoes-pre .etiqueta { display: inline-block; padding: 4px 10px; border: 1px solid var(--linha, #d9d3c4); border-radius: 999px; font-size: 14px; font-weight: 600; }
.fracao-titulo .botao-texto { margin-left: 8px; font-size: 14px; }

/* Oportunidades › cliente: «humor» (média de satisfação dos tickets FX e Pós-venda) à esquerda do detalhe */
.op-seta { display: inline-block; margin-right: 6px; transition: transform .15s; }
[aria-expanded="true"] > .op-seta { transform: rotate(45deg); }
.op-detalhe-com-humor { display: flex; gap: 24px; align-items: flex-start; }
.op-detalhe-corpo { flex: 1; min-width: 0; }
.op-satisfacao { flex: none; }
.op-satisfacao-titulo { margin: 0 0 8px; font-size: 13px; text-transform: uppercase; letter-spacing: .08em; }
.satisfacao-cartoes { display: flex; gap: 10px; }
.cartao-satisfacao { width: 112px; padding: 10px 8px; border: 1px solid var(--linha, #d9d3c4); border-radius: 12px; background: var(--superficie, #fff); text-align: center; cursor: help; }
.cartao-satisfacao h4 { margin: 0 0 4px; font-size: 13px; }
.satisfacao-cara { display: block; font-size: 34px; line-height: 1.1; }
.satisfacao-numero { margin: 4px 0 0; }
.satisfacao-numero strong { font-size: 22px; }
.satisfacao-detalhe { margin: 4px 0 0; font-size: 11px; color: var(--texto-3, #777); line-height: 1.3; }
.humor-1, .humor-2 { border-color: #c96a5a; }
.humor-4, .humor-5 { border-color: #5c9a6a; }

/* Perfis e Permissões (ADM): matriz por módulo; a 1.ª coluna fica fixa ao deslizar na horizontal */
.tabela-permissoes { min-width: 760px; }
.tabela-permissoes th, .tabela-permissoes td { font-size: 14px; padding: 8px; vertical-align: middle; }
.tabela-permissoes thead th { white-space: nowrap; }
.tabela-permissoes th[scope="row"] { position: sticky; left: 0; z-index: 1; background: var(--superficie); font-weight: 600; min-width: 220px; text-align: left; }
.tabela-permissoes th[scope="row"] small { display: block; font-weight: 400; color: var(--texto-3); }
.tabela-permissoes .linha-modulo th { background: var(--bronze-claro); color: var(--bronze-escuro); font-size: 13px; text-transform: uppercase; letter-spacing: .06em; text-align: left; }
.tabela-permissoes .celula-perm { text-align: center; }
.tabela-permissoes .celula-perm input { width: 20px; height: 20px; }
.tabela-permissoes .difere { position: relative; }
.tabela-permissoes .difere::after { content: ''; position: absolute; top: 6px; right: 6px; width: 7px; height: 7px; border-radius: 50%; background: var(--bronze); }
.barra-permissoes { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; margin: 12px 0 20px; }
.barra-permissoes p { margin: 0 auto 0 0; }
.lista-perfis-utilizadores { padding-left: 18px; }
.lista-perfis-utilizadores li { margin: 6px 0; }
.linha-sem-perfil td { background: var(--ambar-fundo); }
.inicio-adm-comercial { min-height: 220px; }
/* ---------- Gerir próximos lançamentos › Tabelas Comerciais (2026-11-12) ---------- */
.inicio-adm-comercial .botao { margin-top: 8px; }
.lista-lancamentos { list-style: none; margin: 16px 0 0; padding: 0; display: grid; gap: 12px; }
.cartao-lancamento { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px 20px; }
.cartao-lancamento h2 { margin: 0 0 4px; font-family: var(--ds-serifa); font-size: 22px; }
.cartao-lancamento p { margin: 0; }
.etiqueta-preparacao { display: inline-flex; align-items: center; min-height: 32px; padding: 0 12px; border: 1px solid var(--ds-linha-forte); border-radius: var(--ds-r-pilula); background: var(--ds-superficie-2); color: var(--ds-texto-2); font-size: 13px; font-weight: 700; }
.aviso-tabelas { margin: 12px 0; }
.aviso-tabelas details { margin-top: 6px; }
.lista-em-falta { columns: 2 220px; margin: 6px 0 0; padding-left: 18px; font-size: 13px; }
.migalha { margin: 0 0 4px; font-size: 13px; color: var(--ds-texto-3); }
.resumo-tabela { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 10px; margin: 14px 0; }
.resumo-tabela > div { padding: 12px 14px; border: 1px solid var(--ds-linha); border-radius: var(--ds-r-cartao); background: var(--ds-superficie); }
.resumo-tabela dt { font-size: 11.5px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--ds-texto-3); }
.resumo-tabela dd { margin: 4px 0 0; font-size: 14px; line-height: 1.45; }
.resumo-tabela .ok { color: var(--ds-sucesso); font-weight: 650; }
.resumo-tabela .difere { color: var(--ds-erro); font-weight: 650; }
.avisos-tabela summary { cursor: pointer; font-weight: 650; }
.avisos-tabela ul { margin: 8px 0 0; padding-left: 18px; font-size: 14px; }
.barra-tabela { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 14px 0 8px; }
.estado-tabela { margin: 0 0 0 auto; font-size: 13.5px; color: var(--ds-texto-2); }
.aviso-conflito { margin: 12px 0; text-align: left; }
.legenda-tabela { margin: 0 0 8px; line-height: 1.5; font-size: 13.5px; color: var(--ds-texto-2); }
.caixa-grelha { position: relative; max-width: 100%; border: 1px solid var(--ds-linha); border-radius: var(--ds-r-cartao); background: var(--ds-superficie); }
.caixa-grelha:focus-visible { outline: 2px solid var(--ds-dourado); outline-offset: 2px; }
.grelha-tabela { border-collapse: separate; border-spacing: 0; font-size: 13px; min-width: 100%; }
.grelha-tabela th, .grelha-tabela td { padding: 6px 8px; border-bottom: 1px solid var(--ds-linha); border-right: 1px solid var(--ds-linha); vertical-align: top; text-align: left; min-width: 104px; }
.grelha-tabela tbody th[scope="row"], .grelha-tabela thead th:first-child { position: sticky; left: 0; z-index: 1; min-width: 132px; background: var(--ds-superficie-2); font-weight: 650; color: var(--ds-texto-2); }
.grelha-tabela .cab-entrada { background: var(--ds-grafite); color: var(--creme); text-align: center; letter-spacing: .06em; text-transform: uppercase; font-size: 12px; }
.grelha-tabela .linha-piso th { background: var(--ds-dourado-vela); color: var(--ds-texto); font-family: var(--ds-serifa); font-size: 15px; text-align: left; }
.grelha-tabela .cab-fracao { font-size: 14px; color: var(--ds-texto); background: var(--ds-superficie); }
.grelha-tabela .vazia { background: var(--ds-superficie-2); }
.grelha-tabela .num { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.grelha-tabela .obs { font-size: 12px; color: var(--ds-texto-3); min-width: 150px; }
.grelha-tabela td.preco { font-weight: 700; }
.grelha-tabela .fila-editavel td.editavel { background: var(--ds-dourado-vela); }
.grelha-tabela td.com-erro { background: var(--ds-erro-fundo); }
.etq-duplex { display: inline-block; margin-left: 6px; padding: 0 6px; border-radius: var(--ds-r-pilula); background: var(--ds-grafite); color: var(--creme); font-size: 10.5px; font-weight: 700; vertical-align: 1px; }
.por-confirmar { color: var(--ds-erro); font-weight: 650; }
.campo-preco { width: 100%; min-width: 96px; min-height: 36px; padding: 4px 6px; border: 1px solid var(--ds-dourado); border-radius: 6px; background: #FFFFFF; font: inherit; font-variant-numeric: tabular-nums; text-align: right; color: var(--ds-texto); }
.campo-preco:focus-visible { outline: 2px solid var(--ds-grafite); outline-offset: 1px; }
.campo-preco[aria-invalid="true"] { border-color: var(--ds-erro); }
.erro-preco { display: block; margin-top: 3px; font-size: 11.5px; line-height: 1.3; color: var(--ds-erro); white-space: normal; }
#historico-versoes .caixa-tabela, .dialogo-tabela .caixa-tabela { position: relative; }   /* os textos «so-leitor» (absolutos) ficam dentro do deslizamento */
.tabela-historico td, .tabela-historico th { font-size: 13.5px; }
.acoes-historico { white-space: nowrap; }
.dialogo-tabela { width: min(860px, calc(100vw - 32px)); max-height: calc(100vh - 48px); padding: 0; border: 1px solid var(--ds-linha-forte); border-radius: var(--ds-r-cartao); box-shadow: var(--ds-sombra-2); }
.dialogo-tabela::backdrop { background: rgba(28, 24, 16, .45); }
.dialogo-conteudo { padding: 20px 22px; display: grid; gap: 10px; }
.dialogo-conteudo h2 { margin: 0; font-family: var(--ds-serifa); }
.dialogo-conteudo p { margin: 0; }
.contagem-disponibilizar { display: flex; flex-wrap: wrap; gap: 8px; list-style: none; margin: 0; padding: 0; }
.contagem-disponibilizar li { padding: 8px 12px; border: 1px solid var(--ds-linha); border-radius: 10px; background: var(--ds-superficie-2); }
.contagem-disponibilizar li.ambar { background: var(--ds-aviso-fundo); border-color: var(--ds-aviso-linha); }
.tabela-compacta th, .tabela-compacta td { padding: 5px 8px; font-size: 13px; }
.tabela-compacta .num { text-align: right; white-space: nowrap; }
.confirmar-sem-preco { display: flex; gap: 8px; align-items: flex-start; padding: 10px 12px; border: 1px solid var(--ds-aviso-linha); border-radius: 10px; background: var(--ds-aviso-fundo); font-weight: 600; }
.confirmar-sem-preco input { width: 20px; height: 20px; margin: 1px 0 0; flex: none; }
.erro-dialogo { color: var(--ds-erro); font-weight: 600; }
.erro-dialogo:empty { display: none; }
.botoes-dialogo { display: flex; justify-content: flex-end; gap: 8px; flex-wrap: wrap; }
.impressao-tabela { display: none; }
@media print {
  @page { size: A4 landscape; margin: 10mm; }
  body.a-imprimir > *:not(.impressao-tabela) { display: none !important; }
  body.a-imprimir { background: #FFFFFF; }
  body.a-imprimir .impressao-tabela { display: block; color: #000000; }
  .tabela-impressao { width: 100%; border-collapse: collapse; font-size: 8.5pt; margin-bottom: 8mm; break-after: page; }
  .tabela-impressao:last-of-type { break-after: auto; }
  .tabela-impressao thead { display: table-header-group; }
  .tabela-impressao tr { break-inside: avoid; page-break-inside: avoid; }
  .tabela-impressao th, .tabela-impressao td { border: .5pt solid #8A8A8A; padding: 2.5pt 4pt; text-align: left; vertical-align: top; }
  .tabela-impressao .num { text-align: right; white-space: nowrap; }
  .tabela-impressao .preco { font-weight: 700; }
  .tabela-impressao .cab-impressao { border: 0; padding: 0 0 3pt; font-size: 10pt; }
  .cab-impressao span + span { float: right; font-weight: 400; }
  .tabela-impressao .cab-entrada-impressao { background: #202020; color: #FFFFFF; -webkit-print-color-adjust: exact; print-color-adjust: exact; text-transform: uppercase; letter-spacing: .06em; }
  .tabela-impressao .piso-impressao th { background: #EFE8D6; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .rodape-impressao { font-size: 8pt; color: #333333; }
  .marca-rascunho { position: fixed; top: 38%; left: 0; right: 0; text-align: center; font-size: 96pt; font-weight: 800; letter-spacing: .1em; color: rgba(139, 46, 46, .12); transform: rotate(-24deg); pointer-events: none; }
}

/* Transações (computador) */
.subnav-tx { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 16px; }
.subnav-tx a { padding: 6px 12px; border: 1px solid var(--linha, #d9d3c4); border-radius: 999px; text-decoration: none; color: inherit; font-size: 14px; }
.subnav-tx a[aria-current="page"] { background: var(--texto, #222); color: #fff; border-color: transparent; }
.cabecalho-tx { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; flex-wrap: wrap; margin-bottom: 16px; }
.acoes-tx { display: flex; flex-wrap: wrap; gap: 8px; }
.tabela-tx { width: 100%; border-collapse: collapse; background: var(--superficie, #fff); }
.tabela-tx th, .tabela-tx td { padding: 10px 12px; border-bottom: 1px solid var(--linha, #e5e0d4); text-align: left; vertical-align: top; }
.tabela-tx th { font-size: 13px; text-transform: uppercase; letter-spacing: .05em; }
.tabela-tx .num { text-align: right; white-space: nowrap; }
.tabela-tx .linha-sec { display: block; color: var(--texto-3, #777); font-size: 13px; }
.etiqueta-erro { background: #f7e1dc; color: #8a2b1a; }
.formulario-tx { display: grid; gap: 16px; max-width: 920px; }
.grelha-tx { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px 16px; }
.grelha-tx .linha-inteira { grid-column: 1 / -1; }
.bloco-pessoa-tx legend h2 { margin: 0; font-size: 18px; }
.pessoa-encontrada { margin: 0; padding: 8px 12px; border-radius: 8px; background: #e7f1e8; font-size: 14px; }
.pessoa-encontrada.erro { background: #f7e1dc; }
.mensagem-tx { padding: 12px 16px; border-radius: 8px; background: #f7e1dc; color: #6d2214; max-width: 920px; }
.botoes-tx { display: flex; gap: 12px; align-items: center; }
.duas-colunas-tx { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 16px; }
.dados-tx { display: grid; gap: 10px; margin: 0; }
.dados-tx dt { font-size: 13px; color: var(--texto-3, #777); }
.dados-tx dd { margin: 2px 0 0; }
.pessoa-tx { display: block; }
.pessoa-tx small { display: block; color: var(--texto-3, #777); }
.rotulo-tx span { display: inline; }
/* ADM com «Transações» também na barra (2026-11-13): seis itens + dois botões. Só quando esse item extra está visível
   (os outros perfis mantêm o aspeto): espaçamento mais curto e, abaixo de 1400 px, «+ Adicionar contacto» mostra «+ Contacto»
   (o nome acessível continua a ser o texto completo do link). */
@media (min-width: 900px) {
  .topo:has(.nav-topo > [data-barra-adm]:not([hidden])) { column-gap: 18px; }
  .topo:has(.nav-topo > [data-barra-adm]:not([hidden])) .nav-topo > a,
  .topo:has(.nav-topo > [data-barra-adm]:not([hidden])) .nav-grupo > summary { padding: 0 10px; }
  .topo:has(.nav-topo > [data-barra-adm]:not([hidden])) .botao-topo { padding: 0 16px; }
}
@media (min-width: 900px) and (max-width: 1399px) {
  .topo:has(.nav-topo > [data-barra-adm]:not([hidden])) .botao-topo-secundario { font-size: 0; }
  .topo:has(.nav-topo > [data-barra-adm]:not([hidden])) .botao-topo-secundario::after { content: "+ Contacto" / ""; font-size: 15px; }
}
/* Pré-visualização de um perfil no Início: aviso dentro da barra das vistas e a barra de menus assinalada */
body.em-previsualizacao .topo { box-shadow: inset 0 -3px 0 var(--ds-dourado); }
/* Níveis de Acesso e Ações: níveis, regra de entrada e cargos */
.tabela-niveis input[type="text"] { min-height: 38px; padding: 0 10px; font: inherit; border: 1px solid var(--ds-linha-forte); border-radius: var(--ds-r); background: var(--ds-superficie); width: 100%; max-width: 320px; }
.tabela-niveis th small { display: block; font-weight: 400; color: var(--texto-3); font-size: 12px; }
.linha-acesso { display: flex; flex-wrap: wrap; gap: 10px; align-items: flex-end; margin: 12px 0; }
.linha-acesso .campo { flex: 1 1 220px; margin: 0; }
.opcoes-entrada { display: flex; flex-direction: column; gap: 8px; margin: 6px 0 14px; }
.opcoes-entrada label { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; font-size: 14.5px; }
.lista-cargos { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.lista-cargos li { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
.lista-cargos input { min-height: 38px; padding: 0 10px; font: inherit; border: 1px solid var(--ds-linha-forte); border-radius: var(--ds-r); background: var(--ds-superficie); flex: 1 1 240px; max-width: 360px; }
