/* =====================================================================
   VERSAO DA FOLHA: v=102

   Mexeu aqui? SOBE o numero em painel.html:

       sed -i 's|admin.css?v=101|admin.css?v=93|' Erp/public/painel.html

   Sem isso o navegador serve a copia velha e a regra nova simplesmente
   nao existe pra quem ja tinha o painel aberto. Nao aparece erro nenhum:
   o seletor fica sem estilo e parece decisao de desenho. Aconteceu com o
   selo de candidatura em 28/08 e com a chunt.css em 25/08.
   =====================================================================
   Central do Hunter — design system
   =====================================================================
   Extraído de painel.html (Etapa 0 da migração de visual). Nesta etapa o
   conteúdo é IDÊNTICO ao que estava inline — nenhuma cor, medida ou regra
   foi alterada. O objetivo era só tirar o CSS de dentro do HTML.

   REGRA: nunca escreva hex solto no CSS das páginas. Precisa de cor nova?
   Declare como token no :root primeiro.

   ACESSIBILIDADE: todo par texto/fundo deve passar WCAG AA (4.5:1 texto
   normal, 3:1 texto grande). Ao mexer em cor, MEÇA — não confie no olho.

   Cache: as páginas linkam com ?v=N. Ao alterar este arquivo, INCREMENTE
   o N em todas elas, senão o navegador serve a versão velha do cache.
   ===================================================================== */

  :root{
    /* Paleta da marca c·hunt. TODOS os pares texto/fundo foram medidos
       (WCAG AA) antes de entrar aqui — ver o quadro no fim deste bloco.
       Ao mexer em qualquer cor, MEÇA de novo: 5 pares reprovavam na paleta
       anterior sem ninguém ter notado, inclusive o botão primário. */
    --navy:#296FBA; --navy2:#2564A7; --blue:#296FBA; --blue-l:#8FC0EA;
    /* --brand era usado em 24 regras e nunca tinha sido definido: todas
       caiam em transparente, em silencio (verificador 30, 18/09/2026). */
    --brand:var(--navy);
    --bg:#F6F8FC; --card:#ffffff; --line:#E2E8F2; --ink:#0B132B; --muted:#4A5568;
    --ok:#12734B; --warn:#8A5200; --red:#9B2226;
    /* Menu lateral é sempre escuro — é a "casca" de navegação, não o
       conteúdo, e carrega a marca. Por isso tem os próprios tokens
       --side-*, independentes de --ink/--line/--card/--muted. */
    --side-bg:#0A1120; --side-active-bg:#296FBA; --side-active-fg:#FFFFFF; --side-icon:#8FA4C9;
    --side-text:#A9BCDF; --side-hover:#16203A; --side-line:#1B2540; --side-btn-bg:#16203A;
    --brand-dark:#0A1120; --brand-accent:#296FBA; --brand-accent2:#4FD8E8;
    /* MEDIDO (mínimo AA 4.5:1 texto normal):
       ink/card 18,4 · ink/bg 17,3 · muted/card 7,5 · muted/bg 7,1
       navy/card 5,2 · navy/bg 4,8 · branco/navy 5,2 · branco/navy2 6,1
       ok/card 5,9 · warn/card 6,4 · red/card 7,9
       side-text/side-bg 9,8 · side-icon/side-bg 7,5 · branco/side-active 5,2
       --blue-l e --brand-accent2 NUNCA como texto sobre fundo claro:
       são anel de foco / destaque sobre a sidebar escura. */
    /* CAMPOS DE FORMULÁRIO. A borda de um campo é a única coisa que diz
       onde ele começa: sobre --card branco não existe fundo pra separar.
       A WCAG 1.4.11 pede 3:1 pra esse contorno, e o --line (1,23:1) foi
       desenhado pra beirada de cartão, não pra campo. MEDIDO:
       field-line/card 3,35:1 · field-line/bg 3,15:1. */
    --field-line:#7F8DA6;
    /* O realce do que acabou de mudar. Azul da marca bem lavado: precisa
       chamar o olho por um segundo e não competir com o vermelho de
       atrasado nem com o verde de em dia, que estão na MESMA lista. */
    --mudou:#B9D8F6;
    /* O anel de foco. Sai do --navy, com alfa, pra ser o mesmo azul da
       marca sem virar um segundo tom. */
    --ring:0 0 0 3px rgba(41,111,186,.16);
    /* Setas e lupa desenhadas por nós. Ficam aqui, e não soltas na regra,
       porque o hex mora DENTRO do SVG e a folha proíbe hex solto lá
       embaixo. O tom é o --muted (#4A5568); a versão clara é pro select
       que vive sobre fundo escuro (hero da Bússola). */
    --chevron:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8' fill='none'%3E%3Cpath d='M1 1.7 6 6.3 11 1.7' stroke='%234A5568' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    --chevron-claro:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8' fill='none'%3E%3Cpath d='M1 1.7 6 6.3 11 1.7' stroke='%23FFFFFF' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    --lupa:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='15' height='15' viewBox='0 0 15 15' fill='none'%3E%3Ccircle cx='6.4' cy='6.4' r='4.5' stroke='%234A5568' stroke-width='1.6'/%3E%3Cpath d='M9.9 9.9 13.3 13.3' stroke='%234A5568' stroke-width='1.6' stroke-linecap='round'/%3E%3C/svg%3E");
    /* Grade de espaçamento e escala visual (design tokens — não muda cores da marca) */
    --sp-1:4px; --sp-2:8px; --sp-3:12px; --sp-4:16px; --sp-5:24px; --sp-6:32px;
    --r-sm:6px; --r-md:10px; --r-lg:14px;
    --sh-sm:0 1px 2px rgba(11,42,74,.06); --sh-md:0 4px 14px rgba(11,42,74,.12); --sh-lg:0 10px 30px rgba(11,42,74,.16);
    --ease:.15s ease;
    --font-ui:'Inter',system-ui,'Segoe UI',Arial,sans-serif;
    --font-display:'Sora',var(--font-ui);
    --font-mono:'JetBrains Mono',ui-monospace,Consolas,monospace;
  }
  *{box-sizing:border-box}
  body{margin:0;font-family:var(--font-ui);background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased}
  button{font-family:inherit;cursor:pointer}
  input,select,textarea{font-family:inherit;font-size:14px}

  /* =====================================================================
     PRIMITIVOS DE FORMULÁRIO

     Até aqui a folha só dizia, na linha acima, qual fonte e qual tamanho.
     Todo o resto era POR TELA: quem tinha classe (.f, .mc-toolbar,
     .crm-filtros) ganhava desenho, e quem não tinha caía no visual nativo
     do navegador. É de onde vinha a cara de sistema antigo: a caixa
     quadrada sem respiro, a setinha cinza do select, o "Escolher arquivo"
     do Windows. São 103 selects, 30 campos de data, 14 buscas e 4 de
     arquivo que nunca tiveram uma regra sequer.

     A ESPECIFICIDADE É ZERO DE PROPÓSITO. O :where() vale 0-0-0, então
     QUALQUER regra de tela que já exista continua ganhando desta aqui.
     Isto não redesenha nada que já tinha desenho: só veste o que estava
     sem ninguém. Foi o jeito de mexer em 150 campos sem auditar 150 telas.
     ===================================================================== */

  /* A lista de exceções é o miolo da regra. Caixa de marcar, botão de
     escolha, faixa deslizante e seletor de cor têm desenho próprio do
     sistema operacional e ficam MELHORES nativos — padding e borda neles
     só quebram. O de arquivo sai daqui porque tem tratamento próprio
     mais abaixo. Campo sem type= é campo de texto, e entra. */
  /* NÃO quebre estes seletores em duas linhas: espaço dentro de um
     seletor composto vira combinador de descendente, e a regra passa a
     valer pra outra coisa sem avisar. */
  :where(input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]):not([type=file]):not([type=submit]):not([type=button]),select,textarea){
    padding:9px 12px;
    border:1px solid var(--field-line);
    border-radius:var(--r-md);
    /* background-COLOR em campo, NUNCA o atalho `background`. O atalho
       zera o background-image junto, e e ele que desenha a seta do
       select e a lupa da busca. Ver ferramentas/verificar-seta-select.js */
    background-color:var(--card);
    color:var(--ink);
    line-height:1.45;
    transition:border-color var(--ease), box-shadow var(--ease);
  }
  /* O Firefox apaga o texto de dica por conta própria; o opacity devolve
     ele pro tom que a gente mediu. */
  ::placeholder{color:var(--muted);opacity:1}

  :where(input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]):not([type=submit]):not([type=button]),select,textarea):hover:not(:disabled):not([readonly]){
    border-color:var(--muted);
  }
  /* O anel de foco SOMA com o outline do :focus-visible lá de cima, que
     continua sendo o indicador de teclado. Aqui é o campo dizendo "estou
     recebendo o que você digita", que vale pro mouse também. */
  :where(input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]):not([type=submit]):not([type=button]),select,textarea):focus{
    border-color:var(--navy);
    box-shadow:var(--ring);
  }
  :where(input,select,textarea):disabled{
    /* background-COLOR, e nao o atalho: o atalho zera o background-image e
       o select desabilitado ficava sem seta nenhuma. */
    background-color:var(--bg);color:var(--muted);cursor:not-allowed;
  }

  /* O SELECT. A seta nativa é o item mais datado da tela inteira: cada
     sistema operacional desenha a sua, nenhuma combina com o resto, e no
     Windows ela vem dentro de um quadradinho cinza com relevo.
     appearance:none apaga a nativa e o --chevron entra no lugar. */
  :where(select){
    appearance:none; -webkit-appearance:none;
    padding-right:34px;
    background-image:var(--chevron);
    background-repeat:no-repeat;
    background-position:right 12px center;
  }
  /* CAMPO DE DATA. O ícone do calendário é do navegador e não dá pra
     trocar; dá pra deixar ele discreto e acender no passar do mouse,
     que é o que tira o ar de formulário de 1998. */
  :where(input[type=date],input[type=month],input[type=time],input[type=datetime-local]){
    min-height:40px;
  }
  input[type=date]::-webkit-calendar-picker-indicator,
  input[type=month]::-webkit-calendar-picker-indicator,
  input[type=time]::-webkit-calendar-picker-indicator,
  input[type=datetime-local]::-webkit-calendar-picker-indicator{
    cursor:pointer; opacity:.5; transition:opacity var(--ease);
  }
  input[type=date]:hover::-webkit-calendar-picker-indicator,
  input[type=month]:hover::-webkit-calendar-picker-indicator,
  input[type=time]:hover::-webkit-calendar-picker-indicator,
  input[type=datetime-local]:hover::-webkit-calendar-picker-indicator{opacity:1}

  /* CAMPO DE ARQUIVO. O pior de todos: "Escolher arquivo · Nenhum arquivo
     escolhido", com o botão cinza de relevo. O ::file-selector-button
     deixa vestir o botão sem tocar em uma linha de HTML. A borda
     tracejada é de propósito: diz "solte algo aqui" antes de qualquer
     texto explicar. */
  :where(input[type=file]){
    padding:7px 11px;
    border:1px dashed var(--field-line);
    border-radius:var(--r-md);
    background:var(--card);
    color:var(--muted);
    font-size:13px;
    max-width:100%;
  }
  input[type=file]::file-selector-button{
    margin-right:11px;
    padding:7px 13px;
    border:1px solid var(--field-line);
    border-radius:var(--r-sm);
    background:var(--bg);
    color:var(--ink);
    font:600 13px var(--font-ui);
    cursor:pointer;
    transition:background var(--ease),border-color var(--ease);
  }
  input[type=file]::file-selector-button:hover{background:var(--card);border-color:var(--navy)}

  :where(textarea){resize:vertical;line-height:1.5}

  /* CAMPO DE BUSCA. A lupa morava DENTRO do texto de dica, e sumia no
     primeiro caractere digitado — justo quando a pessoa mais precisa
     enxergar que aquilo ali é uma busca. Agora ela é desenho do campo e
     fica. O min-height existe porque busca é o campo mais tocado no
     celular e 42px é o alvo confortável de dedo. */
  .busca{
    padding-left:36px;
    min-height:42px;
    background-image:var(--lupa);
    background-repeat:no-repeat;
    background-position:left 12px center;
  }

  /* =====================================================================
     MOVIMENTO

     Três momentos, e só três: o toque no botão, o modal abrindo e a troca
     de tela. São os gestos que a pessoa repete o dia inteiro, e eram os
     únicos três sem retorno nenhum.

     TUDO AQUI É `transform` E `opacity`. Só essas duas o navegador anima
     na placa de vídeo, sem recalcular layout — é o que separa movimento
     de travada no celular, que é onde o sistema mais roda.

     Quem pediu menos movimento no sistema operacional já está atendido
     pela trava global de prefers-reduced-motion mais abaixo: ela zera
     animation-duration em tudo, com !important. Nada aqui precisa repetir
     essa conta.
     ===================================================================== */

  /* O BOTÃO QUE RESPONDE AO TOQUE.
     No celular não existe hover: entre o toque e a ação terminar o botão
     não dava retorno NENHUM, e quem não vê resposta toca de novo. */
  .btn:active:not(:disabled),
  button:active:not(:disabled){transform:scale(.97)}

  /* O MODAL ENTRANDO.
     Antes ele materializava: fundo escuro cheio e caixa em tamanho final,
     no mesmo quadro.

     A classe é posta pelo overlay() SÓ quando o modal nasce, e sai sozinha
     depois. Se ficasse, todo modal que se redesenha por dentro (e são
     vários) reanimaria a caixa inteira a cada clique lá dentro. */
  .ovl-entra{animation:ovlFundo .18s ease}
  .ovl-entra .modal{animation:ovlCaixa .22s cubic-bezier(.2,.8,.3,1)}
  .ovl-sai{animation:ovlFundoSai .16s ease forwards;pointer-events:none}
  @keyframes ovlFundo{from{opacity:0}}
  @keyframes ovlCaixa{from{opacity:0;transform:translateY(10px) scale(.985)}}
  @keyframes ovlFundoSai{to{opacity:0}}

  /* A TELA QUE ENTRA.
     Trocar de aba era um corte seco entre 21 telas.

     O `transform` de um ancestral vira bloco de contenção pros filhos
     `position:fixed` — e o painel do script (#scr-painel, fixed) é
     desenhado DENTRO do #view-capta. Por isso a animação não tem
     `forwards`: ela termina em transform nenhum, e 170ms depois o filho
     fixo volta a se posicionar pela janela. O painel do script só existe
     na tela com body.scr-on, que não é o caso de quem acabou de trocar
     de aba.

     O #view-time fica de fora no JS: ele é `position:fixed;inset:0`, uma
     tela cheia por cima de tudo, e não se comporta como as outras. */
  .view-entra{animation:viewEntra .17s ease-out}
  @keyframes viewEntra{from{opacity:0;transform:translateY(6px)}}

  /* O QUE ACABOU DE MUDAR.
     Este é o único movimento da folha que não é enfeite: a tela se
     redesenha INTEIRA depois de gravar, e até aqui a pessoa tinha que
     caçar com o olho o que tinha mudado no meio de quarenta linhas.

     Sem `forwards` de propósito: a animação termina e a cor volta a ser a
     que o elemento já tinha, seja qual for. Assim funciona no card do
     Kanban (branco), no card do CRM e em qualquer lista que venha
     depois, sem eu ter que saber a cor de cada uma. */
  .mudou{outline:3px solid transparent;outline-offset:-3px;z-index:2;animation:mudouAcende 1.9s cubic-bezier(.2,.8,.3,1)}
  /* SEGURA e depois apaga, em vez de apagar desde o primeiro quadro.
     A primeira versão era `from{cor}` com ease-out: a cor drenava logo no
     comeco e, no tempo em que a pessoa levava pra olhar, o card ja estava
     quase branco de novo. Ninguem via. Agora fica acesa 55% do tempo e so
     entao apaga.

     O contorno usa `outline` e nao `box-shadow` de proposito: o card do
     Kanban ja tem sombra propria, e box-shadow substituiria a dele
     durante a animacao.

     O 100% e implicito: sem declarar, a animacao volta pro que o elemento
     ja tinha, seja qual for a cor da lista. Declarar `transparent` ali
     faria o card ficar vazado no ultimo quadro. */
  /* O QUE O OLHO PEGA É MOVIMENTO, e não cor.
     Duas versões só de cor passaram batidas: num quadro cheio de cards
     coloridos, mais uma cor clara some no meio. Um card que CRESCE e
     volta, não. A cor e o contorno ficam pra dizer QUAL é depois que o
     movimento já chamou o olho pra lá. */
  @keyframes mudouAcende{
    0%  {background-color:var(--mudou);outline-color:var(--blue);transform:scale(1)}
    14% {background-color:var(--mudou);outline-color:var(--blue);transform:scale(1.04)}
    34% {background-color:var(--mudou);outline-color:var(--blue);transform:scale(1)}
    62% {background-color:var(--mudou);outline-color:var(--blue)}
  }

  /* O ESQUELETO DA ESPERA.

     Não entra nos 77 "Carregando…" do painel: aquelas chamadas voltam em
     55ms e ninguém veria o esqueleto piscar. Entra só onde a espera é de
     VERDADE — a IA, que leva segundos — e onde o que vem tem forma
     conhecida: um parágrafo de texto. Esqueleto de coisa que você não
     sabe o formato é enfeite; esse aqui promete o que vai chegar.

     O que ele resolve é o texto PARADO. "Lendo o perfil…" sem nenhum
     movimento, por cinco segundos, se lê como travado. */
  .esq{display:flex;flex-direction:column;gap:7px;margin-top:9px}
  .esq i{display:block;height:9px;border-radius:5px;
    background:linear-gradient(90deg,var(--line) 20%,var(--bg) 38%,var(--line) 56%);
    background-size:300% 100%;animation:esqBrilho 1.5s ease-in-out infinite}
  .esq i:nth-child(2){width:94%}
  .esq i:nth-child(3){width:76%}
  @keyframes esqBrilho{from{background-position:150% 0}to{background-position:-50% 0}}

  /* A grade da semana do horário de atendimento. Uma linha por dia, com
     o nome à esquerda e as horas à direita — no celular ela quebra e o
     dia fica em cima das horas, que é como se lê de qualquer jeito. */
  .ag-grade{display:flex;flex-direction:column;gap:6px;max-width:520px}
  .ag-dia{display:flex;align-items:center;gap:10px;flex-wrap:wrap;
    padding:7px 10px;border:1px solid var(--line);border-radius:10px;background:var(--card)}
  .ag-dia-nome{display:flex;align-items:center;gap:7px;min-width:132px;
    font-size:13.5px;font-weight:600;cursor:pointer}
  .ag-dia-horas{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--muted)}
  .ag-dia-horas input[type=time]{padding:5px 8px;font-size:13px;min-height:34px}
  .ag-dia-fechado{font-size:12.5px;color:var(--muted);font-style:italic}
  .ag-dia-horas[hidden],.ag-dia-fechado[hidden]{display:none}

  .hidden{display:none!important}
  button,a,[tabindex]{transition:background var(--ease),border-color var(--ease),box-shadow var(--ease),transform var(--ease),color var(--ease)}
  :focus-visible{outline:2px solid var(--blue-l);outline-offset:2px;border-radius:4px}
  @media (prefers-reduced-motion:reduce){*{transition-duration:0s!important;animation-duration:0s!important}}

  /* Login */
  #login{min-height:100vh;display:flex;align-items:center;justify-content:center}
  .login-card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:32px;width:340px;box-shadow:0 10px 30px rgba(11,42,74,.12)}
  .login-card h1{font-size:20px;margin:0 0 4px;color:var(--navy)}
  .login-card p{margin:0 0 20px;color:var(--muted);font-size:13px}
  .login-card label{display:block;font-size:12px;color:var(--muted);margin:12px 0 4px}
  .login-card input{width:100%;padding:10px;border:1px solid var(--line);border-radius:8px}
  .btn{background:var(--blue);color:#fff;border:0;border-radius:8px;padding:10px 16px;font-weight:600}
  .btn:hover{background:var(--navy2)}
  .btn.sec{background:#fff;color:var(--navy);border:1px solid var(--line)}
  .btn.danger{background:var(--red)}
  .msg{font-size:13px;margin-top:12px;min-height:16px}
  .msg.err{color:var(--red)} .msg.ok{color:var(--ok)}

  /* App */
  header{background:var(--card);color:var(--ink);padding:10px 18px;display:flex;align-items:center;gap:16px;border-bottom:1px solid var(--line);position:relative;z-index:5}
  header .logo{font-family:var(--font-display);font-weight:700;letter-spacing:.3px;font-size:15px;color:var(--ink)}
  header .logo b{color:var(--navy)}
  header .spacer{flex:1}
  header .who{font-size:13px;color:var(--muted)}
  /* Título da tela atual, preenchido por showTab() via aplicarTituloTela(). */
  .topbar-titulo{display:flex;flex-direction:column;min-width:0;line-height:1.25}
  .topbar-titulo b{font-family:var(--font-display);font-size:16px;font-weight:700;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .topbar-titulo small{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  @media(max-width:760px){ .topbar-titulo small{display:none} }
  /* Em tela estreita o rotulo do botao da Vega sai e fica so a marca dela,
     o brilho. Sao ~38px devolvidos ao nome da tela, que e a unica coisa
     do topo que diz onde a pessoa esta. O title e o aria-label ficam. */
  @media(max-width:420px){ .topo-lbl{display:none} }
  /* .tabs/.tab (a barra de abas horizontal) foram removidas: o menu virou
     sidebar e nada mais usava essas classes. Não confundir com .subtab, que
     é a abas DENTRO das telas (Financeiro, Histórico) e segue em uso. */

  /* Menu lateral (sidebar) */
  .sidebar{width:220px;flex-shrink:0;background:var(--side-bg);border-right:1px solid var(--side-line);display:flex;flex-direction:column;padding:12px 0;transition:width var(--ease);position:sticky;top:0;height:100vh;overflow-y:auto}
  .sidebar.collapsed{width:64px}
  .sidebar.collapsed .side-item span,.sidebar.collapsed .sidebar-brand span{display:none}
  .sidebar.collapsed #sidebar-collapse-btn{transform:rotate(180deg)}
  .sidebar-brand{display:flex;align-items:center;gap:10px;padding:0 16px 14px;font-family:var(--font-display);font-weight:700;font-size:14px;color:var(--side-text);white-space:nowrap;overflow:hidden}
  .sidebar-brand-mark{width:26px;height:26px;border-radius:7px;background:var(--brand-dark);color:#fff;display:flex;align-items:center;justify-content:center;font:700 13px var(--font-display);flex-shrink:0}
  .sidebar-brand-mark b{color:var(--brand-accent2)}
  .login-card .chunt-wordmark{font:700 30px var(--font-display);color:var(--brand-dark);letter-spacing:-0.5px}
  .login-card .chunt-wordmark b{color:var(--brand-accent)}
  .login-card .chunt-full{margin:2px 0 20px}
  /* Seções do menu. O rótulo some junto com a seção quando o perfil não
     tem nenhum item dela (sidebarAjustarSecoes) e some sozinho quando a
     sidebar está recolhida, onde não há largura pra texto. */
  .side-group{display:flex;flex-direction:column;margin-bottom:10px}
  .side-label{padding:0 18px 5px;font-size:10px;font-weight:700;letter-spacing:.9px;text-transform:uppercase;color:var(--side-icon);white-space:nowrap;overflow:hidden}
  .sidebar.collapsed .side-label{visibility:hidden;height:6px;padding:0}
  /* Sanfona: Gestão/Apoio/Conta abrem no clique do rótulo; Operação é fixa.
     O item ATIVO de uma seção fechada continua visível — a pessoa precisa
     ver onde está. No modo ícone (sidebar recolhida ou mobile) não há
     rótulo pra clicar, então a sanfona é ignorada e tudo aparece. */
  .side-label-btn{display:flex;align-items:center;gap:6px;width:100%;border:0;background:transparent;text-align:left;cursor:pointer;padding:4px 18px 5px}
  .side-label-btn:hover{color:var(--side-text)}
  .side-chev{font-style:normal;font-size:9px;transition:transform var(--ease)}
  .side-group.fechada .side-chev{transform:rotate(-90deg)}
  .side-group.fechada .side-item{display:none}
  .side-group.fechada .side-item.active,.side-group.fechada .side-item.btn-topo-ativo{display:flex}
  .sidebar.collapsed .side-group.fechada .side-item{display:flex}
  /* Item = pílula recuada das bordas: por isso margin lateral + width auto
     em vez de width:100%, senão o fundo do item ativo encosta na borda. */
  .side-item{display:flex;align-items:center;gap:10px;margin:1px 8px;padding:9px 10px;border-radius:8px;font-size:13px;font-weight:500;color:var(--side-icon);background:transparent;border:0;text-align:left;width:auto;white-space:nowrap;overflow:hidden}
  /* ---------------------------------------------------------------------
     O ITEM DO MENU RESPONDE AO MOUSE (07/09/2026)

     Cresce PRA DIREITA (transform-origin:left), e nao pros dois lados: a
     pilula fica encostada na borda esquerda e, crescendo do centro, ela
     invadiria a margem e o texto pularia pro lado errado.

     O trilho da esquerda e o mesmo desenho da linha da tabela e do item
     da tela aberta no menu da conta. Terceira vez que aparece: e
     linguagem, nao enfeite.

     Sem sombra: em fundo quase preto ela nao aparece, so borra a borda.
     Quem faz o relevo aqui e o fundo mais claro.
     --------------------------------------------------------------------- */
  .side-item{transform-origin:left center;
    transition:background-color .16s ease,color .16s ease,transform .16s cubic-bezier(.2,.7,.3,1),box-shadow .16s ease}
  .side-item .side-ico{transition:color .16s ease,transform .16s cubic-bezier(.2,.7,.3,1)}
  .side-item:hover,.side-item:focus-visible{
    background:#1D2A48;color:#FFFFFF;transform:translateX(2px) scale(1.03);
    box-shadow:inset 3px 0 0 var(--side-active-bg);outline:none}
  .side-item:hover .side-ico,.side-item:focus-visible .side-ico{color:#6FA8E8;transform:scale(1.08)}
  .side-item:active{transform:translateX(1px) scale(1)}
  /* O ATIVO ja e azul cheio: no hover ele so clareia um tom, senao a
     pessoa perde de vista onde esta enquanto passeia o mouse. */
  .side-item.active,.side-item.btn-topo-ativo{background:var(--side-active-bg);color:var(--side-active-fg);font-weight:600}
  .side-item.active:hover,.side-item.btn-topo-ativo:hover{
    background:#3480CE;box-shadow:inset 3px 0 0 #9FC8F2}
  .side-item.active:hover .side-ico{color:#FFFFFF}
  /* Quem pediu menos movimento fica com a cor, que e o que informa, e sem
     o crescimento, que e o que enfeita. */
  @media (prefers-reduced-motion:reduce){
    .side-item,.side-item .side-ico{transition:none}
    .side-item:hover,.side-item:focus-visible,.side-item:active{transform:none}
    .side-item:hover .side-ico{transform:none}
  }
  .sidebar.collapsed .side-item{justify-content:center;padding:9px 0;transform-origin:center}
  .sidebar.collapsed .side-item:hover{transform:scale(1.06)}
  /* Ícones de linha (SVG, estilo Feather): herdam currentColor do item —
     cinza-azulado no repouso, branco no ativo. Nada de emoji colorido. */
  .side-ico{width:16px;height:16px;flex-shrink:0}
  .topbar-ico{width:18px;height:18px;display:block}
  .fab-reportar .fab-ico{width:16px;height:16px;flex-shrink:0}
  .side-sep{height:1px;background:var(--side-line);margin:8px 16px}
  /* Card do usuário no pé do menu (nome + e-mail + avatar com iniciais). */
  /* O CARTAO DO USUARIO SAIU DAQUI (06/09/2026): nome, e-mail e iniciais
     subiram pro menu da conta, no alto da tela (.usermenu). As regras
     foram embora junto com ele. */
  .side-collapse{align-self:center;margin-top:8px;width:28px;height:28px;border-radius:50%;border:1px solid var(--side-line);background:var(--side-btn-bg);color:var(--side-text);font-size:14px;display:flex;align-items:center;justify-content:center}
  /* Hambúrguer do topo (só aparece no mobile) + véu atrás do drawer —
     padrão PoliNexus: no celular o menu vira gaveta que desliza da
     esquerda, com rótulos completos, em vez do trilho de ícones mudo. */
  .menu-toggle{display:none;align-items:center;justify-content:center;background:none;border:0;cursor:pointer;color:var(--ink);padding:6px;margin-left:-4px;flex-shrink:0}
  .menu-toggle svg{width:22px;height:22px}
  .side-overlay{display:none;position:fixed;inset:0;background:rgba(11,19,43,.5);z-index:55}
  .side-overlay.on{display:block}
  .main-col{flex:1;min-width:0;display:flex;flex-direction:column}
  /* Mobile: Gestor/Comercial ainda navegam pelo celular (aplicarGateMobile
     só restringe QUAIS itens aparecem, não bloqueia o app inteiro pra eles)
     — a sidebar não pode sumir, só fica sempre em modo ícone pra caber. */
  @media(max-width:760px){
    /* Drawer (padrão PoliNexus): o menu fica FORA da tela e desliza da
       esquerda pelo botão ☰ do topo — antes era um trilho de 56px só com
       ícones e sem nenhum botão pra expandir (reportado no iOS). As
       regras .collapsed são neutralizadas de propósito: o estado
       "recolhido" salvo no desktop não pode deixar a gaveta sem rótulos. */
    .sidebar,.sidebar.collapsed{position:fixed;left:0;top:0;bottom:0;height:100%;width:min(280px,84vw);transform:translateX(-100%);transition:transform var(--ease);z-index:60;box-shadow:0 0 44px rgba(2,8,20,.45);padding-top:calc(12px + env(safe-area-inset-top))}
    .sidebar.aberta{transform:none}
    .sidebar.collapsed .side-item span,.sidebar.collapsed .sidebar-brand span{display:inline}
    .sidebar.collapsed .side-label{visibility:visible;height:auto;padding:0 18px 5px}
    .sidebar.collapsed .side-label-btn{padding:4px 18px 5px}
    .sidebar.collapsed .side-item{justify-content:flex-start;padding:9px 10px}
    .sidebar.collapsed .side-group.fechada .side-item{display:none}
    .sidebar.collapsed .side-group.fechada .side-item.active,.sidebar.collapsed .side-group.fechada .side-item.btn-topo-ativo{display:flex}
    .side-collapse{display:none}
    .menu-toggle{display:flex}
    /* O safe-area do header (topo cortado no iOS) fica no bloco
       "===== Mobile (Android/iOS) =====" mais abaixo, que é quem define
       o padding do header no celular. */
  }

  /* Aviso fixo "atuando como" (impersonação) */
  .imperson-banner{display:flex;align-items:center;justify-content:center;gap:10px;padding:8px 16px;background:var(--warn);color:#3a2a00;font-size:12.5px;font-weight:600;flex-wrap:wrap}
  .imperson-banner button{background:#3a2a00;color:#fff;border:0;border-radius:6px;padding:5px 12px;font-size:12px;font-weight:700;cursor:pointer}
  /* NO CELULAR A FAIXA CABE EM UMA LINHA (17/09/2026). Em 375px ela
     quebrava em tres e empurrava o trabalho para fora da primeira tela;
     o texto longo some e fica o essencial: onde voce esta e como sair. */
  @media (max-width:760px){
    .imperson-banner{flex-wrap:nowrap;gap:8px;padding:0 10px;height:34px;font-size:12.5px;
      justify-content:flex-start;overflow:hidden}
    .imperson-banner>span:first-child{flex:1;min-width:0;overflow:hidden;
      text-overflow:ellipsis;white-space:nowrap}
    .imperson-banner b{font-weight:700}
    .imperson-banner button{flex:0 0 auto;min-height:26px;padding:0 10px}
  }

  /* Sino de lembretes (header) */
  .sino-badge{position:absolute;top:-4px;right:-4px;background:var(--red);color:#fff;font-size:10px;font-weight:700;min-width:16px;height:16px;border-radius:8px;display:flex;align-items:center;justify-content:center;padding:0 3px}
  /* ---------------------------------------------------------------------
     O MENU DA CONTA (06/09/2026)

     Nome e iniciais no canto superior direito, e dentro dele tudo que e
     da pessoa. E onde esse menu mora em qualquer sistema, e foi o pedido:
     tirar do menu da esquerda, que e das TELAS, o que e da PESSOA.

     No celular fica so a bolinha das iniciais: o nome e a seta saem, que
     e a mesma economia de largura ja feita no rotulo da Vega.
     --------------------------------------------------------------------- */
  .usermenu-wrap{position:relative;display:inline-flex;flex:0 0 auto}
  .usermenu-btn{display:inline-flex;align-items:center;gap:8px;background:var(--card);
    border:1px solid var(--line);border-radius:22px;padding:4px 10px 4px 4px;cursor:pointer;
    font:600 12.5px var(--font-ui);color:var(--ink);min-height:36px;
    transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease}
  .usermenu-btn:hover{background:var(--bg);border-color:var(--navy);
    box-shadow:0 6px 14px -10px rgba(11,42,74,.6)}
  .usermenu-btn:focus-visible{outline:2px solid var(--blue);outline-offset:1px}
  .usermenu-ava{width:28px;height:28px;border-radius:50%;flex:0 0 auto;display:inline-flex;
    align-items:center;justify-content:center;background:var(--brand-dark);color:#fff;
    font:700 11px var(--font-display);letter-spacing:.3px}
  .usermenu-ava.grande{width:40px;height:40px;font-size:14px}
  .usermenu-nome{max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .usermenu-btn .kchev{width:13px;height:13px;flex:0 0 auto;color:var(--muted);transition:transform .18s ease}
  .usermenu-btn[aria-expanded="true"] .kchev{transform:rotate(180deg)}
  .usermenu{position:absolute;top:calc(100% + 8px);right:0;width:268px;background:var(--card);
    border:1px solid var(--line);border-radius:12px;box-shadow:var(--sh-md);padding:6px;z-index:60}
  .usermenu-head{display:flex;align-items:center;gap:10px;padding:8px 8px 10px;
    border-bottom:1px solid var(--line);margin-bottom:6px}
  .usermenu-head-txt{display:flex;flex-direction:column;min-width:0;gap:2px}
  .usermenu-head-txt b{font:600 13px var(--font-display);color:var(--ink);
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .usermenu-head-txt small{font-size:11px;color:var(--muted);overflow:hidden;
    text-overflow:ellipsis;white-space:nowrap}
  .usermenu-head-txt select{margin-top:4px;max-width:100%}
  /* A FOTO (426). As iniciais continuam no elemento, debaixo da imagem:
     tirar a foto e so apagar o background, sem recarregar a tela. */
  .usermenu-ava.com-foto{background-size:cover;background-position:center;color:transparent}
  .usermenu-foto{position:relative;background:none;border:0;padding:0;cursor:pointer;
    border-radius:50%;flex:0 0 auto;line-height:0}
  .usermenu-foto:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
  .usermenu-foto-cam{position:absolute;inset:0;border-radius:50%;display:flex;align-items:center;
    justify-content:center;background:rgba(11,19,43,.55);color:#fff;opacity:0;transition:opacity .15s ease}
  .usermenu-foto-cam svg{width:16px;height:16px}
  .usermenu-foto:hover .usermenu-foto-cam,.usermenu-foto:focus-visible .usermenu-foto-cam{opacity:1}
  .usermenu-foto-acoes{display:flex;gap:10px;margin-top:5px}
  .usermenu-foto-link{background:none;border:0;padding:0;font:600 11px var(--font-ui);
    color:var(--blue);cursor:pointer;text-decoration:underline;text-underline-offset:2px}
  .usermenu-foto-link:hover{color:var(--navy)}
  .usermenu-foto-link.remover{color:var(--muted)}
  .usermenu-foto-link.remover:hover{color:var(--red)}
  @media (prefers-reduced-motion:reduce){ .usermenu-foto-cam{transition:none} }
  .usermenu-item{display:flex;align-items:center;gap:10px;width:100%;background:none;border:0;
    border-radius:8px;padding:8px 9px;font:500 13px var(--font-ui);color:var(--ink);
    cursor:pointer;text-align:left;transition:background-color .13s ease}
  .usermenu-item:hover{background:var(--bg)}
  .usermenu-item:focus-visible{outline:2px solid var(--blue);outline-offset:-2px}
  .usermenu-item svg{width:16px;height:16px;flex:0 0 auto;color:var(--muted)}
  .usermenu-item:hover svg{color:var(--navy)}
  .usermenu-item span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .usermenu-fio{height:1px;background:var(--line);margin:6px 4px}
  /* O item da tela ABERTA. O .btn-topo-ativo desenha um contorno azul que
     serve num botao solto do topo e fica estranho dentro de uma lista;
     aqui ele vira o mesmo trilho a esquerda que a linha da tabela usa. */
  .usermenu-item.btn-topo-ativo{outline:none;background:var(--bg);
    box-shadow:inset 3px 0 0 var(--blue);font-weight:600}
  /* Sair em vermelho, e so ele: e a unica acao do menu que a pessoa nao
     desfaz com outro clique. */
  #btn-sair-side{color:var(--red)}
  #btn-sair-side svg{color:var(--red)}
  #btn-sair-side:hover{background:#fdeeeb}
  @media (prefers-reduced-motion:reduce){ .usermenu-btn,.usermenu-btn .kchev,.usermenu-item{transition:none} }
  .sino-dropdown{position:absolute;top:calc(100% + 6px);right:0;width:320px;max-height:60vh;overflow-y:auto;background:var(--card);border:1px solid var(--line);border-radius:10px;box-shadow:var(--sh-md);padding:8px;z-index:30}
  .sino-dropdown .lemb-pop-item{background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:8px 10px;margin-bottom:6px;cursor:pointer;font-size:12px;color:var(--ink)}
  .sino-dropdown .lemb-pop-item:last-child{margin-bottom:0}
  .sino-dropdown .lemb-pop-item:hover{border-color:var(--blue)}
  /* Sino e popup do bom dia: a etiqueta do ASSUNTO (cor vem por style,
     uma por categoria) e a urgencia ao lado, em texto. Cor nunca sozinha:
     quem nao separa as cores le o nome do assunto do mesmo jeito. */
  .lemb-topo{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-bottom:3px}
  .lemb-assunto{font-size:10px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;border:1px solid currentColor;border-radius:999px;padding:1px 7px;line-height:1.6;white-space:nowrap}
  .lemb-nivel{font-size:10.5px;color:var(--muted)}
  .lemb-nivel.urg{color:var(--red);font-weight:700}
  /* A legenda do bom dia e FILTRO (13/09/2026): botao por assunto, com a
     contagem; o ligado fica escuro. 32px de altura para o dedo no celular. */
  .lemb-legenda{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px;padding-top:10px;border-top:1px solid var(--line)}
  .lemb-filtro{display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:4px 10px;border:1px solid var(--line);border-radius:999px;background:var(--card);color:var(--ink);font-size:12px;font-weight:600;line-height:1.2;cursor:pointer}
  .lemb-filtro i{width:9px;height:9px;border-radius:3px;flex:0 0 auto}
  .lemb-filtro b{font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums}
  .lemb-filtro:hover{border-color:var(--blue)}
  .lemb-filtro[aria-pressed="true"]{background:var(--navy);border-color:var(--navy);color:#fff}
  .lemb-filtro[aria-pressed="true"] b{color:#cfd8e6}
  .lemb-filtro:focus-visible{outline:2px solid var(--navy);outline-offset:2px}
  /* A dobra de "inativos" numa lista: linha discreta, que separa sem
     parecer mais um registro. Serve a Configurações/Hunters e ao Bônus. */
  .lst-dobra td{background:var(--bg);border-top:1px solid var(--line);padding:6px 10px}
  .lst-dobra .btn{padding:3px 10px;font-size:11.5px}
  /* Prévia da confirmação da entrevista, dentro do card da Agenda. */
  .ag-envio-cx{margin-top:10px;border:1px solid var(--blue);border-radius:10px;padding:10px 12px;background:var(--bg)}
  .ag-envio-tt{font-size:13px;font-weight:700;color:var(--ink);margin-bottom:2px}
  .ag-envio-msg{margin:0 0 9px;font-family:inherit;font-size:12.5px;line-height:1.55;white-space:pre-wrap;word-break:break-word;
    color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:8px;padding:9px 11px;max-height:240px;overflow:auto}
  .ag-envio-acoes{display:flex;gap:7px;flex-wrap:wrap}
  .ag-envio-acoes .btn{padding:6px 12px;font-size:12.5px}

  /* A tabela "quem recebe o quê" tem 7 colunas: abaixo de 760px elas se
     espremem e os valores encostam. O wrapper rola de lado nessa faixa;
     no celular o bloco abaixo troca a tabela por cartões e a rolagem
     lateral some de vez. */
  .bon-tbl{min-width:760px}
  .bon-tbl-wrap{overflow-x:auto}

  /* ---- Bônus no celular -------------------------------------------------
     Medido em 390px: eram 752px de rolagem antes de chegar em "quem recebe
     o quê", e a tabela abria 973px dentro da tela, obrigando a arrastar de
     lado para ler o total de cada pessoa. Duas correções, as duas por CSS
     (nada de decidir layout no JS: rodar o celular mudaria a largura e o
     desenho ficaria preso no que foi escolhido na carga).

     1. O herói e os cartões encolhem, sem perder nenhum número.
     2. A tabela vira um cartão por pessoa. O cabeçalho some e o rótulo de
        cada coluna volta pelo data-r da célula: sem isso, "R$ 0,00" três
        vezes seguidas não diz qual é parcela 1 e qual é captação. */
  @media(max-width:560px){
    .bon-hero{padding:14px 15px;gap:12px;border-radius:14px}
    .bon-hero .val{font-size:30px;margin:5px 0 5px}
    .bon-hero .sub{font-size:12px}
    .bon-hero .sp{display:none}
    .bon-hero .hero-acoes{width:100%;justify-content:flex-start;gap:6px}
    .bon-hero .hero-acao{padding:7px 11px;font-size:12px}
    /* O input nativo de mês não aceita largura pequena em alguns
       navegadores; min-width:0 destrava o encolhimento dentro do flex. */
    .bon-mes{flex:1 1 150px;min-width:0}
    .bon-mes input{flex:1;min-width:0;width:100%}

    /* Cartões de indicador: dois por linha, sem rolagem lateral. */
    #view-bonus .vgind-wrap{flex-wrap:wrap;overflow-x:visible;gap:8px}
    #view-bonus .vgind-box{flex:1 1 calc(50% - 4px);width:auto;min-width:0;padding:9px 10px;border-radius:9px}
    #view-bonus .vgind-big{font-size:19px!important}
    #view-bonus .vgind-ttl{font-size:9.5px;letter-spacing:.04em}
    #view-bonus .vgind-box .op3hint{font-size:10.5px;line-height:1.4}

    /* A tabela vira lista de cartões. */
    #view-bonus .bon-tbl-wrap{overflow:visible}
    #view-bonus .bon-tbl{min-width:0;width:100%;border:0;background:none}
    #view-bonus .bon-tbl thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
    #view-bonus .bon-tbl tbody tr{display:block;background:var(--card);border:1px solid var(--line);border-radius:11px;
      padding:10px 12px;margin-bottom:8px}
    #view-bonus .bon-tbl tbody tr.lst-dobra{padding:0;border:0;background:none;margin-bottom:8px}
    #view-bonus .bon-tbl tbody tr.lst-dobra td{display:block;background:none;border:0;padding:0}
    /* .op3tbl td tem white-space:nowrap, que serve a tabela larga e aqui
       impedia a quebra: a linha ficava do tamanho do texto mais comprido
       e a tabela abria 732px dentro de 390px. */
    #view-bonus .bon-tbl td{display:flex;justify-content:space-between;align-items:baseline;gap:10px;
      border:0;padding:3px 0;text-align:left!important;font-size:13px;
      white-space:normal;min-width:0}
    #view-bonus .bon-tbl td>*{min-width:0}
    #view-bonus .bon-tbl td[data-r]>*:not(:first-child),.bon-tbl td[data-r]{overflow-wrap:anywhere}
    /* A primeira célula é o nome: fica em cima, sozinha, como título. */
    #view-bonus .bon-tbl td:first-child{display:block;font-size:14.5px;padding:0 0 6px;border-bottom:1px solid var(--line);
      margin-bottom:6px;white-space:normal}
    #view-bonus .bon-tbl td[data-r]::before{content:attr(data-r);color:var(--muted);font-size:11px;font-weight:600;flex:0 0 auto}
    /* Producao tem duas ou tres linhas de texto: lado a lado com o rotulo
       ela quebra em coluna estreita e fica ilegivel. Aqui o rotulo sobe. */
    #view-bonus .bon-tbl td[data-r="Produção no mês"]{display:block}
    #view-bonus .bon-tbl td[data-r="Produção no mês"]::before{display:block;margin-bottom:2px}
    #view-bonus .bon-tbl td.bon-total{margin-top:5px;padding-top:6px;border-top:1px solid var(--line)}
    #view-bonus .bon-tbl td.bon-total::before{color:var(--ink);font-size:12px;font-weight:700}
    /* Sem dado não vira linha vazia com rótulo pendurado. */
    /* A seta e a celula vazia do colspan so fazem sentido na tabela
       larga: no cartao viram uma linha solta no rodape. */
    #view-bonus .bon-tbl td.bon-vazia,
    #view-bonus .bon-tbl td.bon-seta,
    #view-bonus .bon-tbl td:not([data-r]):empty{display:none}
    #view-bonus .bon-tbl td:empty{display:none}
  }

  /* ---- Roteiro do acompanhamento (472): a gaveta que conduz o telefonema.
     Fica no canto, como painel de CRM, porque a pessoa precisa da LISTA e
     do roteiro ao mesmo tempo: modal por cima esconderia a fila. No
     celular ela ocupa a tela toda, que e onde a ligacao acontece.
     z-index 19 e deliberado: FICA ABAIXO do .overlay (20). A gaveta e
     superficie de trabalho, nao alerta; se um modal abrir enquanto ela
     esta aberta, e o modal que tem de aparecer. E fica abaixo do menu
     lateral (60), que no celular precisa abrir por cima dela. */
  .rtr-gaveta{position:fixed;top:0;right:0;bottom:0;width:min(420px,100vw);z-index:19;display:flex;flex-direction:column;
    background:var(--card);border-left:1px solid var(--line);box-shadow:-14px 0 40px rgba(16,24,40,.14);
    animation:rotEntra .22s cubic-bezier(.22,.8,.3,1) both}
  @keyframes rotEntra{from{transform:translateX(26px);opacity:0}to{transform:none;opacity:1}}
  body.rtr-on{overflow-x:hidden}
  .rtr-topo{display:flex;gap:10px;align-items:flex-start;padding:13px 14px;background:var(--navy);color:#fff}
  .rtr-marco{font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;opacity:.82}
  .rtr-quem{font-size:16px;font-weight:700;line-height:1.25;margin-top:1px}
  .rtr-emp{font-size:11.5px;opacity:.85;margin-top:2px}
  .rtr-x{background:rgba(255,255,255,.14);color:#fff;border:0;border-radius:8px;width:28px;height:28px;font-size:14px;cursor:pointer;flex:0 0 auto}
  .rtr-x:hover{background:rgba(255,255,255,.26)}
  .rtr-corpo{flex:1;overflow-y:auto;padding:12px 14px;display:flex;flex-direction:column;gap:10px}
  .rtr-porque{font-size:12.5px;line-height:1.55;color:var(--muted);background:var(--bg);border:1px solid var(--line);border-radius:9px;padding:9px 11px}
  .rtr-trilha{display:flex;align-items:center;gap:6px;justify-content:center}
  .rtr-trilha i{flex:1;height:2px;background:var(--line);max-width:44px}
  .rtr-bola{width:28px;height:28px;border-radius:50%;border:1.5px solid var(--line);background:var(--card);color:var(--muted);
    font-weight:800;font-size:12px;cursor:pointer;flex:0 0 auto;transition:transform .14s,background .14s,color .14s}
  .rtr-bola:hover{transform:scale(1.08)}
  .rtr-bola.on{border-color:var(--blue);color:var(--blue)}
  .rtr-bola.ok{background:#1f9d55;border-color:#1f9d55;color:#fff}
  .rtr-progresso{display:flex;justify-content:space-between;gap:8px;font-size:11.5px;color:var(--muted)}
  .rtr-passo{border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--card)}
  .rtr-passo.aberto{border-color:var(--blue)}
  .rtr-cab{display:flex;align-items:center;gap:8px;width:100%;padding:9px 11px;background:none;border:0;cursor:pointer;
    font-size:13px;font-weight:600;color:var(--ink);font-family:inherit}
  .rtr-cab:hover{background:var(--bg)}
  .rtr-cab.ok{color:#1f7a47}
  .rtr-ico{font-size:15px;flex:0 0 auto}
  .rtr-selo{font-size:9.5px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:#1f9d55;border:1px solid #1f9d55;border-radius:999px;padding:1px 6px}
  .rtr-seta{color:var(--muted);font-size:11px}
  .rtr-dentro{padding:0 11px 11px;display:flex;flex-direction:column;gap:9px;
    animation:rotAbre .2s ease both}
  @keyframes rotAbre{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
  .rtr-alvo{display:flex;flex-direction:column;gap:1px;font-size:13px}
  .rtr-alvo small{color:var(--muted);font-size:11px}
  .rtr-acoes{display:flex;gap:6px;flex-wrap:wrap}
  .rtr-acoes .btn{padding:6px 11px;font-size:12px;text-decoration:none;display:inline-flex;align-items:center}
  .rtr-bloco{border-left:3px solid var(--line);padding-left:9px}
  .rtr-bloco.alerta{border-left-color:#E8950C}
  .rtr-rot{font-size:9.5px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-bottom:3px}
  .rtr-bloco p{margin:0;font-size:13px;line-height:1.6;color:var(--ink)}
  .rtr-bloco ol{margin:0;padding-left:18px;font-size:13px;line-height:1.65;color:var(--ink)}
  .rtr-bloco ol li{margin-bottom:4px}
  .rtr-aviso{font-size:12px;line-height:1.5;color:#8a5a00;background:#fff6e6;border:1px solid #f3d9a4;border-radius:8px;padding:7px 9px}
  .rtr-txt{width:100%;font-family:inherit;font-size:13px;line-height:1.5;padding:7px 9px;border:1px solid var(--line);border-radius:8px;resize:vertical;background:var(--card);color:var(--ink)}
  .rtr-txt:focus{outline:none;border-color:var(--blue)}
  .rtr-previa{margin:0;font-family:inherit;font-size:12px;line-height:1.55;white-space:pre-wrap;word-break:break-word;color:var(--muted);background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:7px 9px}
  .rtr-pe{display:flex;gap:7px;padding:10px 14px;border-top:1px solid var(--line);background:var(--bg)}
  .rtr-pe .btn{padding:8px 12px;font-size:13px}
  @media(max-width:820px){ .rtr-gaveta{width:100vw;border-left:0} }
  @media(prefers-reduced-motion:reduce){ .rtr-gaveta,.rtr-dentro{animation:none} .rtr-bola{transition:none} }

  /* Widget do topo: saudação + relógio/data/clima, visível em toda tela */
  /* Relógio/data/clima na topbar — herdeiros da segunda linha eliminada. */
  /* O par C-Whats + sino mora num span (o balao do sino pendura nele).
     Como span inline, os dois botoes QUEBRAVAM em duas linhas quando a
     engrenagem chegou ao topo e o espaco apertou; em inline-flex eles
     ficam lado a lado e quem encolhe e o titulo, que tem reticencias. */
  .topbar-acoes{display:inline-flex;align-items:center;gap:6px;flex:0 0 auto;position:relative}
  @media(max-width:760px){ .topbar-acoes{gap:2px} }
  #btn-topo-mais{display:none;position:relative}
  .gv-curto{display:none}
  .topo-mais-menu{position:absolute;top:calc(100% + 6px);right:0;width:240px;background:var(--card);border:1px solid var(--line);
    border-radius:12px;box-shadow:var(--sh-md);padding:6px;z-index:30;display:flex;flex-direction:column;gap:2px}
  .topo-mais-menu.hidden{display:none}
  .topo-mais-menu button{display:flex;align-items:center;gap:10px;width:100%;min-height:48px;padding:0 12px;border:0;border-radius:8px;
    background:transparent;color:var(--ink);font:inherit;font-size:15px;text-align:left;cursor:pointer}
  .topo-mais-menu button:hover,.topo-mais-menu button:focus-visible{background:var(--bg);outline:none}
  .topo-mais-menu .tm-num{margin-left:auto;background:var(--red);color:#fff;border-radius:10px;padding:1px 8px;font-size:12px}
  /* min-width:0 e overflow: a REDE DE SEGURANCA. Sem eles, um item
     `nowrap` nunca encolhe abaixo do proprio conteudo e a barra
     inteira empurra a pagina para a direita (medido em 10/09/2026:
     1436px de rolagem num viewport de 1280). Com eles, o pior caso
     e o texto cortar, e nao a tela sair do lugar. */
  .topbar-info{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--muted);white-space:nowrap;
    min-width:0;overflow:hidden;flex-shrink:1}
  .topbar-info .topo-sep{opacity:.5}
  .topbar-info #topo-relogio{font-family:var(--font-mono);font-weight:700;color:var(--ink)}
  /* No celular sobra só o relógio: data por extenso + clima não cabem. */
  /* 1400 e nao 900: a conta e do HEADER, nao do viewport. Com o menu
     lateral aberto (235px), um viewport de 1280 deixa 1045 para a
     barra, e a data por extenso mais o clima pedem 618 so para elas.
     So aparecem quando ha espaco de verdade. */
  @media(max-width:1400px){ .topbar-info .topbar-info-extra{display:none} }
  /* Nome comprido na conta tambem nao pode empurrar a barra. */
  .usermenu-nome{max-width:170px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

  /* Reportar flutuante (padrão PoliNexus). z-index 15 de propósito: ABAIXO
     do .overlay (20) pra nunca pairar sobre um modal aberto. */
  .fab-reportar{position:fixed;right:18px;bottom:18px;z-index:15;display:flex;align-items:center;gap:7px;background:var(--side-bg);color:#fff;border:0;border-radius:24px;padding:12px 20px;font-size:13px;font-weight:600;box-shadow:var(--sh-md);cursor:pointer}
  .fab-reportar:hover{background:var(--side-hover);box-shadow:var(--sh-lg)}
  @media(max-width:760px){ .fab-reportar{padding:10px 14px;right:12px;bottom:12px} }

  /* =====================================================================
     A ALTURA DO C·WHATS, EM QUALQUER LARGURA

     Estas quatro regras viviam dentro do bloco do celular. No computador
     valia um `height:calc(100vh - 118px)` escrito no proprio elemento —
     e o 118 era a barra do topo MEDIDA A OLHO. A barra tem 57px, entao
     sobravam 61px de faixa morta embaixo do quadro. Ninguem via, porque
     era exatamente ali que o botao Reportar flutuava.

     Ficou visivel quando a conexao do C·Whats virou um rodape dentro do
     iframe: passaram a existir DUAS faixas, o rodape e a sobra, e o
     Reportar numa e o "Conectado" na outra. O pedido de por os dois na
     mesma linha e, na verdade, o pedido de acabar com a sobra.

     Sem conta de altura: com a aba ativa o body trava em 100dvh e o
     quadro estica por flex (o .main-col ja e coluna flex). As outras
     abas nao mudam — a classe so existe enquanto o C·Whats esta aberto.

     A corrente inteira precisa de altura: body -> #app -> .main-col. Sem
     o #app fixado, o height:100% do filho cai no vazio e o view colapsa
     pro tamanho do conteudo (aconteceu: 154px).
     ===================================================================== */
  /* ---------------------------------------------------------------------
     TELA DE QUADRO (07/09/2026)

     Kanban e funil do CRM ocupam a janela inteira. A barra de rolagem
     horizontal do quadro passa a ficar no PE DA TELA, a vista, em vez de
     no pe de um quadro mais alto que a janela — que obrigava a rolar a
     pagina pra baixo (e perder o topo) antes de poder andar pras colunas
     da direita.

     Flex, e nao aritmetica: o `min-height:calc(100vh - 120px)` do #board
     era um chute sobre a altura do topo mais a barra de ferramentas, e
     essa altura mudou tres vezes so nesta semana. Aqui o quadro estica
     pelo que sobrar, seja quanto for.

     So no modo QUADRO. Em Lista a pagina volta a rolar normalmente,
     porque lista comprida e pra rolar mesmo.
     --------------------------------------------------------------------- */
  body.aba-quadro{height:100dvh;overflow:hidden}
  body.aba-quadro #app{height:100dvh}
  body.aba-quadro .main-col{height:100%;min-height:0}
  body.aba-quadro #view-kanban,body.aba-quadro #view-capta{
    flex:1 1 auto;min-height:0;display:flex;flex-direction:column}
  /* O que NAO e o quadro (barra de ferramentas, heroi, sub-abas) fica no
     tamanho natural; so o quadro estica. */
  body.aba-quadro #view-kanban>*:not(#board),
  body.aba-quadro #view-capta>*:not(.crm-area){flex:0 0 auto}
  /* No CRM o quadro vem dentro de um bloco (titulo do funil + quadro):
     quem estica e o bloco, e o quadro estica dentro dele. */
  body.aba-quadro #view-capta>.crm-area{flex:1 1 auto;min-height:0;display:flex;flex-direction:column}
  body.aba-quadro .crm-area>*:not(.crm-board){flex:0 0 auto}
  body.aba-quadro #board,body.aba-quadro .crm-board{
    flex:1 1 auto;min-height:0;height:auto;overflow-y:hidden}
  /* Vence o min-height de 100vh-120px, que e o que empurrava a barra pra
     fora da janela. */
  body.aba-quadro #board{min-height:0}
  body.aba-quadro .col,body.aba-quadro .crm-col{max-height:100%}

  body.aba-cwhats{height:100dvh;overflow:hidden}
  body.aba-cwhats #app{height:100dvh}
  body.aba-cwhats .main-col{height:100%;min-height:0}
  body.aba-cwhats #view-cwhats{flex:1 1 auto;height:auto !important;min-height:0 !important}

  /* Caixa de saudação do dia — uma vez por dia, some sozinha em 12s. */
  .sauda-card{position:fixed;top:64px;right:18px;z-index:15;max-width:340px;background:var(--card);border:1px solid var(--line);border-left:3px solid var(--navy);border-radius:12px;padding:14px 36px 14px 16px;box-shadow:var(--sh-lg)}
  .sauda-card .sauda-titulo{font-weight:700;color:var(--ink);font-size:13.5px}
  .sauda-card .sauda-frase{font-size:12px;font-style:italic;color:var(--muted);margin-top:4px;line-height:1.5}
  .sauda-card .sauda-fechar{position:absolute;top:8px;right:8px;width:22px;height:22px;border:0;border-radius:50%;background:transparent;color:var(--muted);font-size:12px;line-height:1}
  .sauda-card .sauda-fechar:hover{background:var(--bg);color:var(--ink)}
  @media(max-width:760px){ .sauda-card{left:12px;right:12px;max-width:none} }

  /* Board */
  #board{display:flex;gap:14px;padding:16px;overflow-x:auto;overflow-y:hidden;align-items:flex-start;min-height:calc(100vh - 120px);scroll-padding-left:16px}
  #board::-webkit-scrollbar{height:10px}
  #board::-webkit-scrollbar-thumb{background:#c3d2e0;border-radius:6px}
  #board::-webkit-scrollbar-track{background:transparent}
  /* Fundo da coluna: cor própria (não var(--side-bg)) — essa variável virou
     "sempre escura" pro menu lateral (ver comentário em :root), e o Kanban
     não deve herdar isso; o tema escuro já tem seu próprio override abaixo. */
  .col{background:#F4F5F7;border:1px solid var(--line);border-radius:var(--r-lg);flex:1 1 320px;min-width:290px;max-width:380px;display:flex;flex-direction:column;max-height:calc(100vh - 150px);transition:max-width var(--ease),min-width var(--ease)}
  .col h3{margin:0;padding:11px 12px;font-size:13px;color:var(--navy);display:flex;justify-content:space-between;align-items:center;gap:8px;border-bottom:1px solid var(--line)}
  .col h3 .htxt{display:flex;flex-direction:column;gap:1px;min-width:0}
  .col h3 .kicker{font-size:9.5px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--muted);opacity:.85}
  .col h3 .lbl{display:inline-flex;align-items:center;font-family:var(--font-display);font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .col h3 .right{display:flex;align-items:center;gap:6px;flex:0 0 auto}
  .col h3 .n{background:var(--navy);color:#fff;border-radius:10px;padding:2px 9px;font-size:11px;font-weight:700}
  .col .collapse-btn{background:transparent;border:1px solid var(--line);color:var(--muted);width:22px;height:22px;border-radius:6px;font-size:11px;line-height:1;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}
  .col .collapse-btn:hover{background:#fff;color:var(--navy)}
  .col .drop{padding:8px;overflow-y:auto;flex:1;min-height:40px}
  .col.dragover .drop{background:#d3e2f2;outline:2px dashed var(--blue)}
  .col.collapsed{min-width:168px;max-width:168px}
  .col.collapsed .drop,.col.collapsed .addcard{display:none}
  .col.collapsed h3 .lbl{max-width:90px}
  .card{position:relative;background:var(--card);border:1px solid var(--line);border-left:4px solid var(--blue);border-radius:var(--r-md);padding:10px 12px 20px;margin-bottom:8px;cursor:grab;box-shadow:var(--sh-sm);transition:box-shadow .15s,transform .15s}
  .card-idvaga{position:absolute;right:10px;bottom:6px;font-family:var(--font-mono);font-size:10px;color:var(--muted);font-weight:600}
  .card:active{cursor:grabbing}
  .card:hover{box-shadow:var(--sh-md);transform:translateY(-1px)}
  .card:focus-visible{outline:2px solid var(--blue-l);outline-offset:2px}
  .card-head{display:flex;flex-wrap:nowrap;align-items:flex-start;justify-content:space-between;gap:8px;margin-bottom:6px}
  .card-sel-mode{cursor:pointer}
  .card-selected{border-color:var(--blue);box-shadow:0 0 0 2px var(--blue-l)}
  .card-chk{font-size:15px;line-height:1;flex:0 0 auto;color:var(--blue)}
  .card-rev-chk{font-size:15px;line-height:1;flex:0 0 auto;color:var(--muted);cursor:pointer;padding:1px}
  .card-rev-chk.on{color:var(--ok)}
  .card.card-revisado{opacity:.72}
  #btn-kanban-sel.on{background:var(--blue);color:#fff}
  /* z-index 18: acima do conteudo e do .fab-reportar (15), porem ABAIXO
     do .overlay (20). Estava em 60 e flutuava por cima de modal aberto —
     e como ela mora no rodape, no celular caia justo nos botoes do .foot,
     o mesmo jeito que o .toast quebrou o Cancelar em 16/08/2026. */
  .kanban-sel-bar{position:fixed;left:50%;bottom:18px;transform:translateX(-50%);z-index:18;background:var(--navy);color:#fff;border-radius:12px;padding:10px 14px;display:flex;align-items:center;gap:8px;box-shadow:0 6px 20px rgba(0,0,0,.25);flex-wrap:wrap;max-width:92vw}
  .kanban-sel-bar select{padding:6px 8px;border-radius:6px;border:1px solid var(--line);font-size:12px}
  .sem-dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:5px;vertical-align:middle;flex:0 0 auto}
  .sem-dot.sem-vencida,.sem-dot.sem-urgente{background:var(--red)}
  .sem-dot.sem-alerta{background:var(--warn)}
  .sem-dot.sem-inicio{background:var(--ok)}
  .card .t{font-family:var(--font-display);font-weight:700;font-size:13.5px;color:var(--navy);line-height:1.3;flex:1 1 auto;min-width:0;overflow-wrap:break-word}
  .card-head .tag.periodo{flex:0 0 auto;margin-top:1px}
  .card .sub{font-size:12px;color:var(--muted);margin-bottom:2px}
  .card .tags{display:flex;flex-wrap:wrap;gap:5px;align-items:center}
  .card .tags-meta{margin-top:4px;display:flex;flex-wrap:wrap;gap:8px;align-items:center}
  .card-cand{margin-top:4px;font-size:11px;color:#1e7a46;background:#e9f6ee;border:1px solid #c9e9d5;border-radius:10px;padding:3px 8px;line-height:1.4;overflow-wrap:break-word}
  .card-match{margin-top:4px;font-size:11px;font-weight:700;color:var(--navy);background:#eaf1f8;border:1px solid #d5e3f2;border-radius:10px;padding:3px 8px;line-height:1.4;overflow-wrap:break-word}
  .tag{font-size:10.5px;padding:2px 8px;border-radius:20px;background:#eaf1f8;color:var(--navy);border:1px solid #d5e3f2;font-weight:600;line-height:1.5}
  .tag.id{font-family:var(--font-mono);background:transparent;color:var(--muted);border-color:var(--line);font-weight:600}
  .tag.nivel{background:#e9f6ee;color:#1e7a46;border-color:#c9e9d5}
  .tag.hunter{background:#fdf1e3;color:#9a6412;border-color:#f2ddba}
  /* Cores por valor — Origem e Comercial responsável (pedido do usuário) */
  .tag.origem-reativado{background:#4a2172;color:#fff;border-color:#4a2172}
  .tag.origem-clientenovo{background:#e3f7ea;color:#1e7a46;border-color:#c9e9d5}
  .tag.fonte-carteira{background:#e3f7ea;color:#1e7a46;border-color:#c9e9d5}
  .tag.fonte-docsrp{background:#f1e6fb;color:#7c3fae;border-color:#e3cdf5}
  .tag.fonte-gestor{background:#E8950C;color:#fff;border-color:#E8950C}
  .tag.hunter-1,.meta-lo.hunter-1{background:#ffd9e8;color:#9a1f52;border-color:#f7bcd6}
  .tag.hunter-2,.meta-lo.hunter-2{background:#fff2b8;color:#8a6d00;border-color:#f2e08a}
  .tag.hunter-3,.meta-lo.hunter-3{background:#1c3f66;color:#fff;border-color:#1c3f66}
  .meta-lo.hunter-1,.meta-lo.hunter-2,.meta-lo.hunter-3{padding:2px 7px;border-radius:6px;border:1px solid transparent;font-weight:600}
  .meta-lo{font-size:11px;color:var(--muted);display:inline-flex;align-items:center;gap:4px}
  .meta-lo.warn{color:#a85b1a;font-weight:700}
  /* CARD COM PONTA SOLTA — fundo laranja pra pular aos olhos. Vale pro que
     não tem hunter responsável e pro que não teve as boas-vindas com a
     empresa: são a mesma pendência, do mesmo dono e no mesmo momento do
     funil, e mereciam a mesma cor (07/09/2026). O aviso escrito dentro do
     card continua ali — a cor nunca carrega o recado sozinha, e quem não
     distingue laranja de branco lê o "⚠ Falta boas-vindas" do mesmo jeito.
     A borda esquerda mais forte e o fundo mais quente que o do card normal
     são o que faz o cartão ser achado de longe, rolando a coluna. */
  .card.need-hunter,.card.card-falta{background:#fff2e2;border-left-color:#e8950c}
  /* Na visao Lista nao precisa de regra propria: .card.klist-row ja usa
     border-left de 3px, e a cor acima pinta ela de ambar do mesmo jeito.
     Conferido no navegador: a linha com pendencia sai com a borda em
     rgb(232,149,12) e a linha completa em azul. */
  .addcard{width:100%;background:transparent;border:1px dashed var(--blue);color:var(--blue);border-radius:var(--r-md);padding:8px;font-weight:600;font-size:12px}
  .addcard:hover{background:rgba(46,123,196,.08)}
  .board-skel{color:var(--muted);font-size:13px;padding:24px;width:100%;text-align:center}

  /* Modal */
  .overlay{position:fixed;inset:0;background:rgba(11,42,74,.45);display:flex;align-items:center;justify-content:center;padding:16px;z-index:20}
  .modal{background:#fff;border-radius:14px;width:640px;max-width:100%;max-height:92vh;display:flex;flex-direction:column}
  .modal header{background:var(--card);color:var(--ink);border-bottom:1px solid var(--line);border-radius:14px 14px 0 0}
  .modal .body{padding:16px;overflow-y:auto}
  .grp{border:1px solid var(--line);border-radius:10px;padding:12px;margin-bottom:12px}
  .grp h4{margin:0 0 10px;font-size:12px;text-transform:uppercase;letter-spacing:.5px;color:var(--blue)}
  /* 12 colunas: cada campo pede a largura do dado que guarda (--sp,
     padrao 6 = metade). O JS fecha as linhas, entao nao sobra buraco. */
  .fields{display:grid;grid-template-columns:repeat(12,1fr);gap:10px 12px}
  .f{display:flex;flex-direction:column;grid-column:span var(--sp,6)}
  .cursos-pret-linha{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
  .disp-strip{display:flex;flex-wrap:wrap;gap:6px}
  .disp-dia{display:flex;flex-direction:column;align-items:center;justify-content:center;width:56px;height:52px;border-radius:8px;border:1px solid var(--line);cursor:pointer;font-size:11px;gap:1px;background:#fff}
  .disp-dia .disp-dow{font-size:9px;color:var(--muted);text-transform:uppercase;font-weight:600}
  .disp-dia .disp-num{font-weight:700;color:var(--navy);font-size:12px}
  .disp-dia .disp-cnt{font-size:9px;color:var(--muted)}
  .disp-dia.disp-ok{border-color:var(--ok);background:#e9f6ee}
  .disp-dia.disp-parcial{border-color:var(--warn);background:#fdf3d9}
  .disp-dia.disp-full{border-color:var(--red);background:#fdeeeb}
  .disp-dia.disp-off{border-color:var(--line);background:#f2f4f7;color:var(--muted);cursor:default;opacity:.55}
  .disp-dia.disp-off .disp-num,.disp-dia.disp-off .disp-dow{color:var(--muted)}
  .f.full{grid-column:span 12}
  /* COMPARTILHAR VAGA, agrupado por destinatario (06/09/2026). Cada grupo
     tem um rotulo curto e os botoes numa faixa que quebra por conta
     propria. Antes eram seis controles numa linha so, com o seletor de
     sigilo espremido a "Sigi" e um vazio a direita. */
  /* Meu RH (MOD-19), Fase 2: a faixa de vencimentos e os selos que faltavam. */
  .st-pend{display:inline-block;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:700;background:#FEF0C7;color:#B54708}
  .st-info{display:inline-block;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:700;background:#EAECF0;color:#475467}
  .rh-alertas{display:flex;flex-direction:column;gap:6px}
  .rh-alerta{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:var(--card);cursor:pointer;font:inherit;color:var(--ink)}
  .rh-alerta:hover{border-color:var(--navy)}
  .rh-alerta-nivel{flex-shrink:0;min-width:74px;text-align:center}
  .rh-alerta-txt{font-size:12.5px;line-height:1.35;min-width:0}
  /* Meu RH (MOD-19), Fase 1: a lista de recursos com interruptor. */
  .rh-recs{display:flex;flex-direction:column;gap:8px}
  .rh-rec{display:flex;align-items:center;gap:12px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--card)}
  .rh-rec-off{opacity:.7}
  .rh-rec-nome{font-weight:700;font-size:13.5px;color:var(--ink)}
  .rh-tag{display:inline-block;font-size:10.5px;font-weight:700;letter-spacing:.02em;text-transform:uppercase;color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:2px 8px}
  .rh-sw{position:relative;display:inline-block;width:42px;height:24px;flex-shrink:0}
  .rh-sw input{opacity:0;width:0;height:0}
  .rh-sw span{position:absolute;inset:0;border-radius:999px;background:var(--line);transition:background .15s ease;cursor:pointer}
  .rh-sw span::after{content:'';position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.25);transition:transform .15s ease}
  .rh-sw input:checked + span{background:var(--navy)}
  .rh-sw input:checked + span::after{transform:translateX(18px)}
  .rh-sw input:disabled + span{cursor:not-allowed;opacity:.5}
  .rh-sw input:focus-visible + span{outline:2px solid var(--navy);outline-offset:2px}

  /* O botao que abre a divulgacao. Roxo #6B4FC4, o mesmo da Vega: e a
     cor que a casa ja usa para "isto faz alguma coisa acontecer", e
     distingue esta acao dos campos de cadastro em volta. */
  #cv-bloco{margin-bottom:12px}
  .cv-abre{display:flex;align-items:center;gap:10px;width:100%;padding:11px 14px;border-radius:10px;
    border:1px solid #6B4FC4;background:#6B4FC4;color:#fff;cursor:pointer;font:inherit;font-weight:700;font-size:13px;
    transition:background .15s ease}
  .cv-abre:hover{background:#5B41AD;border-color:#5B41AD}
  .cv-abre.on{border-bottom-left-radius:0;border-bottom-right-radius:0}
  .cv-abre-ico{font-size:15px;line-height:1}
  .cv-abre-txt{flex:1;text-align:left}
  .cv-abre-seta{font-size:11px;opacity:.9}
  .cv-painel{border:1px solid #6B4FC4;border-top:0;border-radius:0 0 10px 10px;padding:0 12px 12px}
  /* Divulgar e compartilhar em sanfona (10/09/2026): uma linha por
     caminho, com a frase do que ele faz. */
  /* Candidatura esperando: selo no card e faixa no topo do quadro. */
  .card-pend{margin-top:6px;font-size:11px;font-weight:700;color:#8a5a06;background:rgba(229,164,0,.16);border-radius:8px;padding:3px 8px;display:inline-block}
  .kanban-aviso{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:0 0 12px;padding:10px 14px;border:1px solid var(--warn);background:rgba(229,164,0,.09);border-radius:10px}
  .kanban-aviso .ka-ico{font-size:18px}
  .kanban-aviso .ka-txt{flex:1;min-width:180px;display:grid;gap:1px}
  .kanban-aviso .ka-txt b{font-size:13px;color:var(--ink)}
  .kanban-aviso .ka-txt small{font-size:11.5px;color:var(--muted)}
  /* NOVO 8: a faixa dos alertas do funil. Mesma caixa, cor de atencao (nao
     de aviso), e os botoes por tipo quebram linha no celular. */
  .kanban-aviso-oper{border-color:#c0392b;background:rgba(192,57,43,.06)}
  .kanban-aviso .ka-chips{display:flex;flex-wrap:wrap;gap:6px;flex:1 1 100%}
  .kanban-aviso .ka-chip{padding:5px 10px;font-size:12px;white-space:nowrap}
  .kanban-aviso .ka-chip b{font-size:13px}
  /* Recolhida por hoje: uma linha fina com o alerta, e o quadro sobe
     (13/09/2026). A linha inteira e o botao de abrir. */
  .kanban-aviso.ka-fina{width:100%;padding:5px 12px;gap:8px;flex-wrap:nowrap;font:inherit;text-align:left;cursor:pointer;color:var(--ink);min-height:32px}
  .kanban-aviso.ka-fina .ka-ico{font-size:14px}
  .ka-fina-txt{flex:1;min-width:0;font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .ka-fina-txt b{font-weight:700}
  .ka-fina-abrir{font-size:11.5px;font-weight:600;color:var(--muted);white-space:nowrap}
  .ka-recolher{border:0;background:transparent;cursor:pointer;padding:6px 4px;min-height:32px;font:inherit;font-size:11.5px;font-weight:600;color:var(--muted);white-space:nowrap}
  .ka-recolher:hover,.kanban-aviso.ka-fina:hover .ka-fina-abrir{color:var(--ink)}
  .ka-recolher:focus-visible,.kanban-aviso.ka-fina:focus-visible{outline:2px solid var(--navy);outline-offset:2px}
  /* A faixa do hunter e a nota da agencia na aba Rede (13/09/2026). Cartao
     claro abaixo do heroi; o que pesa contra fica em vermelho. */
  .rbf,.cna{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin:0 0 12px;display:grid;gap:10px}
  .rbf-topo{display:flex;flex-wrap:wrap;gap:8px 18px;align-items:flex-end;justify-content:space-between}
  .rbf-rot,.cna-titulo{font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
  .rbf-atual{display:grid;gap:1px}
  .rbf-atual b{font:700 20px var(--font-display);color:var(--ink)}
  .rbf-lim{font-size:13px;color:var(--ink);display:flex;flex-wrap:wrap;gap:2px 6px;align-items:baseline}
  .rbf-lim small{flex:1 1 100%;color:var(--muted);font-size:11.5px}
  .rbf-alerta{background:rgba(192,57,43,.07);border:1px solid rgba(192,57,43,.35);border-radius:9px;padding:8px 10px;font-size:12.5px;color:var(--ink)}
  .rbf-bloco{font-size:13px;color:var(--ink)}
  .rbf-bloco small{color:var(--muted);font-size:11.5px}
  .rbf-bloco ul{margin:6px 0 4px;padding-left:18px}
  .rbf-bloco li{margin:3px 0}
  .rbf-bloco p{margin:6px 0 0;color:var(--muted);font-size:12.5px}
  .rbf-bloco ul.rbf-eventos{list-style:none;padding-left:0;display:grid;gap:4px}
  .rbf-eventos li{display:flex;justify-content:space-between;gap:10px;padding:5px 8px;border-radius:8px;background:var(--bg);margin:0}
  .rbf-eventos li b{font-variant-numeric:tabular-nums}
  .rbf-eventos li.tem{background:rgba(192,57,43,.08);color:#8f2a1f}
  .rb-nota-ag{font-size:12px;color:var(--muted);margin:4px 0 2px}
  .rb-nota-ag b{color:var(--ink)}
  .rb-nota-ag.baixa b{color:#b03024}
  .cna-linha{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
  .cna-num{display:flex;align-items:baseline;gap:4px}
  .cna-num b{font:700 32px var(--font-display);color:var(--ink);font-variant-numeric:tabular-nums}
  .cna-num span{font-size:12px;color:var(--muted)}
  .cna-txt{display:grid;gap:2px;flex:1;min-width:180px}
  .cna-rot{font:700 16px var(--font-display);color:var(--ink)}
  .cna-txt small{font-size:12px;color:var(--muted)}
  .cna-metricas{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px}
  .cna-metricas div{background:var(--bg);border-radius:9px;padding:7px 9px;display:grid;gap:1px;min-width:0}
  .cna-metricas small{font-size:11px;color:var(--muted)}
  .cna-metricas b{font-size:14px;color:var(--ink);font-variant-numeric:tabular-nums}
  .cna-eventos{font-size:13px;color:var(--ink)}
  .cna-eventos ul{margin:6px 0;padding-left:0;list-style:none;display:grid;gap:4px}
  .cna-eventos li{display:flex;gap:8px;font-size:12.5px}
  .cna-eventos li span{color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}
  .cna-eventos p{margin:6px 0;color:var(--muted);font-size:12.5px}
  .cna-acoes{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-top:4px}
  .ka-lista{display:grid;gap:6px;max-height:min(60vh,520px);overflow:auto}
  .ka-linha{display:grid;gap:2px;text-align:left;width:100%;padding:9px 12px;border:1px solid var(--line);border-radius:10px;background:var(--card);cursor:pointer;font:inherit;color:var(--ink)}
  .ka-linha:hover{border-color:var(--navy)}
  .ka-linha b{font-size:13px}
  .ka-linha small{font-size:11.5px;color:var(--muted)}
  .cv-item{border:1px solid var(--line);border-radius:10px;margin-bottom:8px;background:var(--card);overflow:hidden}
  .cv-item.on{border-color:var(--brand)}
  .cv-cab{display:flex;align-items:flex-start;gap:10px;width:100%;padding:10px 12px;background:none;border:0;cursor:pointer;text-align:left;font:inherit;color:inherit}
  .cv-cab:hover{background:color-mix(in srgb,var(--brand) 5%,transparent)}
  .cv-ico{flex:0 0 auto;font-size:16px;line-height:1.2}
  .cv-txt{flex:1;min-width:0;display:grid;gap:2px}
  .cv-txt b{font-size:13px;color:var(--ink)}
  .cv-txt small{font-size:11.5px;color:var(--muted);line-height:1.45}
  .cv-seta{flex:0 0 auto;color:var(--muted);font-size:12px;margin-top:2px}
  .cv-corpo{padding:0 12px 12px;border-top:1px solid var(--line)}
  .cv-corpo>*:first-child{margin-top:10px}
  .cv-grupo{margin-top:12px}
  .cv-rot{font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:700;margin-bottom:6px}
  .cv-acoes{display:flex;flex-wrap:wrap;gap:8px;align-items:stretch}
  .cv-acoes .btn{flex:0 1 auto}
  /* O sigilo e MODIFICADOR do botao de copiar texto, e nao um irmao dele:
     fica na linha de baixo, em texto corrido, com o seletor no meio da
     frase. */
  .cv-sigilo-linha{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-top:8px;font-size:12px;color:var(--muted)}
  /* min-width folgado: no celular a regra de acessibilidade sobe todo
     select para 16px (o Safari da zoom abaixo disso e nao volta), e o
     que cabia em 104px passa a cortar a ultima letra. */
  .cv-sigilo-linha select{width:auto;min-width:150px;padding:4px 8px;font-size:12px}
  /* O `padding:` acima come o espaco da seta do select, que a folha
     reserva com padding-right. Devolver DEPOIS, e nao no atalho, e o
     que o verificar-seta-select.js cobra: no atalho, qualquer ajuste
     futuro no lado esquerdo apagaria a seta de novo sem aviso. */
  .cv-sigilo-linha select{padding-right:28px}
  @media(max-width:760px){
    /* No celular cada acao ocupa a linha inteira: botao de meia linha ao
       lado de outro deixa os dois com o texto cortado. */
    .cv-acoes .btn{flex:1 1 100%}
  }
  .f label{font-size:11px;color:var(--muted);margin-bottom:3px}
  .f input,.f select,.f textarea{padding:8px;border:1px solid var(--line);border-radius:7px;width:100%}
  .f.campo-faltando label{color:var(--red);font-weight:700}
  .f.campo-faltando input,.f.campo-faltando select,.f.campo-faltando textarea{background-color:#fdeceb;border-color:var(--red)}
  .modal .foot{padding:12px 16px;border-top:1px solid var(--line);display:flex;gap:8px;justify-content:flex-end}


  /* ===== MOD-20: painel de regras do bonus (prefixo bnr-) =====
     Duas colunas: a navegacao com as secoes que AQUELA PESSOA ve (quem
     nao e hunter nao ve a regra do hunter) e o conteudo, que entra
     escalonado. No celular a navegacao vira uma faixa rolavel no topo.
     O escalonamento nao e enfeite: ele guia o olho na ordem em que a
     regra deve ser lida, que e a ordem em que ela se aplica. */
  /* O icone de atualizar girando enquanto a tela carrega. */
  #btn-atualizar.girando .topbar-ico{animation:atzGira .7s linear infinite}
  @keyframes atzGira{to{transform:rotate(360deg)}}
  @media(prefers-reduced-motion:reduce){
    #btn-atualizar.girando .topbar-ico{animation:none;opacity:.5}
  }
  .bnr-modal{width:min(900px,96vw)}
  .bnr-modal .body{padding:0;display:flex;max-height:min(70vh,600px);overflow:hidden}
  .bnr-nav{flex:0 0 196px;border-right:1px solid var(--line);padding:14px 10px;display:flex;flex-direction:column;gap:4px;
    background:linear-gradient(180deg,color-mix(in srgb,var(--navy) 7%,transparent),transparent 60%)}
  .bnr-tab{display:flex;align-items:flex-start;gap:10px;width:100%;text-align:left;background:transparent;
    border:1px solid transparent;border-radius:10px;padding:10px 11px;font:inherit;font-size:13px;font-weight:600;
    color:var(--muted);cursor:pointer;transition:background .18s ease,color .18s ease,border-color .18s ease,transform .12s ease}
  .bnr-tab:hover{background:var(--card);color:var(--ink)}
  .bnr-tab:active{transform:scale(.985)}
  .bnr-tab.on{background:var(--card);border-color:var(--line);color:var(--navy);box-shadow:0 1px 3px rgba(11,19,43,.09)}
  .bnr-tab .bnr-ico{font-size:16px;line-height:1.2;flex:0 0 auto}
  .bnr-tab small{display:block;font-weight:500;font-size:11px;color:var(--muted);margin-top:2px;line-height:1.35}
  .bnr-corpo{flex:1;min-width:0;overflow:auto;padding:18px 22px 22px}
  .bnr-sec{display:none}
  .bnr-sec.on{display:block}
  .bnr-h{font-size:17px;font-weight:800;color:var(--ink);margin:0 0 3px;letter-spacing:-.2px}
  .bnr-sub{font-size:12.5px;color:var(--muted);margin:0 0 14px;line-height:1.5}
  .bnr-item{opacity:0;transform:translateY(7px);animation:bnrEntra .32s cubic-bezier(.2,.75,.3,1) forwards;
    animation-delay:calc(var(--i,0) * 45ms)}
  @keyframes bnrEntra{to{opacity:1;transform:none}}
  .bnr-card{border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin:0 0 10px;background:var(--card)}
  .bnr-card b.t{display:block;font-size:13.5px;margin-bottom:3px;color:var(--ink)}
  .bnr-card p{margin:0;font-size:13px;color:var(--muted);line-height:1.55}
  .bnr-card p + p{margin-top:7px}
  .bnr-card.dest{border-left:3px solid var(--navy)}
  .bnr-card.aviso{border-left:3px solid var(--warn);background:color-mix(in srgb,var(--warn) 6%,var(--card))}
  .bnr-card.bom{border-left:3px solid var(--ok);background:color-mix(in srgb,var(--ok) 5%,var(--card))}
  .bnr-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:10px;margin:0 0 10px}
  .bnr-grid .bnr-card{margin:0}
  .bnr-num{font-size:22px;font-weight:800;color:var(--navy);font-variant-numeric:tabular-nums;line-height:1.15}
  .bnr-faixas{display:grid;gap:6px;margin:0 0 10px}
  .bnr-faixa{display:flex;align-items:center;gap:10px;font-size:13px;position:relative;padding:8px 11px;border-radius:9px;
    background:var(--bg);overflow:hidden}
  .bnr-faixa i{position:absolute;left:0;top:0;bottom:0;width:0;background:color-mix(in srgb,var(--navy) 13%,transparent);
    animation:bnrBarra .55s cubic-bezier(.2,.8,.3,1) forwards;animation-delay:calc(var(--i,0) * 60ms + 130ms)}
  @keyframes bnrBarra{to{width:var(--w,0%)}}
  .bnr-faixa span{position:relative;flex:1;color:var(--ink)}
  .bnr-faixa b{position:relative;font-variant-numeric:tabular-nums;color:var(--navy);white-space:nowrap}
  .bnr-faixa.zero b{color:var(--muted)}
  .bnr-chip{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:700;padding:3px 10px;border-radius:20px;
    background:color-mix(in srgb,var(--navy) 11%,transparent);color:var(--navy);white-space:nowrap}
  .bnr-passos{display:grid;gap:9px;counter-reset:bnr;margin:0 0 10px}
  .bnr-passo{display:flex;gap:11px;align-items:flex-start;font-size:13px;color:var(--muted);line-height:1.55}
  .bnr-passo::before{counter-increment:bnr;content:counter(bnr);flex:0 0 22px;height:22px;border-radius:50%;
    background:var(--navy);color:#fff;font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center;margin-top:1px}
  .bnr-passo b{color:var(--ink)}
  .bnr-lista{display:grid;gap:7px;margin:0 0 10px;font-size:13px;color:var(--muted);line-height:1.55}
  .bnr-lista div{display:flex;gap:9px;align-items:flex-start}
  .bnr-lista div::before{content:'✓';color:var(--ok);font-weight:700;flex:0 0 auto;margin-top:1px}
  .bnr-lista.nao div::before{content:'×';color:var(--red)}
  .bnr-rodape{border-top:1px solid var(--line);margin-top:14px;padding-top:10px;font-size:12px;color:var(--muted);line-height:1.5}
  @media(max-width:700px){
    .bnr-modal .body{flex-direction:column;max-height:none}
    .bnr-nav{flex:0 0 auto;flex-direction:row;overflow-x:auto;border-right:0;border-bottom:1px solid var(--line);padding:10px;gap:6px}
    .bnr-tab{width:auto;white-space:nowrap;flex:0 0 auto;align-items:center}
    .bnr-tab small{display:none}
    .bnr-corpo{padding:14px 15px 18px}
  }
  @media(prefers-reduced-motion:reduce){
    .bnr-item{animation-duration:.01ms;animation-delay:0ms}
    .bnr-faixa i{animation:none;width:var(--w,0%)}
  }

  /* 526: o roxo da indicacao de empresa. Uma cor so para o assunto, na aba,
     nos botoes, no guia e no CRM, para a pessoa reconhecer sem ler. */
  .btn.rb-roxo{background:#6B4FD8;border-color:#6B4FD8;color:#fff}
  .btn.sec.rb-roxo{background:color-mix(in srgb,#6B4FD8 10%,var(--card));border-color:color-mix(in srgb,#6B4FD8 38%,transparent);color:#5b3fc4}
  .btn.hero-acao.rb-roxo{background:#6B4FD8;border-color:#8b74e6;color:#fff}
  .bnr-chip.rb-roxo-chip{background:color-mix(in srgb,#6B4FD8 13%,transparent);color:#5b3fc4}
  /* 528: a prioridade da indicacao na vaga, com o relogio. O pulso na borda
     e o "tempo correndo" sem precisar de numero piscando. */
  .rb-prio{display:flex;gap:7px;align-items:flex-start;margin:6px 0 4px;padding:8px 10px;border-radius:9px;font-size:12.5px;
    line-height:1.45;color:#5b3fc4;background:color-mix(in srgb,#6B4FD8 9%,var(--card));
    border:1px solid color-mix(in srgb,#6B4FD8 30%,transparent);animation:rbPrioPulso 2.6s ease-in-out infinite}
  .rb-prio b{font-variant-numeric:tabular-nums}
  /* 530: a caixa do aditivo no pe do guia. Empurra os botoes para a direita
     e quebra linha no celular, em vez de espremer o texto. */
  .bnr-modal .foot{flex-wrap:wrap}
  .rig-aditivo{display:flex;gap:8px;align-items:flex-start;margin-right:auto;max-width:440px;
    font-size:12.5px;line-height:1.45;color:var(--ink);cursor:pointer}
  .rig-aditivo input{width:18px;height:18px;flex:none;margin-top:1px;accent-color:#6B4FD8}
  @keyframes rbPrioPulso{0%,100%{box-shadow:0 0 0 0 rgba(107,79,216,0)}50%{box-shadow:0 0 0 4px rgba(107,79,216,.14)}}
  @media(prefers-reduced-motion:reduce){.rb-prio{animation:none}}

  /* O convite do Plano Hunter, no padrao premium das Regras do bonus. */
  .pln-modal{width:min(560px,94vw);overflow:hidden}
  .pln-heroi{position:relative;overflow:hidden;padding:22px 22px 18px;color:#fff;
    background:linear-gradient(135deg,#0B132B 0%,#1d2f6f 58%,#6B4FD8 135%)}
  .pln-brilho{position:absolute;inset:-40% -20%;pointer-events:none;
    background:radial-gradient(closest-side,rgba(255,255,255,.16),transparent 70%);
    transform:translateX(-70%);animation:plnBrilho 3.4s ease-in-out infinite}
  @keyframes plnBrilho{0%{transform:translateX(-70%)}60%,100%{transform:translateX(70%)}}
  .pln-chip{background:rgba(255,255,255,.14);color:#fff;position:relative}
  .pln-titulo{position:relative;font:800 20px/1.25 var(--font-display);margin:10px 0 8px;letter-spacing:-.3px;
    opacity:0;transform:translateY(6px);animation:bnrEntra .4s .05s cubic-bezier(.2,.75,.3,1) forwards}
  .pln-preco{position:relative;display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;
    opacity:0;transform:translateY(6px);animation:bnrEntra .4s .16s cubic-bezier(.2,.75,.3,1) forwards}
  .pln-preco b{font-size:30px;font-weight:800;font-variant-numeric:tabular-nums}
  .pln-preco span{font-size:12.5px;opacity:.85}
  .pln-modal .body.pln-corpo{padding:16px 18px 6px}
  .pln-msg{margin:0 0 12px;font-size:13.5px;color:var(--ink);line-height:1.55}
  .bnr-card.pln-abre{border-left:3px solid #6B4FD8;background:color-mix(in srgb,#6B4FD8 5%,var(--card))}
  .bnr-lista.pln-estrela div::before{content:'★';color:#6B4FD8}
  .btn.pln-cta{background:#6B4FD8;border-color:#6B4FD8;color:#fff}
  @media(prefers-reduced-motion:reduce){
    .pln-brilho{animation:none;display:none}
    .pln-titulo,.pln-preco{animation:none;opacity:1;transform:none}
  }

  /* ===== 512: a trilha da vaga (trl-) e a ficha do candidato (qlf-) =====
     Quem entra na rede e um estudante que nunca recrutou. A fita de cinco
     passos e a resposta visual para a unica pergunta que ele tem o tempo
     todo: "e agora, o que eu faco?". */
  .trl{margin:10px 0 2px;padding:10px 12px;border-radius:12px;
    background:color-mix(in srgb,var(--navy) 4%,transparent);border:1px solid var(--line)}
  .trl-fita{display:flex;align-items:center;gap:0;margin-bottom:9px}
  .trl-p{flex:0 0 auto;width:21px;height:21px;border-radius:50%;display:flex;align-items:center;justify-content:center;
    font-size:11px;font-weight:700;background:var(--card);border:1.5px solid var(--line);color:var(--muted);
    transition:transform .18s ease}
  .trl-l{flex:1 1 auto;height:2px;background:var(--line);min-width:6px}
  .trl-p.ok{background:var(--ok);border-color:var(--ok);color:#fff}
  .trl-l.ok{background:var(--ok)}
  /* O PASSO ATUAL PULSA. Sem isso a fita e um enfeite: com isso ela
     aponta. */
  .trl-p.agora{background:var(--navy);border-color:var(--navy);color:#fff;transform:scale(1.18);
    box-shadow:0 0 0 3px color-mix(in srgb,var(--navy) 16%,transparent)}
  .trl-agora{font-size:13px;line-height:1.5;color:var(--ink)}
  .trl-agora b{display:block;font-size:13.5px;margin-bottom:1px}
  .trl-agora span{color:var(--muted);font-size:12.5px}
  .trl-premio{margin-top:8px;padding-top:8px;border-top:1px dashed var(--line);
    font-size:12.5px;font-weight:700;color:var(--ok);font-variant-numeric:tabular-nums}
  .trl-premio.fim{color:var(--navy)}

  /* A ficha. Uma pergunta por cartao, e a resposta em dois botoes do
     tamanho do polegar: ele esta com o telefone na orelha. */
  .qlf-modal{width:min(640px,96vw)}
  .qlf-modal .body{padding:0;max-height:min(74vh,660px);overflow:auto}
  .qlf-topo{padding:12px 16px;border-bottom:1px solid var(--line);background:var(--navy);color:#fff}
  .qlf-topo b{display:block;font-size:15px}
  .qlf-topo span{font-size:12px;color:#A9BCDF}
  /* A ficha da pessoa, no alto do modal: e o que ele le antes de
     perguntar qualquer coisa. */
  .qlf-pessoa{padding:12px 16px;border-bottom:1px solid var(--line);background:var(--bg)}
  .qlf-pl{font-size:13px;color:var(--muted);line-height:1.55}
  .qlf-pl.forte{color:var(--ink);font-weight:600}
  .qlf-disc{margin-top:10px;border:1px solid var(--line);border-radius:11px;padding:10px 12px;background:var(--card)}
  .qlf-disc.vazio{font-size:12px;color:var(--muted);line-height:1.55;background:transparent;border-style:dashed}
  .qlf-disc-top{display:flex;align-items:baseline;gap:9px;flex-wrap:wrap;margin-bottom:9px}
  .qlf-disc-top b{font-size:16px;color:var(--navy);letter-spacing:-.2px}
  .qlf-disc-top span{font-size:11.5px;color:var(--muted)}
  .qlf-barras{display:grid;gap:6px}
  .qlf-barras div{display:flex;align-items:center;gap:9px;font-size:12px}
  .qlf-barras span{flex:0 0 92px;color:var(--muted)}
  .qlf-barras i{flex:1;height:7px;background:var(--line);border-radius:4px;overflow:hidden}
  .qlf-barras i b{display:block;height:100%;background:var(--navy)}
  .qlf-barras em{flex:0 0 30px;text-align:right;font-style:normal;font-weight:700;color:var(--navy);
    font-variant-numeric:tabular-nums}
  .qlf-textos{margin-top:10px;display:grid;gap:8px}
  .qlf-textos div{font-size:12.5px;color:var(--muted);line-height:1.55}
  .qlf-textos b{display:block;font-size:11.5px;color:var(--ink);font-weight:700}
  .qlf-lista{padding:14px 16px;display:grid;gap:10px}
  .qlf-q{border:1px solid var(--line);border-radius:12px;padding:11px 13px;background:var(--card)}
  .qlf-q.resp{border-left:3px solid var(--ok)}
  .qlf-q.nao{border-left:3px solid var(--red)}
  .qlf-q p{margin:0 0 3px;font-size:13.5px;font-weight:600;color:var(--ink);line-height:1.45}
  .qlf-q small{display:block;font-size:12px;color:var(--muted);line-height:1.5;margin-bottom:9px}
  .qlf-sn{display:flex;gap:8px}
  .qlf-sn button{flex:1;padding:9px;border-radius:9px;border:1px solid var(--line);background:var(--card);
    font:600 13.5px inherit;color:var(--muted);cursor:pointer;transition:all .14s ease}
  .qlf-sn button:active{transform:scale(.97)}
  .qlf-sn button.on{background:var(--ok);border-color:var(--ok);color:#fff}
  .qlf-sn button.on.nao{background:var(--red);border-color:var(--red)}
  .qlf-campos{display:grid;grid-template-columns:1fr 1fr;gap:8px}
  .qlf-campos label{font-size:11.5px;font-weight:600;color:var(--muted);display:block;margin-bottom:3px}
  .qlf-campos input{width:100%;padding:9px 10px;border:1px solid var(--line);border-radius:9px;font:inherit;font-size:13.5px}
  .qlf-campos .wide{grid-column:1 / -1}
  /* A conta do transporte: e o achado da tela, e por isso tem peso. */
  .qlf-conta{margin-top:10px;border-radius:10px;padding:10px 12px;font-size:12.5px;line-height:1.55}
  .qlf-conta.ok{background:color-mix(in srgb,var(--ok) 8%,var(--card));color:var(--ink);border:1px solid color-mix(in srgb,var(--ok) 30%,var(--line))}
  .qlf-conta.medio{background:color-mix(in srgb,var(--warn) 9%,var(--card));border:1px solid color-mix(in srgb,var(--warn) 34%,var(--line))}
  .qlf-conta.alto{background:color-mix(in srgb,var(--red) 8%,var(--card));border:1px solid color-mix(in srgb,var(--red) 30%,var(--line))}
  .qlf-conta b{display:block;font-size:17px;font-variant-numeric:tabular-nums;margin-bottom:2px}
  .qlf-veredito{padding:13px 16px;border-top:1px solid var(--line);display:grid;gap:8px}
  .qlf-selo{font-size:14.5px;font-weight:800;letter-spacing:-.2px}
  .qlf-selo.serve{color:var(--ok)}
  .qlf-selo.com_ressalva{color:var(--warn)}
  .qlf-selo.nao_serve{color:var(--red)}
  .qlf-selo.incompleta{color:var(--muted)}
  .qlf-al{font-size:12.5px;line-height:1.55;padding:8px 11px;border-radius:9px}
  .qlf-al.alto{background:color-mix(in srgb,var(--red) 8%,var(--card));border-left:3px solid var(--red)}
  .qlf-al.medio{background:color-mix(in srgb,var(--warn) 9%,var(--card));border-left:3px solid var(--warn)}
  .qlf-al.baixo{background:var(--bg);border-left:3px solid var(--line);color:var(--muted)}
  .qlf-pend{font-size:12.5px;color:var(--muted);line-height:1.6}
  .qlf-pend b{color:var(--ink)}
  @media(max-width:700px){
    .qlf-lista{padding:12px 13px}
    .qlf-campos{grid-template-columns:1fr}
  }
  @media(prefers-reduced-motion:reduce){
    .trl-p.agora{transition:none}
  }
  /* pointer-events:none e OBRIGATORIO. O toast fica no DOM o tempo todo,
     fixo no rodape e com z-index 40 — acima do .overlay (20). Invisivel
     por opacity nao para de receber toque, e toast() nunca limpa o texto,
     so a opacidade: depois de qualquer mensagem sobra uma barra invisivel
     da largura daquele texto. No CELULAR o modal cola no rodape
     (.overlay{align-items:flex-end}), entao essa barra caia exatamente em
     cima do botao Cancelar e engolia o toque. No desktop nao aparecia
     porque o modal e centralizado verticalmente. */

  /* ---------------------------------------------------------------------
     Triagem em série de candidatos — painel que desliza pela direita
     ---------------------------------------------------------------------
     Mesma mecânica do .scr (fixed + transform + visibility, alternado por
     uma classe no body): por cima e não ao lado, senão a lista de trás
     re-renderiza e o candidato que a pessoa estava lendo salta de lugar.

     Existe porque o hunter tria em VOLUME: com 11 candidatos, abrir a
     sanfona do bairro, ler um, fechar e procurar o próximo custa mais
     tempo do que ler. Aqui ele abre o primeiro e vai de Próximo até o
     fim, com o contador dizendo quanto falta.

     z-index 19: ABAIXO do .overlay (20), porque um modal aberto tem que
     cobrir a triagem — a lição do toast que engolia o Cancelar no celular
     (ver ferramentas/verificar-camadas-css.js). Acima do resto da tela.
     --------------------------------------------------------------------- */
  .trg{position:fixed;top:0;right:0;bottom:0;width:min(430px,96vw);z-index:19;
    background:var(--card);border-left:1px solid var(--line);
    box-shadow:-14px 0 34px rgba(11,19,43,.14);
    display:flex;flex-direction:column;
    transform:translateX(100%);visibility:hidden;
    transition:transform .22s ease, visibility .22s}
  body.trg-on .trg{transform:none;visibility:visible}
  @media (prefers-reduced-motion:reduce){ .trg{transition:none} }

  .trg-topo{padding:14px 16px;background:var(--brand-dark);color:#fff;flex-shrink:0}
  .trg-topo-l1{display:flex;align-items:center;gap:10px;font-size:11.5px;color:#A9BCDF}
  .trg-contador{font-weight:700;letter-spacing:.03em}
  .trg-x{margin-left:auto;background:none;border:0;color:#A9BCDF;font-size:17px;
    cursor:pointer;line-height:1;padding:2px 6px;min-height:44px;min-width:44px}
  .trg-x:hover{color:#fff}
  /* O Voltar da triagem: existe pro CELULAR (o ✕ sozinho e pequeno e a
     tela cobre o painel inteiro — sem um caminho obvio de volta, a
     pessoa se sente presa). No desktop fica escondido: la o painel e
     lateral e o ✕ resolve. */
  .trg-voltar{display:none;align-items:center;gap:4px;background:rgba(255,255,255,.14);border:0;color:#fff;font:600 12.5px var(--font-ui);padding:5px 10px;border-radius:8px;cursor:pointer;margin-right:6px}
  .trg-x:focus-visible{outline:2px solid #fff;outline-offset:2px;border-radius:5px}
  .trg-nome{font:600 17px/1.25 var(--font-display);margin-top:6px;word-break:break-word}
  .trg-onde{font-size:12px;color:#A9BCDF;margin-top:3px}

  .trg-corpo{flex:1;overflow-y:auto;padding:14px 16px;-webkit-overflow-scrolling:touch}
  .trg-pills{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}

  /* Ficha em duas colunas: rótulo apagado à esquerda, valor firme à
     direita. Grid e não tabela — no celular a coluna do valor precisa
     poder quebrar sem empurrar o rótulo. */
  .trg-ficha{display:grid;grid-template-columns:auto 1fr;gap:7px 12px;font-size:13px}
  .trg-ficha dt{color:var(--muted);font-size:11.5px;text-transform:uppercase;
    letter-spacing:.05em;font-weight:700;padding-top:1px}
  .trg-ficha dd{margin:0;color:var(--ink);word-break:break-word}
  .trg-vazio{color:var(--muted);font-style:italic}

  /* O que o candidato escreveu no formulario publico. pre-line mantem as
     quebras entre Formacao / Experiencia / Obs. sem virar uma parede. */
  .trg-relato{margin-top:16px;background:var(--bg-alt,#F3F6FB);border:1px solid var(--line);
    border-radius:10px;padding:11px 13px}
  .trg-relato-t{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;
    color:var(--muted);margin-bottom:5px}
  .trg-relato-x{font-size:13px;color:var(--ink);line-height:1.55;white-space:pre-line;word-break:break-word}
  /* O aviso de "ainda buscando" / "nao consegui". Fundo transparente e
     texto apagado de proposito: e recado do sistema, e nao conteudo da
     pessoa — quem bate o olho precisa distinguir os dois na hora. */
  .trg-relato-mudo{background:transparent;border-style:dashed;color:var(--muted);
    font-size:12.5px;line-height:1.5}
  .trg-acoes{display:flex;gap:8px;padding:12px 16px;border-top:1px solid var(--line);flex-shrink:0}
  .trg-acoes .btn{flex:1;min-height:44px;display:flex;align-items:center;
    justify-content:center;gap:6px;font-size:14px}

  /* Rodapé de navegação: alvos grandes, porque o dedo do hunter vai bater
     aqui dezenas de vezes seguidas. 44px é o mínimo confortável. */
  .trg-nav{display:flex;gap:8px;padding:10px 16px calc(10px + env(safe-area-inset-bottom));
    border-top:1px solid var(--line);background:var(--bg-alt,#F3F6FB);flex-shrink:0}
  .trg-nav button{flex:1;min-height:44px;border:1px solid var(--line);background:var(--card);
    color:var(--ink);border-radius:9px;font:700 13.5px/1 var(--font-ui,inherit);cursor:pointer}
  .trg-nav button:disabled{opacity:.45;cursor:default}
  .trg-nav button:focus-visible{outline:2px solid var(--navy);outline-offset:2px}
  .trg-nav .prox{background:var(--navy);border-color:var(--navy);color:#fff}

  /* A linha da lista vira alvo de toque: o hunter abre a triagem por ela. */
  .mc-item{cursor:pointer}
  .mc-item:hover{background:var(--bg-alt,#F3F6FB)}
  .mc-item:focus-visible{outline:2px solid var(--navy);outline-offset:-2px}

  /* Idade do registro. Âmbar a partir de 3 dias: é quando uma candidatura
     esfria e o candidato já respondeu a outro anúncio. */
  .mc-idade{font-size:11px;color:var(--muted);white-space:nowrap}
  .mc-idade.velho{color:var(--warn);font-weight:700}

  .toast{position:fixed;bottom:18px;left:50%;transform:translateX(-50%);background:var(--navy);color:#fff;padding:10px 16px;border-radius:8px;font-size:13px;z-index:40;opacity:0;transition:opacity .2s;pointer-events:none}
  .toast.show{opacity:1}
  table.hunters{width:100%;border-collapse:collapse;background:#fff;border-radius:10px;overflow:hidden}
  table.hunters th,table.hunters td{padding:8px 10px;border-bottom:1px solid var(--line);font-size:13px;text-align:left}
  table.hunters th{background:#eaf1f8;color:var(--navy)}
  .wrap{padding:16px}
  /* Op3 */
  .subtabs{display:flex;gap:6px;margin-bottom:14px;flex-wrap:wrap}
  .subtab{background:#fff;border:1px solid var(--line);color:var(--navy);padding:7px 14px;border-radius:20px;font-weight:600;font-size:13px}
  .subtab.active{background:var(--navy);color:#fff;border-color:var(--navy)}
  .op3tbl{width:100%;border-collapse:collapse;background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;font-size:13px;box-shadow:var(--sh-sm)}
  .op3tbl th,.op3tbl td{padding:9px 11px;border-bottom:1px solid var(--line);text-align:left;white-space:nowrap;vertical-align:top}
  .op3tbl th{background:#eaf1f8;color:var(--navy);font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.02em}
  .op3tbl tr.r-atras td{background:#fdeeeb}
  /* ---------------------------------------------------------------------
     A LINHA DA TABELA RESPONDE AO MOUSE (06/09/2026)

     Mesma linguagem dos cartoes da Agenda: a cor do realce e a cor do
     ESTADO da linha, e nao um cinza igual pra todas. Vermelho quando o
     prazo estourou, ambar quando esta perto, verde quando ja contratou,
     grafite quando encerrou, azul no resto.

     O SALTO NAO CABE AQUI. Com border-collapse, uma linha levantada
     descola as bordas das vizinhas e a tabela inteira parece quebrada.
     Entao o realce e desenhado DENTRO da celula: trilho de 3px nas duas
     pontas, fio da mesma cor em cima e embaixo, e o fundo com a mesma
     tinta. Da o mesmo "esta linha e um botao" sem mexer no desenho da
     tabela.
     --------------------------------------------------------------------- */
  /* O AVISO DE TELA QUE NAO CARREGOU (06/09/2026). Uma tela que falhou
     tem de PARECER que falhou: o vazio silencioso faz a pessoa achar que
     perdeu o dado. Mesmo desenho em toda tela que precisar. */
  .board-erro{background:var(--card);border:1px solid #F2C4BD;border-left:3px solid var(--red);
    border-radius:var(--r-md);padding:16px 18px;margin:14px;max-width:520px;
    display:flex;flex-direction:column;gap:8px;align-items:flex-start;box-shadow:var(--sh-sm)}
  .board-erro b{color:var(--ink);font:600 14px var(--font-display)}
  .board-erro div{color:var(--muted);font-size:13px}
  .op3tbl tr.vg-row{--vg-cor:var(--blue);--vg-tinta:rgba(41,111,186,.08);--vg-fio:rgba(41,111,186,.30)}
  .op3tbl tr.vg-row.vg-r-atrasada{--vg-cor:#d8503f;--vg-tinta:rgba(216,80,63,.09);--vg-fio:rgba(216,80,63,.34)}
  .op3tbl tr.vg-row.vg-r-perto{--vg-cor:#E8950C;--vg-tinta:rgba(232,149,12,.12);--vg-fio:rgba(232,149,12,.38)}
  .op3tbl tr.vg-row.vg-r-ok{--vg-cor:#1e9e5a;--vg-tinta:rgba(30,158,90,.09);--vg-fio:rgba(30,158,90,.32)}
  .op3tbl tr.vg-row.vg-r-fim{--vg-cor:#7b8ca6;--vg-tinta:rgba(123,140,166,.11);--vg-fio:rgba(123,140,166,.34)}
  .op3tbl tr.vg-row td{transition:background-color .15s ease,box-shadow .15s ease}
  .op3tbl tr.vg-row:hover td{background:var(--vg-tinta);
    box-shadow:inset 0 1px 0 var(--vg-fio),inset 0 -1px 0 var(--vg-fio)}
  .op3tbl tr.vg-row:hover td:first-child{box-shadow:inset 3px 0 0 var(--vg-cor),
    inset 0 1px 0 var(--vg-fio),inset 0 -1px 0 var(--vg-fio)}
  .op3tbl tr.vg-row:hover td:last-child{box-shadow:inset -3px 0 0 var(--vg-cor),
    inset 0 1px 0 var(--vg-fio),inset 0 -1px 0 var(--vg-fio)}
  /* A etiqueta de estado acende junto, que e o que a pessoa foi mirar. */
  .op3tbl tr.vg-row:hover .st{filter:saturate(1.15) brightness(1.03)}
  @media (prefers-reduced-motion:reduce){ .op3tbl tr.vg-row td{transition:none} }
  .op3tbl tr.doc-emp-row{cursor:pointer}
  .op3tbl tr.doc-emp-row td{background:#f7f9fc;transition:background .15s}
  .op3tbl tr.doc-emp-row:hover td{background:#eaf1f8}
  .doc-emp-tgl{display:inline-block;width:12px;color:var(--muted);transition:transform .15s}
  .doc-emp-row.aberto .doc-emp-tgl{transform:rotate(90deg)}
  /* Admissão e desligamento (ciclo CLT, 449): grupos por pessoa */
  .adm-grupo{border:1px solid var(--line);border-radius:10px;margin-bottom:8px;background:var(--card);overflow:hidden}
  .adm-pessoa{display:flex;align-items:center;gap:8px;padding:10px 12px;cursor:pointer;flex-wrap:wrap}
  .adm-pessoa:hover{background:color-mix(in srgb,var(--brand) 5%,transparent)}
  .adm-itens{border-top:1px solid var(--line)}
  .adm-item{display:grid;grid-template-columns:minmax(180px,2fr) auto minmax(110px,1fr) minmax(120px,1.4fr) minmax(140px,1.6fr) auto;gap:8px;align-items:center;padding:8px 12px;border-top:1px solid var(--line);font-size:13px}
  .adm-item:first-child{border-top:0}
  .adm-item.feito{opacity:.62}
  .adm-item.feito .adm-chk span{text-decoration:line-through}
  .adm-item.atras{background:rgba(192,57,43,.05)}
  .adm-chk{display:flex;align-items:center;gap:8px;margin:0;font-weight:500;cursor:pointer}
  .adm-chk input{width:16px;height:16px;margin:0;flex:0 0 auto}
  .adm-venc{font-size:12px;color:var(--muted)}
  .adm-ag{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
  .adm-obs{padding:2px 8px;font-size:11px;justify-self:start}
  .adm-arq{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
  .adm-chip{display:inline-flex;align-items:center;gap:4px;font-size:11px;background:color-mix(in srgb,var(--brand) 10%,transparent);border-radius:10px;padding:2px 4px 2px 8px;max-width:100%}
  .adm-chip a{color:var(--ink);text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:180px}
  .adm-chip button{border:0;background:transparent;color:var(--muted);cursor:pointer;font-size:11px;padding:0 4px;line-height:1}
  .adm-chip button:hover{color:#c0392b}
  /* Como a conta usa o sistema (447): cartoes de escolha */
  .uso{display:grid;gap:8px}
  .uso-op{display:flex;gap:10px;align-items:flex-start;margin:0;padding:10px 12px;border:1.5px solid var(--line);border-radius:9px;cursor:pointer;font-weight:400;background:var(--card)}
  .uso-op:hover{border-color:var(--brand)}
  .uso-op.sel{border-color:var(--brand);box-shadow:0 0 0 3px color-mix(in srgb,var(--brand) 14%,transparent)}
  .uso-op input{width:16px;height:16px;margin:3px 0 0;flex:0 0 auto}
  .uso-op span{display:grid;gap:2px}
  .uso-op b{font-size:13px;color:var(--ink)}
  .uso-op small{font-size:11px;color:var(--muted)}
  .rhm-off td{opacity:.55}
  .rhm-off td input[type=text]{text-decoration:line-through}
  @media (max-width:720px){ .adm-item{grid-template-columns:1fr 1fr} .adm-chk{grid-column:1 / -1} }
  .op3tbl tr.doc-sub td:first-child{padding-left:22px}
  .sub2{font-size:11px;color:var(--muted);white-space:normal}
  .ven{font-size:12px} .ven.atras{color:var(--red);font-weight:700}
  .marco{background:#eaf1f8;border:1px solid #d5e3f2;border-radius:20px;padding:2px 10px;font-size:11px;color:var(--navy);font-weight:700}
  .st{padding:3px 10px;border-radius:20px;font-size:11px;font-weight:700}
  .st-pendente{background:#fdf1e3;color:#9a6412} .st-recebido,.st-feito{background:#eaf1f8;color:var(--navy)} .st-assinado{background:#e9f6ee;color:#1e7a46} .st-vencido,.st-risco{background:#fbe9ea;color:#9B2226}
  .ck{font-size:11px;color:var(--muted);margin-right:8px;display:inline-flex;align-items:center;gap:3px}
  .op3search{display:flex;align-items:center;gap:8px;margin-bottom:12px}
  #deslq{flex:1;padding:9px;border:1px solid var(--line);border-radius:8px}
  .op3res{display:flex;flex-direction:column;gap:8px}
  .op3card{background:#fff;border:1px solid var(--line);border-radius:10px;padding:10px 12px;display:flex;justify-content:space-between;align-items:center;gap:10px}
  .op3card .t{font-weight:600;color:var(--navy)}
  .op3hint{color:var(--muted);font-size:13px;padding:8px}
  .op3err{color:var(--red);font-size:13px;padding:8px}
  /* Indicadores do Controle de Vagas */
  /* ---------------------------------------------------------------------
     BARRA DE FERRAMENTAS DE TELA (06/09/2026)

     A medida saiu da barra do Kanban e ganhou nome proprio pra outras
     telas usarem: uma altura so (34px), um raio so (9px), os controles
     todos alinhados e o conjunto num cartao, em vez de botoes soltos
     boiando sobre o fundo. Icone de traco no lugar do emoji, com a
     excecao ja conhecida do brilho da Vega.
     --------------------------------------------------------------------- */
  .tbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:10px 14px;margin-bottom:12px;
    background:var(--card);border:1px solid var(--line);border-radius:var(--r-md);
    box-shadow:0 1px 2px rgba(11,42,74,.04),0 10px 26px -20px rgba(11,42,74,.45)}
  .tbar h2{margin:0;color:var(--ink);font-size:17px}
  /* Titulo, ajuda e etiqueta de escopo andam juntos: no celular eles
     sao UMA celula da grade, e aqui continuam a mesma linha de antes. */
  .vg-tit{display:flex;align-items:center;gap:8px;min-width:0}
  .tbar .btn{min-height:34px;border-radius:9px;font-size:12.5px;padding:0 12px;
    display:inline-flex;align-items:center;gap:7px;font-weight:600}
  .tbar .btn.sec{color:var(--ink);background:var(--card);border-color:var(--line)}
  .tbar .btn.sec:hover{background:var(--bg);border-color:var(--navy)}
  .tbar select,.tbar input[type=text],.tbar input[type=month]{min-height:34px;border-radius:9px;font-size:12.5px}
  .tbar label{font-size:12px;color:var(--muted);display:flex;gap:6px;align-items:center;white-space:nowrap}
  /* O icone de traco, em qualquer barra. Herda a cor do botao e escurece
     junto com ele no hover. */
  .kico{width:15px;height:15px;flex:0 0 auto;color:var(--muted)}
  .btn.sec:hover .kico,.tbar .btn.sec:hover .kico{color:var(--navy)}
  .btn:not(.sec) .kico{color:currentColor}
  /* O botao que abre e fecha um bloco (Indicadores, Desligamentos do mes):
     mesma altura dos vizinhos e a seta girando, em vez do triangulo de
     texto que mudava de largura ao abrir. */
  .vgindtoggle{background:var(--card);color:var(--navy);border:1px solid var(--line);border-radius:9px;
    padding:0 12px;min-height:34px;display:inline-flex;align-items:center;gap:7px;font-size:12.5px;
    font-weight:600;cursor:pointer;transition:background-color .15s ease,border-color .15s ease}
  .vgindtoggle:hover{background:var(--bg);border-color:var(--navy)}
  .vgindtoggle:focus-visible{outline:2px solid var(--blue);outline-offset:1px}
  .vgindtoggle .kchev{width:13px;height:13px;transition:transform .18s ease}
  .vgindtoggle.aberta .kchev{transform:rotate(180deg)}
  @media (prefers-reduced-motion:reduce){ .vgindtoggle,.vgindtoggle .kchev{transition:none} }
  /* Todos os cartões de indicador na MESMA linha, sempre — em vez de
     quebrar quando não cabe, a fileira rola na horizontal (mesmo padrão
     do quadro do Kanban). */
  .vgind-wrap{display:flex;flex-wrap:nowrap;gap:10px;margin:0 0 14px;overflow-x:auto;padding-bottom:4px}
  .vgind-wrap::-webkit-scrollbar{height:8px}
  .vgind-wrap::-webkit-scrollbar-thumb{background:#c3d2e0;border-radius:6px}
  .vgind-box{flex:0 0 auto;width:230px}
  .vgind-box{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:12px 14px}
  .vgind-ttl{font-size:12px;color:var(--muted);font-weight:600;margin-bottom:8px;text-transform:uppercase;letter-spacing:.3px}
  .vgind-big{font-size:30px;font-weight:800;color:var(--navy)}
  .vgind-row{display:flex;align-items:center;gap:8px;margin-bottom:6px;font-size:12px}
  .vgind-lb{flex:0 0 auto;max-width:44%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink)}
  .vgind-bar{flex:1;height:8px;border-radius:4px;background:#eaf1f8;overflow:hidden}
  .vgind-fill{height:100%;border-radius:4px}
  .vgind-n{flex:0 0 auto;color:var(--muted);font-weight:600;min-width:18px;text-align:right}
  #cd-busca-resultados{margin-top:6px;max-height:180px;overflow-y:auto;border-radius:8px}
  #cd-busca-resultados:not(:empty){border:1px solid var(--line)}
  .cd-cli-item{padding:8px 10px;font-size:13px;cursor:pointer;display:flex;flex-direction:column;gap:2px;border-bottom:1px solid var(--line)}
  .cd-cli-item:last-child{border-bottom:none}
  .cd-cli-item:hover{background:#eaf1f8}
  .g-pos{color:var(--ok);font-weight:600} .g-neg{color:var(--red);font-weight:600}
  /* Ícone de ajuda (?) */
  .helpIc{display:inline-flex;align-items:center;justify-content:center;width:17px;height:17px;border-radius:50%;background:#eaf1f8;color:var(--blue);font-size:11px;font-weight:800;cursor:pointer;margin-left:6px;border:1px solid #d5e3f2;vertical-align:middle;flex:0 0 auto;line-height:1}
  .helpIc:hover{background:var(--blue);color:#fff}
  .pnl .helpIc{background:#12274a;border-color:#1d3a66;color:#7fb0f0}
  .helpBody{font-size:14px;line-height:1.6}

  /* Setores do Kanban (visão do gestor) */
  .col{border-top:3px solid transparent}
  .col.sec-comercial{border-top-color:#f0a35a}
  .col.sec-comercial>h3{background:#ffe8d1;color:#a85b1a}
  .col.sec-coord{border-top-color:#a583e0}
  .col.sec-coord>h3{background:#ece3fb;color:#6b46b0}
  .col.sec-hunter{border-top-color:#9fb1c1}
  .col.sec-ok{border-top-color:var(--ok)}
  .col.sec-ok>h3{background:#dff3e6;color:#1e7a46}
  .col.sec-red{border-top-color:var(--red)}
  .col.sec-red>h3{background:#fce4e0;color:#b23a2a}
  .col.sec-comercial>h3 .n,.col.sec-coord>h3 .n,.col.sec-ok>h3 .n,.col.sec-red>h3 .n{background:rgba(0,0,0,.30)}
  .klegend{display:flex;gap:14px;flex-wrap:wrap;align-items:center;padding:10px 16px;margin:0 16px 14px;background:var(--card);border:1px solid var(--line);border-radius:var(--r-md);font-size:12px;color:var(--muted);box-shadow:var(--sh-sm)}
  .klegend span{display:inline-flex;align-items:center;gap:5px}
  .klegend i{width:12px;height:12px;border-radius:3px;display:inline-block}
  .klegend-btn{display:inline-flex;align-items:center;gap:5px;background:transparent;border:1px solid transparent;padding:3px 6px;border-radius:6px;color:var(--muted);font-size:12px;font-family:inherit;cursor:pointer}
  .klegend-btn:hover{background:var(--bg);border-color:var(--line)}
  /* ---------------------------------------------------------------------
     A BARRA DO KANBAN (06/09/2026)

     Cinco quadradinhos coloridos abriam a barra e competiam com a busca e
     com as acoes. Ficam a vista os DOIS setores com mais vagas no quadro
     de hoje, e os outros abrem no "+3". A legenda tambem e atalho: clicar
     rola ate a primeira coluna do setor.

     O numero ao lado do nome fica a vista de proposito: e ele que decide
     quais dois aparecem, e sem ele a escolha pareceria sorteio.
     --------------------------------------------------------------------- */
  .klegend:not(.klegend-aberta) .klegend-extra{display:none}
  .klegend-btn i{width:9px;height:9px;border-radius:50%}
  .klegend-n{font-variant-numeric:tabular-nums;font-weight:700;color:var(--ink);background:var(--bg);
    border:1px solid var(--line);border-radius:20px;padding:0 6px;font-size:10.5px;line-height:16px}
  .klegend-mais{font-weight:600}
  .klegend-mais .kchev{width:13px;height:13px;transition:transform .18s ease}
  .klegend-aberta .klegend-mais .kchev{transform:rotate(180deg)}
  @media (prefers-reduced-motion:reduce){ .klegend-mais .kchev{transition:none} }
  /* Uma altura so, um raio so. Os botoes vinham com alturas diferentes
     (btn de 42px, o par Quadro/Lista de 34, o select e a busca de outro
     tamanho) e a barra parecia remendo. Os emojis dos rotulos viraram
     icones de traco; o unico emoji que fica e o brilho da Vega, que e a
     marca dela no produto inteiro. */
  .klegend .btn{min-height:34px;border-radius:9px;font-size:12.5px;padding:0 12px;
    display:inline-flex;align-items:center;gap:7px;font-weight:600}
  .klegend .btn.sec{color:var(--ink);background:var(--card);border-color:var(--line)}
  .klegend .btn.sec:hover{background:var(--bg);border-color:var(--navy)}
  .klegend .kico{width:15px;height:15px;flex:0 0 auto;color:var(--muted)}
  .klegend .btn.sec:hover .kico{color:var(--navy)}
  /* O "Mais" e do celular. Aqui ele so aparece porque .klegend .btn
     (0-2-0) vence .cel-mais (0-1-0) e reacende o display. Casa o peso. */
  .klegend .btn.cel-mais{display:none}
  .klegend .crm-toggle{border-radius:9px}
  /* 26 + 6 do trilho + 2 da borda = os mesmos 34px dos vizinhos. */
  .klegend .crm-toggle button{min-height:26px;padding:0 11px;display:inline-flex;align-items:center;gap:6px}
  .tbar .tbar-sep{width:1px;align-self:stretch;background:var(--line);margin:2px 0}
  /* .klegend span ja vale 0-1-1 e apagaria um .ktool-sep de 0-1-0. */
  .klegend .ktool-sep{display:block;width:1px;align-self:stretch;background:var(--line);margin:2px 0}
  /* O acabamento: a barra ganha a mesma sombra curta de cartao do resto
     do sistema, as pilulas de setor viram chips de verdade (fundo e fio
     de contorno, e nao texto solto) e o par Quadro/Lista vira um seletor
     segmentado com trilho — a pastilha escura corre dentro dele. */
  .klegend{padding:10px 14px;gap:10px;box-shadow:0 1px 2px rgba(11,42,74,.04),0 10px 26px -20px rgba(11,42,74,.45)}
  .klegend-btn{background:var(--card);border-color:var(--line);padding:5px 10px;border-radius:20px;
    min-height:28px;font-weight:600;gap:7px}
  .klegend-btn:hover{background:var(--bg);border-color:var(--navy);color:var(--ink)}
  .klegend-btn:focus-visible{outline:2px solid var(--blue);outline-offset:1px}
  .crm-toggle{background:var(--bg);padding:3px;gap:2px;border-radius:11px}
  .crm-toggle button{border-radius:8px;min-height:28px}
  .crm-toggle button.on{box-shadow:0 1px 3px rgba(11,42,74,.28)}
  .btn-topo-ativo{outline:2px solid var(--blue-l);outline-offset:1px}
  .kbusca-wrap{position:relative;display:inline-flex;align-items:center}
  #kanban-hunter{padding:0 10px;min-height:34px;border:1px solid var(--line);border-radius:9px;background:var(--card);color:var(--ink);font-size:12.5px;max-width:180px}
  #kanban-busca{padding:0 30px 0 36px;height:34px;min-height:34px;border-radius:9px;background-color:var(--card);color:var(--ink);font-size:12.5px;width:240px}
  #kanban-busca:focus{border-color:var(--navy)}
  #kanban-busca-limpar{position:absolute;right:7px;background:none;border:none;color:var(--muted);cursor:pointer;font-size:12px;padding:3px;border-radius:4px}
  #kanban-busca-limpar:hover{color:var(--red)}
  .card.card-hide{display:none}
  .card.card-match{outline:2px solid var(--blue);outline-offset:-1px}
  .tag.data{background:#eae3fb;color:#6b46b0;border-color:#d6c8f2}

  /* Tema escuro */

  /* Op3 documentação v2 */
  .stepper{display:flex;align-items:center;gap:4px;flex-wrap:wrap}
  .stp{background:#eef2f7;border:1px solid var(--line);color:var(--muted);border-radius:14px;padding:3px 10px;font-size:11px;font-weight:600;cursor:pointer}
  .stp.on{background:#e9f6ee;border-color:#c9e9d5;color:#1e7a46}
  .stp.volt{margin-left:8px;color:var(--red);border-color:#f2d0c9}
  .stparr{color:var(--muted);font-size:11px}
  .declsum{display:flex;gap:10px;margin-bottom:12px;flex-wrap:wrap}
  .dcard{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);padding:12px 18px;display:flex;flex-direction:column;min-width:110px;box-shadow:var(--sh-sm);transition:transform .15s,box-shadow .15s}
  .dcard:hover{transform:translateY(-2px);box-shadow:var(--sh-md)}
  .grupo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}
  .grupo-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);padding:14px 16px;cursor:pointer;display:flex;align-items:center;gap:12px;box-shadow:var(--sh-sm);transition:transform .15s,box-shadow .15s,border-color .15s}
  .grupo-card:hover{border-color:var(--blue-l);transform:translateY(-2px);box-shadow:var(--sh-md)}
  .grupo-ico{width:38px;height:38px;border-radius:11px;background:#eaf1f8;color:var(--navy);display:flex;align-items:center;justify-content:center;font-size:17px;flex:0 0 auto}
  .grupo-info{min-width:0}
  .grupo-nome{font-weight:700;color:var(--ink);margin-bottom:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .vaga-row{cursor:pointer}
  .vaga-row:hover td{background:rgba(91,155,224,.08)}
  .pool-badge{font-size:11px;font-weight:700;color:var(--muted);background:var(--bg);border:1px solid var(--line);border-radius:20px;padding:3px 10px;white-space:nowrap}
  .pool-badge.on{color:var(--blue);border-color:var(--blue-l);background:rgba(91,155,224,.12)}
  .pool-caret{color:var(--muted);font-size:11px;margin-left:auto;transition:transform .15s;display:inline-block}
  .vaga-expand-row td{background:var(--bg);padding:12px 16px}
  .pool-inline{max-width:640px}
  .dcard b{font-size:22px;color:var(--ink)} .dcard span{font-size:11px;color:var(--muted)}
  .dcard.ok b{color:var(--ok)} .dcard.warn b{color:var(--warn)}
  .tcebtns{display:flex;gap:4px;flex-wrap:wrap}
  .tcebtns .btn{padding:4px 8px;font-size:11px}

  /* Dashboard / Visão do time */
  .dashgrid{display:flex;flex-wrap:wrap;gap:14px;margin-bottom:18px}
  .dashgrid.tvgrid{justify-content:center;gap:22px}
  .dashcard{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px;display:flex;flex-direction:column;align-items:center;gap:6px;transition:transform .15s,box-shadow .15s}
  .dashcard:hover{transform:translateY(-3px);box-shadow:0 8px 22px rgba(11,42,74,.14)}
  .dashcard.big{border-color:var(--blue)}
  .dashcard.tv{padding:22px}
  .dashttl{font-weight:700;color:var(--navy);font-size:13px}
  .donut{display:flex;flex-direction:column;align-items:center;gap:6px}
  .donlbl{font-weight:600;color:var(--ink);font-size:13px;text-align:center}
  .dashsec{margin-bottom:18px}
  .dashsec h3{color:var(--navy);font-size:14px;margin:0 0 8px}
  .dashrow{display:flex;gap:10px;flex-wrap:wrap}
  .dashcard.mini{min-width:120px}
  .dashcard.mini b{font-size:26px;color:var(--navy)} .dashcard.mini span{font-size:11px;color:var(--muted)}
  .dashcard.mini.warn b{color:var(--red)}
  .funil{display:flex;flex-wrap:wrap;gap:8px}
  .funrow{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:8px 12px;display:flex;flex-direction:column;min-width:120px}
  .funrow span{font-size:11px;color:var(--muted)} .funrow b{font-size:20px;color:var(--navy)}
  .teamhead{font-size:28px;font-weight:800;color:var(--navy);text-align:center;margin:6px 0 18px}
  .dashcard.kpi{justify-content:center}
  .kpinum{font-size:54px;font-weight:800;line-height:1;color:var(--navy)}
  .kpisub{font-size:12px;color:var(--muted);text-align:center}
  .nivrow{display:flex;gap:6px;flex-wrap:wrap;justify-content:center}
  .niv{font-size:11px;padding:2px 8px;border-radius:10px;background:#eaf1f8;color:var(--navy)}
  .niv.medio{background:#e9f2fb;color:var(--navy2)} .niv.tec{background:#fff4e0;color:#9a6412} .niv.sup{background:#e9f6ee;color:#1e7a46}
  .motrow{display:flex;align-items:center;gap:8px;margin-top:6px}
  .motrow span{font-size:12px;color:var(--ink);min-width:130px}
  .motbar{flex:1;background:#eef2f7;border-radius:6px;height:14px;overflow:hidden}
  .motbar i{display:block;height:100%;background:var(--blue);border-radius:6px}
  .motrow b{font-size:13px;color:var(--navy);min-width:24px;text-align:right}

  /* ===== Modo TV (Visão do Time) — layout do painel oficial ===== */
  #view-time{position:fixed;inset:0;z-index:90;padding:0;margin:0;background:radial-gradient(1400px 700px at 50% -15%,#16345f 0%,transparent 55%),linear-gradient(180deg,#06101f,#040b16);color:#eef4fc;font-family:'Inter',system-ui,sans-serif;display:flex;flex-direction:column;overflow:auto}
  #view-dash{padding:0!important;background:radial-gradient(1100px 520px at 85% -8%,#173461 0%,transparent 52%),linear-gradient(180deg,#081222,#070f1d);color:#eef4fc;font-family:'Inter',system-ui,sans-serif;min-height:calc(100vh - 118px)}
  .pnl .tsel{font-size:12px;color:#90a8cd;display:flex;gap:6px;align-items:center}
  .pnl .tsel input{background:#0e1d35;color:#eef4fc;border:1px solid #1d3a66;border-radius:8px;padding:7px}
  .pnl .thead{display:flex;align-items:center;gap:14px;padding:12px 26px;border-bottom:1px solid #1d3a66;background:#06101f;position:sticky;top:0;z-index:20}
  .pnl .tlogo{font-family:'Sora',sans-serif;font-weight:800;font-size:20px;color:#fff}
  .pnl .tlogo b{color:#5B9BE0}
  .pnl .th2{font-family:'Sora',sans-serif;font-size:18px;font-weight:800;color:#eef4fc}
  .pnl .tclock{font-family:'JetBrains Mono',monospace;font-weight:700;font-size:22px;letter-spacing:2px;color:#fff}
  .pnl .tclose{padding:11px 18px;border-radius:11px;border:1px solid #1d3a66;background:transparent;color:#90a8cd;font-weight:700;cursor:pointer;font-family:'Inter',sans-serif}
  .pnl .tclose:hover{border-color:#e0524b;color:#ff8b84}
  .pnl .tbody{flex:1;max-width:1700px;margin:0 auto;width:100%;padding:14px 26px 40px;display:flex;flex-direction:column;gap:14px}
  .pnl .tRow{display:grid;gap:12px}
  .pnl .tRow.r1{grid-template-columns:1fr 1fr 1fr}
  @media(max-width:1100px){.pnl .tRow,.pnl .tRow.r1{grid-template-columns:1fr 1fr!important}}
  .pnl .tCard{background:#0e1d35;border:1px solid #1d3a66;border-radius:16px;padding:14px 18px;display:flex;flex-direction:column;gap:6px;min-height:0;transition:transform .2s,box-shadow .2s,border-color .2s}
  .pnl .tCard:hover{transform:translateY(-4px);box-shadow:0 14px 32px rgba(0,0,0,.45);border-color:#2c4a72}
  .pnl .tCard .ttl{font-size:11px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:#90a8cd}
  .pnl .liqCard{justify-content:center;align-items:center;text-align:center;border-width:2px}
  /* BUG 3: o rotulo do bloco "posicao atual", que separa retrato de periodo. */
  .pnl .tSecao{display:flex;align-items:baseline;gap:10px;margin:6px 2px -4px;font-size:11px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:#90a8cd}
  .pnl .tSecao small{font-weight:500;letter-spacing:0;text-transform:none;color:#5d77a1;font-size:11px}
  .pnl .liqHuge{font-family:'Sora',sans-serif;font-weight:800;font-size:clamp(48px,8vh,86px);line-height:.95;letter-spacing:-3px}
  .pnl .liqMeta{font-size:13px;color:#90a8cd;font-weight:600}
  .pnl .note{font-size:12px;color:#90a8cd;text-align:center}
  .pnl .donutWrap{display:flex;align-items:center;gap:16px;justify-content:center;flex:1}
  .pnl .donut{position:relative;width:clamp(96px,13vh,132px);height:clamp(96px,13vh,132px);flex-shrink:0}
  .pnl .donut svg{transform:rotate(-90deg);width:100%;height:100%}
  .pnl .donut .ctr{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
  .pnl .donut .ctr .n{font-family:'Sora',sans-serif;font-weight:800;font-size:clamp(22px,3.4vh,30px);letter-spacing:-1px;color:#eef4fc}
  .pnl .donut .ctr .of{font-size:11px;color:#90a8cd;font-weight:600}
  .pnl .di .big2{font-family:'Sora',sans-serif;font-weight:800;font-size:26px;color:#eef4fc}
  .pnl .di .lab2{font-size:12px;color:#90a8cd;margin-top:3px}
  .pnl .niv{display:flex;gap:14px;justify-content:center;margin-top:6px}
  .pnl .niv .nc{text-align:center}
  .pnl .niv .nv{font-family:'Sora',sans-serif;font-weight:800;font-size:20px}
  .pnl .niv .nl{font-size:10px;color:#90a8cd}
  .pnl .opNome{font-family:'Sora',sans-serif;font-weight:800;font-size:15px;color:#eef4fc}
  .pnl .opSub{font-size:11px;color:#90a8cd;margin-left:6px}
  .pnl .motivos{display:flex;flex-direction:column;gap:7px;flex:1;justify-content:center}
  .pnl .mvRow{display:flex;align-items:center;gap:10px}
  .pnl .mvRow .ml{width:130px;font-size:12px;color:#90a8cd;font-weight:600}
  .pnl .mvRow .mt{flex:1;height:20px;background:#081326;border-radius:6px;overflow:hidden;border:1px solid #1d3a66}
  .pnl .mvRow .mf{height:100%;border-radius:6px;color:#fff;font-size:11px;font-weight:700;display:flex;align-items:center;padding-left:8px;min-width:26px}
  .pnl .mvRow .mn{width:30px;text-align:right;font-family:'JetBrains Mono',monospace;font-weight:700;font-size:13px}
  .pnl .docGrid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;flex:1;align-content:center}
  .pnl .docBox{background:#081326;border:1px solid #1d3a66;border-radius:12px;padding:12px 8px;text-align:center}
  .pnl .docBox .dn{font-family:'Sora',sans-serif;font-weight:800;font-size:30px;letter-spacing:-1px;color:#eef4fc}
  .pnl .docBox .dl{font-size:10.5px;color:#90a8cd;margin-top:4px}
  .pnl .hist3m{display:flex;gap:10px;justify-content:center;margin-top:2px}
  .pnl .histLabel{font-size:10px;color:#90a8cd;text-align:center;margin:2px 0 4px}
  .pnl .mdon{display:flex;flex-direction:column;align-items:center;gap:2px}
  .pnl .mdon-l{font-size:10px;color:#90a8cd;font-weight:600}
  .pnl .hcRow{display:flex;gap:14px;justify-content:center;align-items:flex-start;flex-wrap:wrap}
  .pnl .hcCol{display:flex;flex-direction:column;align-items:center;gap:2px}
  .pnl .hcRow .donut{width:clamp(78px,10vh,104px);height:clamp(78px,10vh,104px)}
  .pnl .opCancel{font-size:11px;font-weight:700;color:#5a7291;text-align:center;padding:5px 8px;border-radius:9px;background:#0a1830;border:1px solid #1d3a66;margin-top:2px;width:100%}
  .pnl .opCancel.on{color:#ff8b84;border-color:rgba(224,82,75,.4);background:rgba(224,82,75,.12)}

  /* ===== Tablet ===== */
  @media(max-width:1100px) and (min-width:761px){
    .col{flex:1 1 260px;min-width:250px;max-width:300px}
    .klegend{gap:10px}
    #kanban-busca{width:180px}
  }

  /* ===== Mobile (Android/iOS) ===== */
  @media(max-width:760px){
    input,select,textarea{font-size:16px!important} /* evita o zoom automático do iOS ao focar */
    /* padding-top com safe-area: no iOS (PWA/notch) o conteúdo começava
       DEBAIXO da barra de status — "topo cortado". */
    header{padding:calc(8px + env(safe-area-inset-top)) 10px 8px;gap:8px}
    header .who{display:none}
    header .logo{font-size:14px}
    #btn-config{font-size:12px;padding:8px 10px}
    .wrap{padding:10px}
    .klegend{padding:8px 10px;margin:0 10px 10px;gap:8px;font-size:11px}
    /* A busca volta aos 42px de alvo de dedo que o resto do sistema usa:
       o #kanban-busca compacto e desenho de desktop. E o tracinho que
       separa os grupos de botoes nao faz sentido numa barra que quebra
       em varias linhas. */
    #kanban-busca{height:42px;min-height:42px}
    .klegend .btn.cel-mais{display:inline-flex}
    .klegend .ktool-sep{display:none}

    /* ---------------------------------------------------------------
       O TOPO DO KANBAN NO CELULAR (10/09/2026)

       Media antes: 144px de altura, o seletor de hunter comecando em
       x=201 (191px de vazio a esquerda) e a busca terminando em x=261
       (114px de vazio a direita). Tres linhas, cada uma sobrando num
       lugar diferente, porque `flex-wrap` quebra onde calha e o
       espacador do desktop (.k-espaco, flex:1) continuava empurrando o
       vizinho.

       Vira uma GRADE de duas linhas com lugar definido para cada peca:
       busca em cima, ocupando tudo (e o que mais se usa); embaixo, o
       filtro de hunter esticando e, a direita, Quadro/Lista e o Mais.
       Nada de flex-wrap adivinhando. */
    .klegend{display:grid;grid-template-columns:1fr auto auto;gap:8px;align-items:center}
    .klegend .k-espaco{display:none}
    .klegend .kbusca-wrap{grid-column:1/-1;grid-row:1;width:100%}
    .klegend #kanban-busca{width:100%}
    .klegend #kanban-hunter{grid-column:1;grid-row:2;width:100%;min-width:0;height:38px}
    /* So o icone: o nome do hunter precisa da largura, e as duas
       figuras (colunas e linhas) dizem o que sao. O title e o
       aria-label continuam com o nome escrito. */
    .klegend .crm-toggle .kvis-rot{display:none}
    .klegend .crm-toggle button{padding-left:12px;padding-right:12px}
    .klegend .crm-toggle{grid-column:2;grid-row:2;margin:0}
    .klegend .btn.cel-mais{grid-column:3;grid-row:2;white-space:nowrap}
    /* Vazio (sem busca ativa) nao pode reservar uma linha inteira. */
    .klegend #kanban-busca-info{grid-column:1/-1;grid-row:3;padding:0}
    .klegend #kanban-busca-info:empty{display:none}
    /* Sem o filtro de hunter (perfil que so ve os proprios cards), o
       Quadro/Lista assume a esquerda em vez de ficar solto no canto. */
    .klegend #kanban-hunter.hidden + .kbusca-wrap ~ .crm-toggle{grid-column:1}

    /* O aviso de candidaturas segue a mesma margem da barra, senao um
       encosta na borda e o outro nao. */
    #kanban-aviso-cand,#kanban-aviso-oper{margin:0 10px}
    #board{padding:10px;gap:8px;-webkit-overflow-scrolling:touch}
    .col{min-width:240px;max-width:240px;max-height:calc(100dvh - 190px)}
    .col.collapsed{min-width:140px;max-width:140px}
    .overlay{padding:0;align-items:flex-end}
    .modal{width:100%!important;max-width:100%;max-height:94vh;max-height:94dvh;border-radius:14px 14px 0 0}
    /* No celular tudo vira uma coluna: o span sai de cena pela
       variavel, sem !important brigando com o style inline. */
    .fields{grid-template-columns:1fr}
    .fields .f{--sp:1 !important}   /* vence o style inline que cardAcomodar escreve */
    .f.full{grid-column:auto}
    .cursos-pret-linha{grid-template-columns:1fr}
    .modal .foot{position:sticky;bottom:0;background:inherit}
    #view-op3,#view-vagas,#view-agenda,#view-hunters,#view-financeiro{overflow-x:auto;-webkit-overflow-scrolling:touch}
    .op3tbl,.agtbl,table.hunters{min-width:640px}
    .aghead{gap:8px}
    .agc-l1,.agc-l2{flex-wrap:wrap}
    .agcand .agc-cpf{width:46%}
    .agcand .agc-hora{width:46%}
    .agcand .agc-genero{width:46%}
    .agcand .agc-whatsapp{width:46%}
    .pnl .tRow,.pnl .tRow.r1{grid-template-columns:1fr!important}
    .pnl .tbody{padding:10px 12px 30px;gap:10px}
    .pnl .thead{padding:10px 12px;gap:8px}
    .pnl .th2{font-size:14px}
    .pnl .tclock{font-size:15px;letter-spacing:1px}
    .pnl .liqHuge{font-size:52px}
    .pnl .docGrid{grid-template-columns:repeat(2,1fr)!important}
    .dashgrid,.dashrow{gap:8px}
  }

  /* ------------------------------------------------------------------
     Painel de resumo em fundo CLARO.
     Nasceu pro Resumo do Financeiro, que antes reaproveitava a casca
     escura do Dashboard/TV (.pnl/.tCard) aninhada dentro de uma aba
     clara — o verde e o vermelho vibrantes de lá só são legíveis sobre
     fundo escuro. Aqui as cores vêm de --ok/--red, medidos sobre claro.
     É componente, não estilo de uma tela: qualquer aba pode usar.
     ------------------------------------------------------------------ */
  .pnlc{background:var(--card);border:1px solid var(--line);border-radius:14px;overflow:hidden}
  .pnlc-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 16px;border-bottom:1px solid var(--line)}
  .pnlc-head h3{margin:0;font:700 14px var(--font-display);color:var(--ink)}
  .pnlc-head .sp{flex:1}
  .pnlc-head label{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted)}
  .pnlc-head input[type=month]{padding:5px 8px;border:1px solid var(--line);border-radius:7px;background:var(--card);color:var(--ink);font-size:12px}
  .pnlc-body{display:flex;flex-direction:column;gap:14px;padding:16px}

  /* Cartão de indicador. A cor do valor tem SIGNIFICADO (verde = entra,
     vermelho = sai ou resultado negativo) — não é enfeite. */
  .kpi-grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(230px,1fr))}
  .kpi{background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:14px 16px}
  .kpi-rot{font-size:11px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--muted)}
  .kpi-val{font:700 30px var(--font-display);color:var(--ink);margin:6px 0 5px;font-variant-numeric:tabular-nums;line-height:1.1}
  .kpi-val.pos{color:var(--ok)}
  .kpi-val.neg{color:var(--red)}
  .kpi-val.info{color:var(--navy)}
  /* Âmbar: usado no "potencial de corte" — é um alerta que pede decisão,
     não um erro (vermelho) nem um resultado bom (verde). */
  .kpi-val.warn{color:var(--warn)}
  .kpi-nota{font-size:11.5px;color:var(--muted);line-height:1.45}
  .kpi-nota a{color:var(--navy);font-weight:600}
  .kpi.centro{display:flex;flex-direction:column;align-items:center;text-align:center}

  /* Barras de evolução mês a mês. Altura vem inline (é dado), cor vem daqui. */
  .hist{display:flex;gap:6px;align-items:flex-end;padding:10px 0;border-bottom:1px solid var(--line)}
  .hist-col{display:flex;flex-direction:column;align-items:center;flex:1;gap:5px;min-width:0}
  .hist-barras{display:flex;align-items:flex-end;gap:3px;height:110px}
  .hist-barras i{display:block;width:16px;border-radius:3px 3px 0 0}
  .hist-barras i.receita{background:var(--ok)}
  .hist-barras i.despesa{background:var(--red)}
  .hist-lbl{font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
  .legenda-inline{display:flex;gap:16px;flex-wrap:wrap;font-size:11.5px;color:var(--muted);margin-top:10px}
  .legenda-inline span{display:flex;align-items:center;gap:6px}
  .legenda-inline i{width:10px;height:10px;border-radius:2px;flex-shrink:0}
  .legenda-inline i.receita{background:var(--ok)}
  .legenda-inline i.despesa{background:var(--red)}

  /* ---------------------------------------------------------------------
     PAINEL FINANCEIRO (Resumo e Projeção) — 15/08/2026.
     Layout de dashboard: um cartão-herói escuro com o número que resume o
     mês, cartões de indicador com selo e variação, gráfico de fluxo (entra
     pra cima, sai pra baixo) e rosca de composição.

     Cores: só tokens da marca. O escuro é o mesmo da sidebar (--brand-dark)
     — é a "casca" do produto, e repeti-la aqui amarra o painel à marca em
     vez de inventar um segundo azul. Verde = entra, vermelho = sai: a mesma
     convenção do resto do Financeiro, nunca invertida.
     --------------------------------------------------------------------- */
  .fin-hero{background:var(--brand-dark);color:#fff;border-radius:16px;padding:20px 22px;
    display:flex;gap:20px;flex-wrap:wrap;align-items:flex-start;
    /* Brilho sutil no canto: dá profundidade sem custar contraste, porque
       fica ATRÁS do texto e no lado oposto a ele. */
    background-image:radial-gradient(120% 140% at 100% 0%, rgba(41,111,186,.55) 0%, rgba(10,17,32,0) 60%)}
  .fin-hero .rot{font-size:11px;font-weight:700;letter-spacing:.7px;text-transform:uppercase;color:#A9BCDF}
  /* NO CELULAR O HEROI ENCOLHE (17/09/2026): 168px para tres numeros e o
     que mais empurrava o primeiro cartao para fora da tela. O numero
     principal continua grande; o resto vira uma linha. */
  @media (max-width:760px){
    .fin-hero{padding:12px 14px;border-radius:12px;gap:8px}
    .fin-hero .rot{font-size:10px;letter-spacing:.5px}
    .fin-hero .val{font-size:26px;margin:2px 0 3px}
    .fin-hero .sub{font-size:12px}
    .fin-hero-lado{gap:16px}
    .fin-hero-lado .val{font-size:18px}

    /* NO CRM O HEROI VIRA UMA FAIXA. Ele tem duas fileiras, e em 375px
       elas empilham: 166px so para o topo da tela. Os dois indicadores
       da direita (conversas marcadas, viraram card) ja estao no
       Dashboard do proprio CRM, a uma aba de distancia, entao aqui fica
       o numero que a tela existe para mostrar. No Financeiro o heroi
       continua inteiro: la ele E a tela. */
    #view-capta .fin-hero{padding:10px 14px}
    #view-capta .fin-hero .rot{font-size:9.5px}
    #view-capta .fin-hero .val{font-size:22px;margin:1px 0 2px}
    #view-capta .fin-hero .sub{font-size:11.5px;line-height:1.35}
    #view-capta .fin-hero-lado{display:none}
  }
  .fin-hero .val{font:700 40px/1.05 var(--font-display);margin:8px 0 6px;font-variant-numeric:tabular-nums}
  .fin-hero .val.neg{color:#F4A6A6}
  .fin-hero .sub{font-size:12.5px;color:#A9BCDF;line-height:1.5}
  .fin-hero .sp{flex:1;min-width:12px}
  .fin-hero-lado{display:flex;gap:26px;flex-wrap:wrap}
  .fin-hero-lado .val{font-size:22px;margin:6px 0 2px}

  /* Botões DENTRO do herói escuro (atalhos da Config). Contorno claro
     sobre o fundo navy — btn/btn.sec são desenhados pra fundo claro e
     sumiriam aqui. Branco puro sobre o navy do herói passa folgado de
     contraste (o texto do herói já é branco). */
  .fin-hero .hero-acoes{display:flex;gap:8px;flex-wrap:wrap;align-items:flex-start;justify-content:flex-end}
  .fin-hero .hero-acao{background:rgba(255,255,255,.10);border:1px solid rgba(255,255,255,.30);color:#fff;
    border-radius:10px;padding:8px 13px;font:600 12.5px var(--font-ui);cursor:pointer;
    transition:background-color .15s}
  .fin-hero .hero-acao:hover{background:rgba(255,255,255,.22)}
  .fin-hero .hero-acao:focus-visible{outline:2px solid #fff;outline-offset:2px}

  /* Cartão de indicador com selo e variação, no lugar do .kpi cru. */
  .fin-cards{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
  .fin-card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px}
  .fin-card-top{display:flex;align-items:center;gap:10px;margin-bottom:12px}
  .fin-selo{width:34px;height:34px;border-radius:10px;display:flex;align-items:center;justify-content:center;
    font-size:16px;background:#EAF2FB;flex-shrink:0}
  .fin-selo.ok{background:#E4F1EA}
  .fin-selo.neg{background:#FAE9E9}
  .fin-selo.warn{background:#F7EFE0}
  .fin-card .val{font:700 26px var(--font-display);color:var(--ink);font-variant-numeric:tabular-nums;line-height:1.15}
  .fin-card .val.pos{color:var(--ok)} .fin-card .val.neg{color:var(--red)}
  .fin-card .val.info{color:var(--navy)} .fin-card .val.warn{color:var(--warn)}
  .fin-card .rot{font-size:11px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--muted)}
  .fin-card .nota{font-size:11.5px;color:var(--muted);line-height:1.45;margin-top:6px}
  .fin-card .nota a{color:var(--navy);font-weight:600}
  /* Pílula de variação: fundo de baixa saturação pra não competir com o
     número, que é o que a pessoa veio ler. */
  .fin-pill{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;font-weight:700;
    padding:3px 8px;border-radius:999px;background:#EEF2F8;color:var(--muted);margin-left:auto}
  .fin-pill.sobe{background:#E4F1EA;color:var(--ok)}
  .fin-pill.desce{background:#FAE9E9;color:var(--red)}

  /* Bloco de painel (gráfico, rosca, tabela) */
  .fin-bloco{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px}
  .fin-bloco-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:6px}
  .fin-bloco-head h4{margin:0;font:700 14px var(--font-display);color:var(--ink)}
  .fin-bloco-head .dim{font-size:11.5px;color:var(--muted)}
  .fin-bloco-head .sp{flex:1}
  .fin-duo{display:grid;gap:14px;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr)}
  @media (max-width:900px){ .fin-duo{grid-template-columns:1fr} }

  /* Lista de composição ao lado da rosca */
  .fin-comp{display:flex;flex-direction:column;gap:8px;margin-top:10px}
  .fin-comp-linha{display:flex;align-items:center;gap:10px}
  .fin-comp-pct{min-width:44px;text-align:center;font-size:11.5px;font-weight:700;padding:3px 6px;
    border-radius:999px;background:#EEF2F8;color:var(--ink);font-variant-numeric:tabular-nums}
  .fin-comp-nome{flex:1;font-size:12.5px;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .fin-comp-val{font-size:12.5px;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums}

  /* Barra de progresso da meta (Projeção) */
  .fin-prog{height:10px;border-radius:999px;background:rgba(255,255,255,.16);overflow:hidden;margin:10px 0 6px}
  .fin-prog i{display:block;height:100%;border-radius:999px;background:var(--brand-accent2)}
  .fin-prog.claro{background:var(--line)}
  .fin-prog.claro i{background:var(--navy)}

  /* ---------------------------------------------------------------------
     Meus Candidatos — banco de talentos (piloto do refresh visual, 07/08).
     Cores reaproveitadas de pares já testados (WCAG) em outro lugar deste
     arquivo: navy/#4a2172/#E8950C/#1c3f66 já servem de fundo sólido com
     texto branco em cima (.usermenu-ava, .tag.origem-reativado,
     .tag.fonte-gestor, .tag.hunter-3) — nenhuma cor nova, só reorganização.
     --------------------------------------------------------------------- */
  .mc-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:var(--sp-3);margin-bottom:var(--sp-4)}
  .mc-stat{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);padding:14px 16px;display:flex;align-items:center;gap:12px;box-shadow:var(--sh-sm);transition:transform .15s,box-shadow .15s}
  .mc-stat:hover{transform:translateY(-2px);box-shadow:var(--sh-md)}
  .mc-stat-ico{width:38px;height:38px;border-radius:11px;display:flex;align-items:center;justify-content:center;font-size:17px;flex:0 0 auto}
  .mc-stat-ico.blue{background:#eaf1f8;color:var(--navy)}
  .mc-stat-ico.green{background:#e9f6ee;color:#1e7a46}
  .mc-stat-ico.amber{background:#fdf1e3;color:#9a6412}
  .mc-stat b{font:800 24px/1.1 var(--font-display);color:var(--ink);display:block}
  .mc-stat span{font-size:11.5px;color:var(--muted)}

  .mc-toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:var(--sp-4);background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);padding:10px 12px;box-shadow:var(--sh-sm)}
  .mc-toolbar input[type=text],.mc-toolbar select{border-radius:10px;padding:9px 12px;font-size:13.5px;color:var(--ink);font-family:var(--font-ui)}
  .mc-toolbar input[type=text]{flex:2;min-width:200px}
  .mc-toolbar select{flex:1;min-width:200px}
  .mc-toolbar input:focus,.mc-toolbar select:focus{outline:none;border-color:var(--blue)}

  /* Barra de contexto: a vaga escolhida deixou de ser um seletor no meio
     da barra de ferramentas e virou o cabeçalho da tela, porque é ela que
     decide a ordem de tudo embaixo. A borda azul à esquerda é a mesma
     marca de "isto define o resto" usada nos outros painéis. */
  .mc-ctx{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;background:var(--card);border:1px solid var(--line);border-left:3px solid var(--navy);border-radius:var(--r-lg);padding:12px 14px;margin-bottom:10px;box-shadow:var(--sh-sm)}
  .mc-ctx-rot{font:700 10.5px var(--font-ui);color:var(--muted);text-transform:uppercase;letter-spacing:.06em;flex:0 0 auto}
  .mc-ctx select{border-radius:10px;padding:9px 12px;font-size:14px;font-weight:700;color:var(--ink);font-family:var(--font-ui);min-width:240px;max-width:100%}
  .mc-ctx select:focus{outline:none;border-color:var(--blue)}
  .mc-ctx-nota{font-size:11.5px;color:var(--muted);flex:1;min-width:200px;line-height:1.45}

  /* Filtros rápidos, no lugar de abrir pasta por pasta. Contraste medido:
     ligado é #296FBA sobre #eaf1f8 (4,52:1) e desligado é o texto apagado
     sobre o cartão (7,53:1) — os dois passam. O ligado raspa no mínimo, e
     por isso ele NÃO se distingue só pela cor: ganha borda azul também,
     que é o que sustenta a leitura pra quem enxerga pouco contraste. */
  .mc-chips{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:var(--sp-3)}
  .mc-chip{font:700 11.5px var(--font-ui);padding:6px 12px;border-radius:20px;border:1px solid var(--line);background:var(--card);color:var(--muted);cursor:pointer;transition:border-color .15s,background-color .15s,color .15s}
  .mc-chip:hover:not(:disabled){border-color:var(--blue-l);color:var(--ink)}
  .mc-chip.on{background:#eaf1f8;border-color:var(--navy);color:var(--navy)}
  .mc-chip:focus-visible{outline:2px solid var(--navy);outline-offset:2px}
  .mc-chip:disabled{opacity:.55;cursor:not-allowed}

  /* Lista de vagas no portal publico. A linha inteira e o <label>, entao
     clicar em qualquer lugar dela marca — alvo grande, que e o que importa
     numa lista de dezenas de itens e no celular. O estado ligado nao se
     distingue so pela cor de fundo: ganha barra azul a esquerda, que
     sobrevive a quem enxerga pouco contraste. */
  /* Acoes em lote. Ficam ACIMA da lista e nao coladas nas linhas: sao
     acoes de outra natureza — uma mexe numa vaga, a outra em dezenas — e
     misturar as duas na mesma faixa convida ao clique errado. */
  /* Busca de ajuda (modal Reportar) e Manual do painel.
     O corpo do verbete expande INLINE — overlay() e um so, e abrir um
     modal de ajuda por cima do Reportar fecharia o Reportar com o texto
     da pessoa dentro. */
  .aj-caixa{background:var(--bg);border:1px solid var(--line);border-radius:var(--r-md);padding:10px 12px}
  .aj-caixa input{width:100%;margin-top:6px}
  .aj-item{margin-top:6px}
  .aj-t{display:block;width:100%;text-align:left;background:var(--card);border:1px solid var(--line);border-left:3px solid var(--blue);border-radius:8px;padding:7px 10px;font:600 12.5px var(--font-ui);color:var(--navy);cursor:pointer}
  .aj-t:hover{border-color:var(--blue)}
  .aj-t.aberto{cursor:default;border-left-color:var(--navy)}
  .aj-corpo{border:1px solid var(--line);border-top:0;border-radius:0 0 8px 8px;background:var(--card);padding:9px 11px;font-size:12.5px;line-height:1.55;color:var(--ink)}
  .aj-sug-rot{font:700 11.5px var(--font-ui);color:#8A5200;background:#fdf3d9;border-radius:8px;padding:4px 9px;margin-top:8px;display:inline-block}
  .mn-secao{margin-bottom:16px}
  .mn-secao h4{margin:0 0 6px;font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
  .fb-agencia{font-size:10.5px;font-weight:700;color:var(--navy);background:#eaf1f8;border-radius:20px;padding:2px 9px;white-space:nowrap}

  /* Vagas atrasadas: o hunter explica, a gestao confirma.
     Agrupado por responsavel porque a cobranca e por pessoa — o
     coordenador olha o bloco de um hunter e fala com ele, em vez de
     garimpar quem responde pelo que numa lista misturada.
     Os tres selos nao dependem so da cor: cada um tem texto proprio. */
  .atr-bloco{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);padding:16px 18px;box-shadow:var(--sh-sm)}
  .atr-bloco h4{margin:0 0 4px;font-size:14px;color:var(--ink);display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
  .atr-sub{font-size:12px;font-weight:400;color:var(--muted)}
  .atr-resumo{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}
  .atr-pend{font-size:11.5px;font-weight:700;color:#9B2226;background:#fdeeeb;border-radius:20px;padding:3px 10px}
  .atr-pend.visto{color:#8A5200;background:#fdf3d9}
  .atr-ok{font-size:11.5px;font-weight:700;color:#12734B;background:#e9f6ee;border-radius:20px;padding:3px 10px}
  .atr-grupo{margin-bottom:14px}
  .atr-hunter{display:flex;align-items:center;gap:8px;font-weight:700;color:var(--navy);font-size:13px;margin-bottom:6px}
  .atr-qtd{font-size:11px;font-weight:700;color:var(--navy);background:#eaf1f8;border-radius:20px;padding:1px 9px}
  .atr-linha{display:flex;gap:14px;flex-wrap:wrap;align-items:flex-start;border:1px solid var(--line);border-left:3px solid var(--red);border-radius:var(--r-md);padding:10px 12px;margin-bottom:7px;background:var(--bg)}
  .atr-vaga{flex:0 0 240px;min-width:0;display:flex;flex-direction:column;gap:2px}
  .atr-emp{background:none;border:0;padding:0;text-align:left;font-weight:700;font-size:13.5px;color:var(--navy);cursor:pointer;text-decoration:underline;text-underline-offset:2px}
  .atr-emp:hover{color:var(--ink)}
  .atr-meta{font-size:11.5px;color:var(--muted)}
  .atr-motivo{flex:1;min-width:260px;display:flex;flex-direction:column;gap:6px}
  .atr-motivo textarea{width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:9px;font-size:13px;font-family:var(--font-ui);background:var(--card);color:var(--ink);resize:vertical}
  .atr-motivo textarea:focus{outline:none;border-color:var(--blue)}
  .atr-acoes{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
  .atr-acoes .btn{padding:5px 11px;font-size:12px;min-height:0}
  .atr-selo{font-size:11px;font-weight:700;border-radius:20px;padding:2px 9px;white-space:nowrap}
  .atr-selo.pend{color:#9B2226;background:#fdeeeb}
  .atr-selo.aguard{color:#8A5200;background:#fdf3d9}
  .atr-selo.ok{color:#12734B;background:#e9f6ee}
  /* "escrito, falta salvar" e o unico estado em que a pessoa PERDE
     trabalho se fechar a tela — por isso azul forte, e nao mais um tom de
     alerta que se confunde com os outros dois. */
  .atr-selo.naosalvo{color:#fff;background:var(--navy)}
  .atr-filtro{border:1px solid var(--line);border-radius:9px;padding:5px 10px;font-size:12px;font-weight:600;background:var(--card);color:var(--ink);font-family:var(--font-ui);max-width:100%}
  .atr-filtro:focus{outline:none;border-color:var(--blue)}
  .atr-assin{font-size:11px;color:var(--muted)}
  @media(max-width:700px){.atr-vaga{flex:1 1 100%}}

  /* Briefing da 1a abordagem no painel do Script. Ambar de proposito:
     e a mesma familia de "atencao util" dos avisos do sistema, e destaca
     sem brigar com os blocos azuis do script logo abaixo. Texto com
     pre-wrap porque a anotacao de evento tem quebras de linha
     deliberadas (bolsa, VR, convenio, um por linha). */
  .scr-brief{margin:10px 12px 4px;background:#fdf3d9;border:1px solid #f2c94c;border-left:4px solid #E8950C;border-radius:10px;padding:10px 12px}
  .scr-brief-cab{display:flex;align-items:center;justify-content:space-between;gap:8px;font:700 11.5px var(--font-ui);color:#7a5b00;text-transform:uppercase;letter-spacing:.04em}
  .scr-brief-valor{font-size:12.5px;color:#7a5b00;margin-top:4px}
  .scr-brief-txt{font-size:12.5px;line-height:1.55;color:var(--ink);margin-top:6px;white-space:pre-wrap;max-height:180px;overflow:auto}
  .pv-acoes{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px;padding-bottom:10px;border-bottom:1px solid var(--line)}
  .pv-acoes .btn{padding:6px 12px;font-size:12px;min-height:0}
  .pv-acoes .btn:disabled{opacity:.45;cursor:not-allowed}
  .pv-prog{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
  /* Kanban em LISTA. As linhas reusam a classe .card de proposito (e o
     que faz busca/selecao/concluido funcionarem sem mudanca), entao este
     bloco DESFAZ o visual de cartao: sem sombra, sem borda grossa, sem
     padding alto — e devolve uma linha corrida. A borda esquerda fina
     mantem a cor da coluna de origem. */
  .board-lista{display:block !important;overflow-x:visible !important}
  .klist-sec{margin-bottom:14px}
  .klist-head{display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:var(--r-md);background:var(--card);border:1px solid var(--line);margin-bottom:6px}
  .klist-head .kicker{font:700 9.5px var(--font-ui);text-transform:uppercase;letter-spacing:.07em;color:var(--muted)}
  .klist-head .lbl{font-weight:700;font-size:13px;color:var(--ink)}
  .klist-head .n{font-size:11px;font-weight:700;color:var(--navy);background:#eaf1f8;border-radius:20px;padding:1px 9px}
  .klist-sec.sec-comercial .klist-head{border-left:4px solid #E8950C}
  .klist-sec.sec-coord .klist-head{border-left:4px solid #a583e0}
  .klist-sec.sec-hunter .klist-head{border-left:4px solid #9fb1c1}
  .klist-sec.sec-ok .klist-head{border-left:4px solid #1e9e5a}
  .klist-sec.sec-red .klist-head{border-left:4px solid #d8503f}
  .card.klist-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;
    padding:7px 12px;margin:0 0 5px;cursor:pointer;box-shadow:none;
    border-left-width:3px}
  .card.klist-row:hover{box-shadow:var(--sh-sm)}
  .kl-id{display:flex;align-items:center;gap:7px;flex:0 1 300px;min-width:220px}
  .kl-id b{font-size:13px;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .kl-sub{font-size:11.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .kl-tags{display:flex;gap:4px;flex-wrap:wrap;flex:1;min-width:160px}
  .kl-meta{display:flex;gap:9px;align-items:center;flex-wrap:wrap;margin-left:auto}
  .kl-idvaga{font-family:var(--font-mono);font-size:10px;color:var(--muted)}
  .klist-vazia{font-size:12px;color:var(--muted);padding:2px 12px 6px}
  @media(max-width:700px){.kl-id{flex-basis:100%}.kl-meta{margin-left:0}}

  .pv-lista{display:flex;flex-direction:column;gap:6px}
  .pv-linha{display:flex;align-items:center;gap:11px;padding:10px 12px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--card);cursor:pointer;border-left:3px solid transparent;transition:border-color .15s,background-color .15s}
  .pv-linha:hover{border-color:var(--blue-l)}
  .pv-linha.on{background:#f4f8fd;border-left-color:var(--navy)}
  .pv-linha input{width:auto;margin:0;accent-color:var(--navy);cursor:pointer;flex:0 0 auto}
  .pv-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
  .pv-info b{font-size:13.5px;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .pv-sub{font-size:11.5px;color:var(--muted)}

  .mc-lista{display:flex;flex-direction:column;gap:7px}
  .mc-rodape{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:12px}
  .mc-contador{font-size:12px;color:var(--muted)}

  .mc-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-md);padding:11px 14px;display:flex;gap:12px;align-items:center;transition:box-shadow .15s,border-color .15s}
  .mc-card:hover{box-shadow:var(--sh-sm);border-color:var(--blue-l)}
  .mc-avatar{width:36px;height:36px;border-radius:50%;flex:0 0 auto;display:flex;align-items:center;justify-content:center;font:700 12.5px var(--font-display);color:#fff}
  .mc-avatar.c0{background:var(--navy)}
  .mc-avatar.c1{background:#4a2172}
  .mc-avatar.c2{background:#E8950C}
  .mc-avatar.c3{background:#1c3f66}
  .mc-info{flex:1;min-width:0}
  .mc-nome{font-weight:700;color:var(--ink);font-size:13.5px}
  .mc-sub{font-size:11.5px;color:var(--muted);margin-top:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .mc-badges{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end;flex:0 0 auto}
  /* NO CELULAR a linha QUEBRA: avatar + nome em cima, selos embaixo em
     linha propria. Sem isso, .mc-badges (flex:0 0 auto) nao encolhia e o
     nome ficava com 60px — uma palavra por linha, selo por cima do
     texto. O selo comprido ("veio pela vaga X") ganha reticencias em vez
     de dobrar o cartao. */
  /* CELULAR: o topo vira uma faixa FIXA e discreta — uma linha so.
     O relogio/data/clima saem (o aparelho ja mostra a hora na borda),
     os botoes encolhem, e a navegacao nao perde altura de tela. A
     triagem respeita o recorte do iPhone (a linha do TRIAGEM/fechar
     vivia embaixo da barra de status) e ganha o Voltar. */
  @media(max-width:760px){
    /* No modo APLICATIVO (salvo na tela inicial), a pagina vai ate a
       borda e o topo ficava embaixo do relogio/bateria do aparelho. O
       respiro de safe-area empurra o conteudo do header pra baixo do
       recorte; no navegador env() vale 0 e nada muda. */
    .main-col>header{position:sticky;top:0;z-index:40;gap:8px;
      padding:calc(6px + env(safe-area-inset-top,0px)) 10px 6px}
    /* OS ICONES DO TOPO NO CELULAR (06/09/2026). Notas, Vega, C-Whats e
       sino carregam padding:8px 12px INLINE, medida de desktop, e o
       inline vencia esta regra: os quatro comiam a largura e o nome da
       tela chegava truncado em "Meus Candid...". Com !important viram
       alvos iguais de 30px e sobram ~40px para o titulo. O !important
       aqui e o mesmo caso ja documentado nos botoes deste bloco. */
    .main-col>header .btn{padding:5px 9px !important;min-height:44px !important;min-width:44px;font-size:14px;justify-content:center}
    /* TOPO DO CELULAR (18/09/2026, escolha do usuario): Atualizar, Notas
       e o sino entram no "Mais"; no topo ficam Vega, C-Whats, Mais e a
       conta, todos com 44px, e sobra lugar para o nome da tela. */
    #btn-atualizar,#btn-notas-topo,#btn-sino{display:none !important}
    #btn-topo-mais{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:0;white-space:nowrap;padding:2px 4px !important;line-height:1}
    #btn-topo-mais .tm-ico{font-size:18px;line-height:14px}
    #btn-topo-mais .tm-lbl{font-size:11px;font-weight:600}
    #btn-topo-mais .sino-badge{position:absolute;top:-4px;right:-4px}
    .menu-toggle{min-width:44px;min-height:44px}
    .usermenu-btn{min-width:44px;min-height:44px;justify-content:center}
    /* O guia da Vega entra no "Mais" no celular (com um ponto no botao
       enquanto houver tela por conhecer): no topo ele empurrava o nome
       da tela para fora. */
    #btn-guia-vega{display:none !important}
    #btn-usermenu{min-width:44px;min-height:44px;justify-content:center}
    .main-col>header{gap:2px !important;padding-left:6px;padding-right:6px}
    /* O nome da tela pode ocupar duas linhas: melhor "Meus / Candidatos"
       inteiro do que "Meus Ca..." */
    .topbar-titulo{min-width:0;flex:1 1 auto}
    .main-col>header .topbar-titulo b{font:700 13px/1.15 Inter,system-ui,sans-serif;white-space:normal;display:-webkit-box;hyphens:auto;
      -webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
    .main-col>header .spacer{display:none}
    #btn-topo-mais.tem-guia::after{content:'';position:absolute;top:6px;right:6px;width:8px;height:8px;border-radius:50%;background:#6B4FC4}
    .main-col>header #btn-voltar{font-size:17px !important;line-height:1;padding:1px 9px !important}
    .main-col>header{gap:6px}
    .main-col>header .topbar-info{display:none}
    .topbar-titulo b{font-size:14px}
    .topbar-titulo small{display:none}
    .topbar-ico{width:16px;height:16px}
    /* So as iniciais no celular: o nome e a seta custam ~150px de largura,
       que e o que o nome da TELA precisa pra caber inteiro. */
    .usermenu-nome,.usermenu-btn .kchev{display:none}
    .usermenu-btn{padding:3px;border-radius:50%;min-height:0;border-color:transparent;background:transparent}
    .usermenu-ava{width:26px;height:26px;font-size:10px}
    .usermenu{width:min(280px,calc(100vw - 24px))}
    /* A triagem cobre a TELA INTEIRA no celular, inclusive o topo fixo:
       e um modo de trabalho, nao um painel lateral — e com z-index menor
       que o do header, a linha do Voltar ficava escondida embaixo dele. */
    /* DENSIDADE DE APLICATIVO nas telas cheias de controle: os herois
       encolhem (40px de numero e medida de desktop) e os botoes do CRM,
       que carregam padding inline de desktop, cedem via !important — e
       o unico lugar da folha onde ele e bem-vindo, e por isso. */
    .fin-hero{padding:12px 14px;border-radius:12px;gap:10px}
    .fin-hero .val{font-size:26px;margin:3px 0 3px}
    .fin-hero .sub{font-size:11px;line-height:1.35}
    /* OS NUMEROS DE APOIO EM GRADE (06/09/2026). Eram um flex com 26px de
       intervalo: no celular cada numero estourava a largura e caia numa
       linha propria, e o heroi virava uma torre de quatro andares que
       sozinha comia meia tela, com o lado direito vazio em todas elas.
       Em grade que se ajusta sozinha, tres numeros cabem lado a lado em
       375px e dois dividem a largura ao meio. Nenhum texto sai: o rotulo
       e a explicacao so encolhem. Vale nos 19 herois do sistema, porque
       todos sao montados destas mesmas classes. */
    .fin-hero .sp{display:none}
    .fin-hero>div:first-child{min-width:0 !important}
    .fin-hero-lado{display:grid;grid-template-columns:repeat(auto-fit,minmax(92px,1fr));gap:10px;width:100%}
    .fin-hero-lado>div{min-width:0}
    /* Duas linhas de altura reservadas no rotulo: 'Aguardando voce'
       quebra em duas e, sem isso, so o numero dela descia — tres
       numeros lado a lado em alturas diferentes. */
    .fin-hero-lado .rot{font-size:9.5px;letter-spacing:.4px;min-height:2.2em}
    .fin-hero-lado .val{font-size:19px;margin:2px 0 1px}
    .fin-hero-lado .sub{font-size:10px;line-height:1.3}
    /* OS ATALHOS DO HEROI NO CELULAR (04/09/2026): alinhados a direita e
       quebrando onde coubesse, viravam uma escada torta de nove botoes.
       Em grade de duas colunas, iguais e alinhados a esquerda, cada um
       ocupa a mesma largura e o texto corta com reticencias em vez de
       empurrar o vizinho. */
    .fin-hero .hero-acoes{display:grid;grid-template-columns:1fr 1fr;gap:8px;width:100%;justify-content:stretch}
    .fin-hero .hero-acao{text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:9px 11px;font-size:12px}
    /* OS FILTROS DO RADAR NO CELULAR (04/09/2026): os campos carregam
       min-width de desktop e ficavam com larguras soltas, o Buscar
       encostado num campo e as opcoes cortadas na borda. Cada campo numa
       linha inteira, o campo do ramo com o Achar ao lado, o Buscar de
       ponta a ponta e as opcoes uma por linha. */
    .rd-filtros{gap:8px !important}
    .rd-filtros .f{flex:1 1 100% !important;min-width:0 !important}
    .rd-filtros .f select,.rd-filtros .f input{width:100%;box-sizing:border-box}
    .rd-filtros .rd-ramo>div{display:flex;gap:6px}
    .rd-filtros .rd-ramo>div input{flex:1 1 auto;min-width:0}
    .rd-filtros .rd-buscar{flex:1 1 100%;padding:11px 12px !important;font-size:14px}
    .rd-opcoes{flex-direction:column;gap:8px !important;align-items:flex-start}
    .rd-opcoes label{display:flex;align-items:center;gap:8px}
    .rd-opcoes .btn{align-self:stretch;text-align:center}
    /* A PAGINA nao rola de lado, nunca: a gaveta da Vega vive escondida
       alem da borda direita e vazava ~100px de largura pro body — todo
       o conteudo parecia "sangrar" pra fora no celular. O que for largo
       de verdade (kanban, tabela) rola dentro do proprio contêiner. */
    body{overflow-x:hidden}
    /* Os PRIMITIVOS encolhem juntos — botao, chip, cartao, tabela — e
       todas as telas encolhem de uma vez, porque todas sao montadas
       deles. O !important nos botoes existe porque varias telas carregam
       padding inline de desktop; e a excecao documentada da folha. */
    /* TAMANHO DE DEDO (18/09/2026): eram 34px e letra de 12,5px, abaixo
       dos 44px que um dedo acerta sem mirar. Quem tem pressa ou pouca
       prática errava o botão vizinho. 44px e letra de 14px em todo botão
       do sistema no celular. */
    .btn{padding:9px 14px !important;min-height:44px !important;font-size:14px}
    .btn-dash{padding:8px 12px !important;min-height:44px !important;font-size:14px}
    /* AS SUB-ABAS NO CELULAR (04/09/2026): treze chips quebrando em quatro
       linhas tortas. Viram uma faixa que rola de lado, numa linha so, como
       os apps fazem: o chip ativo fica visivel e os outros a um dedo de
       distancia. A sombra na borda direita diz que tem mais. */
    .subtabs{display:flex;flex-wrap:nowrap;gap:6px;overflow-x:auto;overflow-y:hidden;
      -webkit-overflow-scrolling:touch;scroll-snap-type:x proximity;padding:2px 2px 8px;margin:0 -2px 10px;
      scrollbar-width:none;-webkit-mask-image:linear-gradient(90deg,#000 88%,transparent)}
    .subtabs::-webkit-scrollbar{display:none}
    .subtab{padding:9px 14px;min-height:44px;font-size:14px;white-space:nowrap;flex:0 0 auto;scroll-snap-align:start}
    .grp{padding:10px;border-radius:10px;margin-bottom:10px}
    .op3tbl{font-size:12.5px}
    .op3tbl th,.op3tbl td{padding:7px 8px}
    .op3tbl th{font-size:10.5px}
    /* Cartoes de indicador empilham em coluna unica: no celular, duas
       colunas de minmax(220px) estouravam a largura e a pagina inteira
       ganhava rolagem lateral. */
    .fin-cards{grid-template-columns:1fr;gap:8px}
    .mc-toolbar{padding:8px;gap:8px}
    /* A barra de tela encolhe junto com o resto, e a busca volta aos 42px
       de alvo de dedo que o #kanban-busca tambem recupera aqui. */
    .tbar{padding:8px 10px;gap:8px}
    .tbar h2{font-size:15px}
    .tbar input[type=text].busca{min-height:42px}
    .tbar .tbar-sep{display:none}

    /* ---------------------------------------------------------------
       VAGAS E CONTRATOS NO CELULAR (10/09/2026)

       Media antes, em 375px: 166px de altura na barra de cima e 319 na
       de baixo. O campo de mes comecava em x=51 e todo o resto em x=21;
       a busca terminava em 286, o status em 189, os hunters em 200. Ou
       seja: seis controles, seis larguras, seis sobras diferentes. E o
       mesmo defeito que o topo do Kanban tinha, pela mesma causa
       (`flex-wrap` quebrando onde calha, mais um espacador de desktop
       empurrando o vizinho).

       Duas colunas iguais. O que se le de ponta a ponta (titulo, busca,
       mes) atravessa; o que vem em par (os quatro filtros, os botoes)
       fica com meia largura cada. Ninguem sobra num lugar diferente. */
    /* stretch, e nao center: "Contratacao Direta Docs/RP" ocupa duas
       linhas e o vizinho ficava mais baixo, com um degrau no meio da
       fila. Esticados, os dois botoes da linha tem a mesma altura. */
    .vg-tbar{display:grid;grid-template-columns:1fr 1fr;gap:8px;align-items:stretch}
    .vg-tbar .vg-espaco{display:none}
    .vg-tbar>*{min-width:0;width:100%}
    .vg-tbar .vg-tit{grid-column:1/-1}
    .vg-tbar .btn{width:100%;justify-content:center}
    .vg-filtros .busca{grid-column:1/-1}
    .vg-filtros .vg-mes{grid-column:1/-1}
    /* O input do mes tem largura propria do navegador; sem isto ele
       ignora o `width:100%` do pai e deixa a sobra de volta. */
    .vg-filtros .vg-mes input[type=month]{flex:1;min-width:0;width:100%}
    .mc-ctx{padding:10px 12px;gap:8px 10px}
    #view-capta input[type=text],#view-capta select{padding:7px 10px;font-size:13px}
    .helpIc{width:18px;height:18px;font-size:11px}
    /* O iframe do C·Whats: o inline height:calc(100vh - 118px) orcava o
       topo de DESKTOP; com o topo compacto do celular sobrava uma faixa
       morta embaixo do campo de resposta. Aqui a conta usa o topo real
       (compacto + safe-area) e o dvh, que respeita a barra do Safari. */
    /* As regras de altura do C·Whats saíram daqui: agora valem em toda
       largura, logo acima do bloco do celular. */
    .trg{width:100vw;z-index:45}
    .trg-topo{padding-top:calc(12px + env(safe-area-inset-top,0px))}
    .trg-voltar{display:inline-flex}
  }
  @media(max-width:760px){
    .mc-card{flex-wrap:wrap;row-gap:8px}
    .mc-info{flex:1 1 calc(100% - 48px)}
    .mc-badges{flex:1 1 100%;justify-content:flex-start}
    .mc-badges .mc-pill{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
    /* A FILA DE APROVACAO NO CELULAR (06/09/2026). Aprovar e Descartar
       ficavam na linha do nome e espremiam o texto numa coluna de ~170px:
       nome, vaga e as pilulas de distancia, formacao e turno quebravam em
       seis linhas. Os dois botoes descem para uma linha propria, de ponta
       a ponta, e o texto recebe a largura inteira do cartao. */
    .mc-pend{padding:9px 11px;gap:8px;row-gap:8px}
    .mc-pend-actions{flex:1 1 100%;width:100%}
    .mc-pend-actions .btn{flex:1 1 0;justify-content:center;text-align:center}
  }

  .mc-pill{font-size:10.5px;font-weight:700;padding:3px 9px;border-radius:20px;white-space:nowrap;line-height:1.6}
  .mc-pill.disc{background:#eef2f7;color:var(--navy)}
  .mc-pill.ader-alta{background:#e9f6ee;color:#1e7a46}
  .mc-pill.ader-media{background:#fdf1e3;color:#9a6412}
  .mc-pill.ader-baixa{background:#fbe9ea;color:#9B2226}
  .mc-pill.dist{background:#eae3fb;color:#6b46b0}
  .mc-pill.pool{background:#eaf1f8;color:var(--navy)}
  .mc-pill.inscrito{background:#F2B84B;color:#3B2A05}
  .mc-pill.veio{background:#FDF3DC;color:#8A5B00}
  .mc-pill.turno{background:#EDE7F6;color:#4A2E85}
  .mc-pill.turno.livre{background:#eef2f7;color:var(--navy)}
  .mc-chip-sep{display:inline-block;width:1px;height:18px;background:var(--line,#E2E9F3);margin:0 4px;vertical-align:middle}
  .mc-nota-fora{font-size:12px;color:var(--muted,#5B6B84);text-align:center;padding:2px 0 10px}
  .trg-turno{font:inherit;color:inherit;background:transparent;border:1px solid var(--line,#E2E9F3);border-radius:8px;padding:2px 6px;max-width:100%}
  .mc-pill.agenda{background:#e9f6ee;color:#1e7a46}
  /* "Trabalhando" é o único selo que TIRA a pessoa da jogada, e por isso
     é o único cinza: os outros são qualidades e competem entre si em
     cores; este diz "não conta", e cor forte aqui só disputaria atenção
     com o que importa na linha. */
  .mc-pill.trabalhando{background:#E7EBF2;color:#3F4A5F;border:1px solid #CFD8E6}
  /* Verde: e informacao boa pro hunter — quem aceita a cidade nao pode
     sumir da lista so porque mora longe. */
  .mc-pill.aceita{background:rgba(18,115,75,.10);color:var(--ok);border-color:rgba(18,115,75,.28)}

  .mc-empty{background:var(--card);border:1px dashed var(--line);border-radius:var(--r-lg);padding:30px 20px;text-align:center;color:var(--muted);font-size:13.5px}

  /* ---------------------------------------------------------------------
     Captação de Clientes (pré-funil comercial, 098).

     Era uma ILHA ESCURA dentro do painel claro. Virou claro em 15/08/2026,
     no mesmo padrão do Financeiro: quem usa as duas telas no mesmo dia
     estava trocando de tema no meio do trabalho, e a Captação parecia
     outro produto.

     Os tokens --cp-* CONTINUAM existindo — são o que toda a tela usa — mas
     agora apontam pros tokens do design system. Foi assim, e não trocando
     cor por cor nas ~60 regras abaixo, porque a indireção já estava lá: o
     tema todo vira num bloco só, e volta do mesmo jeito se preciso.
     --------------------------------------------------------------------- */
  #view-capta{
    --cp-bg:var(--bg); --cp-panel:var(--card); --cp-panel2:#EEF2F8; --cp-line:var(--line);
    --cp-ink:var(--ink); --cp-dim:var(--muted); --cp-faint:var(--muted);
    /* Acento é o azul da marca. O teal antigo (#2ee6c5) só tem contraste
       sobre fundo escuro — sobre branco reprovaria em qualquer medição. */
    --cp-accent:var(--navy); --cp-accent-dim:var(--navy2); --cp-blue:var(--navy); --cp-warn:var(--warn);
    /* Sem padding aqui: a aba é .wrap, e o espaçamento é o de lá (16px,
       10px no celular). Escrever padding neste seletor ANULA o do .wrap —
       id vence classe —, e a tela encostava na barra lateral. */
    background:transparent;color:var(--cp-ink);
  }
  #view-capta input,#view-capta select,#view-capta textarea{
    background-color:var(--cp-bg);border:1px solid var(--cp-line);color:var(--cp-ink);
    border-radius:7px;padding:9px 11px;font-family:var(--font-ui);font-size:14px;
  }
  #view-capta input::placeholder,#view-capta textarea::placeholder{color:var(--cp-faint)}
  #view-capta input:focus,#view-capta select:focus,#view-capta textarea:focus{outline:2px solid var(--cp-accent-dim);outline-offset:1px;border-color:transparent}
  #view-capta .btn{background:var(--cp-accent);color:#fff;border:1px solid transparent;font-weight:700}
  #view-capta .btn:hover{background:var(--cp-accent);filter:brightness(1.12)}
  #view-capta .btn.sec{background:transparent;border-color:var(--cp-line);color:var(--cp-dim);font-weight:500}
  #view-capta .btn.sec:hover{background:var(--cp-panel2);color:var(--cp-ink)}
  /* Verde do WhatsApp é a cor DA MARCA DELE — não segue o tema da tela. */
  #view-capta .capta-wa{background:#128C4A;color:#fff}
  #view-capta .capta-wa:hover{background:#128C4A;filter:brightness(1.12)}
  #view-capta .op3hint{color:var(--cp-faint)}
  #view-capta .op3err{color:var(--red)}
  /* A tabela do Radar volta a ser a do tema claro: com a aba clara, os
     remendos que a repintavam de escuro só brigariam com ela. */
  #view-capta .pnl{background:var(--cp-panel);border:1px solid var(--cp-line);color:var(--cp-ink)}
  #view-capta .helpIc{background:var(--cp-panel2);border-color:var(--cp-line);color:var(--cp-accent)}
  #view-capta details summary{color:var(--cp-dim)}

  .capta-cols{display:grid;grid-template-columns:400px 1fr;gap:16px;align-items:start}
  @media (max-width:980px){.capta-cols{grid-template-columns:1fr}}
  .capta-card{background:var(--cp-panel);border:1px solid var(--cp-line);border-radius:12px;padding:18px 20px}
  .capta-card-head{display:flex;align-items:center;gap:10px;margin:0 0 14px;padding-bottom:0;border-bottom:0}
  .capta-card-head h4{margin:0;font:500 11px var(--font-mono);color:var(--cp-faint);text-transform:uppercase;letter-spacing:.14em}
  .capta-step{width:24px;height:24px;border-radius:50%;background:var(--cp-accent);color:#fff;display:inline-flex;align-items:center;justify-content:center;font:800 12.5px var(--font-display);flex:0 0 auto}
  .capta-lbl{display:block;font-size:12px;color:var(--cp-dim);margin:11px 0 5px}
  .capta-duo{display:grid;grid-template-columns:1fr 1fr;gap:10px}
  @media (max-width:560px){.capta-duo{grid-template-columns:1fr}}
  .capta-dica{font-size:12.5px;color:var(--cp-dim);background:var(--cp-panel2);border-left:3px solid var(--cp-accent);border-radius:0 8px 8px 0;padding:9px 12px;margin:8px 0 2px;line-height:1.55}
  .capta-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px;margin-top:10px}
  .capta-atalho{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:8px;border:1px solid var(--cp-line);background:var(--cp-panel2);text-decoration:none;font-size:13px;font-weight:700;color:var(--cp-accent);flex:0 0 auto}
  .capta-atalho:hover{border-color:var(--cp-accent-dim)}
  .capta-atalho.wa{color:#128C4A}
  .capta-meter{display:flex;align-items:center;gap:14px;flex-wrap:wrap;background:var(--cp-panel);border:1px solid var(--cp-line);border-radius:10px;padding:14px 16px;margin-bottom:16px}
  .capta-meter-label{font:500 11px var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--cp-faint)}
  .capta-meter-bar{flex:1 1 200px;height:6px;background:var(--cp-panel2);border-radius:3px;overflow:hidden;min-width:140px}
  .capta-meter-bar i{display:block;height:100%;background:var(--cp-accent);border-radius:3px;transition:width .3s ease,background .3s ease}
  .capta-meter.over .capta-meter-bar i{background:var(--cp-warn)}
  .capta-meter-count{font-family:var(--font-mono);font-size:14px;font-weight:700;color:var(--cp-ink);white-space:nowrap}
  .capta-qlabel{font:500 10px var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--cp-faint);margin:14px 0 6px}
  .capta-qstring{background:var(--cp-bg);border:1px solid var(--cp-line);border-radius:7px;padding:10px 12px;font-family:var(--font-mono);font-size:12px;line-height:1.55;color:var(--cp-accent);word-break:break-word;margin-bottom:6px}
  .capta-qstring.google{color:var(--cp-blue)}
  /* Pipeline: os mc-* seguem os tokens da aba, então acompanharam a
     virada pro claro sem precisar de regra nova. */
  #view-capta .mc-stats{grid-template-columns:repeat(auto-fit,minmax(110px,1fr))}
  #view-capta .mc-stat{background:var(--cp-panel2);border-color:var(--cp-line);box-shadow:none}
  #view-capta .mc-stat:hover{transform:none;box-shadow:none}
  #view-capta .mc-stat b{color:var(--cp-ink);font-family:var(--font-mono)}
  #view-capta .mc-stat span{color:var(--cp-faint);text-transform:uppercase;letter-spacing:.08em;font-size:10px}
  #view-capta .mc-card{background:var(--cp-panel2);border-color:var(--cp-line)}
  #view-capta .mc-card:hover{border-color:var(--cp-accent-dim);box-shadow:none}
  #view-capta .mc-nome{color:var(--cp-ink)}
  #view-capta .mc-sub{color:var(--cp-faint)}
  #view-capta .mc-pill.agenda{background:#EAF2FB;color:var(--cp-accent)}
  #view-capta .mc-empty{background:transparent;border-color:var(--cp-line);color:var(--cp-faint)}

  .mc-pend-title{margin:0 0 10px;font:700 11.5px var(--font-ui);color:#9a6412;text-transform:uppercase;letter-spacing:.04em}
  .mc-pend{background:var(--card);border:1px solid #F2DDBA;border-left:3px solid #E8950C;border-radius:var(--r-md);padding:11px 14px;margin-bottom:8px;display:flex;justify-content:space-between;gap:10px;align-items:flex-start;flex-wrap:wrap}
  /* A linha da fila e um botao (06/09/2026): salta e ganha sombra no hover
     e no foco do teclado, para dizer que abre algo. Sem movimento para
     quem pediu menos movimento. */
  .mc-pend-clic{cursor:pointer;transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}
  .mc-pend-clic:hover,.mc-pend-clic:focus-visible{transform:translateY(-3px);box-shadow:0 16px 30px -18px rgba(11,19,43,.38);border-color:#E8950C;outline:none}
  .mc-pend-clic .btn{position:relative;z-index:1}
  @media (prefers-reduced-motion:reduce){.mc-pend-clic{transition:none}.mc-pend-clic:hover,.mc-pend-clic:focus-visible{transform:none}}
  .mc-pend-actions{display:flex;gap:6px;flex-shrink:0}
  .mc-pend-actions .btn{padding:6px 12px;font-size:11.5px;border-radius:8px}

/* Célula-link em tabela: leva pra outra tela sem parecer botão. É <button>
   e não <a> de propósito — não navega, só troca de aba, então não deve
   oferecer "abrir em nova guia" no menu do botão direito. */
.lnkbtn{background:none;border:0;padding:0;font:inherit;color:var(--brand-accent);
  text-decoration:underline;text-underline-offset:2px;cursor:pointer;text-align:left}
.lnkbtn:hover{color:var(--brand-dark);text-decoration-thickness:2px}
.lnkbtn:focus-visible{outline:2px solid var(--brand-accent);outline-offset:2px;border-radius:3px}

  /* ---------------------------------------------------------------------
     CRM — funil de abordagem em quadro
     ---------------------------------------------------------------------
     Colunas de largura FIXA com rolagem horizontal, e não um grid que se
     espreme: com 6 etapas, o grid deixava cada coluna com ~140px e o nome
     da empresa quebrava em três linhas. Rolar de lado é o comportamento
     que todo mundo já conhece de quadro de vendas.

     A idade do cartão usa a mesma convenção de cor do resto do sistema
     (âmbar = atenção, vermelho = atrasado) e NUNCA cor sozinha: vem sempre
     com o texto "há N dias" e com o ⏳, pra quem não distingue as duas.
     --------------------------------------------------------------------- */
  /* margin-left:auto empurrava o par pra direita sozinho. Na barra de
     ferramentas do funil quem empurra e o espacador que ja existe antes
     do "Nomear lista", e o par tem de ficar colado no fim da fila, depois
     do "Entregar lista a alguem" (07/09/2026). */
  .crm-toggle{display:flex;gap:0;flex:0 0 auto;border:1px solid var(--line);border-radius:9px;overflow:hidden}
  .fin-bloco-head .crm-toggle{margin-left:auto}
  /* A linha da barra do funil: os filtros ocupam o que precisarem e o par
     Quadro/Lista fica colado no fim. Quando os filtros nao aparecem (perfil
     sem lista nem permissao de mexer), o par vai pra direita sozinho. */
  /* Espaco em cima separa a barra do heroi; embaixo, pouco, porque ela
     agora encosta nas colunas em que age. */
  .crm-barra{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:12px 0 8px}
  .crm-barra .crm-filtros{flex:1 1 auto;margin-bottom:0}
  .crm-visao{display:inline-flex;align-items:center;gap:8px;flex:0 0 auto;margin-left:auto}
  .crm-toggle button{border:0;background:var(--card);color:var(--muted);font:600 12px/1 var(--font-ui,inherit);
    padding:7px 12px;cursor:pointer;min-height:34px}
  .crm-toggle button.on{background:var(--brand-dark);color:#fff}
  .crm-toggle button:focus-visible{outline:2px solid var(--navy);outline-offset:-2px}

  /* align-items:stretch faz toda coluna ter a altura da mais cheia. Com
     flex-start elas ficavam com alturas diferentes e o quadro parecia
     torto — que e o oposto do que um funil deve comunicar. */
  .crm-board{display:flex;gap:12px;overflow-x:auto;padding:4px 2px 10px;align-items:stretch}
  .crm-col{flex:0 0 252px;background:#F4F7FB;border:1px solid var(--line);border-radius:12px;padding:10px;
    display:flex;flex-direction:column;min-height:300px;max-height:62vh}
  .crm-col.sobre{border-color:var(--navy);background:#EAF2FB;box-shadow:0 0 0 2px rgba(41,111,186,.18)}
  .crm-col-head{padding:2px 2px 9px;border-bottom:1px solid var(--line);margin-bottom:8px}
  .crm-col-nome{font:600 12.5px var(--font-display);color:var(--ink)}
  .crm-col-nome b{color:var(--muted);font-weight:700}
  /* A soma é o número que a coluna existe pra mostrar — por isso é o
     maior tipo do cabeçalho, acima do rótulo da etapa. */
  .crm-col-val{font:700 17px var(--font-display);color:var(--navy);font-variant-numeric:tabular-nums;margin-top:3px}
  .crm-col-sub{font-size:11px;color:var(--muted);margin-top:2px}
  /* overflow-x escondido de proposito: o que rola de lado e o QUADRO,
     nunca o miolo de uma coluna. Sem isso um cartao apertado criava uma
     segunda barra de rolagem dentro da coluna. */
  .crm-drop{overflow-y:auto;overflow-x:hidden;display:flex;flex-direction:column;gap:8px;min-height:60px;padding-right:2px}
  .crm-vazia{font-size:13px;color:var(--muted);text-align:center;padding:14px 8px;line-height:1.4}
  .crm-vazia b{color:var(--ink);font-weight:600}

  .crm-card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:9px 10px;cursor:grab}
  .crm-card:active{cursor:grabbing}
  .crm-card.arrastando{opacity:.45}
  .crm-card.portal{border-left:3px solid var(--ok)}
  .crm-card-top{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:5px}
  .crm-emp{font:600 13px/1.3 var(--font-display);color:var(--ink)}
  /* 563: o nome da negociacao so aparece quando a empresa tem mais de uma
     aberta. Ele vem ANTES do nome da empresa de proposito: e o que
     diferencia dois cards que, sem ele, seriam identicos. */
  /* ===== 565: CATALOGO E ITENS DA NEGOCIACAO =========================
     O catalogo e uma lista de cartoes, e nao uma tabela: no celular
     tabela de 6 colunas vira rolagem lateral, e o que se le aqui e
     "nome, quanto custa e se repete". */
  .cat-lista{display:grid;gap:8px}
  .cat-item{border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:var(--card,#fff)}
  .cat-item.arq{opacity:.62}
  .cat-nome{font:600 14px/1.3 var(--font-display);color:var(--ink);display:flex;align-items:center;gap:6px;flex-wrap:wrap}
  .cat-desc{font-size:12.5px;color:var(--muted);margin-top:3px;line-height:1.45}
  .cat-pe{display:flex;align-items:center;gap:8px;margin-top:8px;flex-wrap:wrap}
  .cat-pe .sp{flex:1}
  .cat-selo{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.3px;
    padding:2px 7px;border-radius:999px;background:var(--line);color:var(--muted)}
  /* "todo mes" ganha cor porque e a informacao que muda a conta: e ela
     que separa receita que se repete de receita de uma vez so. */
  .cat-selo.rec{background:color-mix(in srgb,var(--ok,#1F7A4D) 14%,transparent);color:var(--ok,#1F7A4D)}
  .cat-selo.arq{background:transparent;border:1px solid var(--line)}

  /* A tabela de itens. No computador e uma grade de 7 colunas; no celular
     ela vira cartao empilhado, mais abaixo. */
  .neg-cab,.neg-item{display:grid;gap:6px;align-items:center;
    grid-template-columns:1.2fr 1.4fr 62px 92px 84px 96px 32px}
  .neg-cab{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.3px;
    color:var(--muted);padding:0 0 4px}
  .neg-item{padding:4px 0;border-bottom:1px solid var(--line)}
  /* O label some da grade no computador e os campos caem direto nas
     colunas, como se ele não existisse. */
  .neg-campo{display:contents}
  .neg-campo>span{display:none}
  .neg-item input,.neg-item select{font-size:12.5px;padding:6px 8px;width:100%;min-width:0}
  .neg-item .neg-num{text-align:right;font-variant-numeric:tabular-nums}
  .neg-total{display:flex;gap:16px;justify-content:flex-end;flex-wrap:wrap;
    margin-top:12px;padding-top:10px;border-top:2px solid var(--line)}
  .neg-total>div{display:flex;flex-direction:column;align-items:flex-end;gap:2px}
  .neg-total b{font:700 15px/1.2 var(--font-display);font-variant-numeric:tabular-nums}
  .neg-total .forte b{font-size:19px;color:var(--brand)}

  /* ===== 18/09: A NEGOCIACAO NUMA TELA SO ============================ */
  /* As secoes sao NUMERADAS e separadas por fio porque a tela tem tres
     assuntos (o que vende, os dados e a proposta) e a pessoa precisa
     saber em que pe esta sem ler tudo. */
  .neg-cab-tit{font:700 16px/1.3 var(--font-display);color:var(--ink);margin-bottom:10px}
  .neg-sec{border-top:1px solid var(--line);padding-top:12px;margin-top:14px}
  .neg-sec:first-of-type{border-top:0;padding-top:0;margin-top:0}
  .neg-sec-tit{font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;
    color:var(--muted);margin-bottom:8px}
  .neg-rodape{border-top:1px solid var(--line);margin-top:14px;padding-top:10px;
    font-size:12.5px;color:var(--muted);display:flex;gap:8px;align-items:center;flex-wrap:wrap}
  /* O pisca que leva o olho ate o que falta preencher. */
  @keyframes crmPiscar{0%,100%{box-shadow:0 0 0 0 transparent}
    30%,70%{box-shadow:0 0 0 3px color-mix(in srgb,var(--brand) 45%,transparent)}}
  .piscar{animation:crmPiscar 2.2s ease-in-out;border-radius:10px}
  .crm-fcampo{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
  .crm-fcampo select{font-size:12.5px;padding:6px 8px;max-width:170px}

  /* ===== 568: CAMPOS PERSONALIZADOS ================================== */
  /* O bloco dos campos da conta e SEPARADO por um fio: na ficha ele vem
     depois do cadastro de sempre, e sem a separacao as perguntas do ramo
     se misturavam com telefone e e-mail como se fossem a mesma coisa. */
  .cp-bloco{border-top:1px solid var(--line);margin-top:14px;padding-top:10px}
  .cp-tit{font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;
    color:var(--muted);margin-bottom:2px}
  .cp-item{border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin-bottom:8px}
  .cp-item.off{opacity:.6}
  .cp-top{display:flex;gap:6px;align-items:center;flex-wrap:wrap;font-size:13.5px}
  .cp-top .sp{flex:1}
  .cp-bloco textarea,.modal textarea{width:100%}

  /* ===== 567: OS FUNIS DA CONTA ====================================== */
  .crm-funil{display:flex;gap:6px;align-items:center}
  .crm-funil select{font-size:12.5px;padding:6px 8px;max-width:190px}
  .fun-item{border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin-bottom:8px}
  .fun-top{display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:13.5px}
  .fun-top .sp{flex:1}
  .fun-etapas{display:flex;gap:5px;flex-wrap:wrap;margin-top:7px}
  /* A cor diz o TIPO da etapa sem precisar de legenda: o que anda, o que
     ganha e o que perde se leem de relance. */
  .fun-et{font-size:11px;padding:3px 9px;border-radius:999px;border:1px solid var(--line);color:var(--muted)}
  .fun-et.ganha{border-color:#BFE3D0;background:#EAF7F0;color:var(--ok,#1F7A4D)}
  .fun-et.perdida{opacity:.7;text-decoration:line-through}
  .fun-pe{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap}
  .fun-cab,.fun-linha{display:grid;gap:8px;align-items:center;grid-template-columns:1fr 1fr 34px}
  .fun-cab{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.3px;
    color:var(--muted);padding:0 0 4px}
  .fun-linha{padding:5px 0;border-bottom:1px solid var(--line)}
  .fun-linha input,.fun-linha select{width:100%;min-width:0;font-size:13px;padding:7px 9px}

  /* ===== 566: A PROPOSTA, do lado da agencia ========================= */
  .prop-item{border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin-bottom:8px}
  .prop-top{display:flex;gap:8px;justify-content:space-between;align-items:baseline;font-size:13.5px}
  .prop-sub{display:flex;gap:10px;flex-wrap:wrap;font-size:12px;color:var(--muted);margin-top:3px}
  .prop-ok{font-size:12.5px;font-weight:700;color:var(--ok,#1F7A4D);margin-top:6px}
  .prop-nao{font-size:12.5px;color:var(--muted);margin-top:6px}
  /* O LINK NUM CAMPO, e nao num <a>: o que se faz com ele e COPIAR para
     mandar no WhatsApp, e nao abrir aqui dentro. */
  .prop-link{display:flex;gap:6px;margin-top:8px}
  .prop-link input{flex:1;min-width:0;font-size:12px;padding:6px 8px;
    font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
  .prop-nova{border-top:1px solid var(--line);margin-top:10px;padding-top:12px}
  .prop-nova textarea{width:100%;font-size:13px;padding:8px 10px}

  .crm-negoc{font-size:10.5px;font-weight:700;color:var(--brand);text-transform:uppercase;
    letter-spacing:.3px;margin-bottom:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .crm-selo{font-size:10.5px;font-weight:700;color:var(--ok);margin-top:3px}
  /* 524: a indicacao da rede tem cor propria, para nao se confundir com
     quem pediu contato pelo portal. */
  .crm-card.rede{border-left:3px solid #6B4FD8}
  .crm-selo.rede{color:#6B4FD8}
  .crm-sub{font-size:11px;color:var(--muted);margin-top:3px;line-height:1.4}
  /* Cinco botoes nao cabem numa linha de coluna estreita: deixando
     quebrar, o rodape vira duas linhas em vez de estourar a largura. */
  .crm-card-pe{display:flex;align-items:center;gap:4px;margin-top:8px;flex-wrap:wrap}
  .crm-card-pe .sp{flex:1}

  .crm-idade{font-size:10.5px;font-weight:700;padding:2px 7px;border-radius:999px;
    background:#EEF2F8;color:var(--muted)}
  .crm-idade.warn{background:#F7EFE0;color:var(--warn)}
  .crm-idade.late{background:#FAE9E9;color:var(--red)}
  .crm-valor{margin-left:auto;font:700 12px var(--font-display);color:var(--ok);
    font-variant-numeric:tabular-nums;cursor:pointer;border:0;background:none;padding:0}
  .crm-valor.vazio{color:var(--muted);font-weight:600;font-size:11px;text-decoration:underline;
    text-underline-offset:2px;cursor:pointer}
  .crm-conv{font-size:11px;font-weight:700;color:var(--ok)}

  .crm-mini{border:1px solid var(--line);background:var(--card);color:var(--muted);
    border-radius:7px;padding:4px 7px;font-size:11px;cursor:pointer;min-height:28px;
    white-space:nowrap}
  .crm-mini.forte{border-color:var(--navy);color:var(--navy);font-weight:700}
  .crm-mini:hover{background:#EEF2F8}
  .crm-mini:focus-visible{outline:2px solid var(--navy);outline-offset:1px}

  /* Fora do funil: presente, mas recolhido — o motivo é o que ensina, e
     a empresa perdida não pode competir por atenção com quem dá pra
     fechar ainda. */
  .crm-perdidos{margin-top:12px;border-top:1px solid var(--line);padding-top:10px}
  .crm-perdidos summary{font-size:12px;font-weight:600;color:var(--muted);cursor:pointer}
  .crm-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
  .crm-chip{display:inline-flex;align-items:center;gap:6px;background:#F4F7FB;border:1px solid var(--line);
    border-radius:999px;padding:3px 5px 3px 10px;font-size:11.5px;color:var(--ink)}
  .crm-chip i{font-style:normal;color:var(--muted);font-size:10.5px}
  .crm-chip button{border:0;background:none;color:var(--navy);cursor:pointer;font-size:12px;
    padding:2px 5px;border-radius:50%;min-height:22px}
  .crm-chip button:hover{background:#E2E8F2}

  /* A BARRA DE ETAPAS so existe no celular: no computador o quadro lado
     a lado continua sendo o certo, com arrasto e visao do funil inteiro. */
  .crm-etapas{display:none}

  /* ====================================================================
     O CRM NO CELULAR (17/09/2026)
     --------------------------------------------------------------------
     Medido no aparelho, a 375px: 564px de cabecalho antes do primeiro
     cartao, numa tela de 812px, e cinco dos seis botoes do cartao abaixo
     dos 44px de alvo de toque. E TRES rolagens disputando o mesmo
     polegar: a pagina desce, o quadro anda de lado, a coluna desce por
     dentro.
     Aqui o quadro vira UMA etapa por vez, escolhida numa barra de abas.
     Uma rolagem so, e o primeiro cartao aos ~180px.
     ==================================================================== */
  @media (max-width:760px){
    .crm-etapas{display:flex;gap:6px;overflow-x:auto;padding:8px 2px;margin-bottom:2px;
      -webkit-overflow-scrolling:touch;scrollbar-width:none}
    .crm-etapas::-webkit-scrollbar{display:none}
    .crm-etapas.tem-mais{-webkit-mask-image:linear-gradient(to right,#000 88%,transparent 100%);
      mask-image:linear-gradient(to right,#000 88%,transparent 100%)}
    .crm-etapa{flex:0 0 auto;min-height:44px;display:flex;align-items:center;gap:7px;
      padding:0 13px;border-radius:20px;border:1px solid var(--line);background:var(--card);
      color:var(--ink);font:600 13.5px var(--font-display);cursor:pointer;white-space:nowrap}
    .crm-etapa.on{background:var(--ink);border-color:var(--ink);color:#fff}
    .crm-etapa:focus-visible{outline:2px solid var(--navy);outline-offset:2px}
    .crm-etapa-n{font-size:12px;font-weight:700;padding:1px 7px;border-radius:10px;
      background:#EEF2F8;color:var(--muted)}
    .crm-etapa.on .crm-etapa-n{background:rgba(255,255,255,.2);color:#fff}

    /* UMA COLUNA POR VEZ. `ativa` e posta pelo crmEtapaPintar(); se o JS
       nao rodar, a primeira coluna aparece assim mesmo, para a tela nunca
       ficar vazia por causa de uma classe que faltou. */
    .crm-board{display:block;overflow-x:visible;padding:0 0 14px}
    .crm-col{display:none;flex-basis:auto;min-height:0;max-height:none;
      background:none;border:0;border-radius:0;padding:0}
    .crm-col.ativa,.crm-board .crm-col:first-child:not(.ativa)~.crm-col:not(.ativa){display:none}
    .crm-col.ativa{display:flex}
    /* O NOME DA ETAPA VOLTA (18/09/2026). Ele tinha saido com o
       argumento de que "a aba ja diz", mas so diz se a aba estiver a
       vista, e com duas de sete na largura quase nunca esta. */
    .crm-col-head{border:0;padding:0 2px 8px;margin:0}
    .crm-col-nome{display:block;font-size:13.5px}
    .crm-col-val{margin:0;font-size:15px}
    .crm-col-sub{margin-top:1px}
    .crm-drop{gap:10px}

    /* ALVOS DE TOQUE. 44px e o minimo para o dedo, e o cartao tinha
       botoes de 14px de altura. */
    .crm-card{padding:12px}
    .crm-card-pe{gap:6px;margin-top:10px}
    .crm-card-pe .crm-mini{min-height:44px;padding:0 12px;font-size:13px;border-radius:11px}
    .crm-valor,.crm-valor.vazio{font-size:13px;min-height:24px}
    .crm-emp{font-size:15.5px}
    /* 565: A TABELA DE ITENS VIRA CARTAO NO CELULAR. Sete colunas em
       375px dariam 40px cada, e o campo de preco nao caberia com o
       numero dentro. Empilhado, cada linha da proposta ocupa altura e
       nao largura — que e o que sobra no celular. */
    .neg-cab{display:none}
    .neg-item{grid-template-columns:1fr 1fr;gap:8px;padding:12px 0}
    /* Aqui o label volta a ser caixa, para o nome do campo aparecer em
       cima dele: sem isso eram tres numeros anonimos lado a lado. */
    .neg-campo{display:flex;flex-direction:column;gap:3px;min-width:0}
    .neg-campo>span{display:block;font-size:11px;font-weight:700;color:var(--muted);
      text-transform:uppercase;letter-spacing:.3px}
    .neg-campo:nth-child(1),.neg-campo:nth-child(2){grid-column:1 / -1}
    .neg-item input,.neg-item select{font-size:16px;padding:9px 10px;min-height:44px}
    .neg-item .crm-mini{grid-column:1 / -1;justify-self:end;min-height:38px;padding:0 14px}
    /* O TOTAL GRUDA NO PE da caixa: com tres itens na tela ele saia de
       vista, e ele e o numero pelo qual a pessoa esta ali. */
    .neg-total{justify-content:space-between;gap:10px;position:sticky;bottom:0;
      background:var(--card,#fff);padding-bottom:6px;z-index:2}
    .cat-pe .crm-mini{min-height:38px;padding:0 12px}
    /* 566: no celular o link quebra em duas linhas, senao o campo fica
       com 90px e nao se ve nem o dominio. */
    .prop-link{flex-direction:column}
    .prop-link .btn{min-height:44px}
    .prop-item .crm-mini{min-height:38px;padding:0 12px}
    /* 567: no celular o nome da etapa e o "corresponde a" empilham, pelo
       mesmo motivo da tabela de itens: duas colunas em 375px nao cabem
       com um select dentro. */
    .fun-cab{display:none}
    .fun-linha{grid-template-columns:1fr;gap:6px;padding:10px 0}
    .fun-linha input,.fun-linha select{font-size:16px;padding:9px 10px;min-height:44px}
    .fun-linha .crm-mini{justify-self:end;min-height:38px;padding:0 14px}
    .crm-funil{width:100%}
    .crm-funil select{flex:1;max-width:none;min-height:40px}
    .fun-pe .crm-mini{min-height:38px;padding:0 12px}
    .cp-item .crm-mini{min-height:38px;padding:0 12px}
    .cp-bloco input,.cp-bloco select{font-size:16px;min-height:44px}
    .crm-fcampo{width:100%}
    .crm-fcampo select{flex:1;max-width:none;min-height:40px}
    .neg-cab-tit{font-size:15px}
    /* 18/09: "⚙ Funis" e "🏷 Campos" quebravam o rotulo em duas linhas
       (48px de altura, o icone em cima e a palavra embaixo) porque o flex
       apertava o botao ate o texto nao caber. */
    .crm-funil button,.crm-fcampo button{white-space:nowrap}
    /* O BOTAO DA NEGOCIACAO OCUPA A LINHA INTEIRA no celular, e no alto do
       pe do cartao. Ele estava na direita, embaixo do "+ Novo lead"
       flutuante (z-index 15): o centro recebia o clique, mas a borda nao —
       e dedo nao mira em centro de botao de 90px. */
    .crm-card-pe{position:relative;z-index:1}
    /* A classe e PROPRIA do botao da negociacao: `.crm-mini.forte` sozinho
       tambem casa com o "→ Kanban", que nao deve virar linha inteira. */
    .crm-card-pe .crm-neg{flex:1 0 100%;order:-1;margin-bottom:6px;
      min-height:40px;justify-content:center}
    .crm-sub{font-size:12.5px}
    .crm-passo,.crm-passo.vazio{min-height:44px;font-size:12.5px;padding:0 10px}
    .crm-passo-ok{min-height:44px;min-width:32px}

    /* "+ NOVO LEAD" NO ALCANCE DO POLEGAR. No topo da tela ele exigia
       esticar o dedo ate o alto do aparelho, que e onde nenhuma mao
       chega segurando o celular. Fica acima do botao de reportar. */
    /* z-index 15, e nao 40: ABAIXO do .overlay (20). Ancorado no rodape e
       clicavel, ele apareceria por cima do modal e cobriria o botao
       Cancelar — foi o que o verificador de camadas apontou. Sob o veu,
       ele some junto com o resto da tela, que e o certo. */
    /* `height` e nao so `min-height`: o .btn traz padding proprio e o
       botao ficava com 34px, abaixo do alvo de dedo que esta regra
       existe para garantir. O !important vence o style inline que o JS
       escreve no botao (padding e font-size de desktop). */
    .crm-lead{position:fixed;right:14px;bottom:78px;z-index:15;
      height:52px;min-height:52px;padding:0 20px!important;border-radius:26px;
      font-size:15px!important;font-weight:600;display:inline-flex;align-items:center;
      box-shadow:0 6px 18px rgba(11,19,43,.22)}
    /* Folga no fim da lista (18/09/2026): os dois botoes flutuantes
       (Novo lead e Reportar) ocupam ~130px do canto de baixo, e o ultimo
       cartao da lista ficava com os botoes do pe embaixo deles, sem
       como rolar mais. Com a folga, todo cartao sobe acima deles. */
    #view-capta{padding-bottom:150px}
    /* DUAS TELAS MAIS LARGAS QUE O CELULAR (achado em 18/09/2026). A
       tabela do Historico media 1331px e o cabecalho do Painel 762px, e
       com isso a tela inteira ficava larga: o botao Reportar ia parar a
       um metro da borda e tudo encolhia. A tabela rola dentro dela; o
       cabecalho do Painel quebra em linhas. */
    #hist-body{overflow-x:auto;-webkit-overflow-scrolling:touch}
    #view-dash .thead{flex-wrap:wrap;row-gap:8px}
    #view-dash .thead .tsel{max-width:100%;flex-wrap:wrap}

    /* AS SUBABAS EM UMA LINHA QUE DESLIZA, em vez de duas que empilham.
       Mesmo gesto da barra de etapas logo abaixo: o dedo arrasta de lado
       onde ha coisa demais para a largura. */
    #view-capta .tbar{flex-wrap:nowrap;overflow-x:auto;gap:6px;padding-bottom:6px;
      -webkit-overflow-scrolling:touch;scrollbar-width:none}
    #view-capta .tbar::-webkit-scrollbar{display:none}
    #view-capta .tbar>*{flex:0 0 auto}

    /* "QUADRO OU LISTA" SAI DO CELULAR: com a etapa virando aba, a tela
       JA e uma lista, e o botao passaria a oferecer a escolha entre duas
       coisas que viraram a mesma. No computador ele continua.

       ESCONDE-SE O PAR, E NAO A BARRA: a barra `.crm-barra` CONTEM
       tambem os filtros e o "+ Novo lead". Escondendo ela inteira, o
       botao flutuante sumia junto — `display:none` no pai apaga o filho
       mesmo com position:fixed. Foi o defeito que o print do celular
       mostrou. */
    #view-capta .crm-visao{display:none}

    /* O aviso do teto em uma linha: a contagem e o botao de carregar. */
    .crm-teto-cel{display:flex;align-items:center;gap:10px;flex-wrap:nowrap;
      padding:8px 10px;font-size:12.5px;line-height:1.3}
    .crm-teto-cel>span{flex:1;min-width:0}
    .crm-teto-cel .btn{flex:0 0 auto;min-height:36px;white-space:nowrap}
  }

  /* Próximo passo no cartão do funil. Cinza = combinado no futuro,
     âmbar = é hoje, vermelho = passou. O texto sempre acompanha a cor
     ("hoje", "atrasado 3d"), nunca só o fundo. */
  .crm-passo{display:flex;align-items:center;gap:5px;margin-top:7px;padding:4px 6px;
    border-radius:7px;background:#EEF2F8;font-size:11px;color:var(--muted)}
  .crm-passo.hoje{background:#F7EFE0;color:var(--warn)}
  .crm-passo.venceu{background:#FAE9E9;color:var(--red)}
  .crm-passo b{margin-left:auto;font-size:10.5px;white-space:nowrap}
  .crm-passo-txt{cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}
  .crm-passo-ok{border:0;background:none;cursor:pointer;color:inherit;font-size:12px;
    padding:0 2px;line-height:1;min-height:20px;flex:0 0 auto}
  .crm-passo-ok:hover{color:var(--ok)}
  .crm-passo-ok:focus-visible{outline:2px solid var(--navy);outline-offset:1px;border-radius:4px}
  /* O convite pra marcar o primeiro passo fica discreto mas presente:
     cartão sem passo e o que precisa ser visto. */
  .crm-passo.vazio{border:1px dashed var(--line);background:none;color:var(--muted);
    width:100%;text-align:left;cursor:pointer;font-size:11px;min-height:26px}
  .crm-passo.vazio:hover{border-color:var(--navy);color:var(--navy)}

  /* Chapéu do cartão: o ramo, quando o nome da empresa é na verdade o
     nome do dono (razão social de empresário individual). Pequeno e
     maiúsculo pra ler antes do nome sem competir com ele. */
  .crm-ramo{font-size:10px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;
    color:var(--navy);margin-bottom:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

  /* Visão de prédios: barra de cobertura (quanto do prédio já está
     mapeado). Trilha cinza = o prédio inteiro, preenchimento azul = o
     que já é seu. O número vem do lado porque cor sozinha não informa. */
  .edif-barra{display:inline-block;vertical-align:middle;width:70px;height:8px;border-radius:999px;
    background:#E2E8F2;overflow:hidden}
  .edif-barra i{display:block;height:100%;background:var(--navy);border-radius:999px}
  .edif-pct{font-size:11.5px;font-weight:700;color:var(--muted);margin-left:7px;
    font-variant-numeric:tabular-nums}
  .edif-salas{width:76px;text-align:right;padding:4px 6px;font-size:12.5px;
    border:1px solid var(--line);border-radius:7px;font-variant-numeric:tabular-nums}
  .edif-salas:focus{outline:2px solid var(--navy);outline-offset:-1px;border-color:var(--navy)}

  /* Barra de recorte do funil (lista importada + responsável). */
  .crm-filtros{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:2px 0 12px}
  .crm-filtros select{padding:6px 10px;font-size:12.5px;border:1px solid var(--line);
    border-radius:8px;background-color:var(--card);color:var(--ink);min-height:34px;max-width:280px}
  .crm-filtros select:focus{outline:2px solid var(--navy);outline-offset:-1px}
  /* Aviso de teto: a tela recebeu menos do que existe. Âmbar porque é
     atenção, não erro — e some sozinho quando o filtro resolve. */
  .crm-teto{background:#F7EFE0;color:var(--warn);border-radius:9px;padding:8px 12px;
    font-size:12.5px;margin-bottom:12px}
  .crm-dono{font-size:10.5px;color:var(--muted);margin-top:5px}

  /* ---------------------------------------------------------------------
     Script de abordagem — painel que desliza pela direita
     ---------------------------------------------------------------------
     POR CIMA e não ao lado: empurrar o conteúdo faria o quadro do funil
     re-renderizar e a coluna que a pessoa estava lendo saltar de lugar no
     meio da ligação. Fixed + transform não toca no layout de trás.

     Fica FORA da tela por padrão (translateX) em vez de display:none,
     pra deslizar de verdade e pra que quem usa leitor de tela não tropece
     num painel invisível — visibility:hidden resolve as duas coisas.
     --------------------------------------------------------------------- */
  .scr{position:fixed;top:0;right:0;bottom:0;width:min(420px,92vw);z-index:60;
    background:var(--card);border-left:1px solid var(--line);
    box-shadow:-14px 0 34px rgba(11,19,43,.14);
    display:flex;flex-direction:column;
    transform:translateX(100%);visibility:hidden;
    transition:transform .22s ease, visibility .22s}
  body.scr-on .scr{transform:none;visibility:visible}
  @media (prefers-reduced-motion:reduce){ .scr{transition:none} }

  .scr-topo{display:flex;align-items:flex-start;gap:10px;padding:14px 16px;
    background:var(--brand-dark);color:#fff}
  .scr-emp{font:600 15px/1.25 var(--font-display)}
  .scr-sub{font-size:11.5px;color:#A9BCDF;margin-top:3px}
  .scr-x{margin-left:auto;background:none;border:0;color:#A9BCDF;font-size:17px;
    cursor:pointer;line-height:1;padding:2px 4px;min-height:30px}
  .scr-x:hover{color:#fff}
  .scr-x:focus-visible{outline:2px solid #fff;outline-offset:2px;border-radius:5px}

  .scr-canal{display:flex;gap:0;padding:10px 16px 0}
  .scr-canal button{flex:1;border:1px solid var(--line);background:var(--card);
    color:var(--muted);font:600 12.5px/1 var(--font-ui,inherit);padding:9px 8px;cursor:pointer;min-height:38px}
  .scr-canal button:first-child{border-radius:9px 0 0 9px}
  .scr-canal button:last-child{border-radius:0 9px 9px 0;border-left:0}
  .scr-canal button.on{background:var(--navy);border-color:var(--navy);color:#fff}
  .scr-canal button:focus-visible{outline:2px solid var(--navy);outline-offset:2px}

  .scr-lista{flex:1;overflow-y:auto;padding:12px 16px}
  .scr-bloco{border:1px solid var(--line);border-radius:10px;margin-bottom:8px;overflow:hidden}
  .scr-bloco.aberto{border-color:var(--navy)}
  .scr-cab{width:100%;display:flex;align-items:center;gap:8px;background:#F4F7FB;border:0;
    padding:10px 12px;cursor:pointer;font:600 13px var(--font-display);color:var(--ink);
    text-align:left;min-height:42px}
  .scr-cab i{margin-left:auto;font-style:normal;color:var(--muted)}
  .scr-cab:focus-visible{outline:2px solid var(--navy);outline-offset:-2px}
  .scr-corpo{padding:10px 12px 12px}
  .scr-obj{font-size:11.5px;color:var(--muted);margin-bottom:8px;font-style:italic}
  /* Entrelinha alta de propósito: este texto é LIDO EM VOZ ALTA durante
     uma ligação, e linha apertada faz perder o lugar ao olhar de volta. */
  .scr-corpo p{margin:0 0 9px;font-size:13.5px;line-height:1.65;color:var(--ink)}
  .scr-rot{font-size:11px;font-weight:700;letter-spacing:.5px;color:var(--navy);
    margin:4px 0 6px}
  .scr-esp{height:6px}
  .scr-acoes{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}
  .scr-acoes .btn{padding:6px 11px;font-size:12px;min-height:32px}
  .scr-pe{padding:12px 16px;border-top:1px solid var(--line);background:#F4F7FB}

  @media (max-width:760px){
    /* No celular ocupa a tela inteira: 420px numa tela de 375 deixaria
       uma faixa inútil do funil aparecendo atrás. */
    .scr{width:100vw}
  }

  /* Seletor de modalidade do script. Fica ABAIXO do canal porque muda o
     conteúdo inteiro, não só qual bloco aparece — a hierarquia visual
     tem que dizer que essa escolha é a mais pesada das duas. */
  .scr-mod{padding:10px 16px 0}
  .scr-mod label{display:block;font-size:11px;font-weight:700;letter-spacing:.5px;
    text-transform:uppercase;color:var(--muted);margin-bottom:5px}
  .scr-mod select{width:100%;padding:8px 10px;font-size:13px;border:1px solid var(--line);
    border-radius:9px;background-color:var(--card);color:var(--ink);min-height:38px}
  .scr-mod select:focus{outline:2px solid var(--navy);outline-offset:-1px}

  /* ---------------------------------------------------------------------
     Guia em balões
     ---------------------------------------------------------------------
     O "buraco" no escuro é feito com box-shadow gigante NO PRÓPRIO alvo,
     não com um overlay separado: assim o elemento continua clicável e
     não há uma segunda camada pra sair de sincronia quando a página
     rola. O anel azul por dentro dá o contorno.
     --------------------------------------------------------------------- */
  .tour-foco{position:relative;z-index:71;border-radius:10px;
    box-shadow:0 0 0 3px var(--navy), 0 0 0 9999px rgba(11,19,43,.58)}
  @media (prefers-reduced-motion:no-preference){
    .tour-foco{transition:box-shadow .18s ease}
  }

  .tour-balao{position:fixed;z-index:72;width:min(330px,90vw);
    background:var(--card);border:1px solid var(--line);border-radius:12px;
    box-shadow:0 16px 40px rgba(11,19,43,.24);padding:14px 15px}
  .tour-topo{font:700 14px var(--font-display);color:var(--ink);margin-bottom:6px}
  .tour-txt{font-size:13px;line-height:1.6;color:var(--muted)}
  .tour-txt b{color:var(--ink)}
  .tour-pe{display:flex;align-items:center;gap:6px;margin-top:12px}
  .tour-cont{font-size:11.5px;color:var(--muted);margin-right:auto;
    font-variant-numeric:tabular-nums}
  .tour-b{border:1px solid var(--navy);background:var(--navy);color:#fff;
    border-radius:8px;padding:6px 12px;font-size:12.5px;font-weight:600;
    cursor:pointer;min-height:32px}
  .tour-b.sec{background:var(--card);color:var(--muted);border-color:var(--line)}
  .tour-b:focus-visible{outline:2px solid var(--navy);outline-offset:2px}

  /* Tela vazia de Prédios: ensina em vez de só avisar. */
  .edif-vazio-passos{display:flex;flex-direction:column;gap:8px;
    font-size:13px;line-height:1.6;color:var(--muted)}
  .edif-vazio-passos b{color:var(--ink)}
  .edif-vazio-ex{margin-top:14px;overflow-x:auto}
  .edif-vazio-ex .rot{font-size:11px;font-weight:700;letter-spacing:.5px;
    text-transform:uppercase;color:var(--muted);margin-bottom:6px}

  .crm-filtros input[type=search]{padding:6px 10px;font-size:12.5px;border:1px solid var(--line);
    border-radius:8px;background:var(--card);color:var(--ink);min-height:34px;min-width:190px}
  .crm-filtros input[type=search]:focus{outline:2px solid var(--navy);outline-offset:-1px}

  /* Abas da ficha da empresa (Script | Histórico). */
  .scr-abas{display:flex;gap:0;padding:10px 16px 0}
  .scr-abas button{flex:1;border:0;border-bottom:2px solid var(--line);background:none;
    color:var(--muted);font:600 13px/1 var(--font-display);padding:10px 8px;cursor:pointer;min-height:40px}
  .scr-abas button.on{color:var(--navy);border-bottom-color:var(--navy)}
  .scr-abas button:focus-visible{outline:2px solid var(--navy);outline-offset:-2px}

  /* Linha do tempo: o fio à esquerda liga os eventos e mostra que são
     uma sequência, não uma lista solta de avisos. */
  .scr-nota{display:flex;gap:8px;align-items:flex-start;margin-bottom:14px}
  .scr-nota textarea{flex:1;font-size:13px;line-height:1.5;padding:8px 10px;
    border:1px solid var(--line);border-radius:9px;resize:vertical;color:var(--ink);background:var(--card)}
  .scr-nota textarea:focus{outline:2px solid var(--navy);outline-offset:-1px}
  .scr-nota .btn{padding:8px 14px;font-size:12.5px;min-height:38px;white-space:nowrap}

  .scr-linha{list-style:none;margin:0;padding:0 0 0 6px;border-left:2px solid var(--line)}
  .scr-ev{display:flex;gap:9px;padding:0 0 14px 12px;position:relative}
  .scr-ev-ico{position:absolute;left:-15px;top:0;width:20px;height:20px;border-radius:50%;
    background:#EEF2F8;color:var(--muted);display:flex;align-items:center;justify-content:center;
    font-size:10px;border:2px solid var(--card)}
  /* Anotação de gente se destaca do que o sistema anotou sozinho: é a
     informação que ninguém consegue deduzir depois. */
  .scr-ev.nota .scr-ev-ico{background:#EAF2FB;color:var(--navy)}
  .scr-ev.nota .scr-ev-txt{color:var(--ink);font-weight:600}
  .scr-ev-txt{font-size:12.5px;line-height:1.5;color:var(--muted)}
  .scr-ev-pe{font-size:10.5px;color:var(--muted);margin-top:2px;opacity:.85}

  /* "ver mais" no pé da coluna: continua a lista sem recarregar a tela. */
  .crm-vermais{width:100%;border:1px dashed var(--line);background:none;color:var(--navy);
    border-radius:8px;padding:7px;font-size:11.5px;font-weight:600;cursor:pointer;min-height:32px}
  .crm-vermais:hover{border-color:var(--navy);background:#EAF2FB}
  .crm-vermais:focus-visible{outline:2px solid var(--navy);outline-offset:1px}
  .crm-teto .dim2{opacity:.85}

  /* Resultado: barra de conversão. Três estados e não dois — o que está
     em aberto ainda pode virar, e pintá-lo de perda mentiria. */
  .des-barra{display:flex;height:9px;border-radius:999px;overflow:hidden;background:#E2E8F2}
  .des-barra i{display:block;height:100%}
  .des-barra i.g{background:var(--ok)}
  .des-barra i.p{background:var(--red)}
  .des-motivos{display:flex;flex-direction:column;gap:8px}
  .des-motivo{display:flex;align-items:center;gap:10px;font-size:12.5px;color:var(--ink)}
  .des-motivo>span{min-width:170px}
  .des-motivo>b{font-variant-numeric:tabular-nums;min-width:28px;text-align:right}
  .des-mbarra{flex:1;height:8px;border-radius:999px;background:#E2E8F2;overflow:hidden}
  .des-mbarra i{display:block;height:100%;background:var(--warn);border-radius:999px}

  /* Botão do Dashboard na barra do CRM: cor própria porque ele não é
     "mais uma aba" — é de onde se parte e pra onde se volta. Verde
     escuro sobre branco dá 5,9:1; ativo, branco sobre verde dá 5,9:1
     também, então lê bem nos dois estados. */
  .btn-dash{border:1px solid var(--ok);background:var(--card);color:var(--ok);
    border-radius:10px;font:600 13px/1 var(--font-ui,inherit);cursor:pointer}
  .btn-dash:hover{background:#E4F1EA}
  .btn-dash.on{background:var(--ok);color:#fff}
  .btn-dash:focus-visible{outline:2px solid var(--ok);outline-offset:2px}

  /* Separador entre "como estou hoje" e "o que tem funcionado". */
  .des-sep{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;
    margin:26px 0 12px;padding-top:18px;border-top:1px solid var(--line)}
  .des-sep h3{margin:0;font:700 16px var(--font-display);color:var(--ink)}
  .des-sep .dim{font-size:12px;color:var(--muted)}

/* ---- Vega: painel de conversa (gaveta a direita) -------------------- */
#vega-painel{position:fixed;top:0;right:0;height:100%;width:min(400px,100vw);
  background:var(--card);border-left:1px solid var(--line);z-index:75;
  display:flex;flex-direction:column;transform:translateX(105%);
  transition:transform .22s ease;box-shadow:-10px 0 34px rgba(10,20,40,.16)}
#vega-painel.aberto{transform:none}
/* Cabeçalho escuro: separa a conversa do resto do painel e dá lugar
   próprio pro nome dela, em vez de três textos disputando a linha. */
.vega-cab{display:flex;align-items:center;gap:10px;padding:13px 14px;
  background:linear-gradient(135deg,#0B132B 0%,#16305C 100%);color:#fff}
/* A esfera da Vega: o mesmo desenho do convite de investidor e do pitch,
   para ela ser reconhecida como a mesma em todo lugar (13/09/2026). */
.vega-ava{width:32px;height:32px;flex:0 0 32px;border-radius:50%;
  background:radial-gradient(circle at 35% 30%,#fff 0 7%,#4FD8E8 24%,#2E7DD1 56%,#12325C 100%);
  box-shadow:0 0 14px rgba(79,216,232,.6);animation:vegaOrb 4s ease-in-out infinite}
@keyframes vegaOrb{50%{transform:scale(1.08);box-shadow:0 0 22px rgba(79,216,232,.9)}}
.vega-orb-mini{display:inline-block;width:16px;height:16px;border-radius:50%;vertical-align:-3px;
  background:radial-gradient(circle at 35% 30%,#fff 0 7%,#4FD8E8 24%,#2E7DD1 56%,#12325C 100%);
  box-shadow:0 0 8px rgba(79,216,232,.55)}
.vega-cab-txt{display:flex;flex-direction:column;line-height:1.25;min-width:0}
.vega-cab-txt b{font-size:14.5px;font-weight:700;letter-spacing:.01em}
.vega-cab-txt small{font-size:11px;color:#A9C2E4;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis}
.vega-cab-btn{margin-left:auto;width:30px;height:30px;flex:0 0 30px;
  display:flex;align-items:center;justify-content:center;cursor:pointer;
  border:1px solid rgba(255,255,255,.22);background:rgba(255,255,255,.08);
  color:#fff;border-radius:9px;font-size:13px;transition:background .15s}
.vega-cab-btn+.vega-cab-btn{margin-left:0}
.vega-cab-btn:hover{background:rgba(255,255,255,.2)}

/* Bolhas no desenho do convite de investidor: a dela cinza-azulada sem
   borda, a da pessoa escura, as duas com o canto de quem fala. */
.vega-msgs{flex:1;overflow:auto;padding:16px 14px;display:flex;
  flex-direction:column;gap:10px;background:var(--card)}
.vega-msg{max-width:88%;padding:10px 13px;border-radius:16px;font-size:14px;
  line-height:1.55;white-space:pre-line;overflow-wrap:break-word}
.vega-msg.eu{align-self:flex-end;color:#fff;border-bottom-right-radius:6px;
  background:#0A1120}
.vega-msg.ela{align-self:flex-start;background:#EDF2F9;
  border-bottom-left-radius:6px;color:var(--ink)}
.vega-msg.ela b{font-weight:700;color:#0A1120}

/* Estado vazio: ocupa o espaço em vez de deixar a gaveta com um vão. */
.vega-intro{align-self:stretch;text-align:center;padding:22px 10px 6px;
  display:flex;flex-direction:column;align-items:center;gap:8px}
.vega-intro-ava{width:52px;height:52px;border-radius:50%;
  background:radial-gradient(circle at 35% 30%,#fff 0 7%,#4FD8E8 24%,#2E7DD1 56%,#12325C 100%);
  box-shadow:0 0 20px rgba(79,216,232,.6);animation:vegaOrb 4s ease-in-out infinite}
.vega-intro b{font-size:15px;color:var(--ink)}
.vega-intro p{margin:0;font-size:12.5px;line-height:1.55;color:var(--muted);
  max-width:30ch}

.vega-sug{align-self:stretch;display:flex;flex-direction:column;gap:7px;
  margin-top:2px}
.vega-sug button{display:flex;align-items:center;gap:8px;text-align:left;
  border:1px solid var(--line);background:var(--card);color:var(--navy);
  border-radius:12px;padding:10px 12px;font-size:12.5px;cursor:pointer;
  transition:border-color .15s,transform .15s,box-shadow .15s}
.vega-sug button span{flex:1}
.vega-sug button i{font-style:normal;opacity:.45;transition:transform .15s}
.vega-sug button:hover{border-color:var(--brand-accent);
  box-shadow:0 2px 10px rgba(46,107,196,.12)}
.vega-sug button:hover i{transform:translateX(3px);opacity:.9}

/* Três bolinhas enquanto ela pensa. */
.vega-msg.vega-digita{display:flex;gap:5px;align-items:center;padding:13px}
.vega-digita i{width:6px;height:6px;border-radius:50%;background:var(--muted);
  opacity:.4;animation:vegaPulso 1.1s infinite ease-in-out}
.vega-digita i:nth-child(2){animation-delay:.15s}
.vega-digita i:nth-child(3){animation-delay:.3s}
@keyframes vegaPulso{0%,80%,100%{opacity:.25;transform:translateY(0)}
  40%{opacity:.95;transform:translateY(-3px)}}
@media (prefers-reduced-motion: reduce){.vega-digita i{animation:none;opacity:.5}.vega-ava,.vega-intro-ava{animation:none}}

.vega-pe{border-top:1px solid var(--line);background:var(--card);
  padding:10px 12px calc(10px + env(safe-area-inset-bottom,0px))}
.vega-input{display:flex;gap:8px;align-items:flex-end;
  border:1px solid var(--line);border-radius:22px;padding:5px 5px 5px 14px;
  background:var(--card);transition:border-color .15s,box-shadow .15s}
.vega-input:focus-within{border-color:var(--brand-accent);
  box-shadow:0 0 0 3px rgba(46,107,196,.13)}
.vega-input textarea{flex:1;resize:none;font-size:13px;border:0;background:none;
  padding:8px 0;max-height:120px;line-height:1.45;font-family:inherit;color:var(--ink)}
.vega-input textarea:focus{outline:none;box-shadow:none}
#vega-envia{flex:0 0 34px;width:34px;height:34px;border:0;border-radius:50%;
  display:flex;align-items:center;justify-content:center;cursor:pointer;
  background:#0A1120;color:#fff;
  transition:transform .15s,opacity .15s}
#vega-envia:hover{transform:scale(1.06)}
#vega-envia:disabled{opacity:.45;cursor:default;transform:none}
/* O microfone: mesmo tamanho do Enviar, mas discreto ate ser tocado —
   quem nunca clicou nao devia nem notar que ha um segundo botao redondo
   ali. Ligado (ouvindo) vira vermelho e pulsa, no mesmo desenho do
   microfone do C-Whats (pw-btn-mic--on), pra quem ja usa um reconhecer o
   outro sem pensar. display:none por padrao — vegaVozBoot() so revela
   quando o navegador tem SpeechRecognition de verdade. */
#vega-mic{flex:0 0 34px;width:34px;height:34px;border:0;border-radius:50%;
  display:flex;align-items:center;justify-content:center;cursor:pointer;
  background:var(--bg);color:var(--muted);border:1px solid var(--line);
  transition:transform .15s,background .15s,color .15s}
#vega-mic:hover{color:var(--brand-accent);border-color:var(--brand-accent)}
#vega-mic.vega-mic--on{background:#d64545;border-color:#d64545;color:#fff;
  animation:vegaMicPulsa 1.1s ease-in-out infinite}
@keyframes vegaMicPulsa{50%{opacity:.55}}
@media (prefers-reduced-motion: reduce){
  #vega-mic.vega-mic--on{animation:none;opacity:.75}
}
.vega-aviso{font-size:10.5px;line-height:1.4;color:var(--muted);
  text-align:center;padding:8px 6px 0}

/* O 👂 do cabecalho: escuta continua (opt-in, desligada por padrao —
   ver vegaEscutaBoot()). Ligado fica com um fundo solido pra ficar claro
   que o microfone pode captar sem clique nenhum; captando de verdade
   (ouvindo agora) pulsa em vermelho, igual ao #vega-mic, pro mesmo
   sinal visual valer nos dois microfones da tela. display:none por
   padrao, so revela se o navegador suportar. */
#vega-escuta.vega-escuta--on{background:rgba(255,255,255,.28)}
#vega-escuta.vega-escuta--ouvindo{background:#d64545;animation:vegaMicPulsa 1.1s ease-in-out infinite}
@media (prefers-reduced-motion: reduce){
  #vega-escuta.vega-escuta--ouvindo{animation:none;opacity:.75}
}

/* ---- Busca em pilula (Reportar e Manual) ---------------------------- */
.aj-busca{position:relative;margin-top:8px}
.aj-busca::before{content:'\01F50D';position:absolute;left:13px;top:50%;
  transform:translateY(-50%);font-size:13px;opacity:.55;pointer-events:none}
.aj-busca input{width:100%;margin:0;border-radius:999px;
  padding:10px 16px 10px 36px;font-size:13px;background:var(--card);
  border:1px solid var(--line);transition:border-color .15s,box-shadow .15s}
.aj-busca input:focus{outline:none;border-color:var(--brand-dark);
  box-shadow:0 0 0 3px rgba(30,60,120,.12)}
/* ---- Meus envios fechado por padrao --------------------------------- */
.fb-meus-t{display:flex;align-items:center;gap:8px;width:100%;
  background:var(--bg);border:1px solid var(--line);border-radius:10px;
  padding:9px 12px;font:600 13px var(--font-ui);color:var(--navy);
  cursor:pointer;margin-top:16px}
.fb-meus-t:hover{border-color:var(--brand-dark)}
.fb-meus-t .seta{margin-left:auto;transition:transform .15s}
.fb-meus-t.aberto .seta{transform:rotate(180deg)}

/* ---- Radar da triagem (fit cultural + DISC) ------------------------- */
.trg-radares{display:flex;gap:10px;flex-wrap:wrap;margin-top:10px}
.trg-radar{flex:1;min-width:230px;background:linear-gradient(160deg,#0B132B,#12244D);
  border:1px solid rgba(120,160,220,.25);border-radius:12px;padding:10px 10px 6px;
  color:#E8EEF9}
.trg-radar-t{font:700 10.5px/1.2 var(--font-ui,inherit);letter-spacing:.08em;
  text-transform:uppercase;color:#9FB6DA;margin:0 0 2px;display:flex;
  align-items:center;gap:6px}
.trg-radar-fit{margin-left:auto;background:rgba(255,208,138,.15);
  border:1px solid rgba(255,208,138,.5);color:#FFD08A;border-radius:999px;
  padding:2px 8px;font-size:10.5px;font-weight:800;letter-spacing:.02em}
.trg-radar svg{width:100%;height:auto;display:block}
.trg-radar-leg{display:flex;gap:10px;font-size:10px;color:#9FB6DA;
  padding:2px 2px 4px}
.trg-radar-leg i{display:inline-block;width:8px;height:8px;border-radius:2px;
  margin-right:4px;vertical-align:-1px}
.trg-radar-vazio{font-size:11px;color:#9FB6DA;padding:8px 2px 10px;line-height:1.5}

/* ---------- Bússola (propósito, objetivos, metas) ---------- */
.bus-hero .bus-prop{font-size:1.15rem;line-height:1.35;font-weight:600;max-width:60ch}
.bus-hero .bus-ano{display:inline-flex;align-items:center;gap:6px;color:#fff;font-size:.85rem}
.bus-hero .bus-ano select{background-color:rgba(255,255,255,.12);color:#fff;border:1px solid rgba(255,255,255,.3);border-radius:8px;padding:4px 8px}
.bus-dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin:0 2px 0 6px;vertical-align:middle}
.bus-dot.verde{background:#3FCF8E}.bus-dot.amarelo{background:#F5C451}.bus-dot.vermelho{background:#F06A6A}.bus-dot.sem{background:#8FA3BF}
.bus-subtabs{margin:14px 0 10px}
.bus-n{display:inline-block;min-width:18px;padding:0 6px;border-radius:10px;background:var(--navy);color:#fff;font-size:.72rem;text-align:center;margin-left:4px}
.bus-pill{display:inline-block;padding:2px 9px;border-radius:12px;font-size:.76rem;font-weight:600;white-space:nowrap}
.bus-pill.verde{background:#DCF5E8;color:#12734B}.bus-pill.amarelo{background:#FFF1CC;color:#8A5200}.bus-pill.vermelho{background:#FBE0E0;color:#9B2226}.bus-pill.sem{background:#E8EDF5;color:#4A5568}
.bus-temas{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 12px}
.bus-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.bus-texto{margin:0;line-height:1.45}
.bus-obj .pnlc-head{flex-wrap:wrap;gap:8px}
.bus-obj .pnlc-head h3{flex:1;min-width:200px}
.bus-acoes{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.bus-aviso{background:#FFF7E0;border-left:3px solid #E0A800;padding:8px 10px;border-radius:6px;font-size:.86rem;margin-bottom:10px;color:#5A3E00}
.bus-dica{background:#EEF4FB;border-left:3px solid var(--navy);padding:8px 10px;border-radius:6px;font-size:.86rem;margin-bottom:12px;line-height:1.4}
.bus-ind-wrap{overflow-x:auto}
.bus-ind{width:100%;border-collapse:collapse;font-size:.88rem}
.bus-ind th{text-align:left;font-weight:600;color:var(--muted);font-size:.74rem;text-transform:uppercase;letter-spacing:.03em;padding:6px 8px;border-bottom:1px solid var(--line)}
.bus-ind td{padding:8px;border-bottom:1px solid var(--line);vertical-align:middle;font-variant-numeric:tabular-nums}
.bus-ind tr.bus-ind-row td{background:#F8FAFD;font-size:.84rem}
.bus-td-acoes{white-space:nowrap;text-align:right}
.bus-td-acoes .btn{padding:4px 8px;font-size:.78rem;margin-left:4px}
.bus-mini{font-size:.76rem;color:var(--muted)}
.bus-auto{background:#E6F7F9;color:#0B5F6B}
.bus-link{border:none;background:transparent;color:var(--navy);padding:2px 0;font-size:.82rem}
.bus-vazio .bus-escada{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px}
.bus-escada div{background:#F6F8FC;border:1px solid var(--line);border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:4px}
.bus-escada b{font-size:.9rem}.bus-escada span{font-size:.8rem;color:var(--muted);line-height:1.35}
.bus-setores{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px}
.bus-setor-card{border:1px solid var(--line);border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:4px;position:relative}
.bus-setor-card.off{opacity:.55}
.bus-setor-card .btn{position:absolute;top:8px;right:8px;padding:3px 7px;font-size:.78rem}
.bus-setor-bloco{margin:14px 0}
.bus-setor-head{cursor:pointer;padding:10px 14px;background:var(--card);border:1px solid var(--line);border-radius:10px;display:flex;align-items:center;gap:6px;font-size:1rem}
.bus-setor-corpo{padding:12px 0 0 0}
.bus-minha .pnlc-head{gap:8px}
.bus-minha-num{display:grid;grid-template-columns:repeat(3,minmax(90px,1fr));gap:8px;margin:10px 0}
.bus-minha-num div{background:#F6F8FC;border-radius:8px;padding:8px 10px}
.bus-minha-num span{display:block;font-size:.72rem;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}
.bus-minha-num b{font-size:1.05rem;font-variant-numeric:tabular-nums}
.bus-serie{display:grid;grid-template-columns:repeat(12,1fr);gap:4px;height:84px;align-items:end;margin-top:8px}
.bus-mes{position:relative;height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center}
.bus-mes b{display:block;width:70%;background:var(--navy);border-radius:3px 3px 0 0;min-height:0}
.bus-mes b.vazio{background:transparent;border-bottom:2px dashed var(--line)}
.bus-mes span{font-size:.62rem;color:var(--muted);margin-top:3px}
.bus-mes .bus-alvo{position:absolute;left:8%;right:8%;border-top:2px dashed #E0A800;bottom:0}
.bus-trim{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:8px 0}
.bus-trim-card{border:1px solid var(--line);border-radius:10px;padding:8px;text-align:center;display:flex;flex-direction:column;gap:3px;align-items:center;font-size:.84rem}
.bus-trim-card.atual{border-color:var(--navy);box-shadow:0 0 0 2px rgba(41,111,186,.15)}
.bus-trim-card b{font-size:1rem;font-variant-numeric:tabular-nums}
.bus-estr{display:flex;flex-direction:column;gap:6px}
.bus-estr-item{display:flex;justify-content:space-between;gap:8px;align-items:flex-start;border:1px solid var(--line);border-left:3px solid var(--navy);border-radius:8px;padding:8px 10px}
.bus-estr-item.concluida{border-left-color:#12734B}.bus-estr-item.cancelada{opacity:.55;border-left-color:#9B2226}.bus-estr-item.andamento{border-left-color:#E0A800}
.bus-lista div{display:flex;gap:6px;margin-bottom:6px}
.bus-lista input{flex:1}
.bus-check{display:flex;align-items:center;gap:8px;font-weight:normal;cursor:pointer}
@media(max-width:760px){
  .bus-trim{grid-template-columns:repeat(2,1fr)}
  .bus-minha-num{grid-template-columns:1fr 1fr}
  .bus-td-acoes{white-space:normal}
  .bus-hero .bus-prop{font-size:1rem}
}

/* ---------- Bússola parte 2: faixa, dashboard, diagnóstico, troca de empresa ---------- */
.bus-faixa{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:8px 12px;margin:0 0 10px}
.bus-faixa-tit{font-weight:700;font-size:.9rem;margin-right:4px}
.bus-faixa-item{display:inline-flex;align-items:center;gap:6px;background:#F6F8FC;border-radius:8px;padding:4px 10px;font-size:.84rem}
.bus-faixa-alerta{color:#8A5200;font-size:.76rem;font-weight:600}
.bus-faixa .btn{margin-left:auto;padding:4px 10px;font-size:.8rem}
.bus-dash .bus-dash-prop{font-size:.95rem;line-height:1.4;margin:4px 0 10px;opacity:.95}
.bus-dash-nums{display:flex;gap:16px;flex-wrap:wrap}
.bus-dash-nums div{display:flex;flex-direction:column}
.bus-dash-nums b{font-size:1.4rem;line-height:1.1}
.bus-dash-nums span{font-size:.72rem;opacity:.75;text-transform:uppercase;letter-spacing:.03em}
.bus-dash-minhas{display:flex;flex-direction:column;gap:6px;margin-top:10px}
.bus-dash-meta{display:flex;align-items:center;gap:10px;font-size:.85rem}
.bus-dash-meta span{flex:1}
.troca-empresa{display:block;margin-top:6px;max-width:100%;font-size:.78rem;background:rgba(255,255,255,.08);color:#fff;border:1px solid rgba(255,255,255,.25);border-radius:6px;padding:3px 6px}
.troca-empresa option{color:#0B132B}
.bus-passos{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin:0 0 14px}
.bus-passo{border:1px solid var(--line);background:var(--card);border-radius:10px;padding:8px 10px;text-align:left;cursor:pointer;display:flex;flex-direction:column;gap:2px;font-size:.86rem;color:var(--ink)}
.bus-passo b{display:inline-block;width:22px;height:22px;border-radius:50%;background:#EEF4FB;color:var(--navy);text-align:center;line-height:22px;font-size:.78rem;margin-right:6px}
.bus-passo span{font-size:.74rem;color:var(--muted)}
.bus-passo.ativo{border-color:var(--navy);box-shadow:0 0 0 2px rgba(41,111,186,.15)}
.bus-passo.ativo b{background:var(--navy);color:#fff}
.bus-bloco-tit{font-size:.74rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:14px 0 6px;font-weight:700}
.bus-par{display:grid;grid-template-columns:1fr auto 1fr;gap:10px;align-items:center;padding:8px 10px;border:1px solid var(--line);border-radius:10px;margin-bottom:6px;font-size:.86rem}
.bus-par.marcado.forte{border-color:#12734B;background:#F3FBF7}
.bus-par.marcado.fraco{border-color:#9B2226;background:#FDF4F4}
.bus-par-w{text-align:right;color:var(--muted)}
.bus-par-f{color:var(--ink)}
.bus-par-r{display:flex;gap:4px}
.bus-radio{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border-radius:14px;border:1px solid var(--line);font-size:.76rem;cursor:pointer;background:#fff}
.bus-radio input{margin:0}
.bus-radio.forte.on{background:#DCF5E8;border-color:#12734B;color:#12734B}
.bus-radio.fraco.on{background:#FBE0E0;border-color:#9B2226;color:#9B2226}
.bus-radio.neutro.on{background:#E8EDF5}
.bus-tend-lista{display:flex;flex-direction:column;gap:6px}
.bus-tend{display:flex;justify-content:space-between;gap:10px;align-items:center;border:1px solid var(--line);border-left:3px solid #12734B;border-radius:8px;padding:8px 10px;font-size:.88rem}
.bus-tend.negativo{border-left-color:#9B2226}
.bus-notas th{text-align:center}
.bus-notas td{text-align:center}
.bus-notas td:first-child{text-align:left}
.bus-nota{width:52px;text-align:center;border-radius:6px}
.bus-nota.n1{background:#FFF1CC}.bus-nota.n2{background:#DCF5E8}
.bus-gauge{display:flex;align-items:center;gap:16px}
.bus-gauge-bar{flex:1;height:12px;border-radius:6px;background:linear-gradient(90deg,#F06A6A,#F5C451 50%,#3FCF8E);position:relative}
.bus-gauge-bar i{position:absolute;top:-5px;width:22px;height:22px;margin-left:-11px;border-radius:50%;background:#fff;border:3px solid var(--ink);box-shadow:0 1px 4px rgba(0,0,0,.3)}
.bus-gauge-num{font-size:1.6rem;font-weight:800;font-variant-numeric:tabular-nums;min-width:80px;text-align:right}
@media(max-width:760px){
  .bus-passos{grid-template-columns:repeat(2,1fr)}
  .bus-par{grid-template-columns:1fr;gap:6px}
  .bus-par-w{text-align:left}
  .bus-faixa .btn{margin-left:0}
}

/* Herói da Bússola: ações ocupam o meio (entre o propósito e os números), sem vão */
/* O topo tem duas colunas: a tese de um lado, os numeros e as acoes do
   outro. Antes as acoes ocupavam uma coluna inteira no meio, entao os
   numeros iam pro canto e ficavam minusculos. */
.bus-hero{align-items:stretch}
/* A tese fica com a maior parte da largura. Sem a base flex, a coluna
   da esquerda encolhia pro minimo e as etiquetas empilhavam. */
.bus-hero-esq{flex:1 1 520px;min-width:280px}
.bus-hero .sp{display:none}
.bus-hero-dir{display:flex;flex-direction:column;gap:16px;justify-content:space-between;
  flex:0 1 320px;margin:0 0 0 22px;padding:0 0 0 22px;border-left:1px solid rgba(255,255,255,.12)}
.bus-hero-acoes{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.bus-hero-acoes .hero-acao{flex:1 1 auto;text-align:center;justify-content:center;padding:8px 12px;white-space:nowrap}
.bus-hero-acoes .bus-ano{flex:0 0 auto}
@media(max-width:900px){
  .bus-hero-dir{border-left:none;padding:0;margin:14px 0 0;flex:1 1 100%}
  .bus-hero-esq{flex:1 1 100%}
  .bus-hero-acoes .hero-acao{flex:1 1 45%}
}

/* Os valores no topo: so o nome, como etiqueta. Uma fileira, sempre.
   A explicacao mora no bloco de baixo. */
.bus-chips{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:10px}
.bus-chips-rot{font-size:11px;font-weight:700;letter-spacing:.7px;text-transform:uppercase;color:#A9BCDF;margin-right:2px}
.bus-chip{border:1px solid rgba(255,255,255,.22);background:rgba(255,255,255,.08);color:#E8EEF9;
  border-radius:999px;padding:4px 11px;font-size:12px;font-family:inherit;cursor:pointer;
  max-width:22ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bus-chip:hover{background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.4)}
.bus-chip:focus-visible{outline:2px solid #fff;outline-offset:1px}
.bus-chip-mais{font-weight:700;background:rgba(255,255,255,.16)}

/* O bloco de valores, na aba Empresa. Duas colunas no computador, uma no
   celular; o numero fica fora do texto pra a leitura nao tropecar nele. */
.bus-valores{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px}
.bus-valor{display:flex;gap:10px;align-items:flex-start}
.bus-valor-n{flex:0 0 26px;height:26px;border-radius:8px;background:var(--bg);color:var(--blue);
  display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:800;
  font-variant-numeric:tabular-nums;border:1px solid var(--line)}
.bus-valor-txt{flex:1;min-width:0}
.bus-valor-txt b{display:block;font-size:14px;color:var(--ink);line-height:1.3}
.bus-valor-txt p{margin:4px 0 0;font-size:12.5px;color:var(--muted);line-height:1.5}
.bus-valor-txt q{display:block;margin:6px 0 0;font-size:12.5px;font-style:italic;color:var(--blue);line-height:1.45}
.bus-piscar{animation:busPiscar 1.2s ease-out}
@keyframes busPiscar{0%{box-shadow:0 0 0 3px rgba(41,111,186,.45)}100%{box-shadow:0 0 0 0 rgba(41,111,186,0)}}
@media(prefers-reduced-motion:reduce){.bus-piscar{animation:none}}

/* Formulario: tres campos por valor, cada um com o seu papel. */
.bus-vform{display:flex;flex-direction:column;gap:10px}
.bus-vitem{position:relative;display:flex;flex-direction:column;gap:5px;
  border:1px solid var(--line);border-radius:10px;padding:10px 34px 10px 10px}
.bus-vitem input,.bus-vitem textarea{padding:7px 8px;border:1px solid var(--line);border-radius:7px;width:100%;font-size:13px}
.bus-vitem .bus-vtit{font-weight:700}
.bus-vitem .bus-vfr{font-style:italic}
.bus-vx{position:absolute;top:8px;right:8px;width:20px;height:20px;border:0;border-radius:6px;
  background:transparent;color:var(--muted);cursor:pointer;font-size:12px;line-height:1}
.bus-vx:hover{background:#fdeceb;color:var(--red)}

/* Vega montando a Bússola: faixa do modo + cartão de proposta */
.vega-modo{display:flex;align-items:center;justify-content:space-between;gap:8px;background:#EEF4FB;border-bottom:1px solid var(--line);padding:6px 12px;font-size:.82rem}
.vega-modo button{border:1px solid var(--line);background:#fff;border-radius:8px;padding:3px 8px;font-size:.76rem;cursor:pointer}
.vega-proposta{background:#fff;border:1px solid var(--navy);border-radius:12px;padding:10px 12px;font-size:.86rem}
.vega-proposta b{display:block;margin:6px 0 2px;font-size:.8rem;text-transform:uppercase;letter-spacing:.03em;color:var(--navy)}
.vega-proposta p{margin:0 0 6px;line-height:1.4}
.vega-proposta ul{margin:0 0 6px;padding-left:18px}
.vega-proposta li{margin:2px 0;line-height:1.35}
/* Saldo de usos da Vega no cabecalho da gaveta. So aparece pra quem tem
   teto de plano; quem nao tem nunca ve numero nenhum. */
.vg-saldo-perto{color:var(--warn)!important;font-weight:700}
.vg-saldo-fim{color:var(--red)!important;font-weight:700}

.vega-proposta-acoes{display:flex;gap:8px;margin-top:8px}
.vega-proposta-acoes .btn{padding:5px 12px;font-size:.8rem}

/* Gaveta da Vega no celular: altura real da tela e topo fora do safe-area do iOS */
@media(max-width:760px){
  #vega-painel{height:100dvh}
  .vega-cab{padding-top:calc(12px + env(safe-area-inset-top,0px))}
  .bus-hero-acoes .hero-acao{flex:1 1 45%}
}
.bus-aviso-cel{background:#EEF4FB;border:1px solid var(--line);border-radius:10px;padding:8px 12px;font-size:.82rem;color:var(--muted);margin-bottom:10px}
.crm-tel-hist{font-size:.72rem;color:var(--muted);margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* Painel dobrável (Configurações → Telefonia): configuração que se mexe
   uma vez fica fechada, pra tela abrir no que se consulta todo dia. */
.pnl-dobra{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);margin-top:12px;overflow:hidden}
.pnl-dobra-head{width:100%;display:flex;align-items:center;gap:10px;padding:12px 16px;background:none;border:0;cursor:pointer;font-size:.95rem;font-weight:600;color:var(--ink);text-align:left}
.pnl-dobra-head:hover{background:#F6F8FC}
.pnl-dobra-chev{display:inline-block;transition:transform .15s ease;color:var(--muted)}
.pnl-dobra.aberto .pnl-dobra-chev{transform:rotate(90deg)}
.pnl-dobra-dica{margin-left:auto;font-size:.76rem;font-weight:500;color:var(--navy)}
.pnl-dobra-corpo{padding:0 16px 16px;border-top:1px solid var(--line)}
.pnl-dobra-corpo>.op3hint:first-child{padding-top:12px}
.tel-tbl .tel-hora{font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--muted)}
.tel-audio td{background:#F6F8FC}

/* =====================================================================
   CELULAR: "essencial + Mais" nas barras de ferramentas (v79).
   Cada barra marcada com .cel-grupo mostra so o essencial; o resto vive
   em .cel-2 (display:contents — invisivel pro layout no desktop) e
   aparece pelo botao .cel-mais, que so existe no celular. No fim da
   folha DE PROPOSITO: precisa vencer regras antigas de mesmo peso.
   ===================================================================== */
.cel-mais{display:none}
@media(max-width:760px){
  .cel-mais{display:inline-flex;align-items:center;justify-content:center}
  .cel-grupo.cel-oculta .cel-2{display:none!important}
}

/* =====================================================================
   Seletor de candidatos da APRESENTACAO (v82). Linha larga e clicavel
   inteira: no celular, marcar uma caixinha de 13px ao lado de um nome
   longo e mais dificil que acertar o nome.
   ===================================================================== */
.apres-l{display:flex;align-items:center;gap:10px;padding:9px 10px;border:1px solid var(--line);
  border-radius:10px;margin-bottom:6px;cursor:pointer;background:var(--card);min-height:52px}
.apres-l:hover{border-color:var(--blue)}
.apres-l:has(input:checked){border-color:var(--blue);background:#eef5fc}
.apres-l input{flex:0 0 auto;width:17px;height:17px;accent-color:var(--blue);margin:0}
.apres-n{flex:0 0 auto;width:34px;text-align:center;font-family:var(--font-mono,monospace);font-weight:700;
  font-size:13px;color:var(--navy);background:#eef2f7;border-radius:8px;padding:3px 0}
.apres-i{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
.apres-i b{font-size:13.5px;color:var(--ink);font-weight:600;line-height:1.3}
.apres-i i{font-style:normal;font-size:11.5px;color:var(--muted);line-height:1.35}
.apres-i u{text-decoration:none;font-size:11px;color:#8A5B00;font-weight:600}

/* =====================================================================
   Botao desabilitado do modal (v83). Ele continuava azul e cheio: quem
   clicava nao via nada acontecer e concluia que a tela estava quebrada
   (relato real de 30/08, no "Gerar link" de uma vaga sem candidato).
   Vale pra QUALQUER .btn do sistema — o estado sempre existiu no HTML,
   so nao tinha aparencia.
   ===================================================================== */
.btn:disabled,.btn[disabled]{opacity:.42;cursor:not-allowed;filter:grayscale(.35)}
.btn:disabled:hover,.btn[disabled]:hover{filter:grayscale(.35)}

/* Selo de ORIGEM na linha do seletor da apresentacao (v84): de qual das
   tres fontes a pessoa veio. "na agenda" ganha destaque porque quem ja
   tem entrevista marcada e o candidato mais forte da lista. */
.apres-o{font-style:normal;font-size:9.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  color:var(--muted);background:#eef2f7;border-radius:6px;padding:2px 6px;margin-left:7px;
  vertical-align:middle;white-space:nowrap}
.apres-o.ag{color:#1e6b46;background:#e3f4ea}

/* Filtro e busca do seletor da apresentacao (v85). As abas contam quanta
   gente ha de cada lado — "Banco inteiro 720" ja diz por que existe
   busca ao lado. */
.apres-topo{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:10px}
.apres-abas{display:flex;gap:3px;background:#eef2f7;border-radius:10px;padding:3px;flex:0 0 auto}
.apres-abas button{background:transparent;border:0;border-radius:8px;padding:6px 11px;cursor:pointer;
  font:600 12.5px var(--font-ui);color:var(--muted);display:inline-flex;align-items:center;gap:6px;min-height:34px}
.apres-abas button.on{background:#fff;color:var(--navy);box-shadow:0 1px 2px rgba(10,17,32,.12)}
.apres-abas button span{font-family:var(--font-mono,monospace);font-size:10.5px;font-weight:700;
  background:#dde5ef;color:var(--muted);border-radius:6px;padding:1px 5px}
.apres-abas button.on span{background:var(--blue);color:#fff}
#apres-busca{flex:1;min-width:150px;padding:8px 11px;border:1px solid var(--line);border-radius:10px;
  font-size:13px;min-height:36px}
@media(max-width:760px){
  .apres-abas{flex:1 0 100%}
  .apres-abas button{flex:1;justify-content:center}
}

/* Linha TRAVADA do seletor (v86): quem ja esta trabalhando aparece na
   busca, com o motivo, e sem caixa nenhuma pra marcar. */
.apres-l.travada{cursor:default;background:#f7f8fa;border-style:dashed}
.apres-l.travada:hover{border-color:var(--line)}
.apres-l.travada .apres-n{opacity:.5}
.apres-l.travada .apres-i b{color:var(--muted)}
.apres-o.ct{color:#8a3a2e;background:#fbe9e6}
/* Endereco da vaga no topo do modal e a lista de pontos de atencao. */
.apres-onde{font-size:12px;color:var(--muted);background:#f4f7fb;border:1px solid var(--line);
  border-radius:9px;padding:7px 10px;margin-bottom:10px;display:flex;gap:12px;flex-wrap:wrap;align-items:center}
.apres-onde span{color:var(--navy);font-weight:600}
.apres-i u{cursor:pointer;user-select:none}
.apres-i u:hover{color:#6b4400}
.apres-at{display:block;margin-top:5px}
.apres-at ul{margin:0;padding-left:16px}
.apres-at li{font-size:11.5px;color:#6B5520;line-height:1.5}

/* Linhas de horario oferecido, no modal da apresentacao (v87). */
.apres-h{display:flex;gap:6px;align-items:center;margin-bottom:6px}
.apres-h input{padding:7px 9px;border:1px solid var(--line);border-radius:8px;font-size:13px;min-height:36px}
.apres-h .apres-h-d{flex:1;min-width:0}
.apres-h .apres-h-t{width:104px;flex:0 0 auto}
.apres-h button{flex:0 0 auto;width:32px;height:36px;border:1px solid var(--line);background:#fff;
  border-radius:8px;color:var(--muted);font-size:17px;line-height:1;cursor:pointer}
.apres-h button:hover{border-color:var(--red,#c0392b);color:var(--red,#c0392b)}

/* Botoes da linha de envio (v88): no celular eles nao podem espremer o
   texto do envio ate ele virar uma coluna de uma palavra por linha. */
@media(max-width:760px){
  #apres-envios > div{flex-wrap:wrap}
  #apres-envios > div > span:first-child{flex:1 0 100%}
}

/* Voltar pra tela anterior (v89). Fica no topo, antes do sino, e some
   quando nao ha pra onde voltar. A seta e grande porque no celular ela e
   um alvo de toque, nao um enfeite. */
#btn-voltar{font-size:19px;line-height:1;font-weight:700;padding:4px 12px !important;
  min-height:34px;flex:0 0 auto;margin-right:2px}
@media(max-width:760px){
  #btn-voltar{padding:3px 9px !important;font-size:17px;min-height:30px}
}

/* =====================================================================
   A CAIXA DO "?" (v91). Ela ensina, entao nao pode ter a cara de um
   formulario. Topo escuro com o simbolo, entrada com escala, e a barra
   de luz atravessando UMA vez.
   ===================================================================== */
.ajuda-cx{overflow:hidden;animation:ajudaEntra .26s cubic-bezier(.2,.9,.3,1.1)}
@keyframes ajudaEntra{from{opacity:0;transform:scale(.94) translateY(10px)}to{opacity:1;transform:none}}
.ajuda-cx header.ajuda-topo{position:relative;overflow:hidden;background:var(--navy);color:#fff;
  border-bottom:0;display:flex;align-items:center;gap:12px;padding:16px 18px}
/* o facho que atravessa uma vez so */
.ajuda-cx header.ajuda-topo::after{content:'';position:absolute;inset:0;
  background:linear-gradient(105deg,transparent 30%,rgba(255,255,255,.16) 48%,transparent 66%);
  transform:translateX(-100%);animation:ajudaBrilho 1.1s ease .18s 1 forwards}
@keyframes ajudaBrilho{to{transform:translateX(100%)}}
.ajuda-ico{flex:0 0 auto;width:34px;height:34px;border-radius:11px;display:flex;align-items:center;
  justify-content:center;font-weight:800;font-size:17px;color:#fff;
  background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.2)}
.ajuda-tit{font-family:var(--font-display,inherit);font-weight:700;font-size:16px;letter-spacing:-.01em;
  color:#fff;line-height:1.3}
.ajuda-cx .helpBody{padding:18px;font-size:14.5px;line-height:1.72;color:var(--ink);max-height:60vh}
.ajuda-cx .helpBody b{color:var(--navy)}
.ajuda-pe{display:flex;gap:8px;justify-content:space-between;align-items:center;flex-wrap:wrap}
.ajuda-vega{color:#6B4FC4;border-color:#DCD6F4}
.ajuda-vega:hover{border-color:#6B4FC4;background:#F5F2FD}
@media(max-width:520px){
  .ajuda-cx .helpBody{padding:15px;font-size:14px}
  .ajuda-pe{flex-direction:column-reverse;align-items:stretch}
  .ajuda-pe .btn{width:100%}
}

/* =====================================================================
   A VEGA GUIANDO (v92) — holofote, mao, convite e o botao do topo.

   O tour ja existia e so informava. O que estas regras acrescentam e o
   que faz ele ENSINAR: o resto da tela apaga, o alvo fica aceso, uma mao
   aponta onde clicar, e quem clica fora ve o alvo balancar em vez de
   executar a acao errada.
   ===================================================================== */

/* O recorte: um retangulo com sombra gigante ao redor. Nao captura
   clique (isso e do escudo, no JS) — aqui e so a luz. */
.tour-luz{position:fixed;z-index:70;border-radius:12px;pointer-events:none;
  box-shadow:0 0 0 9999px rgba(6,16,32,.60), 0 0 0 2px var(--blue) inset;
  transition:left .38s cubic-bezier(.2,.8,.3,1), top .38s cubic-bezier(.2,.8,.3,1),
             width .38s cubic-bezier(.2,.8,.3,1), height .38s cubic-bezier(.2,.8,.3,1)}
/* Clique no lugar errado: o alvo balanca. Dizer "nao e ai" mostrando
   ONDE e vale mais que um aviso escrito. */
.tour-luz.bate{animation:tourBate .42s ease}
@keyframes tourBate{
  0%,100%{transform:translateX(0)}
  20%{transform:translateX(-7px)}45%{transform:translateX(6px)}70%{transform:translateX(-3px)}
}

.tour-mao{position:fixed;z-index:73;font-size:26px;pointer-events:none;
  filter:drop-shadow(0 3px 6px rgba(6,16,32,.45));animation:tourMao 1.5s ease-in-out infinite}
@keyframes tourMao{0%,100%{transform:translateY(0)}50%{transform:translateY(7px)}}

/* O balao agora tem quem fala. */
.tour-vega{display:flex;align-items:center;gap:7px;margin-bottom:9px}
.tour-av{width:24px;height:24px;border-radius:8px;display:flex;align-items:center;justify-content:center;
  font-size:13px;background:linear-gradient(140deg,#EFEAFB,#E6F0FB);border:1px solid #DCD6F4}
.tour-quem{font:700 11.5px var(--font-ui);color:#6B4FC4;letter-spacing:.02em}
.tour-vega .tour-cont{margin-left:auto;font-family:var(--font-mono,monospace);font-size:10.5px;
  font-weight:700;color:var(--muted);background:var(--card,#f2f5f9);border-radius:999px;padding:2px 8px}
.tour-faca{margin-top:10px;background:#EFEAFB;border:1px solid #DCD6F4;border-radius:10px;
  padding:8px 10px;font-size:12.5px;font-weight:600;color:#4B3A8C}

/* O convite entre telas. Canto inferior, sobe e some sozinho. */
/* z ABAIXO do modal (.overlay e 20) de proposito: sugestao flutuante
   nunca pode ficar por cima de um dialogo e roubar o clique — foi
   exatamente isso que o verificador de camadas acusou. O guia ja
   terminou quando ela aparece, entao nao disputa com o balao. */
.vg-convite{position:fixed;z-index:19;left:16px;bottom:16px;max-width:min(420px,92vw);
  display:flex;align-items:center;gap:11px;background:#fff;border:1px solid var(--line);
  border-left:3px solid #6B4FC4;border-radius:14px;padding:12px 14px;
  box-shadow:0 18px 44px -20px rgba(6,16,32,.55);
  opacity:0;transform:translateY(14px);transition:opacity .3s ease, transform .3s cubic-bezier(.2,.8,.3,1)}
.vg-convite.on{opacity:1;transform:none}
.vg-av{flex:0 0 auto;width:34px;height:34px;border-radius:11px;display:flex;align-items:center;
  justify-content:center;font-size:17px;background:linear-gradient(140deg,#EFEAFB,#E6F0FB);border:1px solid #DCD6F4}
.vg-txt{flex:1;min-width:0}
.vg-txt b{display:block;font:700 13.5px var(--font-ui);color:var(--ink);line-height:1.3}
.vg-txt small{display:block;font-size:11.5px;color:var(--muted);line-height:1.45;margin-top:2px}
.vg-sim{flex:0 0 auto;border:0;border-radius:10px;padding:9px 14px;background:#6B4FC4;color:#fff;
  font:600 13px var(--font-ui);cursor:pointer;min-height:38px}
.vg-sim:hover{filter:brightness(1.1)}
.vg-nao{flex:0 0 auto;border:0;background:transparent;color:var(--muted);font-size:16px;
  cursor:pointer;padding:6px 4px;line-height:1}
.vg-nao:hover{color:var(--ink)}

/* O botao do topo pulsa devagar enquanto ha tela por conhecer. */
.vg-btn{background:#6B4FC4;border-color:#6B4FC4;color:#fff;padding:7px 13px !important;
  animation:vgPulsa 3.4s ease-in-out infinite}
.vg-btn:hover{background:#5B41AD;border-color:#5B41AD;color:#fff}
@keyframes vgPulsa{0%,100%{box-shadow:0 0 0 0 rgba(107,79,196,.42)}55%{box-shadow:0 0 0 9px rgba(107,79,196,0)}}

@media(max-width:760px){
  .vg-convite{left:10px;right:10px;bottom:10px;max-width:none}
  .vg-btn{font-size:11.5px;padding:5px 9px !important}
  /* So o NOME some no celular, nao a esfera: a regra antiga escondia
     todo span do botao, e a esfera da Vega tambem e um span. O botao
     ficava um quadrado branco vazio no topo (achado em 18/09/2026). */
  .vg-btn .topo-lbl{display:none}
}
/* =====================================================================
   A VEGA APRESENTA O PAINEL (538): o convite do primeiro acesso, o balao
   com a esfera e a barra da narracao. A luz e a mesma .tour-luz do guia;
   o balao tem regras proprias para nao depender das do tour.
   ===================================================================== */
.vap-modal{position:fixed;inset:0;z-index:74;background:rgba(6,16,32,.55);
  display:flex;align-items:center;justify-content:center;padding:16px}
.vap-caixa{background:var(--card);border-radius:16px;padding:24px 22px 18px;max-width:380px;width:100%;
  text-align:center;box-shadow:0 22px 50px rgba(6,16,32,.35);animation:vapEntra .28s ease}
.vap-caixa h3{font:700 21px var(--font-display);margin:0 0 6px;color:var(--ink)}
.vap-caixa p{margin:0 0 16px;color:var(--muted);font-size:14.5px;line-height:1.55}
.vap-caixa small{display:block;margin-top:12px;color:var(--muted);font-size:12px;line-height:1.5}
.vap-bts{display:flex;gap:8px;justify-content:center;flex-wrap:wrap}
.vap-ava-g{display:block;width:56px;height:56px;margin:0 auto 12px}
.vap-veu{position:fixed;inset:0;z-index:69;background:transparent;transition:background .25s ease}
.vap-veu.escuro{background:rgba(6,16,32,.55)}
.vap-balao{position:fixed;z-index:72;width:min(340px,92vw);background:var(--card);
  border:1px solid var(--line);border-radius:14px;box-shadow:0 16px 40px rgba(11,19,43,.28);
  padding:13px 15px 12px;animation:vapEntra .28s ease;
  transition:top .32s cubic-bezier(.2,.8,.3,1),left .32s cubic-bezier(.2,.8,.3,1)}
.vap-cab{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.vap-ava{width:24px;height:24px;flex:0 0 24px}
.vap-ava.fala{animation:vapFala .9s ease-in-out infinite}
.vap-quem{font:700 12px var(--font-ui);color:#6B4FC4}
.vap-cont{margin-left:auto;font-size:11px;font-weight:700;color:var(--muted);background:var(--bg);
  border-radius:999px;padding:2px 8px;font-variant-numeric:tabular-nums}
.vap-fala{margin:0;font-size:14.5px;line-height:1.55;color:var(--ink)}
.vap-pe{display:flex;gap:6px;justify-content:flex-end;flex-wrap:wrap;margin-top:12px}
.vap-b{border:1px solid var(--navy);background:var(--navy);color:#fff;border-radius:8px;padding:6px 12px;
  font-size:12.5px;font-weight:600;cursor:pointer;min-height:34px}
.vap-b.sec{background:var(--card);color:var(--muted);border-color:var(--line)}
.vap-b:focus-visible{outline:2px solid var(--navy);outline-offset:2px}
.vap-barra{position:fixed;z-index:73;left:50%;bottom:16px;transform:translateX(-50%);display:flex;align-items:center;
  gap:9px;background:#0A1120;color:#fff;border-radius:999px;padding:6px 7px 6px 12px;font-size:12.5px;
  box-shadow:0 10px 30px rgba(6,16,32,.35);max-width:calc(100vw - 20px)}
.vap-st{color:#B9C8DE;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.vap-onda{display:inline-flex;gap:2px;align-items:center;height:14px}
.vap-onda i{width:3px;height:4px;background:#4FD8E8;border-radius:2px}
.vap-barra.falando .vap-onda i{animation:vapOnda .8s ease-in-out infinite}
.vap-barra.falando .vap-onda i:nth-child(2){animation-delay:.15s}
.vap-barra.falando .vap-onda i:nth-child(3){animation-delay:.3s}
.vap-barra.falando .vap-onda i:nth-child(4){animation-delay:.45s}
.vap-nb{border:0;background:rgba(255,255,255,.14);color:#fff;width:30px;height:30px;border-radius:50%;
  cursor:pointer;flex:0 0 30px;font-size:12px}
.vap-nb:focus-visible{outline:2px solid #4FD8E8;outline-offset:2px}
@keyframes vapFala{50%{transform:scale(1.15);box-shadow:0 0 22px rgba(79,216,232,1)}}
@keyframes vapOnda{50%{height:14px}}
@keyframes vapEntra{from{opacity:0;transform:translateY(6px)}}
@media(max-width:759px){
  .vap-balao{left:10px;right:10px;width:auto}
  .vap-barra{left:10px;right:10px;transform:none}
  .vap-barra .vap-st{flex:1}
}

@media(prefers-reduced-motion:reduce){
  .tour-luz,.tour-mao,.vg-btn,.vg-convite{animation:none !important;transition:none !important}
  .vap-balao,.vap-caixa,.vap-ava,.vap-onda i,.vap-veu{animation:none !important;transition:none !important}
}

/* =====================================================================
   COMPATIBILIDADE DOS CAMPOS COM AS REGRAS DE TELA

   Este bloco fica no FIM da folha, e o lugar dele é o conteúdo da regra.
   Entre dois seletores de MESMA especificidade quem vence é o último, e
   as regras de tela lá em cima declaram `padding` e `background` nos
   campos delas. Como o atalho `background` zera o `background-image`
   junto, um select com regra própria ficava sem seta NENHUMA: o
   appearance:none tinha apagado a nativa e o atalho apagava a nossa.

   Aqui estão TODOS os casos da folha, conferidos um a um.
   ===================================================================== */

/* Padding próprio come o espaço reservado pra seta, e o texto da opção
   passa por baixo dela. São TODOS os selects da folha que declaram
   padding — levantados com `grep select | grep padding`, não de cabeça.
   O #view-capta precisa do id junto: regra com id vale 1-x-x e nenhuma
   combinação de classes alcança. */
.kanban-sel-bar select,
.f select,
.mc-toolbar select,
.mc-ctx select,
.crm-filtros select,
.scr-mod select,
.neg-item select,
.fun-linha select,
.crm-funil select,
.cp-bloco select,
.crm-fcampo select{padding-right:32px}
#view-capta select{padding-right:32px}

/* Mesmo problema na busca, com a lupa: o texto começava POR BAIXO dela.
   A conta de especificidade aqui pega quem não presta atenção, e pegou:
   `[type=text]` conta na coluna das CLASSES, não na dos elementos. Então
   `.mc-toolbar input[type=text]` vale 0-2-1, e não 0-1-1 — `.busca`
   (0-1-0) e `input.busca` (0-1-1) perdem as duas.

   `input[type=text].busca` vale 0-2-1, empata, e ganha por estar no fim
   da folha. Resolve as 14 buscas de uma vez, sem listar tela por tela. */
input[type=text].busca{padding-left:36px}

/* O único select sobre fundo escuro do sistema. Seta clara, senão some. */
.bus-hero .bus-ano select{
  background-image:var(--chevron-claro);
  background-repeat:no-repeat;
  background-position:right 9px center;
  padding-right:26px;
}

/* ---------------------------------------------------------------------
   Detalhe de um arquivo de retorno (Faturamento > Recebidos)
   ---------------------------------------------------------------------
   O numero da coluna Boletos e clicavel e abre, na linha de baixo, de
   quem foi cada ocorrencia. Ele precisa PARECER clicavel antes do
   clique: numero que so se revela botao quando o mouse encosta e numero
   que ninguem descobre no celular, onde nao ha mouse.

   O ALVO DO TOQUE E O MOTIVO DE METADE DESTAS LINHAS. Medido na tela
   dublada em 375px, o botao com o digito "1" dava 5 x 16 px: ilegivel
   pro dedo num sistema que e usado principalmente pelo celular. O
   padding com margem negativa cresce a area de toque pra ~44 x 28 sem
   empurrar a coluna nem esticar a linha da tabela.

   O sublinhado e text-decoration, e nao border-bottom, justamente por
   causa disso: a borda acompanha a CAIXA e ficaria com 44px de traco
   embaixo de um digito so; o text-decoration acompanha o TEXTO e fica
   colado no numero, por maior que seja o padding em volta. */
.fin-arq-btn{
  background:none;
  border:0;
  font:inherit;
  color:var(--azul,#2E6BC4);
  font-weight:700;
  cursor:pointer;
  padding:6px 10px;
  margin:-6px -8px;
  min-width:44px;
  text-decoration:underline dotted;
  text-underline-offset:3px;
  text-decoration-thickness:1px;
}
.fin-arq-btn:hover{ color:var(--navy,#123a6b); }
.fin-arq-btn:focus-visible{ outline:2px solid var(--ring,#5B9BE0); outline-offset:2px; border-radius:4px; }
/* Aberto vira solido: e o unico sinal de qual linha esta expandida
   quando a tabela tem quinze arquivos e o detalhe rolou pra fora da
   vista. */
.fin-arq-btn.aberto{ text-decoration-style:solid; }

/* A linha do detalhe nao herda o padding da celula normal: quem manda no
   respiro e o div de dentro, senao a tabela interna encosta na borda.
   white-space:normal porque .op3tbl td trava em nowrap, e o nome de uma
   empresa em 375px precisa quebrar em vez de empurrar a tela. */
.op3tbl tr.fin-arq-det > td{ padding:0 11px; background:#f7fafd; white-space:normal; }
.op3tbl tr.fin-arq-det .op3tbl{ box-shadow:none; }

/* ---------------------------------------------------------------------
   Apelido do cliente na cobranca
   ---------------------------------------------------------------------
   O lapis fica ANTES do nome, e nao depois: depois, ele muda de lugar
   conforme o comprimento de cada razao social e a coluna vira uma
   escadinha. Antes, todos alinham.

   Discreto ate o mouse chegar na linha, porque ele nao e a acao
   principal daquela celula (o nome ja leva pro card ou pro contato) e
   uma coluna com quinze lapis chamando atencao rouba a leitura. No
   celular nao ha hover, entao ele nunca some de todo: 45% de opacidade
   e visivel sem competir. */
.fin-apelido-btn{
  background:none;
  border:0;
  padding:4px 6px;
  margin:-4px 2px -4px -6px;
  font-size:12px;
  line-height:1;
  color:var(--muted,#6b7a90);
  cursor:pointer;
  opacity:.45;
  transition:opacity .12s ease;
}
tr:hover .fin-apelido-btn{ opacity:1; }
.fin-apelido-btn:hover{ color:var(--azul,#2E6BC4); }
.fin-apelido-btn:focus-visible{ opacity:1; outline:2px solid var(--ring,#5B9BE0); outline-offset:1px; border-radius:4px; }

/* O campo da tela de nomes. Largura fixa pra coluna nao dancar conforme
   o que se digita, e fonte igual a da tabela pra o que se escreve
   parecer com o que vai aparecer depois. */
.fin-nome-inp{
  width:100%;
  min-width:180px;
  font:inherit;
  padding:5px 8px;
  border:1px solid var(--line,#d9e2ec);
  border-radius:6px;
  background:var(--card,#fff);
}
.fin-nome-inp:focus{ outline:2px solid var(--ring,#5B9BE0); outline-offset:-1px; border-color:transparent; }
.fin-nome-inp:disabled{ opacity:.6; }

/* No CELULAR nao existe hover, entao o lapis nunca seria revelado, e um
   alvo de 24x20 a 45% de opacidade e pequeno e apagado demais pro dedo.
   Em ponteiro grosso ele cresce e clareia; no mouse continua discreto,
   que e onde a discricao serve pra alguma coisa. */
@media (pointer: coarse){
  .fin-apelido-btn{
    opacity:.75;
    padding:9px 11px;
    margin:-9px 2px -9px -11px;
    font-size:14px;
  }
}

/* =================================== PAINEL DO ADMINISTRADOR (16/09/2026)
   body.adm-modo é ligado por adminBoot(). O menu e as telas de agência
   continuam no HTML, só não aparecem: sair do modo recarrega a página.
   Layout claro, sem herói escuro; cartões brancos sobre --bg.
   ===================================================================== */
body.adm-modo #sidebar > .side-group:not(.adm-side){display:none!important}
body.adm-modo .main-col > [id^="view-"]:not(#view-admin){display:none!important}
body.adm-modo #btn-voltar,
body.adm-modo #btn-guia-vega,
body.adm-modo #btn-cwhats-topo,
body.adm-modo #btn-sino,
body.adm-modo #sino-dropdown,
body.adm-modo #sauda-card,
body.adm-modo #btn-reportar,
body.adm-modo #btn-usermenu-agencia,
body.adm-modo #btn-config,
body.adm-modo #btn-primeiros-passos,
body.adm-modo #btn-vega-apresenta,
body.adm-modo #btn-assinatura,
body.adm-modo #btn-indicacoes,
body.adm-modo #tab-feedback,
body.adm-modo #btn-google,
body.adm-modo #btn-entrar-como{display:none!important}

.adm-view{max-width:1240px;width:100%;box-sizing:border-box;margin:0 auto;min-width:0}
.adm-view .adm-secao-tit,.adm-view .adm-bloco h3{background:none;border:0;border-radius:0}
/* As telas reaproveitadas trazem tabelas largas (acessos, leads): rolam
   dentro da própria caixa, nunca a página inteira. */
#adm-acessos,.adm-view #view-leadsrede,.adm-view #view-vega,.adm-view #view-campanhas,.adm-view #view-cupons{max-width:100%;overflow-x:auto}
.adm-cab{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:0 0 14px}
.adm-cab-txt{min-width:0;flex:1 1 280px}
.adm-cab h2{margin:0;font:700 20px/1.25 var(--font-display);color:var(--ink)}
.adm-cab p{margin:4px 0 0;color:var(--muted);font-size:13px;line-height:1.5}
.adm-cab-acoes{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.adm-atualizado{font-size:12px;color:var(--muted);background:var(--card);border:1px solid var(--line);border-radius:20px;padding:5px 11px}
.adm-secao-tit{margin:18px 0 8px;font:700 12px var(--font-ui);letter-spacing:.6px;text-transform:uppercase;color:var(--muted)}
.adm-subtabs{margin-top:-2px}

.adm-kpis{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}
.adm-kpi{display:flex;flex-direction:column;align-items:flex-start;gap:4px;text-align:left;cursor:pointer;
  background:var(--card);border:1px solid var(--line);border-left:4px solid var(--navy);border-radius:12px;padding:14px 16px;
  font:inherit;color:var(--ink);min-width:0;transition:box-shadow .15s,transform .15s}
.adm-kpi:hover{box-shadow:0 6px 18px rgba(11,19,43,.08);transform:translateY(-1px)}
.adm-kpi:focus-visible{outline:2px solid var(--navy);outline-offset:2px}
.adm-kpi.ok{border-left-color:var(--ok)}
.adm-kpi.warn{border-left-color:var(--warn)}
.adm-kpi.neg{border-left-color:var(--red)}
.adm-kpi-rot{font-size:12px;font-weight:600;color:var(--muted)}
.adm-kpi-val{font:700 26px/1.15 var(--font-display);font-variant-numeric:tabular-nums;color:var(--ink);word-break:break-word}
.adm-kpi.ok .adm-kpi-val{color:var(--ok)}
.adm-kpi.warn .adm-kpi-val{color:var(--warn)}
.adm-kpi.neg .adm-kpi-val{color:var(--red)}
.adm-kpi-sub{font-size:12px;color:var(--muted);line-height:1.4}

.adm-barra{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:10px}
.adm-barra .busca{flex:1 1 240px;min-width:0}
.adm-filtros{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}
.adm-filtro{background:var(--card);border:1px solid var(--line);color:var(--ink);border-radius:20px;padding:6px 12px;font:600 12.5px var(--font-ui);cursor:pointer}
.adm-filtro b{color:var(--muted);font-weight:700;margin-left:2px}
.adm-filtro.on{background:var(--navy);border-color:var(--navy);color:#fff}
.adm-filtro.on b{color:#fff}

.adm-sit{display:inline-block;padding:3px 9px;border-radius:20px;font-size:11.5px;font-weight:700;white-space:nowrap;background:#EEF1F6;color:var(--muted)}
.adm-sit.ok{background:#E4F1EA;color:var(--ok)}
.adm-sit.info{background:#EAF2FB;color:var(--navy2)}
.adm-sit.warn{background:#F7EFE0;color:var(--warn)}
.adm-sit.neg{background:#FAE9E9;color:var(--red)}
.adm-sit.rede{background:#EFEAFB;color:#553C9A}
.adm-sit.neutro{background:#EEF1F6;color:var(--muted)}
.adm-sub{display:block;font-size:12px;color:var(--muted);line-height:1.4;margin-top:2px}

.adm-tabela{width:100%;border-collapse:separate;border-spacing:0;background:var(--card);border:1px solid var(--line);border-radius:12px;overflow:hidden;font-size:13px}
.adm-tabela th{text-align:left;font-size:11.5px;font-weight:700;color:var(--muted);background:#F9FAFD;padding:10px 12px;border-bottom:1px solid var(--line);white-space:nowrap}
.adm-tabela td{padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:top;color:var(--ink)}
.adm-tabela tbody tr:last-child td{border-bottom:0}
.adm-tabela .adm-num{text-align:right;font-variant-numeric:tabular-nums}
.adm-acoes{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.adm-tabela td.adm-acoes{display:table-cell;text-align:right;white-space:nowrap}
.adm-tabela td.adm-acoes .btn{margin:0 0 4px 4px}
.adm-acoes .btn,.adm-tabela td.adm-acoes .btn{padding:6px 11px;font-size:12px}
.adm-vazio{background:var(--card);border:1px dashed var(--line);border-radius:12px;padding:22px;text-align:center;color:var(--muted);font-size:13px}
.adm-erro{background:#FAE9E9;border:1px solid #F1C9C9;color:var(--red);border-radius:12px;padding:14px 16px;font-size:13px;line-height:1.5}

.adm-tots{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.adm-tot{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px 14px;display:flex;align-items:baseline;gap:8px;flex:1 1 150px}
.adm-tot b{font:700 22px var(--font-display);font-variant-numeric:tabular-nums;color:var(--ink)}
.adm-tot span{font-size:12.5px;color:var(--muted)}
.adm-tot.ok b{color:var(--ok)} .adm-tot.warn b{color:var(--warn)} .adm-tot.neg b{color:var(--red)} .adm-tot.info b{color:var(--navy2)}

.adm-blocos{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}
.adm-bloco{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px 16px;min-width:0}
.adm-bloco h3{margin:0 0 8px;font:700 14px var(--font-display);color:var(--ink)}
.adm-linha{display:flex;justify-content:space-between;gap:10px;padding:6px 0;border-bottom:1px solid var(--line);font-size:13px;color:var(--muted)}
.adm-linha:last-child{border-bottom:0}
.adm-linha b{color:var(--ink);font-variant-numeric:tabular-nums;text-align:right}
.adm-linha b.ok{color:var(--ok)} .adm-linha b.warn{color:var(--warn)} .adm-linha b.neg{color:var(--red)} .adm-linha b.info{color:var(--navy2)}
.adm-sep{height:1px;background:var(--line);margin:4px 0}

/* Funil de adoção (556): a barra é o próprio número, para o degrau se ler
   de relance sem comparar seis linhas de tabela. */
.adm-adoc-barra{height:6px;border-radius:3px;background:var(--line);margin-top:6px;overflow:hidden;max-width:320px}
.adm-adoc-barra span{display:block;height:100%;background:var(--navy2);border-radius:3px}
.adm-destaque{font:700 30px var(--font-display);color:var(--ink);font-variant-numeric:tabular-nums}
.adm-destaque.warn{color:var(--warn)}

.adm-nov-lista{display:flex;flex-direction:column;gap:10px}
.adm-nov{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 14px;min-width:0}
.adm-nov-topo{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:6px}
.adm-nov-topo .adm-sub{display:inline;margin:0}
.adm-nov-tit{display:block;font-size:14px;color:var(--ink);margin-bottom:4px}
.adm-nov-desc{font-size:13px;color:var(--muted);line-height:1.5;white-space:pre-line;overflow-wrap:anywhere}
.adm-nov .adm-acoes{margin-top:8px}

/* No celular a linha da tabela vira cartão: cada célula com o próprio
   rótulo, e os botões numa faixa no pé. Nada rola de lado. */
@media (max-width:760px){
  .adm-cab h2{font-size:18px}
  .adm-kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .adm-kpi{padding:10px 12px}
  .adm-kpi-val{font-size:20px}
  .adm-blocos{grid-template-columns:1fr}
  .adm-tabela,.adm-tabela tbody,.adm-tabela tr,.adm-tabela td{display:block;width:100%;box-sizing:border-box}
  .adm-tabela{background:transparent;border:0;border-radius:0}
  .adm-tabela thead{display:none}
  .adm-tabela tr{background:var(--card);border:1px solid var(--line);border-radius:12px;margin-bottom:10px;padding:8px 12px}
  .adm-tabela td{border:0;padding:5px 0;text-align:right;overflow-wrap:anywhere}
  .adm-tabela td::before{content:attr(data-rot);float:left;margin-right:10px;font-size:12px;font-weight:600;color:var(--muted);text-align:left}
  .adm-tabela td::after{content:"";display:block;clear:both}
  .adm-tabela td:first-child{display:block;text-align:left;padding-bottom:8px;border-bottom:1px solid var(--line);margin-bottom:4px}
  .adm-tabela td:first-child::before{content:none}
  .adm-tabela .adm-num{text-align:right}
  .adm-tabela td.adm-acoes{display:flex;justify-content:flex-start;flex-wrap:wrap;white-space:normal;text-align:left;border-top:1px solid var(--line);margin-top:4px;padding-top:8px}
  .adm-tabela td.adm-acoes::before,.adm-tabela td.adm-acoes::after{content:none}
  .adm-tabela td.adm-acoes .btn{margin:0}
  .adm-tabela td .adm-sub{text-align:right}
  .adm-tabela td:first-child .adm-sub{text-align:left}
}

/* =====================================================================
   CRM MAIS SIMPLES (revisão de 18/09/2026)
   Ajustes, negociação em dois passos e proposta. No fim da folha de
   propósito: estas regras precisam vencer as das entregas anteriores do
   mesmo dia, que tinham letra de 12 a 13px e alvos de toque de 34px.
   ===================================================================== */

/* A ação principal do cartão é CHEIA; as outras ficam vazadas. */
.crm-mini.crm-neg{background:var(--brand);border-color:var(--brand);color:#fff;font-weight:700}
.crm-mini.crm-neg:hover{filter:brightness(1.06)}

/* Link de texto para ações secundárias: discreto, mas com área de toque. */
.crm-link{background:none;border:0;padding:8px 2px;min-height:44px;color:var(--brand);
  font:inherit;font-size:14.5px;font-weight:600;cursor:pointer;text-decoration:underline;
  text-underline-offset:3px;display:inline-flex;align-items:center}
.crm-link.perigo{color:var(--muted)}
.crm-link:focus-visible{outline:2px solid var(--brand);outline-offset:2px;border-radius:4px}

/* Erro ao lado do campo, e não em alerta solto. */
.crm-erro{color:#B03030;font-size:14px;margin-top:5px}
.com-erro{border-color:#B03030 !important}
.cp-obr{font-weight:400;color:var(--muted);font-size:12.5px}
.cp-bloco.sem-tit{border-top:0;margin-top:0;padding-top:0}

/* "Mais opções": o avançado fica guardado, mas à vista de quem procura. */
.mais-op{margin-top:14px;border-top:1px solid var(--line);padding-top:4px}
.mais-op>summary{cursor:pointer;font-weight:600;color:var(--brand);min-height:44px;
  display:flex;align-items:center;list-style:none;font-size:15px}
.mais-op>summary::-webkit-details-marker{display:none}
.mais-op>summary::before{content:"+";font-weight:700;margin-right:8px;font-size:18px}
.mais-op[open]>summary::before{content:"−"}

/* Escolha de duas opções como botões lado a lado: um toque, sem abrir lista. */
.seg{display:flex;border:1px solid var(--line);border-radius:10px;overflow:hidden}
.seg button{flex:1;min-height:44px;border:0;background:var(--card,#fff);font:inherit;
  font-size:15px;cursor:pointer;color:var(--ink)}
.seg button+button{border-left:1px solid var(--line)}
.seg button.on{background:color-mix(in srgb,var(--brand) 12%,transparent);color:var(--brand);font-weight:700}
.seg button.on::before{content:"✓ "}

/* ---------- Ajustes ---------- */
.aj-cab h2{font:700 20px/1.25 var(--font-display);margin:16px 0 4px;color:var(--ink)}
.aj-cab p,.aj-sec>p{color:var(--muted);font-size:15px;line-height:1.45;margin:0 0 8px}
.aj-sec{background:var(--card,#fff);border:1px solid var(--line);border-radius:14px;padding:16px;margin-top:14px}
.aj-sec h3{font:700 17px/1.3 var(--font-display);margin:0 0 4px;color:var(--ink)}
.aj-item{border-top:1px solid var(--line);padding:12px 0}
.aj-item.off{opacity:.62}
.aj-top{display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:16px;color:var(--ink)}
.aj-selo{font-size:12.5px;font-weight:600;padding:2px 9px;border-radius:999px;background:var(--line);color:var(--muted)}
.aj-selo.rec{background:color-mix(in srgb,var(--ok,#1F7A4D) 14%,transparent);color:var(--ok,#1F7A4D)}
.aj-sub{font-size:14.5px;color:var(--muted);margin-top:3px}
.aj-etapas{display:flex;flex-wrap:wrap;gap:4px;align-items:center;margin-top:8px;font-size:13.5px}
.aj-etapas span{background:color-mix(in srgb,var(--brand) 7%,transparent);padding:3px 10px;border-radius:999px;color:var(--ink)}
.aj-etapas i{color:var(--muted);font-style:normal}
.aj-acoes{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.aj-acoes .btn,.aj-sec>.btn{min-height:44px}
.aj-sec>.btn{margin-top:12px}
.aj-vazio{border:1px dashed var(--line);border-radius:10px;padding:14px;color:var(--muted);font-size:15px;line-height:1.45;margin:8px 0}
.aj-guard{margin-top:10px}
.aj-guard>summary{cursor:pointer;min-height:44px;display:flex;align-items:center;color:var(--muted);font-weight:600;font-size:15px}

/* Esqueleto enquanto carrega: nunca tela branca, nunca "Carregando…" solto. */
.aj-carregando .sk{height:74px;border-radius:12px;margin-top:12px;
  background:linear-gradient(90deg,var(--line) 0%,color-mix(in srgb,var(--line) 35%,transparent) 50%,var(--line) 100%);
  background-size:200% 100%;animation:crmSkel 1.2s linear infinite}
@keyframes crmSkel{to{background-position:-200% 0}}

/* ---------- Negociação ---------- */
.neg-modal header{display:flex;align-items:center;gap:8px}
.neg-passo{margin-left:auto;font-size:13px;font-weight:700;color:var(--brand);
  background:color-mix(in srgb,var(--brand) 10%,transparent);padding:4px 11px;border-radius:999px}
.neg-quem{font:700 17px/1.3 var(--font-display);margin-bottom:12px;color:var(--ink)}
.ni{border:1px solid var(--line);border-radius:12px;padding:12px;margin-bottom:10px;background:var(--card,#fff)}
.ni .f+.f{margin-top:10px}
.ni-linha{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px}
.ni-links{display:flex;gap:16px;flex-wrap:wrap;margin-top:2px}
.neg-mais{min-height:44px;width:100%}
#neg-total{display:flex;gap:18px;justify-content:flex-end;flex-wrap:wrap;margin-top:14px;
  padding-top:10px;border-top:2px solid var(--line)}
#neg-total>div{display:flex;flex-direction:column;align-items:flex-end;gap:2px}
#neg-total span{font-size:13.5px;color:var(--muted)}
#neg-total b{font:700 16px/1.2 var(--font-display);font-variant-numeric:tabular-nums;color:var(--ink)}
#neg-total .forte b{font-size:21px;color:var(--brand)}
.neg-salvo{min-height:24px;font-size:14px;margin-top:6px;text-align:right}
.neg-ok{color:var(--ok,#1F7A4D);font-weight:600}
.neg-salvando,.neg-motivo{color:var(--muted)}
.neg-erro{color:#B03030}
.neg-dica{background:color-mix(in srgb,var(--brand) 7%,transparent);border-radius:10px;
  padding:10px 12px;font-size:14.5px;line-height:1.45;margin-bottom:12px;color:var(--ink)}
.neg-modal .neg-rodape{display:flex;flex-wrap:wrap;gap:0 16px;margin-top:14px;
  border-top:1px solid var(--line);padding-top:4px}
.neg-resumo{border:1px solid var(--line);border-radius:12px;padding:12px}
.neg-res-l{display:flex;justify-content:space-between;gap:10px;padding:7px 0;font-size:15px;
  border-top:1px solid var(--line);color:var(--ink)}
.neg-resumo .neg-sec-tit+.neg-res-l{border-top:0}
.neg-res-l b{font-variant-numeric:tabular-nums;white-space:nowrap}
.neg-res-l.tot{font-weight:700;border-top:2px solid var(--line)}
.prop-card{border-radius:12px;padding:14px;border:1px solid var(--line)}
.prop-card.esp{background:color-mix(in srgb,var(--brand) 6%,transparent)}
.prop-card.ok{background:#EAF7F0;border-color:#BFE3D0}
.prop-st{font-weight:700;font-size:15.5px;color:var(--ink)}
.prop-card.ok .prop-st{color:var(--ok,#1F7A4D)}
.prop-tit{font-size:15px;margin-top:4px;color:var(--ink)}
.prop-val{display:flex;gap:14px;flex-wrap:wrap;font:700 18px/1.3 var(--font-display);margin-top:6px;color:var(--ink)}
.prop-hist{font-size:14px;padding:7px 0;color:var(--muted);border-top:1px solid var(--line)}
#prop-link{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13.5px}

/* Etapas do funil, na edição. */
.fe-linha{display:grid;grid-template-columns:1fr 1fr;gap:10px;align-items:end;padding:10px 0;border-bottom:1px solid var(--line)}
.fe-linha .crm-link{grid-column:1 / -1;justify-self:start;min-height:36px;padding:2px 0}

@media (prefers-reduced-motion:reduce){ .aj-carregando .sk{animation:none} }

@media (max-width:760px){
  .neg-modal input,.neg-modal select,.neg-modal textarea,
  .modal .mais-op input,.modal .mais-op textarea,.fe-linha input,.fe-linha select,
  #cp-rot,#cp-onde,#cp-tipo,#cat-nome,#cat-preco,#fun-nome,#fun-destino{font-size:16px;min-height:44px}
  .fe-linha{grid-template-columns:1fr;gap:8px}
  /* O !important aqui responde a outro: a folha tem, desde 04/09, um
     `.btn{min-height:34px !important}` para o celular, que derruba todo
     botao do sistema para 34px. Nas telas desta revisao o alvo de toque
     volta a 44px; a regra global fica para a revisao das telas antigas,
     porque mexer nela muda o sistema inteiro de uma vez. */
  .crm-barra .btn,.crm-barra button,.crm-barra select{min-height:44px !important}
  .crm-card-pe .crm-mini,.crm-card-pe .crm-neg{min-height:44px !important}
  .neg-modal .foot .btn{flex:1;min-height:48px !important;font-size:15px}
  .neg-modal .btn,.aj-sec .btn,.modal .foot .btn{min-height:44px !important;font-size:15px}
  .aj-acoes .btn{flex:1}
  .aj-sec{padding:14px}
}

/* =====================================================================
   CAMPOS NO VISUAL DO C·WHATS (18/09/2026, escolha do dono do produto)

   A borda dos campos era #7F8DA6, medida para dar 3,35:1 contra o fundo
   (WCAG 1.4.11 pede 3:1 no contorno de campo). Em 18/09 o dono escolheu
   o visual mais leve do C·Whats e do C-Hunt Seguros, sabendo que a borda
   clara fica abaixo desses 3:1 (spec 15, item 1, opção "b"). O que segura
   a leitura agora é o fundo levemente cinza da busca e o anel azul ao
   tocar. Voltar ao contraste é apagar este bloco: nada acima foi mexido.
   ===================================================================== */
:root{--field-line:#D5DEEA}
:where(input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]):not([type=submit]):not([type=button]),select,textarea):hover:not(:disabled):not([readonly]){
  border-color:#B8C6D8;
}
:where(input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]):not([type=submit]):not([type=button]),select,textarea):focus{
  border-color:var(--blue);
  box-shadow:0 0 0 3px rgba(41,111,186,.16);
}
::placeholder{color:#8A97A8}

/* BUSCA E DATA: o desenho da busca do C·Whats. Fundo cinza bem claro,
   borda suave, cantos de 12px; branco ao tocar. A lupa do c·hunt fica
   (e background-COLOR, nunca o atalho, para nao apagar a lupa nem a
   seta). As alturas de cada tela nao mudam. #kanban-busca entra pelo
   nome porque tem regra propria com id, que ganharia de uma classe. */
input.busca,input[type=text].busca,input[type=search],#kanban-busca,#deslq,#mn-q,
:where(input[type=date],input[type=month],input[type=week],input[type=time],input[type=datetime-local]){
  background-color:#F7F9FC;
  border:1px solid #E2E9F3;
  border-radius:12px;
  color:var(--ink);
}
input.busca:hover,input[type=text].busca:hover,input[type=search]:hover,#kanban-busca:hover,#deslq:hover,#mn-q:hover,
:where(input[type=date],input[type=month],input[type=week],input[type=time],input[type=datetime-local]):hover{
  border-color:#C9D5E6;
}
input.busca:focus,input[type=text].busca:focus,input[type=search]:focus,#kanban-busca:focus,#deslq:focus,#mn-q:focus,
:where(input[type=date],input[type=month],input[type=week],input[type=time],input[type=datetime-local]):focus{
  background-color:#fff;
  border-color:var(--blue);
  box-shadow:0 0 0 3px rgba(41,111,186,.14);
}
input.busca::placeholder,input[type=search]::placeholder,#kanban-busca::placeholder,#deslq::placeholder,#mn-q::placeholder{color:#8FA3C4}

/* UM CANTO SO no sistema inteiro. Cada tela tinha o seu (7, 9, 10px), e
   era isso que fazia as caixas parecerem de sistemas diferentes. Aqui o
   !important e a excecao documentada: sao dezenas de regras de tela com
   peso maior, e o canto e a unica propriedade que se mexe sem risco de
   layout. O CRM (#view-capta) tem tema proprio e fica de fora. */
:is(input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]):not([type=file]):not([type=submit]):not([type=button]),select,textarea):not(#view-capta *){
  border-radius:10px !important;
}
:is(input.busca,input[type=search],#kanban-busca,#deslq,#mn-q,input[type=date],input[type=month],input[type=week],input[type=time],input[type=datetime-local]):not(#view-capta *){
  border-radius:12px !important;
}
:is(input[type=date],input[type=month],input[type=week],input[type=time],input[type=datetime-local]):not(#view-capta *):not(:focus):not(:disabled){
  background-color:#F7F9FC !important;
  border-color:#E2E9F3 !important;
}

/* TABELA DOS DOCUMENTOS JURIDICOS NO CELULAR (18/09/2026). Em 360px uma
   tabela da Politica da Rede passava 15px da tela e a pagina rolava de
   lado. O conserto mora aqui, e nao no documento: mexer no .html mudaria
   o hash do texto que as pessoas aceitaram (Termos::DOCUMENTOS). */
@media (max-width:560px){
  main.doc table{display:block;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
}

/* AGENDA: O CANDIDATO EM LINHA-RESUMO (18/09/2026). Ver agCandsHTML no
   painel. O estilo antigo da linha mora no AG_CSS, dentro do painel; o
   que esta aqui acrescenta a linha-resumo e o tamanho de dedo. */
#ag-cands .agcand{padding:0;overflow:hidden}
.agc-det>summary{list-style:none;cursor:pointer}
.agc-det>summary::-webkit-details-marker{display:none}
.agc-resumo{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-height:44px;padding:6px 10px}
.agc-resumo::after{content:"\25B8";margin-left:auto;color:var(--muted);transition:transform .15s ease}
.agc-det[open]>.agc-resumo::after{transform:rotate(90deg)}
.agc-det[open]>.agc-resumo{border-bottom:1px solid var(--line)}
.agc-r-hora{font-family:var(--font-mono);font-weight:700;color:var(--navy);min-width:44px}
.agc-r-nome{font-weight:600;color:var(--ink);flex:1 1 120px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.agc-r-nome i{color:var(--muted);font-weight:500}
.agc-r-res{font-size:11px;font-weight:700;padding:2px 8px;border-radius:10px;background:#eef2f7;color:var(--muted)}
.agc-r-res.agc-r-aprovado{background:#e9f6ee;color:var(--ok)}
.agc-r-res.agc-r-reprovado{background:#fdeeeb;color:var(--red)}
.agc-corpo{padding:8px 10px 10px}
.agc-corpo .mais-op{margin-top:8px}
.agc-acoes{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.agc-acoes .agc-tirar{margin-left:auto;color:var(--red)}
@media (max-width:760px){
  #ag-cands .agcand input:not([type=radio]),#ag-cands .agcand select{min-height:44px;font-size:16px}
  #ag-cands .agc-l1,#ag-cands .agc-l3{flex-wrap:wrap}
  #ag-cands .agc-l1 .agc-nome{flex:1 1 100%}
  #ag-cands .agc-l3>*{flex:1 1 calc(50% - 6px);width:auto}
  #ag-cands .agc-hire{min-height:44px}
  .agc-acoes .agc-tirar{margin-left:0}
}

/* CARD DA VAGA EM SEÇÕES QUE DOBRAM (18/09/2026). Ver fieldsGroupsHTML
   com dobrar=true e cardGrupoAberto no painel. */
details.grp-dobra{padding:0}
details.grp-dobra>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:10px;
  min-height:48px;padding:10px 12px;border-radius:10px}
details.grp-dobra>summary::-webkit-details-marker{display:none}
details.grp-dobra>summary:hover{background:var(--bg)}
details.grp-dobra>summary h4{margin:0;flex:0 1 auto}
details.grp-dobra>summary::after{content:"\25B8";margin-left:6px;color:var(--muted);transition:transform .15s ease}
details.grp-dobra[open]>summary::after{transform:rotate(90deg)}
details.grp-dobra[open]>summary{border-bottom:1px solid var(--line);border-radius:10px 10px 0 0;margin-bottom:10px}
details.grp-dobra>.fields{padding:0 12px 12px}
.grp-resumo{margin-left:auto;font-size:12px;color:var(--muted);white-space:nowrap}
.grp-resumo.ok{color:var(--ok);font-weight:600}
.grp-resumo.ok::before{content:"\2713  "}
/* O que falta para a próxima etapa: no alto do card, com o atalho até o
   campo. Amarelo, e não vermelho: é aviso do próximo passo, não erro. */
.card-falta{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 12px;padding:10px 12px;
  border-radius:10px;background:#fdf3d9;border:1px solid #f2c94c;color:#5c4400;font-size:13px}
.card-falta[hidden]{display:none}
.card-falta-ir{min-height:36px;padding:0 12px;border-radius:8px;border:1px solid #d9a92e;background:#fff;
  color:#5c4400;font:600 13px var(--font-ui);cursor:pointer}
.card-falta-ir:hover{background:#fff8e6}
@media (max-width:760px){
  details.grp-dobra>summary{min-height:52px}
  .card-falta-ir{min-height:44px}
  .grp-resumo{font-size:12.5px}
}

/* Titulos das partes da ficha de triagem (18/09/2026): Qualificacoes
   primeiro, depois o DISC, depois Contato e dados. */
.trg-secao{margin:14px 0 6px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--navy)}
.trg-pills+.trg-secao{margin-top:8px}

/* Currículo completo na ficha de aprovação (18/09/2026). */
.trg-curriculo:empty{display:none}
.trg-curr-caixa{margin:10px 0 4px;padding:12px;border:1px dashed var(--line);border-radius:12px;background:var(--bg);display:flex;flex-direction:column;gap:6px;align-items:flex-start}
.trg-curr-caixa.tem{border-style:solid;border-color:#bfd6f0;background:#f2f7fd}
.trg-curr-t{font-weight:700;color:var(--ink);font-size:13.5px}
.trg-curr-x{font-size:12.5px;color:var(--muted);line-height:1.45}

/* 589: e-mail que volta. Aviso no topo, no fluxo da página (não fixo). */
.ed-faixa{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:10px 16px 0;padding:12px 14px;border:1px solid #f0c36d;border-left:4px solid #ca8a04;border-radius:10px;background:#fffbeb;color:#422006;font-size:15px;line-height:1.45}
.ed-faixa .ed-txt{flex:1 1 260px;min-width:0;overflow-wrap:anywhere}
.ed-faixa .ed-acoes{display:flex;gap:8px;flex-wrap:wrap}
.ed-faixa .btn{min-height:44px}

/* 590b: "Minha assinatura" no menu do usuário mostra plano e vencimento
   na segunda linha; quem paga no Pix e está perto de vencer ganha um
   ponto de atenção (cor NÃO é a única informação: o texto diz a data). */
.usermenu-item small{display:block;font-size:11.5px;font-weight:500;color:var(--muted);line-height:1.35;margin-top:1px}
.usermenu-item:has(small){align-items:flex-start}
.usermenu-item:has(small) svg{margin-top:2px}
.usermenu-item span:has(small){white-space:normal}
.usermenu-alerta{background:#FFF7E6}
.usermenu-alerta small{color:#7A5200;font-weight:700}
