/* Design system do Portal MiltonNet — tela 00 do design (docs/design/portal-atendentes).
   Variáveis exatamente como especificadas; .mn-dark troca o tema. */
@font-face{font-family:'Albert Sans';src:url('/static/fonts/AlbertSans-Variable.woff2') format('woff2-variations');
  font-weight:100 900;font-display:swap}
@font-face{font-family:'JetBrains Mono';src:url('/static/fonts/JetBrainsMono-Variable.woff2') format('woff2-variations');
  font-weight:100 800;font-display:swap}

:root{
  --mn-bg:#F7F4F0; --mn-sf:#FFFFFF; --mn-ink:#1C1A17;
  --mn-mut:#8A827A; --mn-line:#E2DCD5;
  --mn-or:#F26B1D; --mn-orh:#D95A12; --mn-bl:#1B8FD6; --mn-pu:#7B61FF;
  --mn-ok:#1E8E3E; --mn-wa:#D99A06; --mn-er:#C8321E;
  --mn-tbg:#14120F; --mn-tfg:#E8E2D8; --mn-tpr:#7CCB6B;
  --mn-r:14px;
  font-family:'Albert Sans',system-ui,-apple-system,sans-serif;
}
.mn-dark{ --mn-bg:#1C1A17; --mn-sf:#24211D; --mn-ink:#F2EDE6;
  --mn-mut:#A39B91; --mn-line:#3A352F; }
code,pre,.terminal{ font-family:'JetBrains Mono',ui-monospace,monospace; }

*{box-sizing:border-box}
/* 🔴 o atributo `hidden` vem da folha do NAVEGADOR e perde para qualquer `display` de autor:
   sem esta linha, um `.term-fim{display:flex}` deixa a faixa "Reabrir o terminal" visível para
   sempre — foi exatamente o que aconteceu em 2026-10-14. */
[hidden]{display:none!important}
body{margin:0;background:var(--mn-bg);color:var(--mn-ink);
  font-family:'Albert Sans',system-ui,sans-serif;-webkit-font-smoothing:antialiased}
a{color:var(--mn-bl);text-decoration:none} a:hover{text-decoration:underline}

/* ——— moldura das telas de acesso (01 do design) ——— */
.acesso{min-height:100dvh;display:grid;grid-template-columns:1.05fr .95fr}
@media (max-width:900px){.acesso{grid-template-columns:1fr}.acesso .lado{display:none}}
.lado{padding:48px 56px;display:flex;flex-direction:column;justify-content:center;gap:18px;
  background:linear-gradient(160deg,#1C1A17 0%,#2A251F 60%,#3A2A1C 100%);color:#F2EDE6}
.marca{display:flex;align-items:center;gap:12px;font-weight:700;letter-spacing:-.01em}
.marca .pt{width:30px;height:30px;border-radius:9px;background:var(--mn-or);display:grid;
  place-items:center;color:#fff;font-weight:800;font-size:15px}
.etq{font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--mn-or)}
.lado h1{font-size:34px;line-height:1.15;margin:8px 0 0;font-weight:700;letter-spacing:-.02em}
.lado p{margin:0;color:#B9B0A6;font-size:15px;line-height:1.55;max-width:42ch}
.restrito{margin-top:auto;font-size:12px;color:#8A827A}

.painel{display:grid;place-items:center;padding:40px 24px}
.cartao{width:100%;max-width:400px;background:var(--mn-sf);border:1px solid var(--mn-line);
  border-radius:var(--mn-r);padding:30px 28px;box-shadow:0 1px 2px rgba(0,0,0,.04)}
.cartao h2{margin:0 0 4px;font-size:22px;font-weight:700;letter-spacing:-.01em}
.cartao .sub{margin:0 0 22px;color:var(--mn-mut);font-size:13.5px;line-height:1.5}

label{display:block;font-size:12.5px;font-weight:600;color:var(--mn-mut);margin:14px 0 6px}
input[type=text],input[type=email],input[type=password],select{width:100%;padding:11px 12px;
  border:1px solid var(--mn-line);border-radius:10px;background:var(--mn-bg);color:var(--mn-ink);
  font-size:14.5px;font-family:inherit}
input:focus,select:focus{outline:2px solid var(--mn-or);outline-offset:1px;border-color:var(--mn-or)}
.linha{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:12px}
.lembrar{display:flex;align-items:center;gap:7px;font-size:13px;color:var(--mn-mut);cursor:pointer}
.btn{width:100%;margin-top:18px;padding:12px 14px;border:0;border-radius:10px;background:var(--mn-or);
  color:#fff;font-weight:700;font-size:14.5px;font-family:inherit;cursor:pointer}
.btn:hover{background:var(--mn-orh)} .btn:disabled{opacity:.55;cursor:not-allowed}
.btn.sec{background:transparent;color:var(--mn-ink);border:1px solid var(--mn-line)}
.btn.min{width:auto;margin:0;padding:8px 12px;font-size:13px}
.pe{margin-top:16px;text-align:center;font-size:13px;color:var(--mn-mut)}
.erro{margin:14px 0 0;padding:10px 12px;border-radius:10px;background:#FBE9E6;color:var(--mn-er);
  font-size:13px;border:1px solid #F3CFC9}
.aviso{margin:14px 0 0;padding:11px 12px;border-radius:10px;background:#FFF6E0;color:#7A5A06;
  font-size:13px;border:1px solid #F0DCA8;line-height:1.5}
.ok{margin:14px 0 0;padding:11px 12px;border-radius:10px;background:#E7F5EA;color:var(--mn-ok);
  font-size:13px;border:1px solid #BFE3C8}
.pend{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;color:var(--mn-wa);
  background:#FFF6E0;border:1px solid #F0DCA8;border-radius:999px;padding:5px 11px;margin-top:16px}
.pt-bola{width:7px;height:7px;border-radius:50%;background:var(--mn-wa)}

/* ——— cabeçalho e tabelas das telas internas ——— */
.topo{display:flex;align-items:center;flex-wrap:wrap;gap:14px;padding:13px 22px;background:var(--mn-sf);
  border-bottom:1px solid var(--mn-line);position:sticky;top:0;z-index:5}
.topo .cresce{margin-left:auto;display:flex;align-items:center;gap:12px}
.chip{font-size:12px;color:var(--mn-mut);background:var(--mn-bg);border:1px solid var(--mn-line);
  border-radius:999px;padding:5px 11px;font-family:'JetBrains Mono',monospace}
.corpo{max-width:980px;margin:0 auto;padding:26px 22px 60px}
.bloco{background:var(--mn-sf);border:1px solid var(--mn-line);border-radius:var(--mn-r);
  padding:20px 22px;margin-bottom:18px}
.bloco h3{margin:0 0 3px;font-size:16px;font-weight:700}
.bloco .dica{margin:0 0 16px;color:var(--mn-mut);font-size:13px}
table{width:100%;border-collapse:collapse;font-size:13.5px}
th{text-align:left;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--mn-mut);
  font-weight:700;padding:0 10px 9px}
td{padding:11px 10px;border-top:1px solid var(--mn-line);vertical-align:middle}
.sit{font-size:11.5px;font-weight:700;border-radius:999px;padding:3px 9px}
.sit.ativo{background:#E7F5EA;color:var(--mn-ok)} .sit.pendente{background:#FFF6E0;color:#7A5A06}
.sit.desativado{background:#F1EDE8;color:var(--mn-mut)}
.vmchip{font-family:'JetBrains Mono',monospace;font-size:12.5px;color:var(--mn-pu)}
.acoes{display:flex;gap:8px}

/* ── F2: terminal ao vivo ───────────────────────────────────────────────── */
/* 🔴 A área do terminal OCUPA o que sobra. Não botar `max-width` aqui (travava a largura em
   1180px → sempre 145 colunas, não importava o tamanho da janela) nem calcular a altura com
   número mágico tipo `calc(100dvh - 104px)`: o topo muda de altura quando quebra em duas linhas,
   e aí sobra espaço embaixo ou o conteúdo cai fora da tela. Quem dá a altura é o `.tela-cheia`. */
.tela-cheia{height:100vh;height:100dvh;display:flex;flex-direction:column;overflow:hidden}
.tela-cheia .topo{flex:0 0 auto}
.term-area{flex:1;min-height:0;display:flex;flex-direction:column;padding:12px 18px 16px}
.term-barra{flex:0 0 auto;display:flex;align-items:center;flex-wrap:wrap;gap:10px;padding:0 2px 9px}
.term-tit{font-size:12.5px;color:var(--mn-mut)}
.term-tit strong{font-family:'JetBrains Mono',monospace;color:var(--mn-pu);font-weight:600}
.term-dica{font-size:12px;color:var(--mn-mut)}
.term-ajuda{margin-left:auto;font-size:11.5px;color:var(--mn-mut)}
.term-ajuda b{color:var(--mn-ink);font-weight:600}
.term-ajuda kbd{font-family:'JetBrains Mono',monospace;font-size:10.5px;padding:1px 5px;
  border:1px solid var(--mn-line);border-bottom-width:2px;border-radius:5px;
  background:var(--mn-bg);color:var(--mn-ink)}
#btn-copiar{flex:0 0 auto}
/* 🔴 A margem interna vai no `.xterm`, NÃO aqui: o FitAddon mede a altura do contêiner e
   desconta a margem interna DO ELEMENTO DO TERMINAL (getComputedStyle(terminal.element)).
   Com a margem no contêiner ele calcula linhas demais, a tela passa da caixa e o `overflow:hidden`
   come a barra de status do tmux — medido em 2026-10-14: tela terminava 11 px abaixo da caixa. */
.term-tela{flex:1;min-height:0;background:var(--mn-tbg);border:1px solid var(--mn-line);
  border-radius:var(--mn-r);padding:0;overflow:hidden}
.term-tela .xterm{padding:9px 11px}
.term-tela .xterm-viewport::-webkit-scrollbar{width:9px}
.term-tela .xterm-viewport::-webkit-scrollbar-thumb{background:#3A352F;border-radius:9px}
/* estado da conexão: a bolinha é o sinal que se lê de longe */
.bola{display:inline-block;width:7px;height:7px;border-radius:50%;background:currentColor;
  vertical-align:middle;margin-right:5px}
.sit-con{color:var(--mn-wa)} .sit-ok{color:var(--mn-ok)} .sit-cai{color:var(--mn-er)}
.sit-cai .bola{animation:pisca 1s steps(1,end) infinite}
@keyframes pisca{50%{opacity:.25}}
@media (prefers-reduced-motion:reduce){.sit-cai .bola{animation:none}}
.term-fim{flex:0 0 auto;display:flex;align-items:center;gap:14px;margin-top:11px;padding:11px 13px;
  border-radius:10px;background:#FFF6E0;color:#7A5A06;font-size:13px;border:1px solid #F0DFAE}
.term-fim .btn{flex:0 0 auto}
.sit-off{color:var(--mn-mut)}
/* janela estreita: a linha de ajuda vira duas ou três e rouba linhas do terminal.
   O botão e o estado continuam; a ajuda some, que é o que menos falta. */
@media (max-width:1150px){ .term-ajuda{display:none} }
@media (max-height:700px){ .term-area{padding:8px 14px 10px} .term-barra{padding-bottom:6px} }
.term-recado{font-size:11.5px;font-weight:600;color:var(--mn-ok);background:#E7F5EA;
  border:1px solid #C9E6D1;border-radius:999px;padding:3px 10px}
.term-versao{font-family:'JetBrains Mono',monospace;font-size:10.5px;color:var(--mn-mut);opacity:.75}

/* ── F3: cartão da VM ───────────────────────────────────────────────────── */
.cab-vm{display:flex;align-items:flex-start;gap:14px}
.cab-vm .dica{margin-bottom:0}
.sit-vm{margin-left:auto;flex:0 0 auto;font-size:12px;font-weight:700;border-radius:999px;
  padding:4px 11px;border:1px solid transparent}
.sit-vm-ok{background:#E7F5EA;color:var(--mn-ok);border-color:#C9E6D1}
.sit-vm-off{background:#F1EDE8;color:var(--mn-mut);border-color:var(--mn-line)}
.sit-vm-erro{background:#FBE9E6;color:var(--mn-er);border-color:#F2CEC7}
.sit-vm-lendo{background:var(--mn-bg);color:var(--mn-mut);border-color:var(--mn-line)}
.medidores{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px;
  margin:18px 0 4px}
.medidor{background:var(--mn-bg);border:1px solid var(--mn-line);border-radius:12px;padding:12px 14px}
.med-rot{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
  color:var(--mn-mut)}
.med-num{font-family:'JetBrains Mono',monospace;font-size:26px;font-weight:600;line-height:1.25;
  margin-top:3px;font-variant-numeric:tabular-nums}
.med-num small{font-size:13px;font-weight:500;color:var(--mn-mut);margin-left:3px}
.barra{height:5px;border-radius:3px;background:var(--mn-line);overflow:hidden;margin-top:8px}
/* azul como no design do Milton; amarelo e vermelho só quando aperta — a cor avisa, não enfeita */
.barra i{display:block;height:100%;background:var(--mn-bl);border-radius:3px;
  transition:width .5s ease}
.barra i.atencao{background:var(--mn-wa)} .barra i.critico{background:var(--mn-er)}
.med-pe{font-size:11.5px;color:var(--mn-mut);margin-top:6px;min-height:1em}
td.rot{color:var(--mn-mut);width:120px}
.sit-caixa{margin-left:auto;flex:0 0 auto;display:flex;flex-direction:column;align-items:flex-end;gap:4px}
.sit-vm{margin-left:0}
.sit-idade{font-size:10.5px;color:var(--mn-mut);font-variant-numeric:tabular-nums}
.med-num{white-space:nowrap}
#up-n{font-size:21px}
.confirma{display:flex;align-items:flex-start;gap:16px;margin-top:14px;padding:13px 15px;
  border-radius:12px;background:#FBE9E6;border:1px solid #F2CEC7;color:#7A2418}
.confirma p{margin:5px 0 0;font-size:13px;line-height:1.5;max-width:62ch}
.confirma strong{font-size:14px}
.confirma-botoes{margin-left:auto;display:flex;gap:8px;flex:0 0 auto}
.btn.perigo{background:var(--mn-er)} .btn.perigo:hover{background:#A82815}

/* ── Casca da tela do atendente (bloco 2 do design: lateral + centro + barra) ───────────
   Medidas tiradas do próprio arquivo de design (docs/design/portal-atendentes):
   topo 56px · margens e vão 16px · lateral 280px · centro flexível · barra do terminal embaixo. */
.app{height:100vh;height:100dvh;display:flex;flex-direction:column;overflow:hidden;
  background:var(--mn-bg)}
.app-topo{height:56px;flex:0 0 auto;display:flex;align-items:center;gap:14px;padding:0 20px;
  background:var(--mn-sf);border-bottom:1px solid var(--mn-line)}
.app-topo .divisor{width:1px;height:24px;background:var(--mn-line);flex:0 0 auto}
.marca-duas{display:flex;flex-direction:column;line-height:1.12}
.marca-duas b{font-size:14.5px;font-weight:700;letter-spacing:-.01em}
.marca-duas span{font-size:11px;color:var(--mn-mut)}
.quem{margin-left:auto;display:flex;align-items:center;gap:10px;font-size:13px}
.avatar{width:28px;height:28px;border-radius:50%;background:var(--mn-orbg);color:var(--mn-or);
  display:grid;place-items:center;font-size:11.5px;font-weight:700;flex:0 0 auto}
.pilula{display:inline-flex;align-items:center;gap:7px;font-size:12px;border-radius:999px;
  padding:4px 11px;background:var(--mn-bg);border:1px solid var(--mn-line);color:var(--mn-mut)}
.pilula b{color:var(--mn-ink);font-weight:600}
.pilula .ip{font-family:'JetBrains Mono',monospace;font-size:11.5px}
.ponto{width:7px;height:7px;border-radius:50%;background:var(--mn-mut);flex:0 0 auto}
.ponto.on{background:var(--mn-ok)} .ponto.off{background:var(--mn-mut)}
.ponto.erro{background:var(--mn-er)}

.app-corpo{flex:1;min-height:0;display:flex;gap:16px;padding:16px}
.app-lado{width:280px;flex:0 0 auto;display:flex;flex-direction:column;gap:12px;overflow:auto}
.app-centro{flex:1;min-width:0;background:var(--mn-sf);border:1px solid var(--mn-line);
  border-radius:var(--mn-r);display:flex;flex-direction:column;overflow:hidden}
.app-terminal{flex:0 0 auto;display:flex;align-items:center;gap:10px;padding:13px 20px;
  background:var(--mn-tbg);color:var(--mn-tfg);font-size:13px}
.app-terminal .cifrao{color:var(--mn-tpr);font-family:'JetBrains Mono',monospace;font-weight:600}
.app-terminal b{color:#fff;font-weight:600}
.app-terminal .btn{margin:0;width:auto;padding:7px 13px;font-size:12.5px;background:#2A2621;
  color:var(--mn-tfg);border:1px solid #3A352F;margin-left:auto}
.app-terminal .btn:hover{background:#39332C}

/* cartão da VM, na lateral */
.cartao-vm{background:var(--mn-sf);border:1px solid var(--mn-line);border-radius:var(--mn-r);
  padding:16px 17px 17px;display:flex;flex-direction:column;gap:14px}
.cvm-topo{display:flex;align-items:center;gap:10px}
.cvm-rot{font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;
  color:var(--mn-mut)}
.cvm-topo .pilula{margin-left:auto;padding:3px 9px}
.cvm-nome{font-size:19px;font-weight:700;letter-spacing:-.01em;line-height:1.2}
.cvm-meta{font-family:'JetBrains Mono',monospace;font-size:11.5px;color:var(--mn-mut);
  margin-top:3px;line-height:1.5}
.cvm-up{font-size:12.5px;color:var(--mn-mut2,#5C554E)}
.cvm-barras{display:flex;flex-direction:column;gap:9px}
.cvm-linha{display:grid;grid-template-columns:62px 1fr 38px;align-items:center;gap:9px;
  font-size:12px;color:var(--mn-mut)}
.cvm-linha b{font-weight:600;color:var(--mn-ink);text-align:right;
  font-variant-numeric:tabular-nums;font-size:11.5px}
.cvm-botoes{display:flex;gap:6px}
.cvm-botoes .btn{flex:1;margin:0;padding:8px 10px;font-size:13px}
.btn.contorno-perigo{background:transparent;color:var(--mn-er);border:1px solid #F2CEC7;
  width:100%;margin:0;padding:8px 10px;font-size:13px}
.btn.contorno-perigo:hover:not(:disabled){background:#FBE9E6}
.cvm-nota{margin:0 2px;font-size:12px;color:var(--mn-mut);line-height:1.5}

/* centro: o assistente (F4) — por enquanto, o espaço reservado com a cara do design */
.chat-topo{flex:0 0 auto;display:flex;align-items:center;gap:12px;padding:0 16px;height:54px;
  border-bottom:1px solid var(--mn-line);flex-wrap:wrap}
.chat-tit{font-size:13.5px;font-weight:600}

.reservado{max-width:46ch;text-align:center;color:var(--mn-mut);font-size:13.5px;line-height:1.6}
.reservado .selo{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.12em;
  text-transform:uppercase;color:var(--mn-or);margin-bottom:9px}
.chat-pe{flex:0 0 auto;border-top:1px solid var(--mn-line);padding:14px 16px}
.chat-caixa{border:1px solid var(--mn-line);border-radius:12px;padding:12px 14px;
  background:var(--mn-bg);color:var(--mn-mut);font-size:13.5px;display:flex;
  flex-direction:column;gap:10px}
.chat-caixa .linha2{display:flex;align-items:center;font-size:11.5px}
.chat-caixa .btn{margin:0;width:auto;padding:8px 16px;margin-left:auto;font-size:13px}

@media (max-width:900px){
  .app-corpo{flex-direction:column;overflow:auto}
  .app-lado{width:auto;overflow:visible}
  .app-centro{min-height:380px}
}
.chat-topo .revisao{margin-left:auto;color:var(--mn-pu);border-color:#D9D1FF}
.confirma.suave{background:var(--mn-bg);border-color:var(--mn-line);color:var(--mn-ink)}
.cartao-vm.pontos{gap:10px}
.lista-pontos{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.lista-pontos li{display:flex;align-items:center;gap:8px;background:var(--mn-bg);
  border:1px solid var(--mn-line);border-radius:9px;padding:7px 9px}
.pt-txt{display:flex;flex-direction:column;line-height:1.3;min-width:0}
.pt-txt b{font-family:'JetBrains Mono',monospace;font-size:11.5px;font-weight:600;
  overflow:hidden;text-overflow:ellipsis}
.pt-txt span{font-size:11px;color:var(--mn-mut)}
.pt-apaga{margin-left:auto;flex:0 0 auto;width:22px;height:22px;border-radius:6px;
  border:1px solid var(--mn-line);background:var(--mn-sf);color:var(--mn-mut);cursor:pointer;
  font-size:14px;line-height:1}
.pt-apaga:hover{background:#FBE9E6;color:var(--mn-er);border-color:#F2CEC7}
.cartao-vm.pontos .cvm-rot{letter-spacing:.1em}
.cartao-vm.pontos .pilula{white-space:nowrap;font-variant-numeric:tabular-nums}
.confirma label{display:block;font-size:11.5px;font-weight:600;color:#7A2418;margin:10px 0 5px}
.confirma input{width:100%;padding:8px 10px;border:1px solid #E7C4BC;border-radius:9px;
  background:#fff;font-family:'JetBrains Mono',monospace;font-size:12.5px;color:var(--mn-ink)}
.confirma input:focus{outline:2px solid var(--mn-er);outline-offset:1px}
.confirma .confirma-botoes{margin-top:11px;margin-left:0}

/* ── F4a: a conversa ────────────────────────────────────────────────────── */

/* ── a conversa: cada lado no SEU lado ────────────────────────────────────
   🔴 O corpo é uma COLUNA FLEX com os filhos esticados: cada mensagem ocupa a largura toda do
   centro e, dentro dela, o `justify-content` manda o conteúdo para a esquerda (IA) ou para a
   direita (atendente). Antes havia aqui um `place-items:center` de uma versão anterior: as duas
   mensagens ficavam centralizadas num bloco de 770 px, com 128 px de branco morto de cada lado. */
.chat-corpo{flex:1;min-height:0;display:flex;flex-direction:column;align-items:stretch;
  padding:20px 22px;gap:0;overflow:auto}
.chat-corpo .reservado{margin:auto}
.msg{display:flex;gap:10px;margin-bottom:15px;width:100%;max-width:none}
.msg-ia{justify-content:flex-start}
.msg-ia .msg-corpo{max-width:78%}
.msg-atendente{justify-content:flex-end}
.msg-atendente .msg-corpo{max-width:70%}

/* 🔴 Medidas tiradas do design (Bloco 2): texto de mensagem em 14px/1.5. Aqui 13px/1.55 porque
   na tela cheia do portal (centro de ~1070px) a linha fica longa demais com 14 — e o Milton pediu
   menor. A largura da resposta da IA acompanha o centro em vez de parar no meio, para não sobrar
   branco: o balão do atendente é que fica curto, como no design. */

.msg-txt{white-space:pre-wrap;word-wrap:break-word;font-size:13px;line-height:1.55}

.msg-atendente .msg-txt{background:var(--mn-or);color:#fff;padding:10px 14px;
  border-radius:16px 16px 4px 16px}
.msg-ia .msg-txt{color:var(--mn-ink);padding-top:3px}
.selo-ia{flex:0 0 auto;width:24px;height:24px;border-radius:7px;background:var(--mn-bl);color:#fff;
  display:grid;place-items:center;font-size:10px;font-weight:700;letter-spacing:.02em}
.msg.pensando .msg-txt::after{content:'';display:inline-block;width:7px;height:7px;border-radius:50%;
  background:var(--mn-mut);animation:pulsa 1s ease-in-out infinite}
@keyframes pulsa{50%{opacity:.25;transform:scale(.8)}}
@media (prefers-reduced-motion:reduce){.msg.pensando .msg-txt::after{animation:none}}
.msg-erro .msg-txt{color:var(--mn-er)}
.chat-caixa.viva{background:var(--mn-sf);border-color:var(--mn-line)}
.chat-caixa textarea{width:100%;border:0;outline:0;resize:none;background:transparent;
  font-family:inherit;font-size:14px;line-height:1.5;color:var(--mn-ink);padding:0;
  max-height:160px;overflow-y:auto}
.chat-caixa textarea::placeholder{color:var(--mn-mut)}
.chat-caixa .linha2{gap:8px}
.chat-caixa #chat-dica{margin-right:auto}
.chat-caixa .linha2 .btn{margin-left:0}
.fazendo{font-size:11.5px;color:var(--mn-mut);margin:0 0 6px;display:flex;
  align-items:center;gap:7px}
.fazendo::before{content:'';width:6px;height:6px;border-radius:50%;background:var(--mn-bl);
  animation:pulsa 1.1s ease-in-out infinite}
@media (prefers-reduced-motion:reduce){.fazendo::before{animation:none}}
.msg-txt code{font-family:'JetBrains Mono',monospace;font-size:12px;background:var(--mn-bg);
  border:1px solid var(--mn-line);border-radius:5px;padding:1px 5px}
.msg-atendente .msg-txt code{background:rgba(255,255,255,.22);border-color:rgba(255,255,255,.3)}
.msg-txt b{font-weight:600}

/* fontes da busca: discretas, recolhidas, uma por linha e só o nome do site */
.fontes{margin-top:7px}
.fontes-bt{font-size:11px;color:var(--mn-mut);background:var(--mn-bg);border:1px solid var(--mn-line);
  border-radius:999px;padding:3px 10px;cursor:pointer;font-family:inherit}
.fontes-bt:hover{color:var(--mn-ink);border-color:var(--mn-mut)}
.fontes-lista{margin:7px 0 0;padding:0 0 0 1px;list-style:none;display:flex;flex-direction:column;gap:3px}
.fontes-lista li{font-size:11.5px;color:var(--mn-mut);counter-increment:none}
.fontes-uma{font-size:11.5px;color:var(--mn-mut)}
.fontes a{color:var(--mn-bl);text-decoration:none}
.fontes a:hover{text-decoration:underline}
/* o aviso de ferramenta: uma linha fina ACIMA da resposta, nunca ao lado */
.msg-corpo>.fazendo{margin:0 0 6px}

/* cartão do comando proposto — molde do "Bloco 2" do design */
.cmd{margin-top:10px;border:1px solid var(--mn-line);border-radius:12px;overflow:hidden;
  background:var(--mn-sf)}
.cmd-topo{display:flex;align-items:center;gap:10px;padding:8px 12px;background:var(--mn-bg);
  border-bottom:1px solid var(--mn-line)}
.cmd-rot{font-family:'JetBrains Mono',monospace;font-size:12px;color:var(--mn-mut2,#5C554E)}
.cmd-selo{font-size:11px;font-weight:600;color:var(--mn-wa)}
.cmd-codigo{margin:0;padding:12px 14px;font-family:'JetBrains Mono',monospace;font-size:12.5px;
  line-height:1.6;white-space:pre-wrap;word-break:break-word;color:var(--mn-ink);
  /* F4e: script de 50 linhas não empurra a conversa toda para fora da tela */
  max-height:340px;overflow:auto}
.cmd-editar{width:100%;border:1px solid var(--mn-or);border-radius:8px;padding:8px 10px;
  font-family:'JetBrains Mono',monospace;font-size:12.5px;line-height:1.6;resize:vertical;
  color:var(--mn-ink);background:var(--mn-bg)}
.cmd-editar:focus{outline:2px solid var(--mn-or);outline-offset:1px}
.msg-tempo{margin-top:6px;font-size:11px;color:var(--mn-mut);font-variant-numeric:tabular-nums;cursor:help}
.cmd-expl{margin:0;padding:0 14px 10px;font-size:12px;color:var(--mn-mut);line-height:1.5}
.cmd-pe{display:flex;align-items:center;gap:9px;padding:10px 12px;border-top:1px solid var(--mn-line)}
.cmd-pe .btn{margin:0;width:auto;padding:7px 14px;font-size:12.5px}
.cmd-descartar{background:none;border:0;color:var(--mn-mut);font-size:12.5px;cursor:pointer;
  font-family:inherit;padding:7px 4px}
.cmd-descartar:hover{color:var(--mn-er)}
.cmd-selo.rodando{color:var(--mn-bl)}
.cmd-selo.ok{color:var(--mn-ok)}
.cmd-selo.erro{color:var(--mn-er)}
.cmd-saida{margin:0;padding:11px 14px;background:var(--mn-tbg);color:var(--mn-tfg);
  font-family:'JetBrains Mono',monospace;font-size:12px;line-height:1.55;white-space:pre-wrap;
  word-break:break-word;max-height:300px;overflow:auto;border-top:1px solid var(--mn-line)}
.cmd-feito{margin-left:34px;max-width:78%}

/* ── F4d: estados do cartão (molde do design) e pedido de revisão ────────── */
.cmd-ok{border-color:#C9E6D1}
.cmd-ok .cmd-topo{background:var(--mn-okbg,#E6F4EA);border-bottom-color:#C9E6D1}
.cmd-erro{border-color:#F2CEC7}
.cmd-erro .cmd-topo{background:var(--mn-erbg,#FBE4E0);border-bottom-color:#F2CEC7}
.cmd-bloqueado{border-color:#F2CEC7}
.cmd-bloqueado .cmd-topo{background:var(--mn-erbg,#FBE4E0);border-bottom-color:#F2CEC7}
/* F4g: comando recusado pelo portal (marcação interna do modelo) — sem botão, com aviso */
.cmd-recusado{border-color:#F2CEC7}
.cmd-recusado .cmd-topo{background:var(--mn-erbg,#FBE4E0);border-bottom-color:#F2CEC7}
.cmd-aviso{margin:0;padding:8px 14px 10px;font-size:12.5px;line-height:1.5;color:var(--mn-er)}
/* F5e.3: verificador de proposta — aviso de risco no cartão e na tarefa pausada (âmbar, funciona nos dois temas) */
.cmd-com-risco{border-color:var(--mn-wa)}
.cmd-risco{padding:9px 14px;background:rgba(217,154,6,.14);border-bottom:1px solid rgba(217,154,6,.45)}
.cmd-risco p{margin:0;font-size:13px;line-height:1.5;font-weight:600}
.cmd-risco p+p{margin-top:4px}
.verif-nota{font-size:11.5px;color:var(--mn-mut);margin:6px 0}
.tarefa-risco{margin:6px 0;padding:10px 12px;border:1px solid var(--mn-wa);border-radius:10px;background:rgba(217,154,6,.10)}
.tarefa-risco p{margin:0 0 6px;font-size:13px;line-height:1.5}
.tarefa-risco-tit{font-weight:600}
.tarefa-risco .cmd-codigo{max-height:220px;overflow:auto;margin:6px 0 8px}
.tarefa-risco-ou{margin-left:10px;font-size:12px;color:var(--mn-mut)}
.cmd-revisao{margin-left:auto;background:none;border:0;color:var(--mn-pu);font-size:12.5px;
  cursor:pointer;font-family:inherit;padding:7px 2px}
.cmd-revisao:hover{text-decoration:underline}
.empacou{margin:4px 0 15px 34px;max-width:78%;background:var(--mn-sf);border:1px solid var(--mn-line);
  border-radius:12px;padding:13px 15px}
.empacou p{margin:0 0 11px;font-size:13px;line-height:1.55}
.nome-code{color:var(--mn-pu);font-weight:600}
.empacou-bts{display:flex;gap:8px}
.empacou-bts .btn{margin:0;width:auto;padding:7px 14px;font-size:12.5px}
.btn.roxo{background:var(--mn-pu);color:#fff}
.btn.roxo:hover:not(:disabled){background:#6A4FEF}
.revisao{margin:4px 0 15px 34px;max-width:78%;background:var(--mn-pubg,#EEEAFF);
  border:1px solid #D9D1FF;border-radius:12px;padding:13px 15px}
.revisao strong{font-size:13.5px;color:#3F2E9E}
.revisao-dica{margin:5px 0 9px;font-size:12px;color:var(--mn-mut2,#5C554E);line-height:1.5}
.revisao-txt{width:100%;border:1px solid #D9D1FF;border-radius:9px;padding:9px 11px;
  font-family:inherit;font-size:12.5px;line-height:1.55;resize:vertical;background:#fff;
  color:var(--mn-ink)}
.revisao-txt:focus{outline:2px solid var(--mn-pu);outline-offset:1px}
.revisao-bts{display:flex;gap:8px;margin-top:10px}
.revisao-bts .btn{margin:0;width:auto;padding:7px 14px;font-size:12.5px}
.revisao.enviada{background:var(--mn-okbg,#E6F4EA);border-color:#C9E6D1}
.revisao.enviada p{margin:0;font-size:13px;color:#1E6B33;line-height:1.5}

/* ── F5a: histórico de execuções ──────────────────────────────────────────── */
.hist-filtros{display:flex;flex-wrap:wrap;gap:6px;margin:12px 0 14px}
.fil{background:var(--mn-sf);border:1px solid var(--mn-line);border-radius:999px;padding:5px 12px;
  font-family:inherit;font-size:12px;color:var(--mn-mut);cursor:pointer}
.fil:hover{border-color:var(--mn-mut)}
.fil.ativo{background:var(--mn-ink);border-color:var(--mn-ink);color:#fff}
.hist-dia{font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--mn-mut);
  margin:16px 0 7px}
.hist-dia:first-child{margin-top:0}
.hist-grupo{display:flex;flex-direction:column;gap:5px}
.hist-item{border:1px solid var(--mn-line);border-radius:10px;background:var(--mn-sf);overflow:hidden}
.hist-item.aberto{border-color:var(--mn-mut)}
.hist-topo{display:flex;align-items:center;gap:10px;width:100%;background:none;border:0;
  padding:9px 12px;font-family:inherit;text-align:left;cursor:pointer}
.hist-topo:hover{background:rgba(0,0,0,.02)}
.hist-hora{font-size:12px;color:var(--mn-mut);font-variant-numeric:tabular-nums;flex:0 0 auto}
.hist-cmd{flex:1 1 auto;font-family:'JetBrains Mono',monospace;font-size:12.5px;
  color:var(--mn-ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hist-modo{flex:0 0 auto;font-size:11px;color:var(--mn-pu);border:1px solid #D9D1FF;
  border-radius:999px;padding:1px 7px}
.hist-det{border-top:1px solid var(--mn-line);padding:10px 12px}
.hist-meta{margin:0 0 7px;font-size:12px;color:var(--mn-mut)}
.hist-saida{margin:0;background:#1C1A17;color:#E8E3DB;border-radius:8px;padding:10px 12px;
  font-family:'JetBrains Mono',monospace;font-size:12px;line-height:1.55;white-space:pre-wrap;
  word-break:break-word;max-height:320px;overflow:auto}

/* ── F4e: o cartão enquanto a IA escreve o comando ────────────────────────── */
.cmd-escrevendo{border-style:dashed}
.cmd-escrevendo .cmd-codigo::after{content:"▌";color:var(--mn-or);animation:mn-pisca 1s step-end infinite}
@keyframes mn-pisca{50%{opacity:0}}
@media (prefers-reduced-motion:reduce){
  .cmd-escrevendo .cmd-codigo::after{animation:none}
}

/* ─── F5c: conversas, aviso de janela, resumo ─── */
.cartao-vm.conversas{gap:10px}
.cartao-vm.conversas .cvm-topo .btn{margin-left:auto;padding:5px 10px;font-size:12px}
.lista-conversas{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;max-height:300px;overflow-y:auto}
.lista-conversas li{background:var(--mn-bg);border:1px solid var(--mn-line);border-radius:10px;padding:7px 9px;display:flex;flex-direction:column;gap:4px}
.lista-conversas li.atual{border-color:var(--mn-or);background:var(--mn-sf)}
.conv-linha{display:flex;align-items:center;gap:6px}
.conv-nome{flex:1;min-width:0;text-align:left;background:none;border:0;padding:0;font:inherit;font-size:12.5px;color:var(--mn-ink);cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.conv-nome:focus-visible,.conv-acao:focus-visible{outline:2px solid var(--mn-or);outline-offset:2px}
li.atual .conv-nome{font-weight:600;cursor:default}
.conv-acao{background:none;border:0;padding:2px 4px;font-size:12px;color:var(--mn-mut);cursor:pointer;border-radius:6px}
.conv-acao:hover{color:var(--mn-ink);background:var(--mn-line)}
.conv-meta{font-size:11px;color:var(--mn-mut);font-variant-numeric:tabular-nums}
.conv-confirma{font-size:12px;line-height:1.45;color:var(--mn-ink);display:flex;flex-direction:column;gap:6px}
.conv-confirma .linha{display:flex;gap:6px}
.conv-confirma .btn{padding:5px 10px;font-size:12px}
.btn.perigo{background:var(--mn-er);border-color:var(--mn-er);color:#fff}
.conv-renomeia{width:100%;font:inherit;font-size:12.5px;padding:4px 6px;border:1px solid var(--mn-line);border-radius:6px;background:var(--mn-sf);color:var(--mn-ink)}
.conv-titulo{font-size:12.5px;color:var(--mn-mut);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:30%}
.chat-topo .resumir{margin-left:auto}
.chat-topo .resumir + .revisao{margin-left:0}
.aviso-contexto{margin:0 0 10px;padding:9px 12px;border-radius:10px;font-size:12.5px;line-height:1.45;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.aviso-contexto.amarelo{background:#FFF6E0;color:#7A5A06;border:1px solid #F1DFA8}
.aviso-contexto.forte{background:#FFE7DC;color:#8A2E0E;border:1px solid #F4B79C;font-weight:600}
.aviso-contexto.cheia{background:var(--mn-er);color:#fff;border:1px solid var(--mn-er);font-weight:600}
.aviso-contexto .btn{margin-left:auto;padding:5px 10px;font-size:12px}
.msg-resumo .msg-txt{background:var(--mn-bg);border:1px dashed var(--mn-line);border-radius:12px;padding:10px 13px;font-size:12.5px}
.resumo-rot{display:block;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--mn-mut);margin-bottom:6px}
.resumo-fatos{margin:8px 0 0;padding:9px 11px;background:var(--mn-bg);border:1px solid var(--mn-line);border-radius:9px;font:12px/1.5 'JetBrains Mono',monospace;white-space:pre-wrap;color:var(--mn-ink)}
@media (prefers-color-scheme:dark){.aviso-contexto.amarelo{background:#3A2F10;color:#F1D88A;border-color:#5A4A1A}.aviso-contexto.forte{background:#4A2414;color:#FFC4A8;border-color:#6E3820}}
/* F5c.1c: Markdown na bolha da IA (HTML sanitizado pelo DOMPurify; o cartão e o terminal seguem texto puro) */
.msg-txt.md{white-space:normal}
.msg-txt.md>:first-child{margin-top:0}
.msg-txt.md>:last-child{margin-bottom:0}
.msg-txt.md p{margin:0 0 8px}
.msg-txt.md h1,.msg-txt.md h2,.msg-txt.md h3,.msg-txt.md h4,.msg-txt.md h5,.msg-txt.md h6{margin:14px 0 6px;line-height:1.3;font-weight:650}
.msg-txt.md h1{font-size:17px}.msg-txt.md h2{font-size:15.5px}.msg-txt.md h3{font-size:14px}
.msg-txt.md h4,.msg-txt.md h5,.msg-txt.md h6{font-size:13px}
.msg-txt.md ul,.msg-txt.md ol{margin:0 0 8px;padding-left:22px}
.msg-txt.md li{margin:2px 0}
.msg-txt.md li>ul,.msg-txt.md li>ol{margin:2px 0 0}
.msg-txt.md strong{font-weight:600}
.msg-txt.md pre{margin:0 0 10px;padding:10px 12px;background:var(--mn-bg);border:1px solid var(--mn-line);border-radius:8px;
  overflow-x:auto;white-space:pre}
.msg-txt.md pre code{background:none;border:0;padding:0;font-size:12px;line-height:1.5}
.msg-txt.md table{border-collapse:collapse;margin:0 0 10px;font-size:12.5px;display:block;overflow-x:auto;max-width:100%}
.msg-txt.md th,.msg-txt.md td{border:1px solid var(--mn-line);padding:5px 9px;text-align:left;vertical-align:top}
.msg-txt.md th{background:var(--mn-bg);font-weight:600}
.msg-txt.md blockquote{margin:0 0 8px;padding:2px 0 2px 12px;border-left:3px solid var(--mn-line);color:var(--mn-mut)}
.msg-txt.md hr{border:0;border-top:1px solid var(--mn-line);margin:12px 0}
.msg-txt.md a{color:var(--mn-bl)}
/* 2FA do admin: QR gerado no servidor (SVG), chave em texto e os códigos de recuperação */
.qr-2fa{display:flex;justify-content:center;margin:4px 0 12px}
.qr-2fa svg{width:200px;height:200px;max-width:100%;background:#fff;border-radius:8px}
.chave-2fa{margin:0 0 16px;text-align:center}
.chave-2fa code,.codigos-2fa code{font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:14px;letter-spacing:.04em;
  user-select:all;word-break:break-all}
.codigos-2fa{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 16px;margin:0 0 20px;padding-left:22px}
a.btn-link{display:flex;align-items:center;justify-content:center;box-sizing:border-box;text-decoration:none}
