/* AUTH V2 — porta única. Usa as variáveis do ds-v5 já presentes na home. */
.av2-scrim{position:fixed;inset:0;background:rgba(13,13,13,.42);z-index:1200;display:flex;align-items:center;justify-content:center;padding:20px}
.av2-modal{background:var(--campo,#fff);color:var(--tinta,#0d0d0d);border-radius:18px;box-shadow:0 24px 80px rgba(13,13,13,.25);max-width:400px;width:100%;padding:30px 28px 24px;text-align:center;position:relative;font-family:'Inter',system-ui,sans-serif}
.av2-x{position:absolute;top:12px;right:12px;background:none;border:none;font-size:19px;line-height:1;color:var(--mut,#6b6b6b);cursor:pointer;width:32px;height:32px;border-radius:8px}
.av2-x:hover{background:var(--hover,#efedea)}
.av2-modal h3{font-family:'Inter Tight','Inter',sans-serif;font-size:22px;font-weight:700;letter-spacing:-.02em;margin:0 0 8px}
.av2-modal h3 i{font-style:normal;color:var(--verm,#e3120b)}
.av2-sub{font-size:13.5px;color:var(--mut,#6b6b6b);margin:0 auto 18px;max-width:38ch;line-height:1.5}
.av2-b{width:100%;display:flex;align-items:center;justify-content:center;gap:10px;background:var(--tinta,#0d0d0d);color:var(--fundo,#fff);font-size:13.5px;font-weight:600;padding:12px;border-radius:12px;border:none;cursor:pointer;font-family:inherit}
.av2-b:hover{background:var(--verm,#e3120b)}
.av2-b:disabled{opacity:.6;cursor:default}
.av2-b.av2-fantasma{background:transparent;color:var(--tinta,#0d0d0d);border:1px solid var(--linha,#e8e6e2)}
.av2-b.av2-fantasma:hover{background:var(--hover,#efedea);color:var(--tinta,#0d0d0d)}
.av2-b.av2-mini{width:auto;padding:10px 18px;font-size:13px}
.av2-ou{display:flex;align-items:center;gap:12px;color:var(--sutil,#767676);font-size:12px;margin:14px 0}
.av2-ou::before,.av2-ou::after{content:"";flex:1;height:1px;background:var(--linha,#e8e6e2)}
.av2-campo{margin:0 0 10px}
.av2-campo input{width:100%;border:1px solid var(--linha,#e8e6e2);border-radius:12px;padding:12px 16px;font-size:14.5px;font-family:inherit;outline:none;background:var(--campo,#fff);color:var(--tinta,#0d0d0d)}
.av2-campo input:focus{border-color:var(--tinta,#0d0d0d)}
.av2-legal{font-size:11.5px;color:var(--sutil,#767676);margin-top:16px;line-height:1.5}
.av2-legal a,.av2-alt a{text-decoration:underline;cursor:pointer}
.av2-alt{font-size:13px;color:var(--mut,#6b6b6b);margin-top:14px}
.av2-alt a{color:var(--verm,#e3120b);font-weight:600;text-decoration:none}
.av2-caminhos{line-height:1.7}
.av2-msg{display:none;font-size:13px;border-radius:10px;padding:10px 14px;margin-bottom:12px;text-align:left}
.av2-msg.on{display:block}
.av2-msg.erro{background:#fdecea;border:1px solid #f5c6c2;color:#8f1d18}
.av2-msg.ok{background:#eef7f0;border:1px solid #cfe8d6;color:#1f7a45}
.av2-cod{display:flex;gap:8px;justify-content:center;margin:6px 0 4px}
.av2-cod input{width:46px;height:54px;text-align:center;font-family:'IBM Plex Mono',monospace;font-size:22px;font-weight:600;border:1px solid var(--linha,#e8e6e2);border-radius:12px;background:var(--campo,#fff);color:var(--tinta,#0d0d0d);outline:none}
.av2-cod input:focus{border-color:var(--tinta,#0d0d0d)}
.av2-cod input.erro{border-color:var(--verm,#e3120b);color:var(--verm,#e3120b)}
@media(max-width:420px){.av2-cod input{width:40px;height:48px;font-size:19px}}
.av2-reenviar{font-size:12.5px;color:var(--mut,#6b6b6b);margin-top:12px}
.av2-reenviar a{text-decoration:underline;cursor:pointer}
.av2-toast{position:fixed;bottom:26px;left:50%;transform:translateX(-50%);background:var(--tinta,#0d0d0d);color:var(--fundo,#fff);font-size:13px;padding:11px 20px;border-radius:12px;box-shadow:0 10px 30px rgba(13,13,13,.25);z-index:1300;max-width:min(92vw,520px);text-align:center;font-family:'Inter',sans-serif}
/* faixa do soft-gate (substitui o formulário antigo) */
.av2-faixa{border:1px solid var(--linha,#e8e6e2);border-radius:16px;padding:18px 20px;margin:18px 0;background:var(--lateral,#f7f6f4);display:flex;align-items:center;gap:16px;flex-wrap:wrap;font-family:'Inter',sans-serif}
.av2-faixa .tx{flex:1;min-width:220px}
.av2-faixa .tx b{font-size:14px;display:block;margin-bottom:2px}
.av2-faixa .tx p{font-size:12.5px;color:var(--mut,#6b6b6b);margin:0}
.av2-faixa .bts{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.av2-dispensar{font-size:12px;color:var(--sutil,#767676);background:none;border:none;cursor:pointer;font-family:inherit;padding:6px}
.av2-dispensar:hover{color:var(--tinta,#0d0d0d)}
/* onboarding conversacional */
.av2-chips{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.av2-chip{font-size:13px;border:1px solid var(--linha,#e8e6e2);border-radius:999px;padding:8px 16px;background:var(--campo,#fff);color:var(--tinta,#0d0d0d);cursor:pointer;font-family:inherit}
.av2-chip:hover{border-color:var(--tinta,#0d0d0d)}
.av2-chip.on{background:var(--tinta,#0d0d0d);color:var(--fundo,#fff);border-color:var(--tinta,#0d0d0d)}
.av2-onb-nota{margin-top:14px;font-size:13px;color:var(--sutil,#767676)}

[data-theme="escuro"] .av2-msg.erro{background:#2a1413;border-color:#57221f;color:#f0918d}
[data-theme="escuro"] .av2-msg.ok{background:#12241a;border-color:#1f4530;color:#4cc07d}
[data-theme="escuro"] .av2-modal{box-shadow:0 24px 80px rgba(0,0,0,.6)}

/* ===== ESCURO: superfície elevada (Daniel, 02/08) =====
   No claro o modal é branco sobre cinza; no escuro NÃO pode ser preto sobre
   preto (--campo #1a1b20 × --fundo #121316 = quase a mesma cor: o cartão some).
   Regra de dark mode: elevação = superfície MAIS CLARA + borda sutil + scrim
   mais forte. Os campos ficam mais escuros que o cartão pra manter a leitura. */
[data-theme="escuro"] .av2-scrim{background:rgba(0,0,0,.7)}
[data-theme="escuro"] .av2-modal{background:#24262d;border:1px solid rgba(255,255,255,.09);box-shadow:0 28px 90px rgba(0,0,0,.72)}
[data-theme="escuro"] .av2-campo input,
[data-theme="escuro"] .av2-cod input{background:#191a20;border-color:#33353d;color:var(--tinta)}
[data-theme="escuro"] .av2-campo input:focus,
[data-theme="escuro"] .av2-cod input:focus{border-color:#6f727c}
[data-theme="escuro"] .av2-b.av2-fantasma{border-color:#3a3d45;background:#191a20}
[data-theme="escuro"] .av2-b.av2-fantasma:hover{background:#2c2f37}
[data-theme="escuro"] .av2-ou::before,[data-theme="escuro"] .av2-ou::after{background:#33353d}
[data-theme="escuro"] .av2-x:hover{background:#33353d}
[data-theme="escuro"] .av2-faixa{background:#1c1e24;border-color:#2b2d35}
[data-theme="escuro"] .av2-toast{background:#2c2f37;color:var(--tinta);border:1px solid rgba(255,255,255,.08)}

/* ===== F3 — popover da conta + Configurações ===== */
.av2-pop{position:fixed;width:250px;background:var(--campo,#fff);border:1px solid var(--linha,#e8e6e2);border-radius:14px;box-shadow:0 12px 40px rgba(13,13,13,.18);padding:6px;z-index:1250;font-family:'Inter',sans-serif}
.av2-pop-quem{padding:10px 12px 8px;border-bottom:1px solid var(--linha,#e8e6e2);margin-bottom:6px}
.av2-pop-quem .n{font-size:13.5px;font-weight:600;margin:0}
.av2-pop-quem .e{font-size:12px;color:var(--sutil,#767676);margin:2px 0 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.av2-pop-quem .p{font-family:'IBM Plex Mono',monospace;font-size:10px;color:var(--verm,#e3120b);border:1px solid currentColor;border-radius:6px;padding:1px 7px;display:inline-block;margin-top:6px;text-transform:uppercase;letter-spacing:.05em}
.av2-pop .item{display:flex;gap:10px;align-items:center;width:100%;text-align:left;font-size:13px;color:var(--tinta,#0d0d0d);padding:9px 12px;border-radius:9px;background:none;border:none;cursor:pointer;font-family:inherit}
.av2-pop .item:hover{background:var(--hover,#efedea)}
.av2-pop .sair{color:var(--mut,#6b6b6b)}
.av2-pop hr{border:none;border-top:1px solid var(--linha,#e8e6e2);margin:6px 0}
@media(max-width:700px){.av2-pop{left:12px!important;right:12px;bottom:14px!important;width:auto;z-index:1300}}
/* modal de configurações */
.av2-cfg{background:var(--campo,#fff);border-radius:18px;box-shadow:0 24px 80px rgba(13,13,13,.25);max-width:700px;width:100%;display:flex;min-height:460px;max-height:86vh;overflow:hidden;position:relative;font-family:'Inter',sans-serif;text-align:left}
.av2-cfg nav{width:200px;flex-shrink:0;border-right:1px solid var(--linha,#e8e6e2);background:var(--lateral,#f7f6f4);padding:14px 8px;display:flex;flex-direction:column;gap:2px;overflow-y:auto}
.av2-cfg nav .cab{padding:2px 10px 10px;font-size:14px}
.av2-cfg nav button{display:block;width:100%;text-align:left;font-size:13px;padding:9px 10px;border-radius:9px;background:none;border:none;cursor:pointer;color:var(--tinta,#0d0d0d);font-family:inherit}
.av2-cfg nav button:hover{background:var(--hover,#efedea)}
.av2-cfg nav button.on{background:var(--hover,#efedea);font-weight:600}
.av2-cfg .painel{flex:1;padding:22px 24px;overflow-y:auto}
.av2-cfg .painel h4{font-size:15px;font-weight:700;margin:0 0 14px}
.av2-cfg-x{top:10px;right:12px;z-index:3}
.av2-linha{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;padding:13px 0;border-bottom:1px solid var(--linha,#e8e6e2)}
.av2-linha:last-of-type{border-bottom:none}
.av2-linha .l{font-size:13.5px;flex:1;min-width:0}
.av2-linha .l .d{font-size:12px;color:var(--sutil,#767676);margin:2px 0 0;max-width:42ch}
.av2-linha .c{display:flex;gap:8px;align-items:center;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end}
.av2-linha .v{font-size:13px;color:var(--mut,#6b6b6b)}
.av2-in{border:1px solid var(--linha,#e8e6e2);border-radius:9px;padding:7px 10px;font-size:13px;background:var(--campo,#fff);color:var(--tinta,#0d0d0d);font-family:inherit;max-width:190px}
.av2-mini-acao{font-size:12.5px;font-weight:600;color:var(--verm,#e3120b);cursor:pointer;background:none;border:none;font-family:inherit;white-space:nowrap;text-decoration:none}
.av2-mini-acao.perigo{color:var(--verm,#e3120b)}
.av2-carregando{font-size:13px;color:var(--sutil,#767676)}
.av2-nota{font-size:12px;color:var(--sutil,#767676);margin-top:16px}
.av2-sub-sec{padding:14px 0 4px;border-bottom:1px solid var(--linha,#e8e6e2)}
.av2-sub-sec .d{font-size:12px;color:var(--sutil,#767676);margin:2px 0 8px}
.av2-sessao{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 0;border-top:1px solid var(--linha,#e8e6e2);font-size:13px}
.av2-sessao .disp{font-weight:500;margin:0}
.av2-sessao .det{font-size:12px;color:var(--sutil,#767676);font-family:'IBM Plex Mono',monospace;margin:2px 0 0}
.av2-sessao .atual{font-family:'IBM Plex Mono',monospace;font-size:10px;color:var(--ok,#1f7a45);border:1px solid currentColor;border-radius:6px;padding:1px 7px;text-transform:uppercase}
.av2-key{margin-top:12px;font-size:12.5px;color:var(--mut,#6b6b6b)}
.av2-key code{display:block;font-family:'IBM Plex Mono',monospace;font-size:12px;background:var(--lateral,#f7f6f4);border:1px solid var(--linha,#e8e6e2);border-radius:8px;padding:10px;margin-top:6px;word-break:break-all;color:var(--tinta,#0d0d0d)}
@media(max-width:700px){
  .av2-cfg{flex-direction:column;min-height:0;max-height:92vh}
  .av2-cfg nav{width:100%;flex-direction:row;overflow-x:auto;border-right:none;border-bottom:1px solid var(--linha,#e8e6e2);padding:10px 8px}
  .av2-cfg nav .cab{display:none}
  .av2-cfg nav button{width:auto;white-space:nowrap}
  .av2-linha{flex-direction:column;align-items:stretch;gap:8px}
  .av2-linha .c{justify-content:flex-start}
}
[data-theme="escuro"] .av2-pop,[data-theme="escuro"] .av2-cfg{background:#24262d;border-color:rgba(255,255,255,.09)}
[data-theme="escuro"] .av2-cfg nav{background:#1c1e24;border-color:#33353d}
[data-theme="escuro"] .av2-in{background:#191a20;border-color:#33353d;color:var(--tinta)}
[data-theme="escuro"] .av2-key code{background:#191a20;border-color:#33353d}
[data-theme="escuro"] .av2-linha,[data-theme="escuro"] .av2-sessao,[data-theme="escuro"] .av2-sub-sec,[data-theme="escuro"] .av2-pop hr,[data-theme="escuro"] .av2-pop-quem{border-color:#2b2d35}

/* card da sidebar (anônimo) + wrapper do botão oficial do Google */
.av2-card-sb{margin:12px;padding:14px;border:1px solid var(--linha,#e8e6e2);border-radius:12px;background:var(--campo,#fff);font-family:'Inter',sans-serif}
.av2-card-sb .t{font-size:13px;font-weight:600;margin:0 0 4px}
.av2-card-sb .d{font-size:12px;color:var(--mut,#6b6b6b);margin:0 0 10px;line-height:1.45}
.av2-card-sb .av2-b{font-size:12.5px;padding:9px;min-height:44px}  /* 44px SEMPRE, não só abaixo de 700px: em tablet (768) este botão
     ficava com 33px, abaixo do mínimo do iOS. O critério é o dedo, não
     a largura da tela — medido pelo qa-final em 09/08/2026. */
[data-theme="escuro"] .av2-card-sb{background:#1c1e24;border-color:#2b2d35}
.av2-gwrap{display:flex;justify-content:center;min-height:44px}
.av2-gwrap>div{width:100%;display:flex;justify-content:center}

/* medidor de perguntas · banner do limite logado · sessão expirada · onboarding empresa */
.av2-medidor{display:inline-flex;gap:6px;align-items:center;font-family:'IBM Plex Mono',monospace;font-size:11px;color:var(--sutil,#767676)}
.av2-medidor .barra{width:52px;height:4px;border-radius:99px;background:var(--linha,#e8e6e2);overflow:hidden}
.av2-medidor .barra i{display:block;height:100%;background:var(--sutil,#767676);border-radius:99px}
.av2-medidor.alerta{color:var(--verm,#e3120b)}
.av2-medidor.alerta .barra i{background:var(--verm,#e3120b)}
.av2-banner-limite{border:1px solid var(--linha,#e8e6e2);border-radius:16px;padding:20px 22px;margin:16px 0;background:var(--lateral,#f7f6f4);text-align:center;font-family:'Inter',sans-serif}
.av2-banner-limite h3{font-size:16px;font-weight:700;margin:0 0 6px}
.av2-banner-limite p{font-size:13.5px;color:var(--mut,#6b6b6b);max-width:52ch;margin:0 auto 12px}
.av2-banner-limite .bts{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.av2-banner-limite .bts .av2-b{width:auto;padding:10px 18px;font-size:13px;display:inline-flex}
.av2-banner-limite .nota{font-size:12px;color:var(--sutil,#767676);margin-top:12px}
.av2-banner-limite .nota a{text-decoration:underline}
.av2-banner-sessao{background:#fdecea;border-bottom:1px solid #f5c6c2;color:#8f1d18;font-size:12.5px;padding:9px 20px;text-align:center;font-family:'Inter',sans-serif}
.av2-banner-sessao a{text-decoration:underline;font-weight:600;cursor:pointer}
[data-theme="escuro"] .av2-banner-sessao{background:#2a1413;border-color:#57221f;color:#f0918d}
[data-theme="escuro"] .av2-banner-limite{background:#1c1e24;border-color:#2b2d35}
.av2-emp{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:8px}
.av2-switch{width:40px;height:24px;border-radius:999px;background:#d5d2cc;position:relative;cursor:pointer;border:none;flex-shrink:0}
.av2-switch::after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;transition:.15s}
.av2-switch.on{background:var(--ok,#1f7a45)}
.av2-switch.on::after{left:19px}

/* ===== CORREÇÕES DO QA VISUAL (02/08) ===== */
/* P0: "+ Nova conversa" tinha color:#000 fixo → contraste 1,13:1 no escuro.
   O override vive aqui (auth-comum.css é meu) pra não tocar o ds-v5.css, que
   está em trabalho ativo de outra sessão. Ver DIRETRIZ MÁXIMA do CLAUDE.md. */
[data-theme="escuro"] .sb-nova{color:var(--tinta,#ebe9e4)}
[data-theme="escuro"] .sb-nova:hover{background:var(--hover,#22232a)}
/* links que viraram <button> pra receber foco de teclado */
.av2-linkbtn{background:none;border:none;padding:0;font:inherit;color:inherit;text-decoration:underline;cursor:pointer}
.av2-linkbtn:hover{color:var(--tinta,#0d0d0d)}
/* botão desabilitado precisa parecer desabilitado */
.av2-b:disabled{opacity:.5;cursor:not-allowed}
/* P2: alvo de toque mínimo no mobile (iOS pede 44px) */
@media(max-width:700px){
  .av2-card-sb .av2-b{min-height:44px}
  .av2-b,.av2-b.av2-mini{min-height:44px}
  .av2-linkbtn,.av2-mini-acao{min-height:32px;display:inline-flex;align-items:center}
}
/* P2: linha de caminhos do limite quebrava com órfã ("amanhã" sozinha) */
.av2-caminhos{text-wrap:balance}
.av2-caminhos a{white-space:nowrap}
/* P2: o wrapper ocupa a largura do formulário. A regra do IFRAME que ficava
   aqui (`width:100%!important`) foi REMOVIDA em 09/08/2026: ela era letra morta
   (o bloco no fim deste arquivo a sobrescreve com a mesma especificidade e
   `!important`, e vence por vir depois) e, pior, dizia o contrário do que hoje
   vale — o widget do Google escolhe a própria largura e quem centraliza é o
   flex do wrapper. Duas regras contraditórias no mesmo arquivo é como se erra
   de novo daqui a três meses. */
.av2-gwrap{width:100%}
.av2-entrar-mob{background:var(--tinta,#0d0d0d);color:var(--fundo,#fff);border:none;border-radius:999px;font-size:12.5px;font-weight:600;padding:9px 16px;min-height:38px;cursor:pointer;font-family:'Inter',sans-serif;margin-left:auto;margin-right:8px}

/* linha empilhada: rótulo+descrição em cima, campos embaixo (evita descrição
   espremida em coluna de uma palavra por linha quando o controle é largo) */
.av2-linha-stack{flex-direction:column;align-items:stretch;gap:10px}
.av2-linha-stack .l .d{max-width:none}
.av2-linha-stack .c{justify-content:flex-start;flex-wrap:wrap;gap:8px}
.av2-linha-stack .av2-in{flex:1 1 160px;max-width:220px}
/* o painel precisa rolar até o fim (estava cortando "sair de todos") */
.av2-cfg .painel{padding-bottom:32px}

/* ==========================================================================
   QA VISUAL — LEVA 2 (02/08/2026): CONTRASTE AA + ALVO DE TOQUE
   Tudo aqui é OVERRIDE. O ds-v5.css e o index.html estão em trabalho ativo de
   outras sessões — não se toca neles (DIRETRIZ MÁXIMA do CLAUDE.md). Onde a
   regra original mora num <style> inline do index.html (que vem DEPOIS deste
   arquivo na cascata), o override sobe a especificidade em vez de usar
   !important — exceto quando a cor original é style inline em JS.
   Régua: WCAG 2.1 AA = 4,5:1 pra texto normal. Números medidos em prod.
   ========================================================================== */

/* 1 · "Falar no WhatsApp" (wa-cta.js pinta color:#1f7a45 INLINE — só !important
   vence). No escuro dava 3,25:1 sobre --lateral #191a1e. #3fae6d = 6,20:1.
   No claro segue #1f7a45 (4,95:1 sobre #f7f6f4) — passa, não mexe. */
[data-theme="escuro"] #waCtaLink{color:#3fae6d!important}

/* 2 · Modal de login: --sutil (#8b8880) sobre o fundo do modal (#24262d) dava
   4,27:1 — reprova. Redefinir o token DENTRO do modal conserta de uma vez o
   separador "ou", o bloco legal, o "não chegou?" e as linhas alternativas.
   #a3a099 sobre #24262d = 5,79:1. */
[data-theme="escuro"] .av2-modal{--sutil:#a3a099}
/* mesma correção no banner de limite (fundo #1c1e24) e no card da sidebar */
[data-theme="escuro"] .av2-banner-limite,
[data-theme="escuro"] .av2-card-sb{--sutil:#a3a099}

/* 3 · Botão ↑ do composer quando desabilitado: --sutil sobre --linha.
   Escuro: #8b8880 sobre #26272c = 4,21:1 → #a8a49c = 6,00:1.
   Claro: #6e6e6e sobre #e8e6e2 = 4,09:1 (o QA só mediu o escuro, mas o claro
   também reprovava) → #5c5c5c = 5,36:1. */
.enviar:disabled{color:#5c5c5c}
[data-theme="escuro"] .enviar:disabled{color:#a8a49c}

/* 4 · Alvos de toque da barra de novidade (index.html §DESCOBERTA DE NOVIDADES).
   Medido em prod: "✕" 23,4×23 e "Ver →" 19,4px de altura — abaixo dos 44px que
   iOS/WCAG 2.5.5 pedem. A regra original vive num <style> DEPOIS deste arquivo,
   então subimos a especificidade (button.x / a.cta) em vez de reordenar.
   O padding vertical vira min-height: a barra fica com 44px EXATOS (antes 31-35px)
   em vez de 44+padding, então o alvo cresce sem inchar a faixa. */
#novBar.nov-bar{min-height:44px;padding-block:0}
.nov-bar button.x{width:44px;height:44px;display:inline-flex;align-items:center;justify-content:center;padding:0;right:4px}
/* no mobile o rótulo curto é só "Ver →" (36px) — min-width fecha os 44×44 */
.nov-bar a.cta{display:inline-flex;align-items:center;justify-content:center;min-height:44px;min-width:44px}
@media(max-width:600px){.nov-bar button.x{right:2px}}

/* 5 · Rodapé da sidebar quando NÃO há conta: "não conectado" no lugar de
   "conta gratuita" (o texto vem do auth-comum.js; aqui só o tom). */
.sb-user .plano[data-av2-estado="anon"]{font-style:normal;opacity:.9}

/* 6 · Item ativo da sidebar quando o "ativo" é a própria conta (conta.html).
   Mesmo tratamento visual dos itens de navegação marcados. */
.sb-user.av2-ativo{background:var(--hover);color:var(--tinta)}

/* ==========================================================================
   7 · NAVEGAÇÃO LATERAL CANÔNICA — MUDOU DE ARQUIVO (07/08/2026)
   O bloco (.sb-rola, .sb-ferramentas, .tag-novo) foi para o `ds-v5.css`.
   Motivo: o auth-comum.css é carregado em quase toda página de app, mas NÃO em
   /status, /supervisao e nas quatro telas de admin — que por isso ficavam com
   a barra antiga, sem estilo para o bloco canônico. O `ds-v5.css` é carregado
   por TODAS elas, e estilo de navegação lateral é design system, não
   autenticação.
   Cascata conferida antes de mover: o ds-v5.css carrega ANTES daqui, então
   regra movida passa a perder para <style> inline de página. Só a home
   redefine essas classes (index.html, 17 ocorrências) e lá os valores são
   idênticos — nada muda.
   ========================================================================== */

/* --- centralização do botão do Google, sem forçar largura -------------------
   O widget do GIS escolhe a própria largura, e ela MUDA entre o botão genérico
   ("Continuar com o Google") e o personalizado ("Continuar como Fulano", que só
   aparece para quem tem sessão Google — não existe em navegador headless, por
   isso só se vê na conta de alguém). Fixar `width` no renderButton centralizava
   o genérico e CORTAVA o personalizado. A régua certa é esta: o wrapper e todos
   os níveis que o GIS cria centralizam o que vier, seja qual for o tamanho.  */
.av2-gwrap{display:flex;justify-content:center;align-items:center;width:100%;min-height:44px}
.av2-gwrap>div,.av2-gwrap .g-wrap{width:100%;display:flex;justify-content:center}
.av2-gwrap .g-wrap>div{margin-left:auto;margin-right:auto}
/* COMPENSAÇÃO DO OFFSET INTERNO DO WIDGET (medido por pixel em 09/08/2026).
   O GIS reserva um iframe de 280px FIXO e desenha o botão encostado à esquerda
   dentro dele; como o iframe está centralizado, o botão sai `largura/2 − 140`
   fora do centro. Medido em 5 configurações: sem width → −32px · width 240 →
   −21 · 280 → −23 · 300 → −18 · 344 → −7. O botão PERSONALIZADO ("Continuar
   como Fulano") é mais estreito e dá −40px — é o que o Daniel viu.
   Nenhum parâmetro do GIS zera isso (`width:344` pedido desenha 267).
   +36px põe os dois casos conhecidos dentro de ±5px do centro.
   ⚠️ Se um dia o widget passar a preencher o iframe, esta regra passa a
   DESALINHAR — o sinal é o botão pender para a DIREITA. */
.av2-gwrap .g-wrap{transform:translateX(36px)}
/* Abaixo de ~380px o modal fica mais ESTREITO que o iframe de 280px do
   widget, e a geometria muda: medido +12px com a compensação cheia, contra
   +4px nas demais. 24px devolve o 360 para dentro de ±5px, sem mexer no
   resto. (360×780 é o pior caso de largura do público real.) */
@media(max-width:380px){ .av2-gwrap .g-wrap{transform:translateX(24px)} }
/* o widget nunca é espremido pelo container: se ele pedir mais largura que o
   formulário, encolhe por conta própria em vez de ser cortado */
.av2-gwrap iframe{max-width:100%!important;width:auto!important}
