:root{
    --azul:#008075;
    --azul-escuro:#006058;
    --tinta:#1f2733;
    --cinza:#5b6675;
    --linha:#d9dee5;
    --fundo:#f2f4f7;
    --branco:#fff;
    --ok:#1a7f4b;
    --ok-bg:#e4f4ea;
    --erro:#b3261e;
    --erro-bg:#fbe7e6;
    --info-bg:#e6f2f1;
    --raio:12px;
    --largura-app:1800px;
}
*{box-sizing:border-box}
html,body{margin:0}
body{
    font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
    background:var(--fundo);color:var(--tinta);line-height:1.5;
    -webkit-text-size-adjust:100%;
}

/* Cabeçalho */
.topo{background:var(--azul);color:#fff;position:sticky;top:0;z-index:30}
.topo-int{
    max-width:var(--largura-app);margin:0 auto;padding:.75rem 1.25rem;
    display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;
}
.topo-esq{display:flex;align-items:center;gap:.8rem}
.marca{font-weight:700;letter-spacing:.02em;font-size:1.05rem}
.hamburger{background:none;border:0;color:#fff;font-size:1.4rem;line-height:1;cursor:pointer;padding:.3rem .5rem;border-radius:8px}
.hamburger:hover{background:rgba(255,255,255,.12)}

.topo-dir{position:relative}
.usuario-btn{display:flex;align-items:center;gap:.55rem;background:none;border:0;color:#fff;cursor:pointer;padding:.3rem .6rem .3rem .3rem;border-radius:999px;font-size:.92rem}
.usuario-btn:hover{background:rgba(255,255,255,.12)}
.avatar{width:30px;height:30px;border-radius:50%;background:rgba(255,255,255,.22);
    display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.82rem;flex:none}
.usuario-menu{position:absolute;right:0;top:calc(100% + 8px);background:#fff;border:1px solid var(--linha);
    border-radius:10px;min-width:170px;box-shadow:0 8px 24px rgba(0,0,0,.15);display:none;overflow:hidden;z-index:31}
.usuario-menu.aberto{display:block}
.usuario-menu a{display:block;padding:.7rem 1rem;color:var(--tinta);text-decoration:none;font-size:.9rem}
.usuario-menu a:hover{background:#f6f8fa}

/* Menu lateral (hambúrguer) */
.sidebar-fundo{position:fixed;inset:0;background:rgba(15,23,32,.4);z-index:38;display:none}
.sidebar-fundo.aberto{display:block}
.sidebar{
    position:fixed;top:0;left:0;bottom:0;width:270px;background:#fff;z-index:39;
    transform:translateX(-100%);transition:transform .2s ease;overflow-y:auto;
    box-shadow:2px 0 16px rgba(0,0,0,.18);padding:.6rem 0;
}
.sidebar.aberto{transform:translateX(0)}
.sidebar-item{display:block;padding:.85rem 1.3rem;color:var(--tinta);text-decoration:none;font-weight:700;
    border-left:3px solid transparent}
.sidebar-item:hover{background:#f6f8fa}
.sidebar-item.ativo{background:var(--info-bg);color:var(--azul-escuro);border-left-color:var(--azul)}
.sidebar-grupo{border-top:1px solid var(--linha);margin-top:.4rem;padding-top:.4rem}
.sidebar-grupo-titulo{display:flex;justify-content:space-between;align-items:center;width:100%;text-align:left;
    background:none;border:0;padding:.7rem 1.3rem;font-weight:700;font-size:.78rem;text-transform:uppercase;
    letter-spacing:.05em;color:var(--cinza);cursor:pointer}
.sidebar-grupo-titulo .seta{transition:transform .15s ease}
.sidebar-grupo-titulo[aria-expanded="true"] .seta{transform:rotate(90deg)}
.sidebar-sub{display:none;flex-direction:column}
.sidebar-sub.aberto{display:flex}
.sidebar-sub a{padding:.6rem 1.3rem .6rem 2.2rem;color:var(--tinta);text-decoration:none;font-size:.92rem}
.sidebar-sub a:hover{background:#f6f8fa}

/* Conteúdo */
.conteudo{max-width:var(--largura-app);margin:1.25rem auto;padding:0 1.25rem}
.rodape{max-width:var(--largura-app);margin:2rem auto;padding:0 1.25rem;color:var(--cinza);font-size:.8rem}

/* Cartões */
.cartao{
    background:var(--branco);border:1px solid var(--linha);border-radius:var(--raio);
    padding:1.5rem;margin-bottom:1rem;
}
.cartao-estreito{max-width:420px;margin-left:auto;margin-right:auto}
.cartao.largo{max-width:none}
.centro{text-align:center}
.check-positivo{color:#00a68f;font-weight:800}
h1{font-size:1.4rem;margin:.2rem 0 1rem}
h2{font-size:1.1rem;margin:1.4rem 0 .6rem}

/* Texto de apoio */
.ajuda{color:var(--cinza);margin:.4rem 0}
.pequena{font-size:.85rem}
.regras{color:var(--cinza);font-size:.85rem;padding-left:1.1rem;margin:.6rem 0 1rem}

/* Formulários */
label{display:block;font-weight:600;margin:.9rem 0 .3rem;font-size:.95rem}
input[type=text],input[type=password],input[type=email],input[type=date],select,textarea{
    width:100%;padding:.7rem .8rem;font-size:1rem;
    border:1px solid var(--linha);border-radius:10px;background:#fff;color:var(--tinta);
}
input:disabled{background:#f2f4f7;color:var(--cinza)}
input:focus,select:focus,textarea:focus{outline:2px solid var(--azul);outline-offset:1px;border-color:var(--azul)}
textarea{font-family:inherit;resize:vertical}

/* Combobox buscável — select.combo-buscavel vira campo de texto com
   lista filtrada logo abaixo (ver assets/combo.js). O select original
   some visualmente mas continua no DOM (é ele que é enviado no form). */
.combo{position:relative}
select.combo-select-oculto{position:absolute;width:1px;height:1px;padding:0;margin:-1px;
    overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.combo-lista{position:absolute;top:calc(100% + 2px);left:0;right:0;z-index:10;
    background:#fff;border:1px solid var(--linha);border-radius:10px;
    max-height:220px;overflow:auto;box-shadow:0 4px 14px rgba(0,0,0,.1)}
.combo-opcao{padding:.6rem .8rem;font-size:.95rem;cursor:pointer}
.combo-opcao:hover,.combo-opcao.ativo{background:var(--info-bg);color:var(--azul-escuro)}

.botao{
    display:inline-block;width:100%;margin-top:1.1rem;padding:.85rem 1rem;
    background:var(--azul);color:#fff;border:0;border-radius:10px;
    font-size:1rem;font-weight:600;cursor:pointer;text-align:center;text-decoration:none;
}
.botao:hover{background:var(--azul-escuro)}
.botao-secundario{background:#eef1f5;color:var(--azul-escuro)}
.botao-secundario:hover{background:#e2e7ee}
.botao-perigo{background:var(--erro)}
.botao-perigo:hover{background:#8c1e18}
.botao[aria-disabled="true"],.botao:disabled{opacity:.45;cursor:default;pointer-events:none}

/* Lucro (margem de contribuição) das despesas recorrentes — mais discreto que o valor principal */
.valor-lucro{opacity:.5}

/* Estoque atual negativo — chama atenção sem ser um alerta cheio */
.valor-negativo{color:#c0392b;font-weight:700}

/* Navegação entre hóspedes (Movimentações) */
.nav-hospede{display:flex;align-items:center;gap:.7rem;margin-bottom:1rem}
.nav-hospede .botao{width:auto;margin-top:0;white-space:nowrap}
.nav-hospede .combo{flex:1;max-width:360px}

/* Alertas */
.alerta{border-radius:10px;padding:.8rem 1rem;margin-bottom:1rem;font-size:.95rem}
.alerta-ok{background:var(--ok-bg);color:var(--ok)}
.alerta-erro{background:var(--erro-bg);color:var(--erro)}
.alerta-info{background:var(--info-bg);color:var(--azul-escuro)}

/* Destaque de valor (mensalidade) */
.destaque-plantao{
    background:var(--info-bg);border-radius:10px;padding:1rem;margin:1rem 0;text-align:center;
}
.destaque-plantao .rotulo{display:block;font-size:.8rem;color:var(--cinza);text-transform:uppercase;letter-spacing:.05em}
.destaque-plantao strong{font-size:1.15rem}

/* Faixa do topo do Dashboard: faturamento (largo) + contador (quadrado) lado a lado */
.faixa-topo{display:flex;flex-wrap:wrap;gap:1rem;align-items:stretch}
.faixa-topo .destaque-plantao{flex:1;min-width:170px;margin:1rem 0}
.faixa-topo .quadro-contador{flex:none;min-width:140px;display:flex;flex-direction:column;justify-content:center}

/* Tabelas — cabeçalho fixo: a própria .tabela-rolagem rola (não a
   página), então o cabeçalho gruda no topo dela mesma. */
.tabela-rolagem{overflow:auto;-webkit-overflow-scrolling:touch;max-height:70vh}
.tabela{width:100%;border-collapse:collapse;font-size:.9rem;min-width:560px}
.tabela th,.tabela td{padding:.6rem .7rem;text-align:left;border-bottom:1px solid var(--linha)}
.tabela th{background:#f6f8fa;font-size:.8rem;text-transform:uppercase;letter-spacing:.03em;color:var(--cinza);
    position:sticky;top:0;z-index:2;box-shadow:inset 0 -1px 0 var(--linha)}
.tabela tr.inativo{opacity:.5}
.tabela .vazio{text-align:center;color:var(--cinza);padding:1.2rem}
.tabela td.mat{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
/* Item pra onde se volta depois de editar (ver #linha-N nos redirects) —
   scroll-margin evita que o cabeçalho fixo esconda a linha, e o fundo
   amarelo chama atenção por um instante. */
.tabela tbody tr{scroll-margin-top:2.6rem}
.tabela tbody tr:target{background:#fff6d8}
/* Linha inativa (ex.: lista de espera após opt-out) — texto acinzentado
   pra destacar visualmente mesmo quando o filtro não estiver ocultando. */
.tabela tbody tr.linha-inativa td{color:rgba(0,0,0,.35)}
.tabela th.ordenavel{cursor:pointer;user-select:none}
.tabela th.ordenavel:hover{color:var(--azul-escuro)}
.tabela th .seta-ordem{font-size:.7rem}

/* Linhas de agrupamento (ex.: Compras por data/hóspede) */
.tabela tr.linha-grupo-data td{background:#f6f8fa;border-top:1px solid var(--linha)}
.tabela tr.linha-grupo-hospede td{background:#fbfbfa;padding-left:1.6rem;font-size:.85rem}
.grupo-alterna{
    background:none;border:0;padding:0;margin:0;cursor:pointer;font-weight:700;
    color:var(--tinta);display:flex;align-items:center;gap:.5rem;font-size:.95rem;width:100%;text-align:left;
}
.grupo-seta{display:inline-block;font-size:.7rem;color:var(--cinza)}
.acoes{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}
.acoes form{margin:0}
button.link,a.link{background:none;border:0;color:var(--azul);cursor:pointer;font-size:.85rem;padding:0;text-decoration:underline;width:auto;margin:0;display:inline-block}

/* Formulário em grade (cadastros com muitos campos) */
.form-grade{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:.7rem;margin-top:.8rem}
.form-grade label{display:flex;flex-direction:column;font-size:.85rem;font-weight:600;margin:0;gap:.25rem}
.form-grade input,.form-grade select{font-weight:400}
fieldset.bloco{border:1px solid var(--linha);border-radius:10px;padding:.8rem 1rem;margin-bottom:1.2rem}
fieldset.bloco legend{padding:0 .4rem;font-weight:600}
.checkboxes-linha{display:flex;flex-wrap:wrap;gap:.6rem 1.2rem}
.checkboxes-linha .checkbox-item{display:flex;align-items:center;gap:.35rem;font-size:.85rem;font-weight:400}

/* Toggle switch (liga/desliga) — ex.: tela de Permissões */
.toggle{position:relative;display:inline-block;width:42px;height:24px;vertical-align:middle}
.toggle input{opacity:0;width:0;height:0;position:absolute}
.toggle .toggle-trilho{position:absolute;inset:0;background:var(--linha);transition:.15s;border-radius:24px;cursor:pointer}
.toggle .toggle-trilho::before{content:"";position:absolute;height:18px;width:18px;left:3px;top:3px;background:var(--branco);transition:.15s;border-radius:50%;box-shadow:0 1px 2px rgba(0,0,0,.25)}
.toggle input:checked + .toggle-trilho{background:var(--azul)}
.toggle input:checked + .toggle-trilho::before{transform:translateX(18px)}
.toggle input:focus-visible + .toggle-trilho{outline:2px solid var(--azul);outline-offset:2px}

/* Abas (formulários grandes) */
.abas-nav{display:flex;flex-wrap:wrap;gap:.2rem;border-bottom:2px solid var(--linha);margin-bottom:1.2rem}
.aba-botao{background:none;border:0;border-bottom:3px solid transparent;padding:.7rem 1rem;
    font-weight:600;font-size:.92rem;color:var(--cinza);cursor:pointer;margin-bottom:-2px}
.aba-botao:hover{color:var(--tinta)}
.aba-botao.ativo{color:var(--azul);border-bottom-color:var(--azul)}
.aba-painel{display:none}
.aba-painel.ativo{display:block}

/* Blocos recolhíveis */
.bloco{border:1px solid var(--linha);border-radius:10px;padding:.8rem 1rem;margin-bottom:1rem}
.bloco summary{cursor:pointer;font-weight:600}
.form-linha{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:.8rem;align-items:center}
.form-linha input,.form-linha select{width:auto;flex:1 1 160px}
.form-linha .botao{width:auto;margin-top:0}

.escala-topo{display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;align-items:center;margin-bottom:1rem}

/* Grid de hóspedes (dashboard) */
.grade-hospedes{display:grid;grid-template-columns:repeat(6,1fr);gap:1rem}
.card-hospede{
    display:flex;gap:.8rem;background:var(--branco);border:1px solid var(--azul);border-radius:var(--raio);
    padding:.9rem;min-width:0;
}
/* Prévia visual do status financeiro por hóspede — ainda sem dado real
   por trás, aplicada manualmente numa célula no Dashboard só pra
   mostrar como vai ficar. Remover/ajustar quando o status for real. */
.card-hospede.fundo-exemplo-rosa{background:#FFDBDB}
.card-hospede .coluna-foto{display:flex;flex-direction:column;align-items:center;gap:.4rem;flex:none}
.card-hospede .foto{
    width:52px;height:52px;border-radius:50%;background:var(--info-bg);color:var(--azul-escuro);
    display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.85rem;flex:none;
    text-decoration:none;
}
.card-hospede .info{flex:1;min-width:0}
.card-hospede .nome{font-weight:700;font-size:.95rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.card-hospede .tempo{color:var(--cinza);font-size:.78rem;margin-top:.15rem}
.card-hospede .separador{border-top:1px solid #eef1f5;margin:.55rem 0}
.card-hospede .extra{min-height:.4rem;font-size:.8rem;color:var(--cinza)}
.card-hospede .linha-extra{display:flex;justify-content:space-between;gap:.5rem}

@media (max-width:1500px){ .grade-hospedes{grid-template-columns:repeat(4,1fr)} }
@media (max-width:1000px){ .grade-hospedes{grid-template-columns:repeat(2,1fr)} }
@media (max-width:600px){ .grade-hospedes{grid-template-columns:1fr} }

@media (max-width:520px){
    .cartao{padding:1.1rem}
    .acoes{flex-direction:column;align-items:flex-start}
}

/* Calendário de reservas do Day Care — pequeno de propósito, pra caber
   inteiro na tela (não usa a largura toda como as outras telas). */
.calendarios-daycare{display:flex;gap:1.5rem;flex-wrap:wrap;align-items:flex-start}
.calendarios-daycare .bloco{flex:1;min-width:280px}

/* Calendário de "Reservar dias" + o card de interesse em moradia, lado
   a lado dentro do mesmo fieldset, com um divisor vertical entre os
   dois (empilha no celular, divisor some). */
.calendario-com-interesse{display:flex;gap:1.2rem;flex-wrap:wrap;align-items:stretch;margin:.8rem 0}
.calendario-com-interesse .calendario-daycare{margin:0}
.divisor-vertical{width:1px;background:var(--linha);align-self:stretch}
@media (max-width:560px){ .divisor-vertical{display:none} }
.cartao-interesse-moradia{
    display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:.6rem;
    flex:1;min-width:200px;max-width:300px;padding:1.4rem;background:#eef1f5;color:var(--azul-escuro);
    border-radius:var(--raio);border:1px solid var(--azul);cursor:pointer;
    box-shadow:0 2px 6px rgba(31,39,51,.06);
}
.cartao-interesse-moradia svg{width:2.6rem;height:2.6rem;stroke:var(--azul);flex-shrink:0}
.cartao-interesse-moradia strong{font-size:1rem;line-height:1.4}
.cartao-interesse-moradia .rodape-interesse{font-size:.78rem;opacity:.8;margin:0}
.cartao-interesse-moradia:hover{background:#e4e9ef}
.cartao-interesse-moradia.aguardando{cursor:default}
.cartao-interesse-moradia.aguardando:hover{background:#eef1f5}

.aviso-moradia-temporaria{
    display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;
    flex:1;min-width:220px;max-width:340px;text-align:center;
}
.aviso-moradia-temporaria p{margin:0}
.botao-moradia-temporaria{
    display:inline-flex;align-items:center;justify-content:center;gap:.5rem;
    padding:.75rem 1.2rem;background:var(--branco);color:var(--azul-escuro);
    border:1px solid var(--azul);border-radius:8px;font-weight:700;text-decoration:none;
    box-shadow:0 2px 6px rgba(31,39,51,.06);
}
.botao-moradia-temporaria svg{width:1.3rem;height:1.3rem;stroke:var(--azul);flex-shrink:0}
.botao-moradia-temporaria:hover{background:#eef1f5}

.texto-azul{color:var(--azul-escuro)}

dialog{border:1px solid var(--linha);border-radius:var(--raio);padding:1.2rem 1.5rem;max-width:420px;width:90vw}
dialog::backdrop{background:rgba(31,39,51,.45)}
dialog h2{margin-top:0}
.botoes-dialog{display:flex;gap:.6rem;justify-content:flex-end;margin-top:1rem}
.calendario-daycare{display:grid;grid-template-columns:repeat(7,2.4rem);grid-auto-rows:2.4rem;gap:.4rem;margin:.8rem 0;width:max-content;max-width:100%}
.dia-celula{
    position:relative;width:2.4rem;height:2.4rem;border-radius:8px;display:flex;align-items:center;justify-content:center;
    font-size:.75rem;font-weight:600;background:var(--branco);color:var(--tinta);
    border:1px solid transparent;box-sizing:border-box;padding:0;margin:0;font-family:inherit;line-height:normal;
}
button.dia-celula{appearance:none;-webkit-appearance:none;-moz-appearance:none}
button.dia-celula::-moz-focus-inner{border:0;padding:0}
.dia-celula.cabecalho{background:none;color:var(--cinza);font-weight:700;font-size:.62rem;height:auto;border:0;text-transform:uppercase}
.dia-celula.indisponivel{background:var(--fundo);color:#c3c9d1;cursor:not-allowed;border:0}
.dia-celula.reservado{background:#00a68f;color:#fff;border:0;cursor:pointer;box-shadow:0 1px 3px rgba(0,166,143,.35)}
.dia-celula.reservado:hover{background:var(--azul-escuro)}
.dia-celula.bloqueado{background:var(--cinza);color:#fff;border:0;cursor:not-allowed}
.dia-celula.disponivel{cursor:pointer;border-color:var(--linha);overflow:hidden;box-shadow:0 1px 3px rgba(31,39,51,.08)}
.dia-celula.disponivel:hover{border-color:var(--azul)}
.dia-checkbox{position:absolute;opacity:0;width:100%;height:100%;margin:0;cursor:pointer}
.dia-checkbox:checked ~ .dia-numero{background:var(--info-bg);color:var(--azul-escuro);width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-weight:800}
.dia-checkbox:focus-visible ~ .dia-numero{outline:2px solid var(--azul);outline-offset:-2px}
.legenda-cal{display:inline-flex;align-items:center;gap:.3rem;margin-left:1rem}
.legenda-cal .amostra{width:.75rem;height:.75rem;border-radius:3px;display:inline-block}
.legenda-cal .amostra.reservado{background:#00a68f}
.legenda-cal .amostra.bloqueado{background:var(--cinza)}
.legenda-cal .amostra.indisponivel{background:var(--fundo);border:1px solid var(--linha);box-sizing:border-box}
.legenda-cal .amostra.utilizado{background:#00a68f}

/* Mapa de reservas do Day Care — 4 semanas, 7 colunas x 4 linhas de cards
   (grid próprio — não reaproveita .grade-hospedes, que é fixo em 6
   colunas pro Dashboard e não bate com os 7 dias da semana). */
.mapa-daycare{display:grid;grid-template-columns:repeat(7,1fr);gap:1rem;margin-bottom:1.5rem}
@media (max-width:1300px){ .mapa-daycare{grid-template-columns:repeat(4,1fr)} }
@media (max-width:900px){ .mapa-daycare{grid-template-columns:repeat(2,1fr)} }
@media (max-width:560px){ .mapa-daycare{grid-template-columns:1fr} }
.total-semana-linha{grid-column:1/-1;text-align:right;padding-top:.3rem;margin-top:-.2rem;border-top:1px solid var(--linha)}
.card-dia-daycare{
    background:var(--branco);border:1px solid var(--azul);border-radius:var(--raio);
    padding:.9rem;display:flex;flex-direction:column;min-width:0;
}
.card-dia-daycare .data-dia{font-weight:700;font-size:.95rem}
.card-dia-daycare .separador{border-top:1px solid #eef1f5;margin:.55rem 0}
.card-dia-daycare .nomes{font-size:.8rem;color:var(--tinta);display:flex;flex-direction:column;gap:.2rem;min-height:1.2rem}
.card-dia-daycare .total-dia{font-weight:700;font-size:.85rem}

/* Histórico de uso (calendário mensal, mesmo formato dos calendários de reserva) */
.dia-celula.fora-mes{opacity:.35}
.dia-celula.utilizado{background:#00a68f;color:#fff;border:0;box-shadow:0 1px 3px rgba(0,166,143,.35)}

/* Fraldas e Absorventes — navegador de data + ícones de origem do estoque */
.nav-data{display:flex;align-items:center;justify-content:center;gap:1.2rem;margin:.8rem 0 1.2rem}
.nav-data .seta{font-size:1.3rem;text-decoration:none;color:var(--azul);padding:.2rem .7rem;border-radius:8px}
.nav-data .seta:hover{background:var(--info-bg)}
.nav-data strong{font-size:1.05rem}
.icone-consumo{width:34px;height:34px;border-radius:50%;flex:none;object-fit:cover;vertical-align:middle}
.bloco-modelo-fralda{margin-bottom:1rem;padding-bottom:1rem;border-bottom:1px solid var(--linha)}
.bloco-modelo-fralda:last-child{border-bottom:0;padding-bottom:0;margin-bottom:0}
.seletor-modelo{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap}
.seletor-modelo select{flex:1;min-width:160px}
.linha-consumo{display:flex;align-items:center;gap:.5rem;margin:.5rem 0}
.linha-consumo .input-qtd{width:4.2rem;text-align:center;flex:none}
.linha-consumo-meio{flex:1}
.bloco-linha{margin-bottom:.5rem}
.lista-lancamentos-dia{list-style:none;margin:.5rem 0 0;padding:0;font-size:.82rem;color:var(--cinza)}
.lista-lancamentos-dia li{display:flex;justify-content:space-between;gap:.6rem;padding:.2rem 0;border-top:1px dashed var(--linha)}

/* Botão só com ícone (Salvar / Enviar / Baixar): sem fundo, a imagem já traz o rótulo */
.botao-icone{background:none;border:0;padding:0;margin:.6rem .4rem 0 0;width:auto;cursor:pointer;line-height:0;display:inline-block;vertical-align:middle}
.botao-icone img{height:2.4rem;width:auto;display:block}
.botao-icone:hover{opacity:.8}
.botao-icone:focus-visible{outline:2px solid var(--azul);outline-offset:2px;border-radius:6px}
.botao-icone:disabled{opacity:.35;cursor:not-allowed}
/* gravação de voz em andamento: o ícone pulsa */
.botao-icone.gravando img{animation:pulsar-gravacao 1s ease-in-out infinite}
@keyframes pulsar-gravacao{0%,100%{opacity:1}50%{opacity:.35}}

/* Ícones de ação (editar, desativar, excluir, ver detalhes, novo registro, redefinir senha, senhor/senhora): tamanho padrão único */
.icone-acao{width:24px;height:24px;vertical-align:middle}
/* exceção ao padrão de 24px: ação principal do painel do portal (compensa a margem do desenho da prancheta) */
.icone-acao.icone-relatorio{width:32px;height:32px}
