/* Mensagens do site (05/11/2026, app/mensagens_site.py): balão "Fale com a gente" no canto das páginas públicas. */
.vfm{position:fixed;right:20px;bottom:20px;z-index:900;display:flex;flex-direction:column;align-items:flex-end;gap:12px;font-family:inherit}
.vfm-btn{display:inline-flex;align-items:center;gap:10px;height:56px;min-width:56px;padding:0 20px 0 16px;border:0;border-radius:999px;background:#0f7b53;color:#fff;font-family:inherit;font-size:15px;font-weight:700;line-height:1;cursor:pointer;box-shadow:0 10px 28px rgba(15,23,32,.22);transition:transform .15s ease,box-shadow .15s ease}
.vfm-btn:hover{transform:translateY(-2px);box-shadow:0 14px 32px rgba(15,23,32,.26)}
.vfm-btn:focus-visible,.vfm-close:focus-visible{outline:3px solid #9be3b8;outline-offset:3px}
.vfm-btn svg{flex:none}
.vfm.is-open .vfm-btn{padding:0 16px}
.vfm.is-open .vfm-btn-label{display:none}
.vfm-panel{width:min(370px,calc(100vw - 32px));max-height:min(620px,calc(100vh - 110px));display:flex;flex-direction:column;overflow:hidden;background:var(--v2-surface,#fff);border:1px solid var(--v2-line-strong,#d5dae1);border-radius:16px;box-shadow:0 24px 60px rgba(15,23,32,.18)}
.vfm-panel[hidden]{display:none}
.vfm-head{display:flex;align-items:center;gap:10px;padding:14px 14px 14px 16px;background:#0f7b53;color:#fff}
.vfm-head .brand-mark{flex:none}
.vfm-head>div{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}
.vfm-head b{font-size:15px}.vfm-head small{font-size:12.5px;opacity:.9}
.vfm-close{flex:none;width:36px;height:36px;border:0;border-radius:999px;background:rgba(255,255,255,.14);color:#fff;font-size:24px;line-height:1;cursor:pointer}
.vfm-close:hover{background:rgba(255,255,255,.24)}
.vfm-body{padding:14px 16px 16px;overflow-y:auto;background:var(--v2-canvas,#f6f7f9);display:flex;flex-direction:column;gap:12px}
.vfm-bubble{margin:0;max-width:92%;padding:10px 12px;border-radius:4px 14px 14px 14px;background:var(--v2-surface,#fff);border:1px solid var(--v2-line,#e4e7ec);font-size:14.5px;line-height:1.5;color:var(--v2-text,#101828);overflow-wrap:anywhere;white-space:pre-wrap}
.vfm-me{align-self:flex-end;border-radius:14px 4px 14px 14px;background:#dff5e8;border-color:#bfe6d3}
.vfm-form{display:flex;flex-direction:column;gap:10px;margin:0}
.vfm-form label{display:flex;flex-direction:column;gap:4px;font-size:13px;font-weight:600;color:var(--v2-text,#101828)}
.vfm-form label span{font-weight:400;color:var(--v2-muted,#667085)}
.vfm-form textarea,.vfm-form input[type=email],.vfm-form input[type=text]{width:100%;box-sizing:border-box;padding:10px 12px;border:1px solid var(--v2-line-strong,#d5dae1);border-radius:10px;background:var(--v2-surface,#fff);font-family:inherit;font-size:16px;line-height:1.4;color:var(--v2-text,#101828);resize:vertical}
.vfm-form textarea{min-height:92px}
.vfm-form textarea:focus,.vfm-form input:focus{outline:2px solid #0f7b53;outline-offset:0;border-color:#0f7b53}
.vfm-trap{position:absolute!important;left:-9999px!important;width:1px;height:1px;overflow:hidden}
.vfm-send{width:100%;justify-content:center}
.vfm-send[disabled]{opacity:.65;cursor:progress}
.vfm-err{margin:0;padding:8px 10px;border-radius:8px;background:#fef3f2;border:1px solid #f5c2bd;color:#b42318;font-size:13.5px}
.vfm-err[hidden],.vfm-done[hidden],.vfm-form[hidden]{display:none}
.vfm-note{margin:0;font-size:12px;color:var(--v2-muted,#667085)}.vfm-note a{color:inherit}
.vfm-done{display:flex;flex-direction:column;gap:10px}
.vfm-again{align-self:flex-start}
@media (max-width:620px){
  .vfm{right:16px;bottom:16px}
  .vfm-btn{padding:0;width:56px;justify-content:center}
  .vfm-btn-label{display:none}
  .vfm-panel{width:calc(100vw - 32px);max-height:calc(100vh - 100px);max-height:calc(100dvh - 92px)}
  /* auditoria 05/11, 2ª leva (MSG-03): o pé do painel ("Privacidade") cabe inteiro em 390×844, mesmo com o erro */
  .vfm-head{padding:10px 12px 10px 14px}
  .vfm-body{padding:12px 14px 14px;gap:10px}
  .vfm-bubble{font-size:14px;line-height:1.45;padding:8px 11px}
  .vfm-form{gap:8px}
  .vfm-form textarea{min-height:72px}
  .vfm-form textarea,.vfm-form input[type=email],.vfm-form input[type=text]{padding:8px 11px}
}
/* Auditoria de UX de 05/11/2026, 2ª leva (C10, v1.1.0):
   - celular (ou tela baixa) com o aviso de cookies aberto: o balão some até a escolha (antes subia para o meio da tela
     e, junto com o aviso, cobria até 37% da altura); quem já abriu o painel continua com ele;
   - LBF-20: com um botão da página bem debaixo dele (ex.: "SVG" do QR Code Pix), o balão recua para a borda
     (vf-mensagens.js, classe vfm-recuado) e volta quando a página rola. */
@media (max-width:639px),(max-height:600px){
  html.vfc-open .vfm:not(.is-open){display:none}
}
/* MOB-15: celular baixo (ex.: 320×568): o painel usa a altura toda (fecha pelo × do topo), sem o balão de boas-vindas
   (o topo já diz que a resposta vai por e-mail), para o "Enviar" aparecer sem rolar. */
@media (max-width:620px) and (max-height:700px){
  .vfm.is-open .vfm-btn{display:none}
  .vfm.is-open .vfm-panel{max-height:calc(100vh - 32px);max-height:calc(100dvh - 32px)}
  .vfm-body>.vfm-bubble:first-child{display:none}
  .vfm-form textarea{min-height:56px}
  .vfm-form label{font-size:12.5px}
}
.vfm{transition:transform .2s ease}
.vfm.vfm-recuado:not(.is-open){transform:translateX(44px)}
.vfm.vfm-recuado:not(.is-open) .vfm-btn{box-shadow:0 4px 14px rgba(15,23,32,.22)}
.vfm.vfm-recuado .vfm-btn:focus-visible{transform:translateX(-44px)}
@media (prefers-reduced-motion:reduce){.vfm,.vfm-btn{transition:none}.vfm-btn:hover{transform:none}}
@media print{.vfm{display:none}}
