: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 do app: faixa verde de 60px atravessando o logotipo (98px); logotipo à esquerda, hambúrguer à direita dele
   e usuário na ponta direita, tudo centrado na vertical da faixa; título centralizado na faixa. */
:root{--cab-logo:98.4375px;--cab-faixa:60px}
.cab-app{position:sticky;top:0;z-index:30;margin:0;height:calc(var(--cab-logo) + 10px);background:var(--fundo)}   /* fixo no topo enquanto a página rola */
.cab-faixa{position:absolute;left:0;right:0;top:calc((var(--cab-logo) - var(--cab-faixa)) / 2);height:var(--cab-faixa);background:#00756B;z-index:0}
.cab-coluna{position:relative;height:var(--cab-logo);z-index:1;pointer-events:none}
.cab-logo{position:absolute;left:1rem;top:0;width:var(--cab-logo);height:auto}
.cab-texto{position:absolute;left:0;right:0;top:calc((var(--cab-logo) - var(--cab-faixa)) / 2);height:var(--cab-faixa);display:flex;align-items:center;justify-content:center;color:#fff;text-align:center;padding:0 .5rem}
.cab-texto span{font-weight:700;font-size:1.275rem;letter-spacing:.04em;line-height:1.15}
.cab-ctrl,.topo-dir.cab-ctrl{position:absolute;top:calc(var(--cab-logo) / 2);transform:translateY(-50%);z-index:5}
.cab-esq{left:calc(1rem + var(--cab-logo) + .4rem)}
.cab-dir{right:1rem}
.hamburger{background:none;border:0;color:#fff;font-size:1.425rem;line-height:1;cursor:pointer;padding:.3rem .6rem;border-radius:8px}
.hamburger:hover{background:rgba(255,255,255,.14)}
@media (max-width:900px){
    .cab-texto{left:calc(1rem + var(--cab-logo) + 3rem)}
    .cab-texto span{font-size:.8rem}
    .cab-dir{right:.3rem}
    .usuario-nome{display:none}
}

.topo-dir{position:relative}
.usuario-btn{display:flex;align-items:center;gap:.55rem;background:none;border:0;color:#fff;font-weight:600;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=tel],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;
}
/* Situação dos boletos de moradia (Dashboard): mesmas cores suaves dos avisos do Resumo —
   emitido verde, vence hoje amarelo, vencido vermelho; pago/sem boleto em aberto fica branco */
.card-hospede.situacao-emitida{background:#E4EFEE}
.card-hospede.situacao-vence_hoje{background:#fff3cd}
.card-hospede.situacao-vencida{background:#fdecea}
.card-hospede[class*="situacao-"] .foto{background:var(--branco)}
.legenda-boletos{display:flex;flex-wrap:wrap;gap:.4rem 1.2rem;margin:0 0 .6rem;font-size:.82rem;color:var(--cinza)}
.legenda-boletos span{display:inline-flex;align-items:center;gap:.35rem}
.legenda-boletos i{display:inline-block;width:1.6rem;height:1.05rem;border:1px solid var(--azul);border-radius:4px;background:var(--branco)}
.legenda-boletos i.situacao-emitida{background:#E4EFEE}
.legenda-boletos i.situacao-vence_hoje{background:#fff3cd}
.legenda-boletos i.situacao-vencida{background:#fdecea}
.card-hospede .coluna-foto{display:flex;flex-direction:column;align-items:center;gap:.4rem;flex:none}
.card-hospede .foto.com-foto{overflow:hidden;padding:0}
.card-hospede .foto img{width:100%;height:100%;object-fit:cover;object-position:50% 22%;display:block}   /* retrato 3:4: o rosto fica no terço de cima */
/* Foto na tela do hóspede */
.hospede-foto-bloco{display:flex;gap:1rem;align-items:center;margin:0 0 1rem}
.hospede-foto-grande{width:120px;height:160px;border-radius:10px;overflow:hidden;flex:none;background:var(--info-bg);color:var(--azul-escuro);
    display:flex;align-items:center;justify-content:center;font-weight:700;font-size:1.6rem;border:1px solid var(--azul)}
.hospede-foto-grande img{width:100%;height:100%;object-fit:contain;background:var(--branco);display:block}   /* inteira, sem cortar */
.hospede-foto-acoes{display:flex;flex-direction:column;gap:.4rem;align-items:flex-start}
.hospede-foto-acoes form{margin:0;display:flex;gap:.6rem;align-items:center;flex-wrap:wrap}
.hospede-foto-escolher{cursor:pointer}
.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}
/* nome -> cadastro; valores -> movimentações: parecem texto, mostram que são clicáveis ao passar o mouse */
.card-hospede a.nome{display:block;color:inherit;text-decoration:none}
.card-hospede a.nome:hover,.card-hospede a.nome:focus-visible{color:var(--azul-escuro);text-decoration:underline}
.card-hospede a.extra-link{display:block;color:inherit;text-decoration:none;border-radius:6px;margin:0 -.3rem;padding:0 .3rem}
.card-hospede a.extra-link:hover,.card-hospede a.extra-link:focus-visible{background:rgba(0,128,117,.08);color:var(--tinta)}

@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;display:flex;justify-content:flex-end;align-items:center;gap:1rem;padding-top:.3rem;margin-top:-.2rem;border-top:1px solid var(--linha)}
.total-semana-linha .botao-cobranca-semana{width:auto;margin:0 auto 0 0;padding:.4rem .9rem;font-size:.9rem}
.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;
}
/* dia de hoje: borda mais espessa (o padding diminui 2px para o cartão não crescer) */
.card-dia-daycare.hoje{border:3px solid var(--azul-escuro);padding:calc(.9rem - 2px)}
.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}

/* ---------------------------------------------------------------------
   Formulário de cadastro (hóspede, usuário): 800px, 3 colunas, abas
   emolduradas, campos compactos e aviso de obrigatórios. Para usar:
   <section class="cartao largo form-cadastro"> com .abas / .form-grade.
   Campos mais largos: <label class="span2"> ou "span3"; título de grupo:
   <div class="grupo-titulo">Endereço</div>.
   --------------------------------------------------------------------- */
.cartao.form-cadastro{max-width:800px;margin-left:auto;margin-right:auto}
.form-cadastro .abas-nav{border-bottom:0;margin-bottom:0;gap:.25rem}
.form-cadastro .aba-botao{background:#eef1f5;border:1px solid var(--linha);border-bottom:0;border-radius:8px 8px 0 0;padding:.5rem .9rem;font-size:.9rem;position:relative;top:1px}
.form-cadastro .aba-botao.ativo{background:#fafbfc;color:var(--azul);font-weight:700}
.form-cadastro .aba-botao.com-pendencia::after{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--erro);margin-left:.4rem}
.form-cadastro .aba-painel{border:1px solid var(--linha);border-radius:0 8px 8px 8px;background:#fafbfc;padding:1rem 1.1rem}
.form-cadastro .form-grade{grid-template-columns:repeat(3,minmax(0,1fr));gap:.65rem .9rem;margin-top:0}
.form-cadastro .form-grade label{font-size:12px;gap:3px}
.form-cadastro .form-grade input,.form-cadastro .form-grade select,.form-cadastro .form-grade textarea{width:100%;padding:5px 7px;font-size:13px;font-weight:400;background:#fff;border:1px solid #b8c0cb;border-radius:5px}
.form-cadastro .form-grade input:disabled{background:#f2f4f7}
.form-cadastro .form-grade .span2{grid-column:span 2}
.form-cadastro .form-grade .span3{grid-column:1 / -1}
.form-cadastro .grupo-titulo{grid-column:1 / -1;margin:.5rem 0 -.1rem;padding-bottom:.2rem;border-bottom:1px solid var(--linha);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--cinza)}
.form-cadastro .grupo-titulo:first-child{margin-top:0}
.form-cadastro .form-grade label.invalido input,.form-cadastro .form-grade label.invalido select,.form-cadastro .form-grade label.invalido textarea{border-color:var(--erro);background:var(--erro-bg)}
.form-cadastro .form-grade label.invalido{color:var(--erro)}
.aviso-form{border:1px solid var(--erro);background:var(--erro-bg);color:var(--erro);border-radius:8px;padding:.6rem .9rem;margin-bottom:.8rem;font-size:.9rem}
.aviso-form ul{margin:.3rem 0 0;padding-left:1.2rem}
@media (max-width:720px){.form-cadastro .form-grade{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:480px){.form-cadastro .form-grade{grid-template-columns:minmax(0,1fr)}.form-cadastro .form-grade .span2{grid-column:auto}}

/* marcação de campo pendente e aba com pendência — vale pra qualquer formulário com abas (ver assets/validacao.js) */
label.invalido{color:var(--erro)}
label.invalido input,label.invalido select,label.invalido textarea{border-color:var(--erro);background:var(--erro-bg)}
.aba-botao.com-pendencia::after{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--erro);margin-left:.4rem}

/* endereço: CEP / tipo + nome do logradouro + número / complemento, bairro, cidade, UF (4 colunas) */
.form-cadastro .form-grade .nova-linha{grid-column-start:1}
.form-cadastro .form-grade .grade-4{grid-column:1 / -1;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.65rem .9rem}
.form-cadastro .form-grade .grade-4 label{display:flex;flex-direction:column;font-size:12px;font-weight:600;margin:0;gap:3px}
@media (max-width:720px){.form-cadastro .form-grade .grade-4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:480px){.form-cadastro .form-grade .grade-4{grid-template-columns:minmax(0,1fr)}}

/* telefones com várias linhas (assets/telefones.js, src/telefones.php) */
.telefones{grid-column:1 / -1}
.telefones .tel-linha{display:flex;flex-wrap:wrap;gap:.5rem .7rem;align-items:flex-end;margin:.35rem 0}
.telefones .tel-linha label{display:flex;flex-direction:column;font-size:12px;font-weight:600;margin:0;gap:3px}
.telefones .tel-linha input[type=text],.telefones .tel-linha select{padding:5px 7px;font-size:13px;font-weight:400;border:1px solid #b8c0cb;border-radius:5px;background:#fff;width:100%}
.telefones .tel-tipo{width:6.5rem}
.telefones .tel-pais{width:5rem}
.telefones .tel-regiao{width:6.2rem}
.telefones .tel-numero{width:9.5rem}
.telefones .tel-mais{display:flex;align-items:center;gap:.2rem}
.telefones .tel-mais i{font-style:normal;font-weight:700}
.telefones .tel-wa span{display:flex;align-items:center;gap:.3rem;font-weight:600}
.telefones .tel-wa input[type=checkbox]{width:auto}
.telefones .tel-wa .tel-usuario{margin-top:3px;min-width:9rem}
.telefones .tel-remover{background:none;border:0;padding:0;margin:0 0 .3rem;cursor:pointer;line-height:1}
.telefones .tel-adicionar{background:none;border:0;padding:0;margin:.2rem 0 0;cursor:pointer;line-height:1}
.separador-salvar{border:0;border-top:1px solid var(--linha);margin:20px 0}
.icone-acao.largo{width:auto}  /* imagem horizontal (ex.: Excluir Contato): 24px de altura, largura proporcional */

/* aba Contatos do portal: contato de emergência leva o ícone (e a prioridade) à direita, dentro da moldura */
.contato-resumo{display:flex;align-items:center;justify-content:space-between;gap:.6rem}
.contato-resumo .contato-emergencia{display:inline-flex;align-items:center;gap:.3rem;white-space:nowrap}

/* ---------------------------------------------------------------------
   Tela de início do portal das famílias: faixa #00756B (80px) atravessando o logotipo (175px)
   e menu em colunas de 180px com 30px entre elas (da esquerda pra direita, de cima pra baixo).
   --------------------------------------------------------------------- */
.portal-inicio{max-width:810px;margin:0 auto}
.portal-usuario{display:flex;justify-content:flex-end;align-items:center;gap:.6rem;font-size:.9rem;margin:0 0 26px}
body:has(.portal-inicio) .conteudo{margin-top:.5rem}
body:has(.portal-inicio) .rodape{margin-top:100px;text-align:center}
.portal-menu{display:flex;flex-wrap:wrap;justify-content:center;gap:30px}
.portal-item{display:block;width:180px;border-radius:12px;transition:transform .12s,box-shadow .12s}
.portal-item img{display:block;width:180px;height:auto}
.portal-item:hover,.portal-item:focus-visible{transform:translateY(-3px);box-shadow:0 4px 12px rgba(0,0,0,.18)}
@media (max-width:640px){
    .portal-menu{gap:16px}
    .portal-item,.portal-item img{width:calc(50vw - 28px);max-width:180px}
}

/* ---------------------------------------------------------------------
   Leitor de código de barras (assets/leitor-barras.js) — tela cheia no celular
   --------------------------------------------------------------------- */
dialog.leitor-barras{max-width:640px;width:100vw;padding:.8rem;border-radius:12px}
.leitor-topo{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}
.leitor-fechar{background:none;border:0;font-size:2rem;line-height:1;cursor:pointer;width:auto;padding:0 .4rem}
.leitor-video-caixa{position:relative;background:#000;border-radius:10px;overflow:hidden;aspect-ratio:4/3}
.leitor-video{width:100%;height:100%;object-fit:cover;display:block}
.leitor-mira{position:absolute;left:8%;right:8%;top:38%;bottom:38%;border:3px solid #00756B;border-radius:8px;box-shadow:0 0 0 9999px rgba(0,0,0,.35)}
.leitor-status{min-height:2.6em;margin:.5rem 0;font-size:.92rem}
.leitor-controles{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}
.leitor-controles button,.leitor-foto-botao,.leitor-manual button{width:auto;padding:.5rem .9rem;border:1px solid var(--linha);border-radius:8px;background:#eef1f5;color:var(--azul-escuro);font-size:.9rem;font-weight:600;cursor:pointer}
.leitor-lanterna.ligada{background:#00756B;color:#fff}
.leitor-zoom{display:flex;align-items:center;gap:.4rem;font-size:.9rem}
.leitor-zoom input{width:7rem}
.leitor-manual{margin-top:.8rem}
.leitor-manual-linha{display:flex;gap:.5rem;margin-top:.25rem}
.leitor-manual input{flex:1;font-size:1.1rem;letter-spacing:.08em}
@media (max-width:640px){
    dialog.leitor-barras{max-width:100vw;height:100dvh;max-height:100dvh;border-radius:0;margin:0}
    .leitor-video-caixa{aspect-ratio:3/4}
}

/* Entrega de Produtos (portal) e Entregas das Famílias (equipe) */
.entregas-acoes{display:flex;flex-wrap:wrap;gap:.6rem}
.entregas-acoes .botao{width:auto;margin-top:.4rem;flex:1 1 14rem}
.entregas-lista{list-style:none;margin:.6rem 0 1.4rem;padding:0}
.entregas-lista li{display:flex;justify-content:space-between;gap:.8rem;align-items:flex-start;padding:.7rem .2rem;border-bottom:1px solid var(--linha)}
.entrega-info{display:flex;flex-direction:column;gap:.15rem;min-width:0}
.entrega-carac{font-size:.9rem}
.entrega-meta{font-size:.8rem;color:var(--cinza)}
.entrega-botoes{display:flex;gap:.5rem;align-items:center;flex-shrink:0}
.entrega-botoes form{margin:0}
.entrega-editar,.entrega-remover{background:none;border:0;padding:.2rem .1rem;width:auto;margin:0;cursor:pointer;font-size:.88rem;font-weight:600;color:var(--azul-escuro);text-decoration:underline}
.entrega-remover{color:var(--erro)}
.entregas-recebidas{opacity:.8}
.entrega-reconhecido{background:var(--info-bg);border-radius:8px;padding:.5rem .7rem;font-size:.9rem}
.entrega-medicamento{display:grid;grid-template-columns:auto 1fr;gap:.15rem .7rem;margin:.5rem 0 .2rem;padding:.5rem .7rem;border:1px solid var(--linha);border-radius:8px;font-size:.88rem}
.entrega-medicamento dt{color:var(--cinza);font-weight:600}
.entrega-medicamento dd{margin:0;overflow-wrap:anywhere}
.entrega-medicamento .entrega-medicamento-titulo{grid-column:1 / -1;font-weight:700;color:#00756B;margin-bottom:.1rem}
.entrega-via{border:1px solid var(--linha);border-radius:8px;margin:.8rem 0 0;padding:.4rem .7rem .6rem}
.entrega-via legend{font-size:.9rem;font-weight:600;padding:0 .3rem}
.entrega-via-opcao{display:flex;gap:.5rem;align-items:center;font-weight:400;margin:.35rem 0}
.entrega-via-opcao input{width:auto;margin:0}
#dialog-entrega-item{max-width:480px}
.entrega-dialog-botoes{flex-wrap:wrap}
.entregas-grupo{margin-bottom:1.6rem}
.entregas-leitura-aviso{background:var(--info-bg);border-radius:8px;padding:.5rem .8rem;font-weight:600}
.entregas-leitura-aviso.erro{background:#fbe4e2;color:var(--erro)}
tr.entrega-lida{background:#e3f3ee}

/* ---------------------------------------------------------------------
   Resumo Operacional (/resumo): cabeçalho igual ao do portal das famílias + grade 3 colunas x 2 linhas
   --------------------------------------------------------------------- */
body:has(.resumo-op) .conteudo{max-width:none;margin-top:0;padding:0 1rem}
.resumo-barra{display:flex;justify-content:flex-end;margin:.5rem 0}
.resumo-barra .botao{padding:.25rem .8rem;font-size:.9rem}
.resumo-grade{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:minmax(300px,calc((100dvh - 232px) / 2));gap:1rem;margin-bottom:1.5rem}
.resumo-celula{background:#fff;border:1px solid var(--linha);border-radius:var(--raio);padding:.8rem 1rem;overflow:auto;display:flex;flex-direction:column;min-height:0}
.resumo-celula h2{margin:0 0 .5rem;font-size:1.05rem;color:#00756B;border-bottom:3px solid #008075;padding-bottom:.3rem}
.resumo-celula h2 a{color:inherit;text-decoration:none}
.resumo-celula h3{margin:0 0 .3rem;font-size:.92rem}
.resumo-celula h3 small{font-weight:400;color:var(--cinza)}
.resumo-celula-futura{background:#f6f8f8;border-style:dashed}
/* Calendário (aniversários + feriados): domingos e feriados no mesmo tom dos domingos da agenda de visitas */
.resumo-cal{display:flex;flex-direction:column;min-height:0;flex:1 1 auto}
.resumo-cal-nav{display:flex;align-items:center;gap:.4rem;margin-bottom:.35rem}
.resumo-cal-nav strong{flex:1;text-align:center;font-size:.95rem;text-transform:capitalize}
.resumo-cal-nav button{background:#fff;border:1px solid var(--linha);border-radius:6px;min-width:2rem;padding:.1rem .5rem;font-size:1rem;cursor:pointer;color:#00756B}
.resumo-cal-nav button:hover{background:#E4EFEE}
.resumo-cal-nav .resumo-cal-hoje{font-size:.75rem}
.resumo-cal-semana,.resumo-cal-grade{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px}
.resumo-cal-grade{flex:1 1 auto;grid-auto-rows:minmax(2.1rem,1fr)}
.resumo-cal-semana{font-size:.68rem;color:var(--cinza);text-align:center;margin-bottom:2px}
.resumo-cal-semana span:first-child{color:#b3261e}
.resumo-cal-dia{position:relative;min-height:2.1rem;border:1px solid var(--linha);border-radius:6px;background:#fff;padding:.15rem .25rem;font-size:.8rem;line-height:1.1}
.resumo-cal-dia.fora{visibility:hidden}
.resumo-cal-dia.tem{cursor:pointer}
.resumo-cal-dia.tem:hover,.resumo-cal-dia.tem:focus{border-color:#008075;outline:none}
.resumo-cal-dia.dom,.resumo-cal-dia.feriado{background:#F0ECE9}
.resumo-cal-dia.feriado b,.resumo-cal-dia.dom b{color:#b3261e}
.resumo-cal-dia.hoje{outline:2px solid #1F2733;outline-offset:-1px}
.resumo-cal-dia .bolo{position:absolute;right:2px;bottom:1px;font-size:.95rem;line-height:1}
.resumo-cal-dia .bolo img{width:16px;height:16px;vertical-align:bottom}
.resumo-cal-dia .conhecer{position:absolute;left:2px;bottom:1px;font-size:.85rem;line-height:1}   /* visita para conhecer o Recanto */
.resumo-cal-dica{position:fixed;z-index:60;max-width:260px;background:#1F2733;color:#fff;border-radius:8px;padding:.45rem .65rem;font-size:.8rem;line-height:1.35;box-shadow:0 4px 14px rgba(0,0,0,.25);pointer-events:none}
.resumo-cal-dica .l-data{font-weight:700;text-transform:capitalize;margin-bottom:.15rem}
.resumo-cal-dica .l-feriado{color:#ffb4ab}
.resumo-cal-dica .bolo{margin-right:.3rem}
.resumo-avisos{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.4rem;flex:1 1 auto;min-height:0;overflow:auto}
.resumo-avisos li{display:flex;gap:.5rem;align-items:center;border-left:5px solid #7a8a89;background:#f6f8f8;border-radius:6px;padding:.35rem .5rem;font-size:.88rem}
.resumo-avisos li.aviso-vencida{border-left-color:#b3261e;background:#fdecea}
.resumo-avisos li.aviso-paga{border-left-color:#008075;background:#E4EFEE}
.resumo-avisos li.aviso-familia{border-left-color:#2b5aa6;background:#eef3fb}
.resumo-avisos li.aviso-assinatura{border-left-color:#c79100;background:#fff3cd}
.resumo-avisos li.aviso-visita{border-left-color:#008075;background:#E4EFEE}
.resumo-avisos .quem{display:flex;flex-direction:column;min-width:0;flex:1;color:inherit;text-decoration:none}
.resumo-avisos .quem small{color:var(--cinza);font-size:.78rem}
.resumo-avisos form{margin:0}
.aviso-dispensar{background:none;border:1px solid var(--linha);border-radius:6px;padding:.15rem .5rem;font-size:.75rem;color:var(--cinza);cursor:pointer;white-space:nowrap}
.aviso-dispensar:hover{background:#fff;color:#1F2733}
.aviso-todos{margin:.5rem 0 0;text-align:right}
.resumo-duas{display:grid;grid-template-columns:1fr 1fr;gap:.8rem;min-height:0;flex:1 1 40%;overflow:auto}
.resumo-coluna{min-width:0}
.resumo-lista{list-style:none;margin:0;padding:0}
.resumo-lista li{display:flex;gap:.5rem;align-items:flex-start;padding:.3rem 0;border-bottom:1px solid #eef1f1;font-size:.88rem}
.resumo-lista li.riscado strong{text-decoration:line-through;color:var(--cinza)}
.resumo-lista .hora{font-variant-numeric:tabular-nums;font-weight:700;color:#00756B;flex:0 0 auto}
.resumo-lista .quem{display:flex;flex-direction:column;min-width:0;flex:1}
.resumo-lista .quem small{color:var(--cinza);font-size:.78rem}
.resumo-lista-larga{overflow:auto}
.resumo-vazio{color:var(--cinza);font-size:.85rem;margin:.2rem 0}
.resumo-bloqueio{background:#E4EFEE;border-left:4px solid #008075;padding:.3rem .5rem;font-size:.82rem;margin:0 0 .4rem}
.resumo-contador{display:inline-block;min-width:1.4em;padding:0 .4em;border-radius:1em;background:#008075;color:#fff;font-size:.8rem;text-align:center}
.resumo-pendentes{margin-top:.8rem;padding-top:.6rem;border-top:3px solid #E4EFEE;flex:1 1 35%;min-height:0;overflow:auto}
.resumo-aguardando{background:#E4EFEE;border-radius:8px;padding:.4rem .6rem;margin:0 0 .5rem;font-size:.88rem}
.resumo-aguardando a{color:#00756B;text-decoration:none}

/* Visitas aos Hóspedes: mapa na metade esquerda, Hoje sobre Amanhã na direita */
.resumo-visitas{display:grid;grid-template-columns:1fr 1fr;gap:1rem;flex:1 1 auto;min-height:0}
.resumo-dias{min-height:0;overflow:auto;display:flex;flex-direction:column;gap:.8rem}
.resumo-mapa{min-width:0;display:flex;flex-direction:column}
.resumo-mapa h3{margin:0 0 .4rem}
.resumo-mapa-corpo{display:flex;gap:.3rem;align-items:stretch}
.resumo-mapa-semana{display:grid;grid-template-rows:repeat(7,1fr);gap:3px;font-size:.62rem;color:var(--cinza);text-align:center;align-items:center}
.resumo-mapa-grade{flex:1;min-width:0;display:grid;grid-template-rows:repeat(7,auto);gap:3px}
.resumo-mapa-grade i,.resumo-mapa-legenda i{display:block;border-radius:3px;background:#EEF3F2}
.resumo-mapa-grade i{aspect-ratio:1;width:100%}
.resumo-mapa-grade i.n1,.resumo-mapa-legenda i.n1{background:#CFE3E1}
.resumo-mapa-grade i.n2,.resumo-mapa-legenda i.n2{background:#9BC4C0}
.resumo-mapa-grade i.n3,.resumo-mapa-legenda i.n3{background:#4A9D95}
.resumo-mapa-grade i.n4,.resumo-mapa-legenda i.n4{background:#008075}
.resumo-mapa-grade i.bloq,.resumo-mapa-legenda i.bloq{box-shadow:inset 0 0 0 2px #b3261e}
.resumo-mapa-grade i.hoje{outline:2px solid #1F2733;outline-offset:1px}
.resumo-mapa-grade i.futuro{opacity:.6}
.resumo-mapa-legenda{display:flex;align-items:center;gap:3px;font-size:.7rem;color:var(--cinza);margin-top:.4rem;flex-wrap:wrap}
.resumo-mapa-legenda i{width:12px;height:12px}

/* Entregas Recentes: agrupadas por quem mandou entregar */
.resumo-entregas{flex:1 1 auto;min-height:0;overflow:auto}
.resumo-entrega-grupo{margin-bottom:.8rem}
.resumo-entrega-grupo h3{margin:0 0 .15rem;padding-bottom:.15rem;border-bottom:2px solid #E4EFEE}
.resumo-qtd{flex:0 0 auto;font-weight:400;font-variant-numeric:tabular-nums}
.resumo-entrega-grupo .hora,.resumo-entrega-grupo .quem strong{font-weight:400}
@media (max-width:1100px){
    .resumo-grade{grid-template-columns:1fr;grid-template-rows:none;grid-auto-rows:minmax(300px,auto)}
}

/* Auditoria */
.auditoria-mudancas{list-style:none;margin:0;padding:0;font-size:.82rem}
.auditoria-mudancas li{padding:.1rem 0}
.auditoria-mudancas .campo{font-weight:600;color:var(--azul-escuro)}
.auditoria-mudancas .antes{color:var(--erro);text-decoration:line-through}
.auditoria-mudancas .depois{color:#006058}
.auditoria-paginas{display:flex;justify-content:space-between;margin-top:.8rem}

/* 2FA: códigos de recuperação */
.codigos-recuperacao{list-style:none;margin:.6rem 0;padding:.8rem;display:grid;grid-template-columns:1fr 1fr;gap:.4rem .8rem;background:#E4EFEE;border-radius:8px}
.codigos-recuperacao code{font-size:1.05rem;letter-spacing:.05em}

/* Cobranças */
.cobranca-problema{color:var(--erro);font-size:.82rem;margin:.2rem 0}
.cobranca-inter{background:#E4EFEE;border-radius:8px;padding:.5rem .8rem;margin:0 0 1rem;font-size:.9rem}
.cobranca-teste{display:inline-block;margin-left:.3rem;padding:0 .4rem;border-radius:4px;background:#fff3cd;color:#664d03;font-size:.7rem;font-weight:700}

/* Day Care — pagamentos do cliente */
.pagamento-card{border:1px solid var(--linha);border-left:5px solid #008075;border-radius:10px;padding:.8rem 1rem;margin:.7rem 0;background:#fff}
.pagamento-card.vencido{border-left-color:var(--erro)}
.pagamento-card.paga{border-left-color:#9BC4C0;opacity:.85}
.pagamento-topo{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start}
.pagamento-valor{font-size:1.25rem;font-weight:700;color:#00756B;white-space:nowrap}
.pagamento-situacao{margin:.4rem 0}
.pagamento-acoes{margin-top:.5rem}
.pagamento-linha{margin-top:.6rem;display:flex;flex-direction:column;gap:.2rem}
.pagamento-linha code{word-break:break-all;background:#f6f8f8;padding:.35rem .5rem;border-radius:6px;font-size:.88rem}
.selo{display:inline-block;padding:.1rem .6rem;border-radius:999px;background:#E4EFEE;color:#006058;font-size:.82rem;font-weight:600}
.selo-ok{background:#d9efe1;color:#1d6b3b}
.selo-alerta{background:#fbe7e6;color:var(--erro)}

/* Cozinha: receitas e cardápio semanal */
.cozinha-filtros{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap;margin-bottom:1rem}
.cozinha-filtros input[type=search]{max-width:20rem}
.cozinha-check{display:inline-flex;gap:.3rem;align-items:center;font-size:.9rem}
.cozinha-subtitulo{font-size:1.05rem;color:#00756B;border-bottom:3px solid #008075;padding-bottom:.2rem;margin:1.2rem 0 .5rem}
.cozinha-texto{white-space:normal;line-height:1.5}
.cozinha-ingrediente{display:grid;grid-template-columns:minmax(12rem,3fr) 6rem minmax(7rem,1.2fr) minmax(8rem,2fr) auto;gap:.4rem;align-items:center;margin-bottom:.4rem}
.cozinha-ingrediente input,.cozinha-ingrediente select{width:100%;min-width:0}
.cozinha-ingrediente .botao-remover-linha{background:none;border:0;cursor:pointer;padding:0 .3rem}
@media (max-width:760px){.cozinha-ingrediente{grid-template-columns:1fr 1fr}.cozinha-ingrediente>input:first-child{grid-column:1/-1}}
.cozinha-abas{display:flex;gap:.4rem;margin-bottom:.8rem;flex-wrap:wrap}
.cozinha-abas a{padding:.4rem .9rem;border:1px solid var(--linha);border-radius:8px;color:#00756B;text-decoration:none;background:#fff}
.cozinha-abas a.ativa{background:#008075;border-color:#008075;color:#fff;font-weight:700}
.selo-cozinha{display:inline-block;padding:.05rem .6rem;border-radius:999px;font-size:.78rem;font-weight:700;background:#eef1f1;color:#6b7878}
.selo-cozinha.publicado{background:#E4EFEE;color:#00756B}
.selo-cozinha.rascunho{background:#fff3cd;color:#8a6d00}
.cozinha-antecedencia{background:#f6f8f8;border-left:5px solid #008075;border-radius:6px;padding:.4rem .7rem;margin:.4rem 0 .8rem;font-size:.85rem;display:flex;flex-wrap:wrap;gap:.3rem 1.4rem}
.cozinha-antecedencia .st-publicado{color:#00756B}
.cozinha-antecedencia .st-rascunho{color:#8a6d00}
.cozinha-antecedencia .st-nenhum{color:#b3261e}
.cozinha-grade-rolagem{max-height:none}
.cozinha-grade{width:100%;border-collapse:separate;border-spacing:3px;min-width:900px;table-layout:fixed}
.cozinha-grade th{background:#E4EFEE;color:#00756B;font-size:.82rem;padding:.35rem .3rem;text-align:center;border-radius:6px}
.cozinha-grade th.refeicao{width:7.5rem;text-align:left;padding-left:.6rem}
.cozinha-grade th.dom,.cozinha-grade td.dom{background:#F0ECE9}
.cozinha-grade th.dom{color:#b3261e}
.cozinha-grade td{vertical-align:top;border:1px solid var(--linha);border-radius:6px;padding:.3rem;background:#fff;font-size:.85rem}
.cozinha-grade td.dom{background:#F0ECE9}
.cozinha-celula-linha{display:flex;gap:.2rem;align-items:center;margin-bottom:.2rem}
.cozinha-celula-linha input{width:100%;min-width:0;padding:.25rem .35rem;font-size:.82rem}
.cozinha-celula-linha .botao-remover-linha{background:none;border:0;color:#b3261e;font-size:1.1rem;line-height:1;cursor:pointer;padding:0 .2rem;width:auto}
.cozinha-mais{background:#fff;border:1px dashed #008075;color:#008075;border-radius:6px;cursor:pointer;width:100%;padding:.05rem 0;line-height:1.2}
.cozinha-item{padding:.15rem 0;border-bottom:1px solid #eef1f1}
.cozinha-item:last-child{border-bottom:0}
.cozinha-acoes{display:flex;gap:.6rem;flex-wrap:wrap;margin-top:.8rem}
.cozinha-copiar{margin-top:1.2rem;padding-top:.8rem;border-top:1px solid var(--linha);display:flex;gap:.6rem;align-items:flex-end;flex-wrap:wrap}
@media print{
    .cozinha-cardapio .nav-hospede,.cozinha-cardapio .cozinha-abas,.cozinha-cardapio .cozinha-acoes,.cozinha-cardapio .cozinha-copiar,.cozinha-cardapio .cozinha-antecedencia,.cozinha-cardapio .botao,.cab-app,.sidebar{display:none !important}
    .cozinha-grade{min-width:0}
}

/* Contrato de moradia */
.alerta-contrato{background:#fff3cd;border-left:5px solid #c79100;border-radius:6px;padding:.5rem .8rem;margin:.6rem 0;font-size:.9rem}
.contrato-contato{display:grid;grid-template-columns:2fr 1.3fr 1fr 1fr auto;gap:.4rem;align-items:center;margin-bottom:.4rem}
.contrato-contato input{width:100%;min-width:0}
.contrato-contato .botao-remover-linha{background:none;border:0;cursor:pointer;padding:0 .3rem}
.contrato-check{display:flex;align-items:center;gap:.4rem;align-self:end}
@media (max-width:760px){.contrato-contato{grid-template-columns:1fr 1fr}}
.contrato-opcoes-lista{padding-left:1.2rem;margin:.6rem 0}
.contrato-opcoes-lista li{margin-bottom:1.1rem}
.contrato-opcoes-lista p{margin:.3rem 0;text-align:left}
.contrato-aval{margin:.4rem 0 .8rem}
.contrato-aval-prestador{display:flex;flex-direction:column;gap:.2rem;max-width:24rem;margin:.2rem 0 0 1.6rem;font-size:.9rem}
.contrato-tag{font-weight:700;color:#00756B}
.contrato-botoes{display:flex;gap:.6rem;flex-wrap:wrap;margin:.8rem 0 .4rem}
.contrato-botoes button[disabled]{opacity:.55;cursor:not-allowed}
.barra-assinatura{background:#fff3cd;border-left:5px solid #c79100;border-radius:6px;padding:.5rem .8rem;margin:0 0 1rem;font-size:.92rem}
.barra-assinatura a{font-weight:700;margin:0 .3rem}
/* Resumo: botão de configurar no quadro de avisos */
.resumo-celula h2{display:flex;align-items:center;gap:.5rem}
.topo-dir.com-config{display:flex;align-items:center;gap:.15rem}
.cab-config-btn{background:none;border:0;padding:.3rem;border-radius:999px;cursor:pointer;line-height:1;width:auto;display:inline-flex;align-items:center}
.cab-config-btn:hover{background:rgba(255,255,255,.14)}

/* Financeiro */
.fin-painel{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:.8rem;margin:1rem 0}
.fin-saldo-cartao{border:1px solid #d7e2e1;border-radius:10px;padding:.7rem .9rem;background:#fff}
.fin-saldo-titulo{font-weight:700;font-size:.92rem}
.fin-saldo-valor{font-size:1.35rem;font-weight:700;margin:.15rem 0}
.fin-pos{color:#1d6b3b}
.fin-neg{color:var(--erro)}
.fin-grade{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:.55rem .8rem;margin-top:.8rem;align-items:end}
.fin-grade label{display:flex;flex-direction:column;font-size:12px;font-weight:600;margin:0;gap:3px}
.fin-grade .f2{grid-column:span 2}
.fin-grade input,.fin-grade select{width:100%;padding:5px 7px;font-size:13px;font-weight:400;background:#fff;border:1px solid #b8c0cb;border-radius:5px}
.fin-grade .fin-botao{width:100%;margin:0;padding:5px 10px;font-size:13px;border-radius:5px}
.fin-links{margin:.5rem 0 0;display:flex;gap:1.2rem;flex-wrap:wrap;font-size:.85rem}
@media (max-width:1100px){.fin-grade{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media (max-width:640px){.fin-grade{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:420px){.fin-grade{grid-template-columns:minmax(0,1fr)}.fin-grade .f2{grid-column:auto}}
.tabela.fin-tabela{font-size:13px}
.tabela.fin-tabela td{padding-top:.3rem;padding-bottom:.3rem;white-space:nowrap}
.fin-nowrap{white-space:nowrap}
.fin-descricao{max-width:34rem;overflow:hidden;text-overflow:ellipsis}
.fin-corta{max-width:15rem;overflow:hidden;text-overflow:ellipsis}
.fin-totais{display:flex;flex-wrap:wrap;gap:.4rem 1.4rem;align-items:baseline;margin:1rem 0 .4rem;padding:.6rem .9rem;background:#f3f8f7;border-radius:8px}
.tabela tr.fin-interna td{background:#f6f6f2;color:#5b6767}
.fin-conferencia{list-style:none;padding:0;margin:.6rem 0}
.fin-conferencia li{margin:.15rem 0;font-size:.92rem}
.fin-importar-envio{display:flex;flex-wrap:wrap;gap:.8rem;align-items:flex-end;margin-top:.8rem}
.fin-importar-envio label{margin:0;font-size:.85rem}
.alerta-aviso{background:#fff3cd;color:#7a5b00}
.botao.fin-mini{width:auto;margin:0 .2rem 0 0;padding:3px 10px;font-size:13px;border-radius:5px}
.fin-acoes{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:.8rem}
.fin-grade .f3{grid-column:span 3}
.fin-grade .f4{grid-column:span 4}
.fin-grade .f8{grid-column:1 / -1}
@media (max-width:1100px){.fin-grade .f3,.fin-grade .f4{grid-column:span 2}}
@media (max-width:420px){.fin-grade .f3,.fin-grade .f4{grid-column:auto}}
.fin-fatos{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:.6rem 1.2rem;margin:.8rem 0 .4rem}
.fin-fatos dt{font-size:12px;font-weight:600;color:var(--cinza)}
.fin-fatos dd{margin:0;font-size:.95rem}
.fin-aprender{border:1px solid #d7e2e1;border-radius:8px;margin:1rem 0;padding:.6rem .9rem}
.fin-aprender legend{font-size:.85rem;font-weight:600;padding:0 .4rem}
.fin-aprender .contrato-check{margin:.35rem 0}
.fin-editar{margin-top:.6rem}
.fin-lapis{margin-left:.3rem}
.fin-grade label[hidden]{display:none}
.fin-grade .f1{grid-column:span 1}
.fin-regras input[type=text],.fin-regras input[type=number],.fin-regras select{padding:3px 6px;font-size:13px;border:1px solid #b8c0cb;border-radius:5px;width:auto}
.fin-regra-nova td{background:#f3f8f7}
.fin-reclassificar{display:inline-flex;align-items:center;gap:.25rem;margin:0 .4rem 0 0;font-size:12px;font-weight:400}
.fin-bloco-filtros{margin:1rem 0 .6rem}
.fin-bloco-filtros>summary{list-style:none}
.fin-bloco-filtros>summary::-webkit-details-marker{display:none}
.fin-bloco-filtros>summary::before{content:"▸";display:inline-block;width:1.1rem;transition:transform .15s}
.fin-bloco-filtros[open]>summary::before{transform:rotate(90deg)}
.fin-abas{display:flex;gap:.3rem;border-bottom:2px solid var(--linha);margin:.6rem 0 0}
.fin-abas a{padding:.5rem 1rem;font-weight:600;color:var(--cinza);text-decoration:none;border-bottom:3px solid transparent;margin-bottom:-2px}
.fin-abas a.ativa{color:#006058;border-bottom-color:#006058}
.fin-orc th{white-space:normal;vertical-align:bottom}
.fin-orc td{text-align:right}
.fin-orc td:first-child,.fin-orc th:first-child{text-align:left}
.fin-orc tr.fin-grupo td{background:#e4efee;font-weight:700;color:#006058}
.fin-orc tr.fin-subtotal td{background:#f3f8f7;font-weight:600;border-top:1px solid var(--linha)}
.fin-orc tr.fin-total td{background:#f3f8f7;font-weight:700;border-top:2px solid #006058}
.fin-orc input.fin-orc-valor{width:7rem;text-align:right;padding:3px 6px;font-size:13px;border:1px solid #b8c0cb;border-radius:5px}
.fin-orc input.fin-orc-valor.editado{border-color:#c79100;background:#fff3cd}
.fin-orc .muted{color:var(--cinza)}

/* Gráficos (src/graficos.php) */
.grafico-caixa{position:relative;max-width:760px}
.grafico-caixa svg{display:block;touch-action:pan-y}
.grafico-balao{position:absolute;top:0;background:#fff;border:1px solid var(--linha);border-radius:8px;padding:.35rem .55rem;font-size:.8rem;
    box-shadow:0 2px 8px rgba(31,39,51,.12);pointer-events:none;white-space:nowrap;z-index:2}
.grafico-balao strong{display:block;margin-bottom:.1rem}
.grafico-balao i{display:inline-block;width:.7rem;height:.7rem;border-radius:2px;margin-right:.35rem;vertical-align:-1px}
.indicador-topo{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start}
.indicador-valor{font-size:1.4rem;margin-right:.3rem}
/* Índices e cotações na célula do Resumo */
.resumo-indicadores{width:100%;border-collapse:collapse;font-size:.85rem}
.resumo-indicadores th,.resumo-indicadores td{padding:.3rem .3rem;border-bottom:1px solid #eef1f5;text-align:left;vertical-align:middle}
.resumo-indicadores th{font-weight:600;white-space:nowrap}
.resumo-indicadores td strong{white-space:nowrap}
.resumo-indicadores td small{display:block;color:var(--cinza);font-size:.72rem}
.resumo-indicador-grafico{width:124px}
.resumo-indicador-grafico svg{display:block}
/* Preços de compra: resumo da inflação dos custos ao lado dos índices oficiais */
.precos-resumo{display:flex;flex-wrap:wrap;gap:.6rem 2rem;margin:.6rem 0 1rem;padding:.8rem 1rem;background:#f6f8fa;border-radius:8px}
.precos-resumo>div{display:flex;flex-direction:column}
/* Registrar entrega (equipe): leitura dos códigos e linhas dos produtos */
.registrar-leitura{display:flex;flex-wrap:wrap;gap:.6rem 1rem;align-items:flex-end;margin:1rem 0 .6rem}
.registrar-leitura .botao{margin-top:0}
.registrar-digitar{display:flex;flex-direction:column;font-size:.85rem;min-width:14rem}
#registrar-tabela .registrar-ean-campo{width:9.5rem;background:#f6f8fa;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
#registrar-tabela .registrar-qtd{width:5rem}
#registrar-tabela td{vertical-align:middle}
#registrar-tabela input[name$="[nome]"]{min-width:14rem}
#registrar-tabela td:nth-child(4){min-width:18rem}
.entregas-confirmar{display:flex;flex-wrap:wrap;gap:.6rem 1rem;align-items:flex-end;margin-top:.6rem}
.entregas-confirmar label{display:flex;flex-direction:column;font-size:.85rem}
.entregas-confirmar .botao{margin-top:0}
.entrega-acoes{white-space:nowrap}
.entrega-acoes .link{margin-right:.6rem}
/* Módulos no cabeçalho (principal, Cozinha, Financeiro): só o ícone, do tamanho de um círculo de 40px, à esquerda da foto do usuário */
.cab-modulos{display:flex;align-items:center;gap:.45rem;margin-right:.5rem}
.cab-modulo{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border-radius:999px;background:transparent;
    text-decoration:none;outline-offset:2px}
.cab-modulo img{width:100%;height:100%;object-fit:contain;display:block}
.cab-modulo:hover{box-shadow:0 0 0 3px rgba(255,255,255,.45)}
.cab-modulo.ativo{box-shadow:0 0 0 3px #f2c94c}
.cab-modulo-texto{color:#fff;font-weight:700;font-size:.8rem;white-space:nowrap}
@media (max-width:900px){ .cab-modulos{gap:.3rem;margin-right:.2rem} .cab-modulo{width:34px;height:34px} }
/* Início de um módulo: cartões com os itens do menu */
.modulo-cartoes{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:.8rem;margin-top:1rem}
.modulo-cartao{display:flex;flex-direction:column;gap:.3rem;padding:1rem;border:1px solid var(--linha);border-radius:10px;background:#fff;color:inherit;text-decoration:none}
.modulo-cartao strong{color:#00756B;font-size:1.02rem}
.modulo-cartao span{color:var(--cinza);font-size:.88rem}
.modulo-cartao:hover{border-color:#00756B;box-shadow:0 2px 8px rgba(0,117,107,.12)}
@media (max-width:600px){
    .cab-app.com-modulos .cab-texto{visibility:hidden}   /* no celular os ícones dos módulos ocupam o lugar do título */
    .cab-modulo{width:30px;height:30px}
    .cab-modulo-texto{font-size:.68rem}
}
/* Fechamento dos relatórios */
.fech-fechado{color:#00756B}
.fech-aberto{color:#a15c00}
.fech-desbloqueado{color:#a33}
.fech-acoes details{margin:.2rem 0}
.fech-desbloquear{display:flex;gap:.4rem;flex-wrap:wrap;margin-top:.3rem}
.fech-desbloquear input{min-width:14rem}
.fech-historico{margin:.3rem 0 0;padding-left:1.1rem;font-size:.82rem;color:var(--cinza)}
/* Calendário do Resumo: períodos destacados */
.resumo-cal-dica .l-periodo{color:#d9cfe6}
.dialog-cal-periodos{max-width:520px;width:calc(100% - 2rem)}
.cal-periodos-lista{list-style:none;padding:0;margin:.5rem 0 1rem}
.cal-periodos-lista li{display:flex;align-items:center;gap:.5rem;padding:.35rem 0;border-bottom:1px solid var(--linha)}
.cal-periodos-lista li span{flex:1}
.cal-periodo-cor{display:inline-block;width:1.1rem;height:1.1rem;border-radius:4px;border:1px solid #c9c3d3}
.cal-periodo-novo{display:grid;grid-template-columns:1fr 1fr;gap:.5rem .8rem}
.cal-periodo-novo .cal-periodo-desc,.cal-periodo-novo .botoes-dialog{grid-column:1/-1}
/* Extrato de serviços por prestador */
.extrato-servicos .num{text-align:right;white-space:nowrap}
.extrato-servicos .extrato-total td{font-weight:700;background:#E4EFEE}
.extrato-servicos h2{margin-top:1.4rem}
.extrato-total-geral{text-align:right;font-size:1.05rem;margin-top:.8rem}
@media print{ .extrato-servicos .nao-imprime,.cab-app,.sidebar,.hamburger{display:none!important} .extrato-servicos{box-shadow:none;border:0} }

/* Cobranças: colunas da composição (Mensalidade, Despesas, Eventos, Reembolsos) */
.cob-fora{color:#c3c8cf}
#form-cobrancas td.num,#form-cobrancas th.num{white-space:nowrap}
/* Dashboard Moradia: composição da célula Mensalidades */
.composicao-mensalidades{display:flex;flex-direction:column;gap:.05rem;margin-top:.3rem;font-size:.72rem;font-weight:400;opacity:.92}
.composicao-mensalidades span{display:flex;justify-content:space-between;gap:.6rem}
.composicao-mensalidades i{font-style:normal;text-align:left}
.composicao-mensalidades b{font-weight:600;white-space:nowrap}
.nota-celula{display:block;margin-top:.3rem;font-size:.68rem;font-style:italic;opacity:.75}
/* Gestão do App › Mensagens */
.msg-abas{display:flex;gap:.4rem;flex-wrap:wrap;margin:.6rem 0 1rem}
.msg-abas a{padding:.4rem .9rem;border-radius:999px;border:1px solid var(--linha);text-decoration:none;color:inherit;font-size:.9rem}
.msg-abas a.ativa{background:var(--azul);border-color:var(--azul);color:#fff}
.msg-gatilho{display:flex;gap:.8rem;align-items:flex-start;padding:.8rem 1rem;border:1px solid var(--linha);border-radius:10px;margin-bottom:1rem}
.msg-gatilho p{margin:.2rem 0 0}
.msg-editor-rotulo{margin-top:.8rem;font-weight:600;font-size:.92rem}
.msg-barra{display:flex;flex-wrap:wrap;gap:.3rem;align-items:center;padding:.35rem;border:1px solid var(--linha);border-bottom:0;border-radius:8px 8px 0 0;background:#f6f8fa;margin-top:.3rem}
.msg-barra button{width:auto;min-width:34px;padding:.3rem .55rem;border:1px solid var(--linha);border-radius:6px;background:#fff;color:inherit;cursor:pointer;font-size:.85rem}
.msg-barra button:hover{border-color:var(--azul)}
.msg-barra select{width:auto;max-width:100%;padding:.3rem .4rem;font-size:.85rem}
.msg-barra-sep{width:1px;align-self:stretch;background:var(--linha);margin:0 .2rem}
.msg-editor{min-height:200px;padding:.8rem 1rem;border:1px solid var(--linha);border-radius:0 0 8px 8px;background:#fff;line-height:1.55;overflow-wrap:anywhere}
.msg-editor:focus{outline:2px solid var(--azul);outline-offset:1px}
.msg-editor p{margin:0 0 .7em}
.msg-acoes{display:flex;gap:.6rem;flex-wrap:wrap;margin-top:1rem}
.msg-previa{width:100%;height:560px;border:1px solid var(--linha);border-radius:8px;background:#f2f4f7}
