/* ============================================================
   custom.css — Microvil | Chatwoot v4.16.1 — SKIN "MASTER CHAT"
   Visual alvo: Master Chat Soluções (Whaticket dark) — sidebar
   única preta com seções Gerência/Administração, topbar de
   saudação, tema quase-preto, acento teal, badges vermelhos.
   Injetado via nginx sub_filter; pares com custom.js (que monta
   #mv-topbar, #mv-menu e renomeia abas). Tokens validados contra
   _next-colors.scss v4.16.1. Dark = classe .dark no <body>.
   CLARO (19/10, "volta o claro, completo"): cada regra com cor fixa
   pensada pro escuro ganhou ao lado a sua versão em body:not(.dark)
   (ou :not(.dark *)) — WhatsApp Web claro: fundo #f0f2f5/#fff, texto
   #111b21/#54656f, acento teal. As regras do escuro não foram tocadas:
   o escuro continua igual, e o claro só vale sem .dark no <body>.
   ============================================================ */

/* ── 1. TOKENS DARK QUASE-PRETO (Tier 1+2, cobrem ~95% da UI) ── */
.dark {
  --background-color: 11 11 13;   /* #0b0b0d — app, sidebar, páginas */
  --surface-1: 13 13 16;          /* lista de conversas + área do chat */
  --surface-2: 19 19 22;
  --solid-1: 19 19 22;            /* #131316 — replybox, inputs, cards */
  --solid-2: 19 19 22;            /* cartões CardLayout, tooltips */
  --solid-3: 31 31 35;
  --solid-active: 38 38 44;
  --surface-active: 38 38 44;
  --card-color: 19 19 22;
  --alpha-3: 19, 19, 22, 0.97;    /* popovers/modais/dropdowns */
  --alpha-1: 24, 24, 28, 0.85;
  --button-color: 26 26 30;
  --label-background: 26 26 30;
  --border-weak: 30 30 35;
  --border-strong: 44 44 50;
  --slate-1: 13 13 15;
  --slate-2: 19 19 22;            /* conversa selecionada */
  --slate-3: 26 26 30;
  --slate-4: 32 32 37;
  --slate-5: 40 40 46;
}

/* ── 2. ACENTO TEAL (estilo Master Chat) no lugar do azul #2781F6
   compilado (n-brand é hex fixo no build — só se troca por classe) ── */
:root {
  --mv-teal: #12A594;        /* botões/acento (≈ teal-9 nativo) */
  --mv-teal-hover: #0E9384;
  --mv-teal-texto: #2CD3BA;  /* títulos/aba ativa no dark */
  --mv-vermelho: #E92A31;    /* badges Microvil */
  --mv-verde-wa: #25D366;    /* WhatsApp */
}
/* claro: os tons que só leem bem no preto escurecem (#2CD3BA e #25D366 no
   branco ficam abaixo de 2:1 de contraste). O :not(.dark *) cobre as telas de
   login (/app/login, v3), que põem o .dark no <html> e não no <body>: sem ele a
   variável clara herdava pro escuro de lá (botões link/faded do MFA) */
body:not(.dark):not(.dark *) {
  --mv-teal-texto: #0B7A6E;  /* mesmo teal do acento, mais fechado: 5,2:1 no branco */
  --mv-verde-wa: #169445;    /* verde WhatsApp mais fechado: 3,2:1+ nos chips claros */
}
.bg-n-brand { background-color: var(--mv-teal) !important; }
.after\:bg-n-brand::after { background-color: var(--mv-teal) !important; }
.text-n-brand, .hover\:text-n-brand:hover, .group-hover\:text-n-brand { color: var(--mv-teal) !important; }
.border-n-brand, .checked\:border-n-brand:checked, .focus\:border-n-brand:focus { border-color: var(--mv-teal) !important; }
.checked\:bg-n-brand:checked, .indeterminate\:bg-n-brand:indeterminate { background-color: var(--mv-teal) !important; }
.outline-n-brand, .focus\:outline-n-brand:focus, .focus-within\:outline-n-brand:focus-within, .focus-visible\:outline-n-brand:focus-visible { outline-color: var(--mv-teal) !important; }
.ring-n-brand, .focus\:ring-n-brand:focus { --tw-ring-color: var(--mv-teal) !important; }
.bg-n-brand\/5:not(.dark *) { background-color: rgb(18 165 148 / 0.05) !important; }
.bg-n-brand\/10, .hover\:bg-n-brand\/10:hover { background-color: rgb(18 165 148 / 0.1) !important; }
.hover\:bg-n-brand\/80:hover { background-color: rgb(18 165 148 / 0.8) !important; }
.hover\:bg-n-brand\/90:hover { background-color: var(--mv-teal-hover) !important; }
/* links/realces azuis do dark viram teal (aba ativa, botões faded…) */
.dark .text-n-blue-11 { color: var(--mv-teal-texto) !important; }
.dark .bg-n-blue-3 { background-color: rgb(18 165 148 / 0.18) !important; }
/* claro: o mesmo troca-azul-por-teal (sem isso a aba ativa e os botões faded/
   outline/link ficavam com texto azul ao lado do sublinhado/fundo teal).
   :not(.dark *) = mesmo peso das duas regras acima, então os badges vermelhos
   da seção 5 continuam ganhando, como no escuro */
.text-n-blue-11:not(.dark *) { color: var(--mv-teal-texto) !important; }
.bg-n-blue-3:not(.dark *) { background-color: rgb(18 165 148 / 0.12) !important; }

/* Títulos de página em teal (Relatórios, Contatos, Configurações…) —
   h1 via CSS; headings de outras tags o custom.js pinta com --mv-titulo */
:root { --mv-titulo: #0E9384; }
.dark { --mv-titulo: #2CD3BA; }
main h1,
main span.text-heading-1,
main span.text-xl.font-medium.truncate { color: var(--mv-titulo) !important; }

/* ── 3. SIDEBAR: esconde o menu nativo — o custom.js monta o
   #mv-menu no lugar (mesma <nav>; a busca e o rodapé nativos ficam) ── */
aside nav > ul { display: none !important; }
.dark aside { background-color: #0a0a0c !important; }

/* Logo Microvil no topo da sidebar (injetada pelo custom.js); a linha
   nativa logo-pequena + nome da conta sai de cena */
aside > section > div:has(#sidebar-account-switcher) { display: none !important; }
#mv-logo { position: relative; display: flex; align-items: center; justify-content: center; gap: 8px; padding: 12px 8px 6px; }
#mv-logo img { width: 34px; height: 34px; }
#mv-logo span { font-weight: 800; font-size: 15px; letter-spacing: 0.02em; }

/* ── RECOLHER SIDEBAR (botão chevron no topo, estilo Master): a largura
   passa a ser do skin (fixa) e o resize nativo sai de cena ── */
aside > div.cursor-col-resize { display: none !important; }
aside[class*="border-n-weak"] { width: 220px !important; transition: width 0.15s ease; }
#mv-recolher {
  position: absolute; right: 6px; top: 50%; transform: translateY(-50%);
  display: grid; place-content: center; width: 22px; height: 22px;
  border: 0; border-radius: 6px; background: none; color: inherit;
  cursor: pointer; opacity: 0.6; padding: 0;
}
#mv-recolher:hover { opacity: 1; background: rgba(148, 153, 176, 0.14); }
#mv-recolher svg { width: 14px; height: 14px; stroke: currentColor; fill: none; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; transition: transform 0.2s ease; }
body.mv-recolhida #mv-recolher svg { transform: rotate(180deg); }
body.mv-recolhida aside[class*="border-n-weak"] { width: 64px !important; }
body.mv-recolhida #mv-logo { flex-direction: column; gap: 6px; padding: 12px 0 6px; }
body.mv-recolhida #mv-logo span { display: none; }
body.mv-recolhida #mv-recolher { position: static; transform: none; margin: 0 auto; }
body.mv-recolhida .mv-nav-rotulo,
body.mv-recolhida .mv-nav-chev,
body.mv-recolhida .mv-nav-sec,
body.mv-recolhida #mv-versao { display: none !important; }
body.mv-recolhida #mv-menu .mv-nav-i { justify-content: center; padding: 7px 0; }
body.mv-recolhida #mv-menu .mv-nav-filhos .mv-nav-i { padding-left: 0; }
body.mv-recolhida .mv-nav-grupo > button.mv-nav-i { display: none; }
body.mv-recolhida .mv-nav-grupo .mv-nav-filhos { display: flex !important; }
body.mv-recolhida aside > section > div:has(a[href$="/search"]) { display: none !important; }
body.mv-recolhida aside section div.border-t button > div.min-w-0 { display: none; }

/* Menu Master Chat (#mv-menu, injetado pelo custom.js) */
#mv-menu { display: flex; flex-direction: column; gap: 2px; padding: 2px 0 6px; }
.mv-nav-i {
  display: flex; align-items: center; gap: 10px;
  padding: 7px 8px; border-radius: 8px; cursor: pointer;
  color: inherit; text-decoration: none; font-size: 13px;
  border: 0; background: none; width: 100%; text-align: left; font-family: inherit;
}
.mv-nav-i:hover { background: rgba(148, 153, 176, 0.10); }
.mv-nav-i.ativo { background: rgba(148, 153, 176, 0.16); font-weight: 600; }
.dark .mv-nav-i.ativo { background: #26262c; }
.mv-nav-ic {
  display: grid; place-content: center; flex-shrink: 0;
  width: 28px; height: 28px; border-radius: 8px;
  background: rgba(148, 153, 176, 0.10); border: 1px solid rgba(148, 153, 176, 0.14);
}
.dark .mv-nav-ic { background: #1b1b20; border-color: #26262c; }
.mv-nav-ic svg { width: 15px; height: 15px; stroke: currentColor; fill: none; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; opacity: 0.9; }
.mv-nav-i.mv-wa .mv-nav-ic svg { stroke: var(--mv-verde-wa); }
.mv-nav-rotulo { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mv-nav-chev svg { width: 13px; height: 13px; stroke: currentColor; fill: none; stroke-width: 2; opacity: 0.6; transition: transform 0.2s ease; }
.mv-nav-grupo.fechado .mv-nav-chev svg { transform: rotate(-90deg); }
.mv-nav-filhos { display: flex; flex-direction: column; gap: 1px; margin: 1px 0 2px; }
.mv-nav-grupo.fechado .mv-nav-filhos { display: none; }
.mv-nav-filhos .mv-nav-i { padding-left: 18px; }
.mv-nav-sec {
  text-align: center; font-size: 11px; font-weight: 700; letter-spacing: 0.08em;
  text-transform: uppercase; opacity: 0.5; margin: 12px 0 4px; user-select: none;
}
#mv-versao { text-align: center; font-size: 11px; opacity: 0.4; padding: 8px 0 4px; user-select: none; }

/* Banners nativos de nag no topo (atualização do Chatwoot, status, pagamento):
   poluem a interface e cutucam o admin — escondidos */
.woot-banner { display: none !important; }

/* Telas do serviço equipe embutidas no app (Dashboard/Painel/Conexões):
   cobrem só a área de conteúdo (topbar removida → começa no topo) */
#mv-frame {
  position: fixed; top: 0; left: 220px; right: 0; bottom: 0;
  z-index: 20; background: #0b0b0d;
}
body.mv-recolhida #mv-frame { left: 64px; }
/* claro: fundo claro atrás do iframe (aparece enquanto a tela do equipe carrega) */
body:not(.dark) #mv-frame { background: #f0f2f5; }
#mv-frame iframe { width: 100%; height: 100%; border: 0; display: block; }

/* ── 4. TOPBAR "Olá Fulano, Bem-vindo a Microvil!" (#mv-topbar) ── */
/* fixa no topo, fora do fluxo; o padding-top do #app (border-box com
   h-screen) reserva os 42px — sem isso a página fica mais alta que a
   viewport e rola, cortando topbar e rodapé da sidebar */
#mv-topbar {
  display: flex; align-items: center; gap: 12px;
  position: fixed; top: 0; left: 0; right: 0; z-index: 39;
  height: 42px; padding: 0 14px;
  background: #f4f4f5; border-bottom: 1px solid rgba(128, 128, 128, 0.25);
  font-size: 13.5px;
}
.dark #mv-topbar { background: #0a0a0c; border-bottom-color: #1e1e24; color: #ecebe8; }
/* topbar removida — sem reserva de espaço (o :has não casa mais; regra
   mantida a 0 por segurança caso algum cache antigo recrie o elemento) */
#app:has(> #mv-topbar) { padding-top: 0; }
#mv-topbar { display: none !important; }
#mv-topbar .mv-tb-sauda { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
#mv-topbar .mv-tb-sauda b { font-weight: 700; }
#mv-topbar .mv-tb-btn {
  display: grid; place-content: center; width: 30px; height: 30px;
  border-radius: 99px; border: 0; background: none; cursor: pointer; color: inherit;
}
#mv-topbar .mv-tb-btn:hover { background: rgba(148, 153, 176, 0.14); }
#mv-topbar .mv-tb-btn svg { width: 16px; height: 16px; stroke: currentColor; fill: none; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
#mv-topbar .mv-tb-avatar {
  position: relative; display: grid; place-content: center;
  width: 30px; height: 30px; border-radius: 99px;
  background: var(--mv-teal); color: #fff; font-weight: 700; font-size: 13px;
}
#mv-topbar .mv-tb-avatar::after {
  content: ''; position: absolute; right: -1px; bottom: -1px;
  width: 9px; height: 9px; border-radius: 99px; background: #22c55e;
  border: 2px solid #0a0a0c;
}
body:not(.dark) #mv-topbar .mv-tb-avatar::after { border-color: #f4f4f5; }   /* claro: cor da topbar clara */

/* ── 5a. FASE 1 fidelidade: topo da lista estilo Master ── */
/* busca+lápis nativos da sidebar somem (a busca agora fica na lista) */
aside > section > div:has(a[href$="/search"]) { display: none !important; }
#mv-busca { display: flex; align-items: center; gap: 8px; padding: 10px 10px 4px; }
.mv-busca-pill {
  flex: 1; display: flex; align-items: center; gap: 8px; cursor: pointer;
  background: #0d0d0f; border: 1px solid #26262c; color: #8b8b90;
  border-radius: 24px; padding: 9px 14px; font-size: 13px; text-align: left;
  font-family: inherit;
}
.mv-busca-pill:hover { border-color: #3a3a42; color: #b5b5ba; }
/* claro: campo de busca do WhatsApp Web claro */
body:not(.dark) .mv-busca-pill { background: #f0f2f5; border-color: #e9edef; color: #54656f; }
body:not(.dark) .mv-busca-pill:hover { border-color: #d1d7db; color: #3b4a54; }
.mv-lupa svg { width: 15px; height: 15px; stroke: currentColor; fill: none; stroke-width: 2; }
.mv-filas-box select {
  background: #131316; color: #ecebe8; border: 1px solid #26262c;
  border-radius: 8px; padding: 8px; font-size: 12.5px; cursor: pointer;
}
body:not(.dark) .mv-filas-box select { background: #ffffff; color: #111b21; border-color: #d1d7db; }   /* claro */
/* controles do header da lista viram quadradinhos outline (fileira do Master) */
.conversations-list-wrap div[class*="3.25rem"] button {
  border: 1px solid rgba(148, 153, 176, 0.28); border-radius: 8px;
  min-width: 30px; height: 30px;
}
#mv-mais svg { width: 15px; height: 15px; stroke: currentColor; fill: none; stroke-width: 2; }

/* variáveis no modal de Resposta Rápida */
.mv-vars { border: 1px solid rgba(148, 153, 176, 0.25); border-radius: 10px; padding: 8px 10px; margin: 8px 0; }
.mv-vars-t { font-size: 10.5px; font-weight: 700; opacity: 0.6; margin-bottom: 6px; letter-spacing: 0.05em; }
.mv-var {
  border: 0; cursor: pointer; background: rgba(18, 165, 148, 0.15);
  color: var(--mv-teal-texto); border-radius: 99px; padding: 4px 10px;
  font-size: 11.5px; font-weight: 600; margin: 0 6px 6px 0; font-family: inherit;
}
.mv-var:hover { background: rgba(18, 165, 148, 0.3); }

/* ações rápidas nos Contatos (WhatsApp/editar/excluir) + botões do topo */
.mv-cont-acoes { display: inline-flex; gap: 4px; margin-right: 10px; vertical-align: middle; }
.mv-ca {
  display: grid; place-content: center; width: 28px; height: 28px;
  border: 0; border-radius: 8px; background: rgba(148, 153, 176, 0.10);
  color: #a0a09a; cursor: pointer;
}
.mv-ca:hover { background: rgba(148, 153, 176, 0.22); color: #ecebe8; }
.mv-ca svg { width: 14px; height: 14px; stroke: currentColor; fill: none; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.mv-ca-wa { color: #25D366; }
.mv-ca-del:hover { background: rgba(233, 42, 49, 0.18); color: #f0555b; }
/* claro: ícones cinza do WhatsApp Web claro (o #a0a09a some no branco). A ordem
   importa: o verde vem depois do cinza e o hover da lixeira depois do hover geral,
   igual às regras do escuro acima */
body:not(.dark) .mv-ca { color: #54656f; }
body:not(.dark) .mv-ca-wa { color: var(--mv-verde-wa); }
body:not(.dark) .mv-ca:hover { color: #111b21; }
body:not(.dark) .mv-ca-del:hover { color: #d92d20; }
#mv-cont-add { display: inline-flex; gap: 8px; margin-left: 10px; }
.mv-cont-btn {
  border: 0; border-radius: 8px; padding: 8px 14px; font-size: 12.5px;
  font-weight: 700; cursor: pointer; font-family: inherit;
}
.mv-cont-btn.mv-ghost { background: rgba(18, 165, 148, 0.14); color: var(--mv-teal-texto); }
.mv-cont-btn.mv-cheio { background: var(--mv-teal); color: #fff; }
.mv-cont-btn:hover { filter: brightness(1.15); }

/* ═══ ENXUGAR A INTERFACE (pedido David 19/08): esconder o que não serve
   pro atendimento e as legendas que poluem — só oculta, nada quebra ═══ */

/* 1. Contato: bloco de REDES SOCIAIS (Facebook/Insta/LinkedIn/Telegram/
   TikTok/Twitter/Github) — inútil pro atendimento por WhatsApp */
div.flex.flex-col.items-start.gap-2:has(input[placeholder^="Adicionar "]) { display: none !important; }
div.flex.items-center.gap-2.px-2.rounded-lg:has(> input[placeholder^="Adicionar "]) { display: none !important; }

/* 2. LEGENDAS descritivas (só em telas de Configurações/Perfil — body.mv-settings
   é setado pelo custom.js pela URL; mantém títulos/labels, tira o parágrafo
   cinza que só polui). Cobre os 3 padrões: SectionLayout (header grid-cols-4),
   BaseSettingsHeader (line-clamp-5) e sub-itens (label + p.text-n-gray-11). */
/* (fora de tabelas: em Respostas Rápidas o TEXTO de cada resposta usa as mesmas
   classes da legenda e sumia junto — bug achado em 19/10) */
body.mv-settings main header[class*="grid-cols-4"] p,
body.mv-settings main p[class*="line-clamp-5"]:not(td p),
body.mv-settings main p[class*="text-n-gray-11"]:not(td p),
body.mv-settings main p[class*="text-body-main"][class*="text-n-slate-11"]:not(td p) { display: none !important; }
/* bloco de descrição + link "Saiba mais sobre..." do BaseSettingsHeader
   (leva pra docs do Chatwoot em inglês — clutter pro atendimento) */
body.mv-settings main div[class~="gap-1.5"][class~="text-n-slate-11"] { display: none !important; }

/* ── 5. LISTA DE CONVERSAS: abas Atendendo/Aguardando (renomeadas
   no custom.js) com badge vermelho redondo estilo Master ── */
.conversations-list-wrap a .bg-n-blue-3,
.conversations-list-wrap a .bg-n-alpha-1 {
  background: var(--mv-vermelho) !important; color: #fff !important;
  border-radius: 99px; min-width: 18px; height: 18px;
  font-weight: 700;
}
/* badge de não-lidas no card: vermelho da marca */
.conversations-list .conversation span.bg-n-teal-9 { background-color: var(--mv-vermelho) !important; }
body.dark .conversations-list .conversation span.bg-n-teal-9 { background-color: #f0555b !important; }

/* ── 6. CHAT ESTILO WHATSAPP DARK (como o Master/Whaticket) ── */
.dark ul.conversation-panel { background: #0b141a !important; }
.dark .right-bubble { background: #005c4b !important; color: #e9edef !important; }
/* bolha de NOTA PRIVADA continua âmbar (não verde) — só o cadeado não basta */
.dark .right-bubble.bg-n-solid-amber { background: #3b2f1e !important; color: #f0dcbc !important; }
.dark .left-bubble { background: #202c33 !important; color: #e9edef !important; }
.dark .reply-box { background: #131316 !important; }
/* nota privada PRECISA se destacar (âmbar) — o override acima engoliria */
.dark .reply-box.is-private {
  background: #3b2f1e !important;
  border-color: rgba(243, 146, 42, 0.4) !important;
}

/* ── 6b. CHAT ESTILO WHATSAPP CLARO (WhatsApp Web claro): as mesmas peças da
   seção 6 com as cores do claro + a sombrinha das bolhas do WhatsApp ── */
body:not(.dark) ul.conversation-panel { background: #efeae2 !important; }
body:not(.dark) .right-bubble {
  background: #d9fdd3 !important; color: #111b21 !important;
  box-shadow: 0 1px 0.5px rgba(11, 20, 26, 0.13);
}
/* nota privada continua âmbar claro, com contorno laranja pra não se confundir
   com a bolha verde nem com o fundo bege */
body:not(.dark) .right-bubble.bg-n-solid-amber {
  background: #ffe4b5 !important; color: #4f3422 !important;
  box-shadow: inset 0 0 0 1px rgba(243, 146, 42, 0.7), 0 1px 0.5px rgba(11, 20, 26, 0.13);
}
body:not(.dark) .left-bubble {
  background: #ffffff !important; color: #111b21 !important;
  box-shadow: 0 1px 0.5px rgba(11, 20, 26, 0.13);
}
/* avisos do sistema ("conversa atribuída a…"): o cinza translúcido nativo some no
   bege — vira a pílula branca do WhatsApp claro (no escuro o token já resolve) */
body:not(.dark) ul.conversation-panel [data-bubble-name="activity"] {
  background: #ffffff; color: #54656f;
  box-shadow: 0 1px 0.5px rgba(11, 20, 26, 0.13);
}
body:not(.dark) .reply-box { background: #ffffff !important; }
/* nota privada sendo escrita: o mesmo âmbar da bolha, com borda laranja */
body:not(.dark) .reply-box.is-private {
  background: #ffe4b5 !important;
  border-color: rgba(243, 146, 42, 0.7) !important;
}

/* Empty state "Selecione um ticket" (custom.js troca texto e injeta logo) */
.mv-empty-logo { width: 56px; height: 56px; margin: 0 auto 10px; display: block; }

/* ── 7. FILA DE ESPERA na barra lateral (widget do custom.js; 19/10: "melhora a
   visualização dessa fila"). Cartão: cabeçalho com o número (vermelho quando tem
   gente), linha do rodízio (quantos estão recebendo), vazia com ✓, e cada cliente
   com as iniciais na cor da fila, tempo de espera que esquenta (verde → amarelo →
   vermelho) e botão Puxar sempre visível. Barra recolhida: só o ícone e o número. ── */
#mv-fila {
  flex: none; align-self: start;   /* o nav é um grid: sem isso o cartão estica até o fim */
  --mvf-borda: rgba(128, 128, 128, 0.20);
  --mvf-fundo: rgba(128, 128, 128, 0.06);
  --mvf-hover: rgba(128, 128, 128, 0.12);
  --mvf-suave: #8b8b93;
  margin: 12px 6px 8px; padding: 10px; border: 1px solid var(--mvf-borda);
  border-radius: 12px; background: var(--mvf-fundo); font-size: 12.5px;
}
body:not(.dark) #mv-fila { --mvf-fundo: #ffffff; --mvf-borda: #e4e7ea; --mvf-hover: #f2f4f5; --mvf-suave: #667781; }
.mv-fila-cab { display: flex; align-items: center; gap: 8px; }
.mv-fila-ico {
  display: grid; place-content: center; width: 26px; height: 26px; flex-shrink: 0;
  border-radius: 8px; background: rgba(18, 165, 148, 0.14); color: var(--mv-teal-texto);
}
.mv-fila-ico svg { width: 15px; height: 15px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.mv-fila-tit { flex: 1; min-width: 0; font-size: 12.5px; font-weight: 700; }
.mv-fila-n {
  display: grid; place-content: center; min-width: 22px; height: 20px; padding: 0 7px;
  border-radius: 99px; font-size: 11.5px; font-weight: 800;
  background: rgba(128, 128, 128, 0.16); color: var(--mvf-suave);
}
.mv-fila-n.mv-tem { background: var(--mv-vermelho); color: #fff; }
.mv-fila-erro { color: #d4a900; }
.mv-fila-rod { display: flex; align-items: center; gap: 7px; margin: 9px 2px 2px; font-size: 11.5px; color: var(--mvf-suave); }
.mv-fila-ponto {
  width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0;
  background: #22c55e; box-shadow: 0 0 0 3px rgba(34, 197, 94, 0.18);
}
.mv-fila-rod.mv-off .mv-fila-ponto { background: #9ca3af; box-shadow: none; }
.mv-fila-vazia {
  display: flex; align-items: center; gap: 8px; margin-top: 8px; padding: 8px 10px;
  border-radius: 8px; background: rgba(34, 197, 94, 0.08); color: var(--mvf-suave); font-size: 12px;
}
.mv-fila-ok {
  display: grid; place-content: center; width: 18px; height: 18px; flex-shrink: 0;
  border-radius: 50%; background: #22c55e; color: #fff; font-size: 11px; font-weight: 800;
}
.mv-fila-i {
  display: grid; grid-template-columns: 28px minmax(0, 1fr) auto; grid-template-rows: auto auto;
  column-gap: 8px; row-gap: 3px; align-items: center;
  margin-top: 6px; padding: 7px 8px 7px 7px; border-radius: 10px;
  border: 1px solid var(--mvf-borda); border-left: 3px solid transparent;
  text-decoration: none; color: inherit;
}
.mv-fila-i:hover { background: var(--mvf-hover); }
.mv-fila-i.mv-u-ok { border-left-color: #16a34a; }
.mv-fila-i.mv-u-atencao { border-left-color: #d4a900; }
.mv-fila-i.mv-u-critico { border-left-color: #e92a31; }
.mv-fila-av {
  grid-row: 1 / span 2; display: grid; place-content: center; width: 28px; height: 28px;
  border-radius: 50%; color: #fff; font-size: 11px; font-weight: 800; letter-spacing: 0.02em;
}
.mv-fila-nome { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 700; font-size: 12.5px; }
.mv-fila-min { justify-self: end; white-space: nowrap; font-size: 11px; font-weight: 700; color: #16a34a; }
.mv-u-atencao .mv-fila-min { color: #b48b00; }
body:not(.dark) .mv-u-atencao .mv-fila-min { color: #8f6d00; }   /* claro: o amarelo fica 2,9:1 no fundo claro */
.mv-u-critico .mv-fila-min { color: #e92a31; }
.mv-fila-l2 { display: flex; align-items: center; gap: 5px; min-width: 0; }
.mv-fila-prev { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 11px; color: var(--mvf-suave); }
.mv-ftag {
  flex-shrink: 0; color: #fff; border-radius: 99px; font-size: 9px; font-weight: 800;
  padding: 1px 6px; letter-spacing: 0.03em; text-transform: uppercase;
}
.mv-fila-pegar {
  justify-self: end; height: 20px; padding: 0 8px; border: 0; border-radius: 6px; cursor: pointer;
  background: var(--mv-teal); color: #fff; font: inherit; font-size: 10.5px; font-weight: 800;
}
.mv-fila-pegar:hover { filter: brightness(1.12); }
.mv-fila-mais { margin-top: 6px; text-align: center; font-size: 11px; color: var(--mvf-suave); }
.mv-fila-aviso {
  margin: 6px 0 0; padding: 5px 8px; border-radius: 6px;
  font-size: 11px; font-weight: 600; background: rgba(22, 163, 74, 0.14);
}
body.mv-recolhida #mv-fila { margin: 10px 8px; padding: 6px 4px; }
body.mv-recolhida #mv-fila > :not(.mv-fila-cab),
body.mv-recolhida .mv-fila-tit,
body.mv-recolhida .mv-fila-erro { display: none !important; }
body.mv-recolhida .mv-fila-cab { flex-direction: column; gap: 4px; }

/* ── aba "Resolvidos" (custom.js): lista própria por cima da nativa ── */
body.mv-resolvidos-on .conversations-list-wrap > .conversations-list,
body.mv-resolvidos-on .conversations-list-wrap > p { display: none !important; }
/* com Resolvidos ativa, a aba nativa não fica marcada */
body.mv-resolvidos-on .conversations-list-wrap div[class*="h-10"] li:not(#mv-tab-resolv) > a {
  color: rgb(var(--slate-11)) !important;
}
body.mv-resolvidos-on .conversations-list-wrap div[class*="h-10"] li:not(#mv-tab-resolv) > a::after {
  background: transparent !important;
}
body.mv-resolvidos-on .conversations-list-wrap div[class*="h-10"] li:not(#mv-tab-resolv) > a span {
  opacity: .55;
}
#mv-resolvidos {
  --mvr-borda: rgba(128, 128, 128, 0.18);
  --mvr-hover: rgba(128, 128, 128, 0.10);
  --mvr-suave: #8b8b93;
  flex: 1; min-height: 0; overflow-y: auto; padding: 6px 10px 16px;
}
body:not(.dark) #mv-resolvidos { --mvr-borda: #e9edef; --mvr-hover: #f2f4f5; --mvr-suave: #667781; }
.mv-res-cab { padding: 6px 4px 8px; font-size: 11px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; color: var(--mvr-suave); }
.mv-res-vazio { padding: 24px 8px; text-align: center; font-size: 13px; color: var(--mvr-suave); }
.mv-res-i {
  display: grid; grid-template-columns: 30px minmax(0, 1fr) auto; grid-template-rows: auto auto;
  column-gap: 10px; row-gap: 3px; align-items: center;
  padding: 9px 10px; border-radius: 10px; border-bottom: 1px solid var(--mvr-borda);
  text-decoration: none; color: inherit; cursor: pointer;
}
.mv-res-i:hover, .mv-res-i.mv-ativo { background: var(--mvr-hover); }
.mv-res-i .mv-fila-av { width: 30px; height: 30px; }
.mv-res-nome { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 600; font-size: 13.5px; }
.mv-res-quando { justify-self: end; white-space: nowrap; font-size: 11px; color: var(--mvr-suave); }
.mv-res-l2 { display: flex; align-items: center; gap: 6px; min-width: 0; }
.mv-res-sub { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 11.5px; color: var(--mvr-suave); }
.mv-res-reabrir {
  justify-self: end; height: 22px; padding: 0 9px; border-radius: 6px; cursor: pointer;
  border: 1px solid rgba(18, 165, 148, 0.45); background: transparent; color: var(--mv-teal-texto);
  font: inherit; font-size: 11px; font-weight: 700;
}
.mv-res-reabrir:hover:not(:disabled) { background: rgba(18, 165, 148, 0.12); }
.mv-res-mais {
  display: block; width: 100%; margin-top: 10px; padding: 8px; border-radius: 8px; cursor: pointer;
  border: 1px dashed var(--mvr-borda); background: transparent; color: var(--mvr-suave); font: inherit; font-size: 12px;
}

/* avisinho que some sozinho ("Transferido para Fulano.") */
#mv-toast {
  position: fixed; left: 50%; bottom: 24px; z-index: 99995; max-width: min(90vw, 460px);
  padding: 10px 16px; border-radius: 10px; background: #1f2c33; color: #fff;
  font-size: 13px; font-weight: 600; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.35);
  opacity: 0; pointer-events: none; transform: translate(-50%, 10px); transition: opacity .2s, transform .2s;
}
#mv-toast.mv-toast-on { opacity: 1; transform: translate(-50%, 0); }

/* ── 8. Menu de contexto da FILA (botão direito: atribuir/puxar) ── */
.mv-menu {
  position: fixed; z-index: 99999; min-width: 190px; max-height: 60vh; overflow-y: auto;
  background: #ffffff; color: #1a1a1a; border: 1px solid rgba(0, 0, 0, 0.15);
  border-radius: 10px; padding: 5px; font-size: 12.5px;
  box-shadow: 0 10px 28px rgba(0, 0, 0, 0.28);
}
body.dark .mv-menu { background: #1b1b20; color: #ecebe8; border-color: rgba(255, 255, 255, 0.12); }
.mv-menu-i { padding: 6px 10px; border-radius: 7px; cursor: pointer; white-space: nowrap; }
.mv-menu-i:hover { background: rgba(233, 42, 49, 0.12); }
.mv-menu-i.desab { opacity: 0.45; cursor: not-allowed; }
.mv-menu-i.desab:hover { background: none; }
.mv-menu-t {
  padding: 8px 10px 3px; font-size: 10.5px; font-weight: 700;
  letter-spacing: 0.05em; text-transform: uppercase; opacity: 0.6;
}

/* ── 9. Restrições dos atendentes (config em /equipe/; o custom.js
   também já filtra os itens do #mv-menu por papel) ── */
body.mv-ag-sem-relatorios aside nav li:has(a[href*="/reports"]),
body.mv-ag-sem-relatorios #mv-menu [data-rota*="/reports"] { display: none !important; }
body.mv-ag-sem-contatos aside nav li:has(a[href*="/contacts"]),
body.mv-ag-sem-contatos #mv-menu [data-rota*="/contacts"] { display: none !important; }
body.mv-ag-sem-nao-atendidas aside nav li:has(a[href$="/unattended/conversations"]) { display: none !important; }

/* Cartões de onboarding do painel vazio (OnboardingView.vue, só aparecem
   quando a conta não tem nenhuma caixa de entrada).
   A regra antiga era div[class*="onboarding"] e NUNCA casou com nada: a
   palavra "onboarding" só existe no caminho das imagens, não nas classes. */
div.clearfix.mx-auto:has(img[src*="/dashboard/images/onboarding/"]),
div.min-h-screen.grid-cols-2.font-inter:has(img[src*="/dashboard/images/onboarding/"]) {
  display: none !important;
}
img[src*="/dashboard/images/onboarding/"] { display: none !important; }

/* ── 10. Acabamento ── */
/* Logo do cabeçalho da sidebar: 16px é tímido demais */
aside section img.size-4 { width: 1.375rem !important; height: 1.375rem !important; }
/* Marca redonda nas telas de login/cadastro */
main img[src*="logo-mark"] { height: 3.5rem !important; width: auto !important; }

/* ── 11. Só o essencial na conversa (19/10) ── */
/* caixa de resposta: sem IA (Captain, não configurado) e sem assinatura do Chatwoot
   — o nome do atendente já vai no topo de cada mensagem pelo WhatsApp */
.reply-box button:has(.i-ph-sparkle-fill),
.reply-box button:has(.i-ph-signature) { display: none !important; }
/* atendente não mescla contatos (fica para o admin) */
body.mv-agente button:has(.i-ph-arrows-merge) { display: none !important; }
/* "Resolver" sem a setinha do lado: cantos redondos dos dois lados */
.mv-sozinho { border-radius: .5rem !important; }
/* Filas & Chatbot: sem lixeira — as 4 filas SÃO as opções do menu do robô */
body.mv-filas-pg main button:has(.i-woot-bin) { display: none !important; }

/* ── 12. Contatos simples (19/10: "só nome e telefone", "só Brasil") ── */
/* formulário nativo do contato (card, página do contato e novo contato): fica nome,
   sobrenome, e-mail e telefone; some cidade, país, biografia e empresa (5º campo em diante) */
div.grid:has(> div > input[placeholder="Digite o primeiro nome"]) > :nth-child(n+5) { display: none !important; }
/* atendente não exclui, não importa e não exporta contato (o Chatwoot também não
   deixa — só daria erro) */
body.mv-agente .mv-ca-del,
body.mv-agente #mv-cont-add .mv-ghost { display: none !important; }

/* menu do perfil (canto de baixo): ficam Disponibilidade, Configurações do Perfil,
   Alterar Tema e Encerrar sessão. Saem Atalhos do teclado, Ler documentação e Notas de
   versão (do Chatwoot, em inglês), Console de Super Admin e "Marcar offline
   automaticamente" (desligado, o atendente fica "online" de navegador fechado e o
   rodízio entrega pra ele). Cada item vem dentro de um <div> (CustomBrandPolicyWrapper)
   numa grade com gap — some o <div> inteiro, senão sobra um buraco no menu. */
.bottom-12.w-80 .n-dropdown-body > div:has(> li.n-dropdown-item :is(.i-lucide-keyboard, .i-lucide-book, .i-lucide-scroll-text, .i-lucide-castle, .i-lucide-life-buoy)),
.bottom-12.w-80 li.n-dropdown-item:has(.i-lucide-info) { display: none !important; }

/* janelinhas do custom.js: Adicionar/Editar contato e Transferir */
#mv-janela {
  position: fixed; inset: 0; z-index: 99990; display: flex; align-items: center;
  justify-content: center; padding: 16px; background: rgba(0, 0, 0, 0.55);
}
.mv-j-caixa {
  width: 100%; max-width: 420px; max-height: calc(100vh - 32px); overflow-y: auto;
  background: #ffffff; color: #1a1a1a; border-radius: 12px; padding: 20px 22px;
  box-shadow: 0 18px 48px rgba(0, 0, 0, 0.45); font-size: 13.5px;
}
body.dark .mv-j-caixa { background: #17171b; color: #ecebe8; border: 1px solid #2a2a31; }
.mv-j-caixa h3 { margin: 0 0 2px; font-size: 16px; font-weight: 700; color: var(--mv-titulo); }
.mv-j-sub { margin: 0 0 6px; font-size: 12.5px; opacity: 0.7; }
.mv-j-caixa label {
  display: flex; flex-direction: column; gap: 5px; margin-top: 12px;
  font-size: 12px; font-weight: 600; color: #5d5d63;
}
body.dark .mv-j-caixa label { color: #a0a09a; }
.mv-j-caixa input, .mv-j-caixa select {
  width: 100%; box-sizing: border-box; margin: 0; padding: 10px 12px;
  border: 1px solid #d4d4da; border-radius: 8px; background: #fff; color: #1a1a1a;
  font: inherit; font-size: 14px; font-weight: 400; outline: none;
}
body.dark .mv-j-caixa input, body.dark .mv-j-caixa select {
  background: #0d0d0f; color: #ecebe8; border-color: #2c2c33;
}
.mv-j-caixa input::placeholder { color: #9a9aa2; opacity: 1; }
body.dark .mv-j-caixa input::placeholder { color: #5f5f68; }
/* o select global do Chatwoot tem altura fixa e cortava o texto */
.mv-j-caixa select { height: auto !important; min-height: 40px; line-height: 1.4; }
.mv-j-caixa input:focus, .mv-j-caixa select:focus {
  border-color: var(--mv-teal); box-shadow: 0 0 0 2px rgba(18, 165, 148, 0.25);
}
.mv-j-erro { margin-top: 10px; color: #e5484d; font-size: 12.5px; font-weight: 600; }
.mv-j-erro:empty { display: none; }
.mv-j-acoes { display: flex; justify-content: flex-end; gap: 8px; margin-top: 18px; }
.mv-j-acoes button {
  border: 0; border-radius: 8px; padding: 9px 16px; cursor: pointer;
  font: inherit; font-size: 13px; font-weight: 700;
}
.mv-j-cancelar { background: rgba(148, 153, 176, 0.16); color: inherit; }
.mv-j-ok { background: var(--mv-teal); color: #fff; }
.mv-j-acoes button:hover:not(:disabled) { filter: brightness(1.12); }
.mv-j-caixa button:disabled, .mv-j-caixa select:disabled { opacity: 0.55; cursor: default; }
.mv-j-filas { display: flex; flex-direction: column; gap: 6px; margin-top: 8px; }
.mv-j-fila {
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
  width: 100%; padding: 10px 12px; border: 1px solid rgba(148, 153, 176, 0.28);
  border-radius: 10px; background: transparent; color: inherit; cursor: pointer;
  font: inherit; text-align: left;
}
.mv-j-fila:hover:not(:disabled) { border-color: var(--mv-teal); background: rgba(18, 165, 148, 0.08); }
.mv-j-fila b { font-size: 12.5px; letter-spacing: 0.03em; }
.mv-j-fila span { font-size: 12px; opacity: 0.7; white-space: nowrap; }

/* botão "Transferir" ao lado do Resolver */
#mv-transferir {
  display: inline-flex; align-items: center; height: 2rem; padding: 0 12px;
  margin-right: 8px; border: 1px solid rgba(148, 153, 176, 0.35); border-radius: .5rem;
  background: transparent; color: inherit; font: inherit; font-size: 13px;
  font-weight: 600; cursor: pointer; white-space: nowrap;
}
#mv-transferir:hover { border-color: var(--mv-teal); color: var(--mv-teal-texto); }

/* ── 13. Auditoria de 19/10: o que ainda sobrava ou atrapalhava (cada regra conferida
   na fonte do Chatwoot 4.16.1 por um revisor cético antes de entrar aqui) ── */
/* conversa: o ⋮ do topo só tinha "Bloquear contato" — um clique, sem confirmação, e o
   cliente sumia em silêncio */
.actions--container button:has(> .i-lucide-more-vertical) { display: none !important; }
/* setinha do Resolver/Reabrir (Adiar / Deixar pendente) — vale também pro atalho Alt+M */
.resolve-actions > div.absolute { display: none !important; }
/* atendimento resolvido: caixa travada no modo Responder (fica a Mensagem Privada) —
   pra falar com o cliente, "Reabrir" */
body.mv-resolvida .reply-box:not(.is-private) > :not(:first-child) { pointer-events: none; opacity: .45; }
/* IA no menu flutuante que aparece ao selecionar texto na caixa */
.reply-box .ProseMirror-menuitem:has(.ProseMirror-copilot),
.reply-box .ProseMirror-copilot { display: none !important; }
/* painel do contato: "Nova Mensagem" (abria um 2º atendimento do mesmo cliente), lápis do
   formulário completo, linhas E-mail/Identificador/Empresa; atendente sem o link que abre
   a página do contato */
button:has(> .i-ph-chat-circle-dots),
button:has(> .i-ph-pencil-simple) { display: none !important; }
.group\/row:has(svg.mail),
.group\/row:has(svg.contact-identify),
.group\/row:has(svg.building-bank) { display: none !important; }
body.mv-agente a[href*='/contacts/']:has(> .i-lucide-external-link) { display: none !important; }
/* etiquetas técnicas do robô fora do "+" de etiquetas do atendente */
body.mv-agente .sidebar-labels-wrap li:has(span[title='bot']),
body.mv-agente .sidebar-labels-wrap li:has(span[title='resolvido']) { display: none !important; }
/* lista: atendente sem seleção em massa; admin sem "Adiar" em massa */
body.mv-agente .conversations-list .conversation label:has(input[type=checkbox]),
body.mv-agente .conversations-list .conversation div:has(> div > input[type=checkbox]) { display: none !important; }
.conversations-list-wrap button:has(> .i-lucide-alarm-clock) { display: none !important; }
/* lista: sem "Alternar layout"; atendente sem o funil; ninguém com "Salvar filtro" */
.conversations-list-wrap div[class*='3.25rem'] button:has(> .i-lucide-arrow-right-to-line) { display: none !important; }
body.mv-agente .conversations-list-wrap div[class*='3.25rem'] button:has(> .i-lucide-list-filter),
.conversations-list-wrap div[class*='3.25rem'] button:has(> .i-lucide-save) { display: none !important; }
/* perfil: token de acesso da API (perigoso e inútil pro atendimento), tecla de envio (fica
   sempre Enter) e a seção "Interface", que ficava vazia */
body.mv-settings main section:has(> div > div > label[name="access_token"]),
body.mv-settings main section:has(input[name="cmd_enter"]),
body.mv-settings main section:has(select[name="fontSize"]) { display: none !important; }
/* configurações gerais: idioma do site */
body.mv-settings main div.space-y-1:has(> label[for="site-language"]) { display: none !important; }
/* contatos: funil/salvar filtro e o "Adicionar contato" nativo do ⋮ (duplicado do nosso);
   atendente sem o ⋮ (importar/exportar é só admin) */
#toggleContactsFilterButton,
div.relative:has(> #toggleContactsFilterButton) ~ button:has(.i-lucide-save),
main header div.relative:has(> button .i-lucide-ellipsis-vertical) button:has(.i-lucide-plus) { display: none !important; }
body.mv-agente main header div.relative:has(> button .i-lucide-ellipsis-vertical) { display: none !important; }
/* respostas rápidas: atendente não apaga */
body.mv-agente.mv-settings main button:has(.i-woot-bin) { display: none !important; }
/* filas: "Permitir atribuição automática" — o rodízio é do servidor e a mantém desligada */
body.mv-filas-pg main div:has(> input[type="checkbox"] + label[for="conversation_creation"]) { display: none !important; }

/* ── 14. Caixa de resposta mais baixa (19/10: "essa caixa de texto muito grande, reduz pro
   atendente ver melhor"): o editor tinha altura FIXA de 7,5rem — agora começa com ~3 linhas
   e cresce sozinho até 7,5rem conforme o texto; abas e barra de botões mais justas ── */
.reply-box .ProseMirror-woot-style {
  min-height: 3.5rem !important; max-height: 7.5rem !important; height: auto !important;
}
.reply-box > div[class*="h-[3.25rem]"] { height: 2.5rem !important; }
.reply-box > div.flex.justify-between.p-3 { padding-top: 6px !important; padding-bottom: 8px !important; }

/* faixa "Acompanhando" (líder no atendimento de um colega) */
#mv-acompanha {
  margin: 0 0 6px; padding: 7px 12px; border-radius: 8px; font-size: 12.5px; font-weight: 600;
  background: rgba(41, 182, 246, 0.12); color: #0b6fa4; border: 1px solid rgba(41, 182, 246, 0.35);
}
body.dark #mv-acompanha { color: #8fd3fb; }

/* ── 15. Ajustes da revisão final (19/10) ── */
/* o nav da barra é grid e esticava as linhas: o cartão da FILA ficava solto no meio */
aside nav { align-content: start; }
/* etiqueta comprida da fila (CONTRATAÇÃO) não empurra o botão Puxar */
#mv-fila .mv-ftag { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* aba Resolvidos ativa fica sublinhada como as nativas */
body.mv-resolvidos-on #mv-tab-resolv > a::after { opacity: 1 !important; }

/* ── 16. Assinatura do atendente no balão (19/10): o cliente recebe no WhatsApp o nome em
   negrito na 1ª linha ("Davi:"); o painel mostra igual, em cima do texto (custom.js
   assinaturaNoPainel marca data-mv-assina só no que foi pro cliente) ── */
[data-bubble-name="text"][data-mv-assina]:not([data-mv-assina=""])::before {
  content: attr(data-mv-assina);
  display: block;
  font-weight: 700;
  margin-bottom: 3px;
}

/* ── 17. Dados do cliente (21/10, pedido do Cristiano): nome clicável no alto do atendimento;
   etiquetas do cliente embaixo do nome (depois do telefone) e o aviso "📝 Observação" na linha do
   nome; janela com Nome, Etiquetas e Observação (custom.js janelaCliente/clienteNoTopo) ── */
.mv-cli-nome { cursor: pointer; }
.mv-cli-nome:hover { text-decoration: underline; text-underline-offset: 2px; color: var(--mv-teal-texto) !important; }
.mv-cli-info { display: inline-flex; align-items: center; gap: 4px; min-width: 0; overflow: hidden; cursor: pointer; }
.mv-cli-info:empty { display: none; }
.mv-cli-chip {
  display: inline-block; flex-shrink: 1; min-width: 2.8em; max-width: 150px; box-sizing: border-box;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  padding: 0 7px; border-radius: 99px; font-size: 10.5px; font-weight: 700; line-height: 16px;
  background: rgba(18, 165, 148, 0.14); color: var(--mv-teal-texto);
}
.mv-cli-chip.mv-cli-mais { flex-shrink: 0; min-width: 0; }
/* o aviso não encolhe: quem corta com reticências é o nome */
.mv-cli-chip.mv-cli-obs {
  flex-shrink: 0; min-width: 0; max-width: none; cursor: pointer;
  background: rgba(245, 158, 11, 0.18); color: #9a5b00;
}
body.dark .mv-cli-chip.mv-cli-obs { color: #fbbf24; }
.mv-j-caixa textarea {
  width: 100%; box-sizing: border-box; margin: 0; padding: 10px 12px; height: auto; min-height: 100px; resize: vertical;
  border: 1px solid #d4d4da; border-radius: 8px; background: #fff; color: #1a1a1a;
  font: inherit; font-size: 14px; font-weight: 400; line-height: 1.45; outline: none;
}
body.dark .mv-j-caixa textarea { background: #0d0d0f; color: #ecebe8; border-color: #2c2c33; }
.mv-j-caixa textarea::placeholder { color: #9a9aa2; opacity: 1; }
body.dark .mv-j-caixa textarea::placeholder { color: #5f5f68; }
.mv-j-caixa textarea:focus { border-color: var(--mv-teal); box-shadow: 0 0 0 2px rgba(18, 165, 148, 0.25); }
.mv-j-campo {
  display: flex; flex-direction: column; gap: 5px; margin-top: 12px;
  font-size: 12px; font-weight: 600; color: #5d5d63;
}
body.dark .mv-j-campo { color: #a0a09a; }
.mv-j-dica { font-size: 11.5px; font-weight: 400; opacity: 0.85; }
.mv-etq-caixa {
  display: flex; flex-wrap: wrap; align-items: center; gap: 5px; box-sizing: border-box; min-height: 42px;
  padding: 5px 6px; border: 1px solid #d4d4da; border-radius: 8px; background: #fff; cursor: text;
}
body.dark .mv-etq-caixa { background: #0d0d0f; border-color: #2c2c33; }
.mv-etq-caixa:focus-within { border-color: var(--mv-teal); box-shadow: 0 0 0 2px rgba(18, 165, 148, 0.25); }
/* tema escuro: a borda teal do foco perdia pra cor escura da borda (inclusive nas janelas antigas) */
body.dark .mv-j-caixa input:focus, body.dark .mv-j-caixa select:focus,
body.dark .mv-j-caixa textarea:focus, body.dark .mv-etq-caixa:focus-within { border-color: var(--mv-teal); }
.mv-etq-chips { display: contents; }
.mv-etq {
  display: inline-flex; align-items: center; gap: 2px; max-width: 100%; padding: 3px 3px 3px 9px;
  border-radius: 99px; background: rgba(18, 165, 148, 0.14); color: var(--mv-teal-texto);
  font-size: 12.5px; font-weight: 700; overflow-wrap: anywhere;
}
.mv-j-caixa .mv-etq button {
  border: 0; background: none; color: inherit; cursor: pointer; padding: 0 5px;
  font: inherit; font-size: 15px; line-height: 1; opacity: 0.7;
}
.mv-j-caixa .mv-etq button:hover { opacity: 1; }
.mv-j-caixa .mv-etq-caixa input,
.mv-j-caixa .mv-etq-caixa input:focus {
  flex: 1; width: auto; min-width: 130px; padding: 5px 4px; border: 0; background: transparent; box-shadow: none;
}

/* ── 18. Responder uma mensagem com dois cliques (21/10, pedido do Cristiano): o custom.js abre
   o menu nativo da bolha por baixo e clica em "Responder mensagem" — o menu não chega a aparecer.
   O menu trava a rolagem da lista enquanto existe: aqui não (senão a barra some e a lista pisca) ── */
body.mv-resp-auto .menu-container { visibility: hidden !important; }
body.mv-resp-auto ul.conversation-panel { overflow-y: auto !important; }
/* foto e vídeo sem legenda (o 1º clique já abre a foto): botão ↩ no canto, junto dos da foto */
.mv-resp-midia {
  display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px;
  border: 0; border-radius: 6px; background: rgba(28, 32, 36, 0.72); color: #fff; cursor: pointer;
  font: inherit; font-size: 14px; font-weight: 700; line-height: 1; opacity: 0.85;
}
.mv-resp-midia:hover { opacity: 1; }
[data-bubble-name="video"] .group > .mv-resp-midia { position: absolute; top: 8px; right: 8px; z-index: 2; display: none; }
[data-bubble-name="video"] .group:hover > .mv-resp-midia { display: inline-flex; }
