
:root{color-scheme:dark;--bg:#090d15;--panel:#101623;--panel2:#0c111c;--card2:#0c111c;--line:#1d2740;--line2:#293650;--hover:#16233b;--btn2:#16233b;--ink:#e6eaf2;--mut:#94a1b8;--mut2:#828fa6;--accent:#9333ea;--accent2:#3b82f6;--accent-ink:#ffffff;--grad:linear-gradient(135deg,#9333ea 0%,#3b82f6 100%);--gold:#c6a35c;--emer:#57b28f;--amber:#d3a24c;--rose:#d17c84;--shadow:0 12px 36px rgba(0,0,0,.5)}
:root[data-theme="light"]{color-scheme:light;--bg:#f8fafc;--panel:#ffffff;--panel2:#f1f5f9;--card2:#f1f5f9;--line:#e2e8f0;--line2:#cbd5e1;--hover:#f1f5f9;--btn2:#f1f5f9;--ink:#0f172a;--mut:#64748b;--mut2:#94a3b8;--accent:#9333ea;--accent2:#3b82f6;--accent-ink:#ffffff;--grad:linear-gradient(135deg,#9333ea 0%,#3b82f6 100%);--gold:#b8863b;--emer:#22c55e;--amber:#f59e0b;--rose:#ef4444;--shadow:0 2px 8px rgba(147,51,234,.08)}
/* ---- Light-mode: corrige componentes de cor HARDCODED p/ dark (polish round 2, 28/jul) ---- */
:root[data-theme="light"] .pill.ok{background:#dcfce7;color:#15803d}
:root[data-theme="light"] .pill.no{background:#fef3c7;color:#b45309}
:root[data-theme="light"] .pill.bx{background:#fee2e2;color:#b91c1c}
:root[data-theme="light"] .selo.de{background:#dcfce7;color:#166534;border-color:#bbf7d0}
:root[data-theme="light"] .selo.hd{background:#f3e8ff;color:#7e22ce;border-color:#e9d5ff}
:root[data-theme="light"] .selo.sp{background:#dbeafe;color:#1d4ed8;border-color:#bfdbfe}
:root[data-theme="light"] .fchip.on{background:#dbeafe;border-color:#93c5fd;color:#1d4ed8}
:root[data-theme="light"] .fchip.on b{color:#1e3a8a}
:root[data-theme="light"] .alert-distress{background:#fef2f2;border-color:#fecaca;color:#b91c1c}
:root[data-theme="light"] .alert-distress.warn{background:#fffbeb;border-color:#fde68a;color:#92400e}
:root[data-theme="light"] .gfbar .gfsum{background:#ede9fe;border-color:#ddd6fe;color:#6d28d9}
:root[data-theme="light"] *{scrollbar-color:#cbd5e1 #eef2f7}
:root[data-theme="light"] ::-webkit-scrollbar-thumb{background:#cbd5e1}
/* overlays do grafo (árvore/teia) — inline dark → override p/ light */
:root[data-theme="light"] .arv-legend{background:rgba(255,255,255,.85)!important;color:var(--mut)!important;box-shadow:0 1px 4px rgba(15,23,42,.08)}
:root[data-theme="light"] #arvBuscaInp{background:#fff!important;border-color:var(--line)!important;color:var(--ink)!important;box-shadow:0 1px 3px rgba(15,23,42,.06)}
:root[data-theme="light"] .cy-card.fs .arv-toolbar{background:rgba(255,255,255,.92)!important;box-shadow:0 1px 6px rgba(15,23,42,.1)}
:root[data-theme="light"] .afc{background:var(--panel2)!important}
:root[data-theme="light"] .afc-kv span:last-child{color:var(--ink)!important}
:root[data-theme="light"] .alert-distress{background:#fef2f2;border-color:#fecaca;color:#b91c1c}
:root[data-theme="light"] .alert-distress.warn{background:#fffbeb;border-color:#fde68a;color:#b45309}
*{box-sizing:border-box}body{margin:0;font-family:'Inter',-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;background:var(--bg);color:var(--ink);font-size:14px;line-height:1.45;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
a{color:var(--accent);text-decoration:none;cursor:pointer}a:hover{color:var(--accent2)}
/* micro-interações (round 2): foco de teclado (a11y) + transições + foco de input */
:where(button,.btn,.btn-2,a,input,select,summary,[role=tab]):focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}
button,.btn,.btn-2{transition:background .15s ease,border-color .15s ease,color .15s ease,transform .06s ease,box-shadow .15s ease}
.selo.pxc{font-size:9px;padding:1px 7px;font-weight:600;font-variant-numeric:tabular-nums;margin-left:3px;gap:0;line-height:1.35}   /* chip PADRÃO de contagem de registros na aba do Raio-X (selo sp) — vale p/ TODAS as abas */
.selo.pxc.pxc0{opacity:.5}   /* badge-0 (fonte mapeada, sem registro): mesmo chip, atenuado */
/* abas «+» com IA (Fornecedores+/Clientes+): cor distinta (accent) + ícone sparkle — card 23ec53bc2194 */
.ctrls .tab-ai{border-color:rgba(122,90,248,.55);color:var(--accent);background:rgba(122,90,248,.08)}
.ctrls .tab-ai:hover{background:rgba(122,90,248,.16)}
.ctrls .tab-ai.on{background:var(--grad);color:var(--accent-ink);border-color:transparent}
.ctrls .tab-ai .ic-sm{width:13px;height:13px;vertical-align:-2px;margin-right:1px}
/* Cross-promo IG (card acfeab71061d) — card «Siga no IG» no rodapé + embeds de reels */
.igcp{max-width:360px;margin:0 auto 18px;padding:14px;border:1px solid var(--line2);border-radius:14px;background:var(--panel2);text-align:center}
.igcp-hd{display:flex;align-items:center;justify-content:center;gap:7px;flex-wrap:wrap;font-size:13px;color:var(--ink)}
.igcp-hd .ic-sm{width:16px;height:16px;color:#e1306c}
.igcp-sub{color:var(--mut);font-size:11.5px;width:100%;margin-top:2px}
.igcp .ig-embeds{margin:12px 0;display:flex;flex-direction:column;gap:12px;align-items:center}
.igcp-btn{margin-top:10px;background:linear-gradient(90deg,#833ab4,#fd1d1d,#fcb045);color:#fff;border:0}
.igcp-btn:hover{filter:brightness(1.06)}
.igcp-btn .ic{width:15px;height:15px}
.hx-onb-igrow{display:flex;align-items:center;gap:8px;margin:4px 9px 2px;padding:9px 9px;border-radius:9px;border:1px dashed var(--line2);color:var(--ink);text-decoration:none;font-size:12.5px}
.hx-onb-igrow:hover{background:var(--hover)}
.hx-onb-igrow .ic-sm{width:15px;height:15px;color:#e1306c;flex:0 0 auto}
/* Faróis derivados (Integridade + Solvência) no bloco de Indicadores — card 30/mai movido do Raio-X */
.indfar{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:0 0 14px}
@media(max-width:640px){.indfar{grid-template-columns:1fr}}
.fcard{border:1px solid var(--line);border-radius:12px;background:var(--bg-2,var(--panel2));padding:11px 12px;min-width:0}
.fcard .fc-hd{display:flex;justify-content:space-between;align-items:center;gap:8px;margin:0 0 8px}
.fcard .fc-t{font-weight:700;font-size:13px;display:inline-flex;align-items:center;gap:5px}
.fcard .fc-badge{font-size:11px;font-weight:700;color:#fff;border-radius:999px;padding:2px 9px;font-variant-numeric:tabular-nums;white-space:nowrap}
.fcard .fc-lbl{font-weight:600;font-size:12px;display:flex;align-items:center;gap:5px;margin:0 0 8px;flex-wrap:wrap}
.fcard .fc-row{font-size:12px;color:var(--ink);line-height:1.5;margin:3px 0;display:flex;gap:6px;align-items:baseline}
.fcard .fc-row .selo{flex:none}
.fcard .fc-more{margin-top:8px}
.fcard .fc-more a{font-size:12px;cursor:pointer;color:var(--accent);display:inline-flex;align-items:center;gap:3px}
.fcard .fc-note{font-size:10.5px;color:var(--mut);margin-top:8px;line-height:1.4}
.fcard{transition:box-shadow .2s ease}
.fcard.fc-flash{box-shadow:0 0 0 3px var(--accent)}
button:active,.btn:active,.btn-2:active{transform:translateY(1px)}
input[type=text],input[type=search],select{transition:border-color .15s ease,box-shadow .15s ease}
input[type=text]:focus,input[type=search]:focus,select:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(147,51,234,.12);outline:none}
/* type=search suprime a barra de autofill de senha/credencial no iOS; neutraliza as decorações nativas p/ ficar visualmente == text */
input[type=search]{-webkit-appearance:none;appearance:none}
input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration,input[type=search]::-webkit-search-results-button{-webkit-appearance:none;display:none}
.ic{width:15px;height:15px;vertical-align:-3px;flex:none}.ic-sm{width:13px;height:13px;vertical-align:-2px}
.dot{display:inline-block;width:9px;height:9px;border-radius:50%;vertical-align:0;flex:none}
/* ===== Header redesenhado (jul/2026): UMA linha no desktop, barra limpa no mobile ===== */
header{padding:calc(9px + env(safe-area-inset-top)) 20px 9px;border-bottom:1px solid var(--line);background:var(--panel2);display:flex;align-items:center;gap:14px;flex-wrap:nowrap}
.brand{display:flex;align-items:center;gap:9px;flex:none}.logo{width:24px;height:24px;color:var(--accent);flex:none}
header h1{margin:0;font-size:15.5px;font-weight:700;letter-spacing:.03em;white-space:nowrap}header h1 b{font-weight:700;margin:0 1px}
/* Texto em gradiente ROBUSTO (card efc825e6a0a2): o background-clip:text falhava no browser do Eric
   (Edge/Chromium Linux) e o gradiente pintava a CAIXA inteira, virando uma BARRA com texto à esquerda.
   Base = cor sólida de acento (sempre legível e centralizável); o gradiente-no-texto só entra sob @supports.
   Assim, onde o clip não funciona, degrada p/ título sólido — nunca a barra. */
.gtext{color:var(--accent)}
@supports ((-webkit-background-clip:text) or (background-clip:text)){
  .gtext{background:var(--grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}
}
nav#mainNav{display:flex;align-items:center;gap:2px;flex:1 1 auto;min-width:0;flex-wrap:nowrap}
nav button{background:none;border:1px solid transparent;color:var(--mut);padding:7px 11px;border-radius:7px;font-size:12.5px;font-weight:600;letter-spacing:.01em;cursor:pointer;white-space:nowrap;transition:color .15s,background .15s,border-color .15s}
nav button:hover{color:var(--ink)}nav button.on{background:var(--hover);border-color:var(--line2);color:var(--ink)}
nav a.navlink{display:inline-flex;align-items:center;background:none;border:1px solid transparent;color:var(--mut);padding:7px 11px;border-radius:7px;font-size:12.5px;font-weight:600;letter-spacing:.01em;text-decoration:none;white-space:nowrap;transition:color .15s,background .15s,border-color .15s}
nav a.navlink:hover{color:var(--ink);text-decoration:none}nav a.navlink.on{background:var(--hover);border-color:var(--line2);color:var(--ink)}
.navtag{font-size:8.5px;font-weight:800;letter-spacing:.04em;background:var(--grad);color:#fff;padding:1px 5px;border-radius:20px;margin-left:4px;vertical-align:1px}
.navsep{width:1px;height:15px;background:var(--line2);margin:0 5px;align-self:center;flex:none;opacity:.7}
/* Mais ▾ (agrupa a nav secundária) */
.navmore{position:relative;flex:none}
.navmore-btn{display:inline-flex;align-items:center;gap:4px}
.navmore-btn .caret{width:12px;height:12px;opacity:.65;transition:transform .15s}
.navmore-btn.act{color:var(--ink);background:var(--hover);border-color:var(--line2)}
.navmore.open .navmore-btn{color:var(--ink);background:var(--hover);border-color:var(--line2)}
.navmore.open .navmore-btn .caret{transform:rotate(180deg)}
.navmore-menu{display:none;position:absolute;top:calc(100% + 9px);left:0;min-width:216px;background:var(--panel);border:1px solid var(--line2);border-radius:12px;padding:7px;box-shadow:var(--shadow);z-index:70;flex-direction:column;gap:1px}
.navmore.open .navmore-menu{display:flex}
.navmore-menu button,.navmore-menu a.navlink{width:100%;text-align:left;justify-content:flex-start;border-radius:8px;padding:9px 11px}
.nm-group{font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--mut2);padding:9px 11px 3px}
.nm-sep{height:1px;background:var(--line);margin:5px 6px}
/* cluster de ações à direita */
.hactions{display:flex;align-items:center;gap:8px;margin-left:auto;flex:none}
/* menu de conta (avatar ▾) */
.acct{position:relative;display:flex;align-items:center}
.acct-btn{display:inline-flex;align-items:center;gap:6px;background:var(--panel);border:1px solid var(--line2);color:var(--ink);border-radius:9px;padding:4px 8px 4px 5px;cursor:pointer;font-size:12.5px;font-weight:600}
.acct-btn:hover{border-color:var(--accent)}
.acct-av{width:24px;height:24px;border-radius:50%;background:var(--grad);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;flex:none;text-transform:uppercase}
.acct-btn .caret{width:12px;height:12px;opacity:.65;transition:transform .15s}
.acct.open .acct-btn .caret{transform:rotate(180deg)}
.acct-menu{display:none;position:absolute;top:calc(100% + 9px);right:0;min-width:212px;background:var(--panel);border:1px solid var(--line2);border-radius:12px;padding:7px;box-shadow:var(--shadow);z-index:70;flex-direction:column;gap:1px}
.acct.open .acct-menu{display:flex}
.acct-menu .acct-mail{font-size:11px;color:var(--mut);padding:6px 10px 8px;border-bottom:1px solid var(--line);margin-bottom:4px;word-break:break-all}
.acct-menu a,.acct-menu button{display:block;width:100%;text-align:left;background:none;border:0;color:var(--mut);padding:9px 10px;border-radius:8px;font-size:12.5px;font-weight:600;cursor:pointer;text-decoration:none}
.acct-menu a:hover,.acct-menu button:hover{color:var(--ink);background:var(--hover)}
/* Central de Notificações — sino (flag-gated central_notif) */
.notif{position:relative;display:none;align-items:center}
.notif.on{display:flex}
.notif-btn{position:relative}
.notif-badge{position:absolute;top:-4px;right:-4px;min-width:16px;height:16px;padding:0 4px;border-radius:9px;background:var(--rose,#e5484d);color:#fff;font-size:10px;font-weight:700;line-height:16px;text-align:center;box-shadow:0 0 0 2px var(--panel2)}
.notif-panel{display:none;position:absolute;top:calc(100% + 9px);right:0;width:min(380px,92vw);max-height:min(70vh,560px);overflow:auto;background:var(--panel);border:1px solid var(--line2);border-radius:12px;box-shadow:var(--shadow);z-index:72}
@media(max-width:480px){.notif.open .notif-panel{position:fixed;top:calc(var(--hdrh,52px) + 4px);left:12px;right:12px;width:auto;max-width:none}}
.notif.open .notif-panel{display:block}
.notif-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:11px 13px;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--panel)}
.notif-head b{font-size:13px;color:var(--ink)}
.notif-head button{background:none;border:0;color:var(--accent);font-size:11.5px;font-weight:600;cursor:pointer;padding:2px 4px}
.notif-head button:disabled{color:var(--mut);cursor:default}
.notif-empty{padding:26px 16px;text-align:center;color:var(--mut);font-size:12.5px}
.notif-it{display:flex;gap:9px;padding:10px 13px;border-bottom:1px solid var(--line);align-items:flex-start}
.notif-it:last-child{border-bottom:0}
.notif-it.rd{opacity:.55}
.notif-dot{width:7px;height:7px;border-radius:50%;margin-top:6px;flex:none;background:var(--mut)}
.notif-dot.op{background:var(--emer,#2fae7a)} .notif-dot.ri{background:var(--rose,#e5484d)} .notif-dot.su{background:var(--accent)}
.notif-bd{flex:1;min-width:0}
.notif-bd .r{font-size:12.5px;font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.notif-bd .t{font-size:12px;color:var(--mut);margin-top:1px}
.notif-bd .d{font-size:11.5px;color:var(--mut);margin-top:2px;opacity:.85}
.notif-bd a.go{font-size:11.5px;color:var(--accent);text-decoration:none;font-weight:600}
.notif-x{background:none;border:0;color:var(--mut);cursor:pointer;font-size:15px;line-height:1;padding:0 2px;flex:none}
.notif-x:hover{color:var(--ink)}
/* ===== FREEMIUM · chip de créditos no header (SEMPRE visível, mobile incluso) + sheet (card 9903afcc3f76) ===== */
.credchip{display:none;align-items:center;gap:5px;background:var(--panel);border:1px solid var(--line2);color:var(--ink);border-radius:999px;padding:5px 11px 5px 8px;cursor:pointer;font-size:12.5px;font-weight:700;line-height:1;flex:none;transition:border-color .15s,background .15s,color .15s}
.credchip.on{display:inline-flex}
.credchip:hover{border-color:var(--accent)}
.credchip .cc-ico{width:15px;height:15px;flex:none;color:var(--accent)}
.credchip .cc-n{font-variant-numeric:tabular-nums}
.credchip .cc-u{font-size:10px;font-weight:600;color:var(--mut);letter-spacing:.02em}
.credchip.low{border-color:#a9762a;background:rgba(201,163,92,.13);color:var(--warn,#e2bd63)}
.credchip.low .cc-ico,.credchip.low .cc-u{color:var(--warn,#e2bd63)}
.credchip.zero{border-color:var(--rose,#e5484d);background:rgba(229,72,77,.14);color:var(--rose,#e5484d);animation:ccpulse 2.4s ease-in-out infinite}
.credchip.zero .cc-ico,.credchip.zero .cc-u{color:var(--rose,#e5484d)}
@keyframes ccpulse{0%,100%{box-shadow:0 0 0 0 rgba(229,72,77,0)}50%{box-shadow:0 0 0 4px rgba(229,72,77,.16)}}
@media(max-width:900px){.credchip{padding:5px 10px 5px 8px}.credchip .cc-u{display:none}}
/* ===== CTA de entrada SEMPRE visível p/ anônimo (mobile incluso, sem depender do ☰) — topo de funil freemium ===== */
.authcta{display:none;align-items:center;gap:6px;background:var(--grad);color:var(--accent-ink);border:0;border-radius:999px;padding:7px 14px;font-size:12.5px;font-weight:800;line-height:1;cursor:pointer;flex:none;white-space:nowrap;box-shadow:0 1px 8px rgba(122,90,248,.28)}
.authcta.on{display:inline-flex}
.authcta:hover{filter:brightness(1.07)}
.authcta .ic{width:14px;height:14px;flex:none}
@media(max-width:900px){.authcta{padding:7px 12px}}
/* Banner de valor freemium na home ANÔNIMA — a promessa antes do login (gancho de conversão) */
.freehero{display:none;margin:14px auto 0;max-width:640px;background:linear-gradient(135deg,rgba(122,90,248,.14),rgba(64,120,230,.06));border:1px solid var(--line2);border-radius:14px;padding:16px 18px}
.freehero.on{display:block}
.freehero .fh-t{font-size:16px;font-weight:800;letter-spacing:-.01em;margin:0 0 4px;color:var(--ink)}
.freehero .fh-s{font-size:12.5px;color:var(--mut);line-height:1.5;margin:0 0 12px}
.freehero .fh-props{display:flex;flex-wrap:wrap;gap:8px 18px;margin:0 0 13px}
.freehero .fh-p{display:flex;align-items:center;gap:7px;font-size:12.5px;color:var(--ink)}
.freehero .fh-p .em{font-size:15px;line-height:1}
.freehero .fh-p b{color:var(--accent)}
.freehero .fh-cta{background:var(--grad);color:var(--accent-ink);border:0;border-radius:10px;padding:12px 18px;font-weight:800;font-size:13.5px;cursor:pointer;width:100%}
.freehero .fh-cta:hover{filter:brightness(1.07)}
.freehero .fh-fine{font-size:11px;color:var(--mut);text-align:center;margin-top:8px}
/* sheet: modal centrado no desktop, bottom-sheet no mobile */
.credsheet{display:none;position:fixed;inset:0;z-index:3300}
.credsheet.on{display:block}
.cs-scrim{position:absolute;inset:0;background:rgba(3,6,12,.55)}
.cs-panel{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:min(440px,94vw);max-height:88vh;overflow:auto;background:var(--panel);border:1px solid var(--line2);border-radius:16px;box-shadow:var(--shadow)}
@media(max-width:560px){.cs-panel{left:0;right:0;bottom:0;top:auto;transform:none;width:100%;max-height:92vh;border-radius:18px 18px 0 0;animation:cssheet .22s ease}}
@keyframes cssheet{from{transform:translateY(100%)}to{transform:none}}
.cs-hd{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:15px 17px 4px}
.cs-hd b{font-size:14.5px;color:var(--ink)}
.cs-x{background:none;border:0;color:var(--mut);font-size:22px;line-height:1;cursor:pointer;padding:0 4px}
.cs-x:hover{color:var(--ink)}
.cs-hero{margin:6px 17px 0;padding:15px 16px;border-radius:13px;background:linear-gradient(135deg,rgba(122,90,248,.15),rgba(64,120,230,.08));border:1px solid var(--line2)}
.cs-hero .n{font-size:32px;font-weight:800;line-height:1;letter-spacing:-.02em}
.cs-hero .n small{font-size:13px;font-weight:600;color:var(--mut);margin-left:4px}
.cs-hero .hsub{font-size:12px;color:var(--mut);margin-top:6px;line-height:1.4}
.cs-hero.warn{background:linear-gradient(135deg,rgba(201,163,92,.17),rgba(201,163,92,.05));border-color:#7a5a1e}
.cs-hero.danger{background:linear-gradient(135deg,rgba(229,72,77,.17),rgba(229,72,77,.05));border-color:#7a2a2c}
.cs-ref{margin:13px 17px 0;padding:14px;border-radius:13px;border:1px solid var(--line2);background:var(--panel2)}
.cs-ref .t{font-size:13px;font-weight:700;margin-bottom:3px;color:var(--ink)}
.cs-ref .d{font-size:12px;color:var(--mut);margin-bottom:11px;line-height:1.45}
.cs-ref .d b{color:var(--ink)}
.cs-lnk{display:flex;gap:7px}
.cs-lnk input{flex:1;min-width:0;background:var(--bg);border:1px solid var(--line);color:var(--ink);border-radius:9px;padding:9px 11px;font-size:12px;font-family:inherit}
.cs-cta{background:var(--grad);color:var(--accent-ink);border:0;border-radius:9px;padding:9px 15px;font-weight:700;font-size:13px;cursor:pointer;white-space:nowrap}
.cs-cta:hover{filter:brightness(1.08)}
.cs-share{display:flex;gap:7px;margin-top:9px}
.cs-share button{flex:1;background:var(--btn2);border:1px solid var(--line2);color:var(--ink);border-radius:9px;padding:9px 10px;font-size:12px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:6px}
.cs-share button:hover{border-color:var(--accent)}
.cs-plac{display:flex;gap:9px;margin:12px 17px 0}
.cs-plac .b{flex:1;background:var(--panel2);border:1px solid var(--line);border-radius:11px;padding:9px 10px;text-align:center}
.cs-plac .b .v{font-size:18px;font-weight:800;letter-spacing:-.01em}
.cs-plac .b .l{font-size:9.5px;color:var(--mut);text-transform:uppercase;letter-spacing:.04em;margin-top:2px}
.cs-ext{margin:14px 6px 8px}
.cs-ext .eh{font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--mut);padding:0 11px 4px}
.cs-ext .er{display:flex;justify-content:space-between;gap:10px;padding:7px 11px;font-size:12.5px;border-top:1px solid var(--line)}
.cs-ext .er .m{color:var(--mut);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cs-ext .er .m i{font-style:normal;color:var(--mut2,#66748c);font-size:11px}
.cs-ext .er .dv{font-weight:700;font-variant-numeric:tabular-nums;flex:none}
.cs-ext .er .dv.pos{color:var(--emer,#2fae7a)} .cs-ext .er .dv.neg{color:var(--mut)}
.cs-foot{padding:4px 17px 16px}
.cs-plachd{font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--mut);margin:16px 17px 2px}
.cs-note{font-size:11.5px;color:var(--mut);margin-top:9px;line-height:1.4}
.cs-note b{color:var(--ink)} .cs-note.ok{color:var(--emer,#2fae7a)} .cs-note.ok b{color:var(--emer,#2fae7a)}
.cs-igopen{display:inline-block;font-size:11.5px;margin:0 0 9px;color:var(--accent)}
.cs-sug textarea{width:100%;box-sizing:border-box;resize:vertical;min-height:64px;border-radius:10px;border:1px solid var(--line);background:var(--bg);color:var(--ink);padding:9px 11px;font:inherit;font-size:12.5px;margin:0 0 9px}
.cs-sug textarea:focus{outline:none;border-color:var(--accent)}
.cs-sugfoot{display:flex;justify-content:space-between;align-items:center;gap:8px}
.cs-sugfoot .cs-note{margin:0;opacity:.8;text-align:right}
.cs-sugthx{text-align:center;padding:16px 6px 6px}
.cs-sugthx .ico{font-size:24px} .cs-sugthx .ttl{font-weight:700;margin-top:5px;font-size:13.5px}
.cs-sugthx .cs-note{margin-top:4px}
/* CTA de upgrade no sheet de créditos */
.cs-upg{margin:13px 17px 0}
.cs-upg .upg-go{width:100%}
.cs-upg-sub{font-size:11px;color:var(--mut);text-align:center;margin-top:6px}
.cs-pack{margin:10px 17px 0}
.cs-pack .pack-go{width:100%;background:transparent;color:var(--ink);border:1px solid var(--line);box-shadow:none}
.cs-pack .pack-go:hover{border-color:var(--accent);filter:none;background:rgba(255,255,255,.03)}
.upg-go{background:linear-gradient(135deg,#c99a2e,#e0b84a);color:#1a1205;border:0;border-radius:10px;padding:11px 16px;font-weight:800;font-size:13.5px;cursor:pointer;box-shadow:0 2px 10px rgba(201,154,46,.25)}
.upg-go:hover{filter:brightness(1.06)}
/* modal de assinatura */
.upg-panel{max-width:460px}
.upg-ctxnote{margin:0 17px;background:var(--panel2);border:1px solid var(--line2);border-radius:10px;padding:9px 12px;font-size:12px;color:var(--mut)}
.upg-ctxnote b{color:var(--ink)}
.upg-hero{margin:12px 17px 0;padding:16px;border-radius:14px;background:linear-gradient(135deg,rgba(201,154,46,.14),rgba(122,90,248,.06));border:1px solid #7a5a1e;text-align:center}
.upg-badge{display:inline-block;font-size:10.5px;font-weight:800;letter-spacing:.03em;color:#c99a2e;border:1px solid #7a5a1e;border-radius:999px;padding:3px 10px;text-transform:uppercase}
.upg-price{margin:11px 0 4px;line-height:1}
.upg-old{color:var(--mut);text-decoration:line-through;font-size:17px;font-weight:600}
.upg-new{font-size:36px;font-weight:900;letter-spacing:-.02em}
.upg-un{color:var(--mut);font-size:14px;font-weight:600}
.upg-guard{font-size:11.5px;color:var(--mut);line-height:1.45}.upg-guard b{color:var(--ink)}
.upg-toggle{display:inline-flex;margin-top:12px;background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:3px;gap:3px}
.upg-toggle button{border:0;background:transparent;color:var(--mut);font-weight:700;font-size:12.5px;padding:7px 14px;border-radius:8px;cursor:pointer}
.upg-toggle button.on{background:var(--grad);color:var(--accent-ink)}
.upg-toggle button span{font-size:9.5px;opacity:.8;margin-left:3px}
.upg-cmp{margin:14px 17px 0;border:1px solid var(--line);border-radius:12px;overflow:hidden}
.upg-row{display:grid;grid-template-columns:1fr 74px 84px;align-items:center;font-size:12.5px;border-top:1px solid var(--line)}
.upg-row:first-child{border-top:0}
.upg-row.upg-hd{background:var(--panel2);font-weight:800;font-size:11px;text-transform:uppercase;letter-spacing:.03em}
.upg-row .upg-f{padding:9px 12px;color:var(--ink)}
.upg-row .upg-free{padding:9px 8px;text-align:center;color:var(--mut)}
.upg-row .upg-pro{padding:9px 8px;text-align:center;color:#c99a2e;font-weight:700}
.upg-row.upg-hd .upg-pro{color:#c99a2e}
.upg-cta{margin:15px 17px 0}.upg-cta .cs-cta{width:100%}
.upg-fine{font-size:11px;color:var(--mut);text-align:center;margin-top:7px}
.upg-faq{margin:16px 6px 8px;padding:0 11px}
.upg-faq .upg-qh{font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--mut);margin-bottom:4px}
.upg-faq details{border-top:1px solid var(--line);padding:8px 0}
.upg-faq summary{cursor:pointer;font-size:12.5px;font-weight:600;color:var(--ink);list-style:none}
.upg-faq summary::-webkit-details-marker{display:none}
.upg-faq summary:before{content:'+ ';color:var(--accent);font-weight:800}
.upg-faq details[open] summary:before{content:'– '}
.upg-faq details>div{font-size:12px;color:var(--mut);margin-top:6px;line-height:1.5;padding-left:14px}
/* card de item Notícia/Documento (Na mídia · Documentos) — bloco mobile-first, sem coluna vazia */
.ni{padding:9px 0;border-bottom:1px solid var(--line)}
.ni:last-child{border-bottom:0}
.ni-hd{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:3px}
.ni-dt{margin-left:auto;font-size:10.5px;color:var(--mut);white-space:nowrap;flex:none}
.ni-ti{font-size:13px;line-height:1.35;word-break:break-word}
.ni-mt{font-size:10.5px;opacity:.55;margin-top:2px}
.ni-tr{font-size:11.5px;opacity:.72;margin-top:3px;line-height:1.4}
.cs-foot a{color:var(--accent);font-size:12px;text-decoration:none;font-weight:600}
/* itens que só aparecem dentro do drawer mobile */
.drawer-only{display:none}
.nav-scrim{display:none;position:fixed;inset:0;z-index:48;background:rgba(3,6,12,.5)}
.drawer-row{display:flex;align-items:center;gap:9px;width:100%;text-align:left;background:none;border:0;color:var(--mut);padding:11px 12px;border-radius:9px;font-size:13px;font-weight:600;cursor:pointer;text-decoration:none}
.drawer-row:hover{color:var(--ink);background:var(--hover)}
.drawer-row .ic{width:17px;height:17px;flex:none}
.drawer-row .ic-sun{display:none}:root[data-theme="light"] .drawer-row .ic-sun{display:inline}:root[data-theme="light"] .drawer-row .ic-moon{display:none}
.acct-drawer .acct-mail{font-size:11px;color:var(--mut);padding:9px 12px 4px}
.navtoggle{display:none;align-items:center;justify-content:center;background:var(--panel);border:1px solid var(--line2);color:var(--ink);border-radius:9px;width:36px;height:34px;cursor:pointer;flex:none}
.navtoggle:hover{border-color:var(--accent)}
.navtoggle .ic{width:19px;height:19px}
/* ---- Mobile / tablet estreito: barra única + drawer no hambúrguer ---- */
@media(max-width:900px){
  header{padding:8px 13px;gap:10px}
  .brand{flex:1 1 auto;min-width:0}
  header h1{overflow:hidden;text-overflow:ellipsis}
  .hactions{gap:6px}
  #themeToggle,.acct{display:none}                         /* tema + conta vão pro drawer */
  .navtoggle{display:inline-flex}
  /* nav vira DRAWER flutuante ancorado ao header */
  nav#mainNav{display:none;position:absolute;top:calc(100% + 8px);right:12px;left:12px;flex-direction:column;align-items:stretch;gap:1px;background:var(--panel);border:1px solid var(--line2);border-radius:14px;padding:9px;box-shadow:var(--shadow);z-index:70;max-height:80vh;overflow:auto}
  nav#mainNav.open{display:flex}
  .nav-scrim.on{display:block}
  nav#mainNav>button,nav#mainNav>a.navlink{width:100%;text-align:left;justify-content:flex-start;white-space:normal;padding:11px 12px;border-radius:9px}
  .navsep{display:none}
  /* o grupo "Mais" achata: some o botão e os itens fluem na lista */
  .navmore{position:static}
  .navmore-btn{display:none}
  .navmore-menu{display:flex!important;position:static;border:0;box-shadow:none;padding:0;min-width:0;background:none;gap:1px}
  .navmore-menu button,.navmore-menu a.navlink{padding:11px 12px}
  .drawer-only{display:block}
}
.wrap{padding:20px 24px;max-width:1280px;margin:0 auto}
section{display:none}section.on{display:block}
.ctrls{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:16px}
.ctrls input,.ctrls select{background:var(--panel);border:1px solid var(--line);color:var(--ink);padding:9px 12px;border-radius:8px;font-size:13.5px}
.ctrls input:focus,.ctrls select:focus{outline:none;border-color:var(--accent)}
#nlInput{background:var(--panel2);border:1px solid var(--line);color:var(--ink);border-radius:8px;padding:9px 12px;font-size:13.5px;font-family:inherit;transition:border-color .15s,box-shadow .15s}
#nlInput:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(147,51,234,.12)}
#nlInput::placeholder{color:var(--mut)}
.ctrls input[type=text]{min-width:300px;flex:1}
.ctrls label{color:var(--mut);font-size:12.5px;display:flex;gap:5px;align-items:center}
/* ===== Painel de filtros (grid rotulado + avançados colapsáveis) — legível no mobile (card BUSCA mobile) ===== */
.facpanel .facgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px 12px;margin-bottom:12px}
.facpanel .ff{display:flex;flex-direction:column;gap:4px;min-width:0}
.facpanel .ff .ffl{color:var(--mut);font-size:11.5px;font-weight:600;letter-spacing:.01em}
.facpanel .ffhint{color:var(--mut);font-size:10.5px;line-height:1.45;margin:6px 2px 0;opacity:.85}
.facpanel .ff input,.facpanel .ff select{width:100%;min-width:0;box-sizing:border-box;background:var(--panel);border:1px solid var(--line);color:var(--ink);padding:9px 11px;border-radius:8px;font-size:13.5px}
.facpanel .ff input:focus,.facpanel .ff select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(147,51,234,.12)}
.facpanel .facchecks{display:flex;flex-wrap:wrap;gap:10px 18px;margin-bottom:12px}
.facpanel .facchecks label{display:inline-flex;align-items:center;gap:7px;color:var(--mut);font-size:13px;cursor:pointer}
.facpanel .facadv{margin-bottom:12px;border-top:1px solid var(--line);padding-top:10px}
.facpanel .facadv>summary{cursor:pointer;color:var(--accent);font-size:12.5px;font-weight:600;list-style:none;display:inline-flex;align-items:center;gap:6px;padding:2px 0;user-select:none}
.facpanel .facadv>summary::-webkit-details-marker{display:none}
.facpanel .facadv .facadv-car{opacity:.75;transition:transform .18s}
.facpanel .facadv[open]>summary{margin-bottom:12px}
.facpanel .facadv[open]>summary .facadv-car{transform:rotate(180deg)}
.facpanel .facactions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
/* Wave 1 (busca overhaul): autocomplete (CNAE/município), chips de filtro ativo, prévia de contagem */
.acwrap{position:relative}
.acsug{position:absolute;z-index:40;left:0;right:0;top:calc(100% + 3px);background:var(--panel2,#131a29);border:1px solid var(--line);border-radius:9px;box-shadow:0 8px 24px rgba(0,0,0,.35);max-height:260px;overflow:auto}
.acsug button{display:block;width:100%;text-align:left;background:none;border:0;border-bottom:1px solid var(--line);color:var(--ink);font:inherit;font-size:12.5px;padding:8px 11px;cursor:pointer;line-height:1.35}
.acsug button:last-child{border-bottom:0}
.acsug button:hover,.acsug button.on{background:var(--hover,rgba(147,51,234,.12))}
.acsug .acc{color:var(--mut);font-size:11px;font-variant-numeric:tabular-nums}
.acsug .acempty{padding:9px 11px;color:var(--mut);font-size:12px}
.ff .accleared{position:absolute;right:8px;top:29px;color:var(--mut);cursor:pointer;font-size:14px;line-height:1;padding:2px}
.fchips{display:flex;flex-wrap:wrap;gap:7px;margin:0 0 10px}
.fchip{display:inline-flex;align-items:center;gap:6px;background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:4px 6px 4px 11px;font-size:12px;color:var(--ink)}
.fchip b{font-weight:700}
.fchip .fx{cursor:pointer;color:var(--mut);border:0;background:none;font-size:14px;line-height:1;padding:0 3px}
.fchip .fx:hover{color:var(--rose,#f0a8b2)}
.faccount{font-size:12px;color:var(--mut);margin-left:auto;white-space:nowrap}
.faccount b{color:var(--ink)}
.avisobox{display:flex;align-items:center;gap:10px;padding:11px 14px;margin-bottom:12px;border-left:3px solid var(--accent);font-size:12.5px;color:var(--ink)}
.avisobox svg{flex:none;color:var(--accent)}
@media(max-width:640px){
  .facpanel .facgrid{grid-template-columns:1fr 1fr}
  .facpanel .ff input,.facpanel .ff select{font-size:16px;padding:10px 11px}   /* 16px evita zoom-jump do iOS */
  .facpanel .facactions{flex-direction:column}
  .facpanel .facactions .btn,.facpanel .facactions .btn-2{width:100%}
  .avisobox{flex-wrap:wrap}
  .avisobox .btn-2{width:100%;margin-left:0!important}
}
.btn{background:var(--grad);color:var(--accent-ink);border:none;border-radius:8px;padding:9px 18px;font-weight:700;font-size:13.5px;cursor:pointer;letter-spacing:.01em;transition:filter .15s,background .15s}.btn:hover{filter:brightness(1.08)}
.card{background:var(--panel);border:1px solid var(--line);border-radius:11px;padding:16px 18px;box-shadow:var(--shadow);margin-bottom:16px}
h3{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.07em;color:var(--mut);margin:0 0 10px}
table{width:100%;border-collapse:collapse;font-size:13px}
th,td{padding:10px 13px;border-bottom:1px solid var(--line);text-align:left;white-space:nowrap}
th{color:var(--mut);font-weight:600;font-size:10.5px;text-transform:uppercase;letter-spacing:.06em}
td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}
tr.clk:hover td{background:var(--hover);cursor:pointer}
.chev{color:var(--mut)}
th.srt{cursor:pointer;user-select:none;white-space:nowrap}th.srt:hover{color:var(--ink)}
th .sar{display:inline-flex;vertical-align:-2px;margin-left:2px;color:var(--accent)}
.tbl-filter{background:var(--panel);border:1px solid var(--line);color:var(--ink);padding:8px 12px;border-radius:8px;font-size:13px;width:280px;max-width:100%}
.tbl-filter:focus{outline:none;border-color:var(--accent)}
.tbl-meta{color:var(--mut);font-size:11.5px}
.pill{display:inline-block;padding:2px 8px;border-radius:5px;font-size:11px;font-weight:600}
.pill.ok{background:#0d2e22;color:#79d3ac}.pill.no{background:#2e2610;color:#e2bd63}.pill.bx{background:#331722;color:#e29aa0}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:14px}
.kpi{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:14px 16px}
.kpi .v{font-size:20px;font-weight:700;letter-spacing:-.01em}.kpi .l{color:var(--mut);font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;margin-top:3px}
.kv{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid var(--line);font-size:13px}
.kv .k{color:var(--mut);display:flex;align-items:center;gap:6px}.kv .v{font-weight:600;text-align:right}
.grid2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px}.grid2>*{min-width:0}@media(max-width:820px){.grid2{grid-template-columns:minmax(0,1fr)}}
.empty{color:var(--mut);padding:36px 0;text-align:center}
.selo{display:inline-flex;align-items:center;gap:5px;margin:2px 5px 2px 0;padding:3px 9px;border-radius:6px;font-size:11.5px;font-weight:600;border:1px solid var(--line)}
/* convenção de selos: .de=positivo/ativa/de-fato · .hd=especial/holding/destaque · .sp=neutro/informativo · .bx=risco/alerta */
.selo.de{background:#0d2e22;color:#79d3ac;border-color:#164e3b}.selo.hd{background:#211a35;color:#c1b2ea;border-color:#332a52}.selo.sp{background:#0c2638;color:#7bbde6;border-color:#173a52}
.back{color:var(--mut);font-size:12.5px;margin-bottom:10px;display:inline-flex;align-items:center;gap:5px}
#arvLevels{margin-top:10px}
.lvlg{margin-bottom:12px}
.lvlh{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--mut);margin:0 2px 6px;display:flex;align-items:center;gap:7px}
.lvlh span{background:var(--btn2,#182437);color:var(--accent);border-radius:10px;padding:1px 7px;font-size:10.5px}
.lvlcs{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:8px}
.lvlc{display:flex;align-items:center;gap:8px;background:var(--panel);border:1px solid var(--line);border-radius:9px;padding:8px 10px;cursor:pointer;transition:border-color .12s,background .12s}
.lvlc:hover{border-color:var(--accent);background:var(--hover,#141d2e)}
.lvlc span{display:flex;flex-direction:column;min-width:0}
.lvlc b{font-size:12.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lvlc i{font-style:normal;color:var(--mut);font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
h2{font-size:19px;font-weight:600;letter-spacing:-.01em;margin:0 0 3px;display:flex;align-items:center;gap:9px;flex-wrap:wrap}.sub{color:var(--mut);font-size:12.5px;margin-bottom:14px}
.spin{display:inline-block;width:14px;height:14px;border:2px solid var(--line2);border-top-color:var(--accent);border-radius:50%;animation:sp .7s linear infinite;vertical-align:-2px}
@keyframes sp{to{transform:rotate(360deg)}}
.foot{color:var(--mut);font-size:11.5px;padding:24px;text-align:center;border-top:1px solid var(--line);margin-top:20px}
/* chip de VISITA (histórico de navegação) — distinto do chip de BUSCA: ícone da entidade em acento +
   fininha borda de acento à esquerda (card 95f9b0784cd3) */
.vchip{border-left:2px solid var(--accent)}
.vchip .ic-sm{color:var(--accent)}
/* ---- botão secundário ---- */
.btn-2{background:var(--btn2);color:var(--ink);border:1px solid var(--line2);border-radius:8px;padding:9px 16px;font-weight:600;font-size:13.5px;cursor:pointer;transition:background .15s,border-color .15s}.btn-2:hover{background:var(--hover);border-color:var(--accent)}
.btn-2.on{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
.btn-2:disabled,.btn:disabled{opacity:.5;cursor:not-allowed;filter:none}
.ffbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:0 0 10px}
.ffgrp{display:inline-flex;border:1px solid var(--line2);border-radius:8px;overflow:hidden}
.fchip{background:var(--card);color:var(--mut);border:0;border-right:1px solid var(--line2);padding:6px 11px;font-size:12px;font-weight:600;cursor:pointer;transition:background .15s,color .15s}
.ffgrp .fchip:last-child{border-right:0}
.fchip:hover{background:var(--hover);color:var(--ink)}
.fchip.on{background:var(--accent);color:var(--accent-ink)}
.fsel{background:var(--card);color:var(--ink);border:1px solid var(--line2);border-radius:8px;padding:6px 26px 6px 10px;font-size:12px;font-weight:600;cursor:pointer}
.fsel:hover{border-color:var(--accent)}
.fsrch{background:var(--card);color:var(--ink);border:1px solid var(--line2);border-radius:8px;padding:6px 10px;font-size:12px;font-weight:500;min-width:190px;flex:1 1 190px;max-width:280px}
.fsrch::placeholder{color:var(--mut)}
.fsrch:hover{border-color:var(--accent)}
.fsrch:focus{outline:none;border-color:var(--accent)}
/* ---- foco acessível ---- */
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}
button,a,[tabindex]{-webkit-tap-highlight-color:transparent}
/* ---- transição de seção ---- */
section.on{animation:fadein .18s ease}@keyframes fadein{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
/* ---- skeletons ---- */
.sk{background:linear-gradient(100deg,var(--panel) 30%,#17203200 50%,var(--panel) 70%);background-size:200% 100%;animation:shimmer 1.15s linear infinite;border-radius:6px}
@keyframes shimmer{to{background-position:-200% 0}}
.sk-tbl{border:1px solid var(--line);border-radius:11px;overflow:hidden}
.sk-tbl .sk-row{display:flex;gap:14px;padding:13px 14px;border-bottom:1px solid var(--line)}
.sk-tbl .sk-row:last-child{border-bottom:none}
.sk-cell{height:13px;border-radius:5px;background:var(--line);flex:1}
.sk-cell.w1{flex:2.4}.sk-cell.w2{flex:.6}
.sk-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:14px}
/* O skeleton do KPI é o PRÓPRIO box do `.kpi` (mesma classe ⇒ mesmo padding/borda/tipografia, sem
   recriar a regra ao lado dela). ANTES era `height:70px` FIXO contra uma célula real que mede
   74,3px (rótulo de 1 linha) ou 89,5px (2 linhas) — e a grade real ainda leva um
   `margin-top:14px` inline que o skeleton não tinha. Medido na /e/ 384px logado, 06/set/2026
   (card d9eaab40a1f6, 2 CNPJs, valores idênticos):
       .sk-kpis  h=234,0  mt=0px   filhos=[70,70,70,70,70]
       .kpis     h=277,4  mt=14px  filhos=[89.5,89.5,74.3,74.3,89.5]
       ⇒ a troca skeleton→conteúdo empurrava 57,4px tudo o que vem abaixo.
   Casam por CONSTRUÇÃO, em qualquer largura: o box é o mesmo e AMBOS os rótulos reservam duas
   linhas (regra `.sk-kpi .l` + `#perfilOut>.kpis .kpi .l` abaixo). Sem número mágico p/ expirar.
   Re-medir com: python3 qa/cls_rig.py --cnpj … --w 384 --h 672 --variante logado --n 6 --gate */
.sk-kpi{background:var(--hover);border-radius:10px}
.perf-skel .sk-kpis{margin-top:14px}   /* espelha o style="margin-top:14px" inline da grade real da ficha */
#perfilOut>.kpis .kpi .l,.sk-kpi .l{line-height:1.2;min-height:2.4em}  /* 2 linhas dos DOIS lados */
/* Reserva de espaço p/ o herói "salto" (heroFast) — evita o layout-shift de empurrar o skeleton
   quando o veredito chega antes do /perfil (card b65602e92c94: CLS /e/ mobile). Ela pina o herói
   TANTO no skeleton (.hero-reserve, que o heroFast enche) QUANTO no shell renderizado (#saltoTop,
   que o saltoRender enche) — sem casar os dois, a diferença de altura entre os renders empurrava
   ~260px o wedge/kpis abaixo (card 592b7ee1fea2: CLS 0,35→~0 no rig).

   ⚠️ A reserva depende do LAYOUT: `.salto-grid` é 2×2 no mobile e 4-em-linha em ≥641px, então o
   mesmo veredito tem ~327px num e ~164px no outro. Um `min-height` único servia uma combinação e
   virava buraco na outra (card 7ff3ecbec80a, feedback do Eric: «espaço em branco gigante»).

   ✓ A DIMENSÃO «VARIANTE» SUMIU EM 07/set/2026 — e sumiu por PARIDADE, não por arredondamento.
   Até aqui o `.vw-strip` (Hexalt Score + faróis) era ANON-ONLY, e por isso o logado precisava de
   uma reserva PRÓPRIA (380/190): «logado, essa altura não vem de ninguém». Isso era o sintoma do
   defeito do elo 5 do funil e2e — entrar na conta SUBTRAÍA sinal da tela. Com o strip a pintar nos
   dois estados, os dois heróis passam a MEDIR O MESMO e o override `html.hx-logged` foi REMOVIDO:
   uma dimensão de configuração a menos, ganha pela correção do produto.

   MEDIDO em 05/set (deslogado, n=10) e re-medido em 07/set com o patch de paridade
   (`python3 qa/cls_rig.py --patch-local <empresas.html ANTES do patch>`, n=4 por célula, herói REAL):
                      p50    faixa        reserva      CLS medido
     deslogado ≤640   622    605-653      600          0      (o herói ESTOURA os 600: caixa=conteúdo)
     deslogado ≥641   321    313-345      350          0,0064 (controlo 07/set: INALTERADO pelo patch)
     logado    ≤640   605    604-606      600          era 0,085 com a reserva de 380 (herói 343→605)
     logado    ≥641   323    315-331      350          era 0,121 com a reserva de 190 (herói 158→323)
   A reserva é TETO (max da amostra + folga), nunca a mediana: reserva CURTA empurra o
   conteúdo p/ baixo quando o herói chega, que é a direção que CUSTA CLS; reserva sobrando
   só deixa um vão residual ≤55px.
   ⚠️ `≤640` fica em 600 DE PROPÓSITO, e a razão é medição, não inércia: ali o herói (604-653) já
   ESTOURA a reserva, então a caixa cresce até o conteúdo e o vão é 0 com CLS 0.
   Subir p/ 660 «por simetria» foi testado e ABRIU um vão de 23-55px sem baixar CLS nenhum —
   a célula que já estava certa era justamente a única que o número antigo servia.
   ⚠️ A reserva está ACOPLADA ao `.vw-strip`: se o strip deixar de pintar (flag OFF, ou o
   `/score/{cnpj}/resumo` sem score), o herói volta a ~160-344px e a reserva vira VÃO — é o preço
   assumido, o mesmo que o anónimo já pagava. Re-meça com o rig antes de mexer nestes números. */
:root{--salto-reserva:600px}
@media(min-width:641px){
  :root{--salto-reserva:350px}
}
.hero-reserve{min-height:var(--salto-reserva)}
#saltoTop{min-height:var(--salto-reserva)}
/* Reserva a altura do skeleton do /e/ ~1 viewport: o rodapé começa abaixo da dobra, então
   a troca skeleton→perfil (bem mais alto) não gera layout-shift visível do footer (CLS).
   #perfilOut mantém o MESMO piso DEPOIS da troca (o skeleton .perf-skel é substituído pelo
   shell): sem isso o rodapé subia pra dobra no intervalo pré-fill dos ~10 cards async e o
   shift do footer contava CLS (~0,22 intermitente). */
.perf-skel,#perfilOut{min-height:100vh}
/* ---- wrapper de tabela com sombra de scroll ---- */
.tbl-wrap{position:relative;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:thin;background:linear-gradient(90deg,var(--bg) 30%,#0000),linear-gradient(90deg,#0000,var(--bg) 70%) 100% 0,radial-gradient(farthest-side at 0 50%,rgba(0,0,0,.4),#0000),radial-gradient(farthest-side at 100% 50%,rgba(0,0,0,.4),#0000) 100% 0;background-repeat:no-repeat;background-size:36px 100%,36px 100%,14px 100%,14px 100%;background-attachment:local,local,scroll,scroll}
.tbl-wrap table{min-width:520px}
.scrollhint{display:none;font-size:11px;color:var(--mut2);margin:0 0 6px;align-items:center;gap:5px}
@media(min-width:641px){.scrollhint.show{display:flex}}
/* ---- chips de filtro ativo ---- */
.fchips{display:flex;gap:6px;flex-wrap:wrap;margin:-4px 0 14px}
.fchip{display:inline-flex;align-items:center;gap:6px;background:var(--hover);border:1px solid var(--line2);color:var(--mut);border-radius:20px;padding:3px 10px;font-size:11.5px}
.fchip b{color:var(--ink);font-weight:600}
.fchip.on{background:#12233a;border-color:#2f5c8f;color:#cfe3fb}.fchip.on b{color:#eaf3ff}
/* ---- cards de resultado (aba empresas) ---- */
.ecards{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:11px}
.ecard{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:13px 15px;cursor:pointer;transition:border-color .12s,background .12s}
.ecard:hover{border-color:var(--line2);background:var(--hover)}
.ecard .ech{display:flex;align-items:baseline;gap:6px;flex-wrap:wrap;font-size:14px;line-height:1.3}
.ecard .ech b{color:var(--ink)}
.rvlogo{width:24px;height:24px;border-radius:6px;object-fit:contain;background:rgba(255,255,255,.05);padding:2px;flex:none;align-self:center;vertical-align:middle}
td .rvlogo{margin-right:8px}
.ecard .ecb{display:flex;flex-direction:column;gap:3px;margin-top:9px}
.ecard .eckv{display:flex;justify-content:space-between;gap:12px;font-size:12px;line-height:1.35}
.ecard .eckv>span{color:var(--mut);white-space:nowrap}
.ecard .eckv>b{color:var(--ink);font-weight:500;text-align:right;overflow:hidden;text-overflow:ellipsis}
.ecard .eckv a{color:var(--accent2)}
/* ---- caixa de erro amigável ---- */
.errbox{text-align:center;padding:30px 16px;color:var(--mut)}.errbox .btn-2{margin-top:12px}
/* ---- mobile: respiro e tabelas ---- */
@media(max-width:640px){
  .wrap{padding:16px 14px}
  .card{padding:14px}
  .kpi .v{font-size:18px}
  body{font-size:14.5px}
  h2{font-size:18px}
  .ctrls{gap:7px}
  .ctrls .sub{width:100%;order:9}
  nav{-webkit-mask-image:linear-gradient(90deg,#000 88%,transparent);mask-image:linear-gradient(90deg,#000 88%,transparent)}
  .kv{flex-wrap:wrap;gap:2px 12px}
  .kv .v{max-width:100%!important;text-align:left}
  .gfbar .gfhint{display:none}
  .gfbar{gap:6px}
  .selos-row{gap:6px}
  /* Fase 1: input de busca não estoura */
  .ctrls input[type=text]{min-width:0}
  /* Fase 1: painel direito da árvore (330px) cabe no mobile */
  .cy-card.fs .arv-panel{width:100%!important;max-width:100vw}
}
/* ---- selos em destaque no perfil ---- */
.cpBtn{background:none;border:0;color:var(--mut);cursor:pointer;padding:0 3px;vertical-align:middle;line-height:1}.cpBtn:hover{color:var(--accent)}
.gfbar{border-bottom:1px solid var(--line);background:var(--panel);font-size:12px;color:var(--mut)}
.gfbar .gftgl{display:flex;align-items:center;gap:7px;width:100%;text-align:left;background:none;border:0;color:var(--mut);cursor:pointer;padding:7px 16px;font-size:12px;font-weight:600}
.gfbar .gftgl:hover{color:var(--ink)}
.gfbar .gficon{opacity:.7;font-size:13px}
.gfbar .gfsum{font-weight:500;color:var(--accent);background:rgba(87,178,143,.12);border:1px solid #1c4d38;border-radius:20px;padding:1px 10px;font-size:11px}
.gfbar .gfcar{margin-left:auto;transition:transform .18s;opacity:.6}
.gfbar.open .gfcar{transform:rotate(180deg)}
.gfpanel{display:none;align-items:center;gap:8px;flex-wrap:wrap;padding:0 16px 9px}
.gfbar.open .gfpanel{display:flex}
.gfbar select{font-size:12px;padding:3px 6px}
.gfseg{display:inline-flex;border:1px solid var(--line2);border-radius:8px;overflow:hidden}
.gfseg button{background:none;border:0;color:var(--mut);cursor:pointer;padding:4px 13px;font-size:11.5px;line-height:1.4}
.gfseg button.on{background:var(--accent);color:var(--accent-ink);font-weight:600}
.gfhint{opacity:.6;font-size:11px}
.alert-distress{margin:12px 0 0;padding:10px 14px;border-radius:9px;background:#2a1113;border:1px solid #5b2126;color:#f0b4b4;font-size:13px}
.alert-distress.warn{background:#241c10;border-color:#5a4420;color:#e8cd94}
.alert-distress .sub2{font-size:11px;opacity:.78;margin-top:3px;font-weight:400}
.selos-row{display:flex;flex-wrap:wrap;gap:7px;margin-top:2px}
.selos-row .selo{font-size:12px;padding:4px 11px}
.vermais summary{cursor:pointer;color:var(--accent);font-size:12.5px;padding:8px 0 2px;list-style:none;user-select:none}
.vermais summary::-webkit-details-marker{display:none}
.vermais summary:hover{color:var(--accent2)}
.vermais[open] summary{color:var(--mut)}
/* ---- grafos: altura responsiva ---- */
#cy,#cyg{height:600px}#cyp{height:580px}
@media(max-width:640px){#cy,#cyg{height:72vh;min-height:400px}#cyp{height:68vh;min-height:380px}}
/* ---- arvore tela cheia + painel de nos ---- */
.cy-card.fs{position:fixed!important;inset:0!important;z-index:2000;margin:0;border-radius:0;border:0;background:var(--bg)}  /* !important: o card tem position:relative inline (p/ toolbar/painel), que venceria o fixed */
.cy-card.fs #cy{height:100vh!important;width:calc(100vw - 330px)!important}  /* área do grafo = viewport menos o painel da direita */
.arv-panel{position:absolute;background:var(--panel);z-index:2002;display:none;flex-direction:column}
.cy-card.fs .arv-panel{display:flex;position:fixed;top:0;right:0;width:330px;height:100vh;border-left:1px solid var(--line)}
.arv-panel .aph{padding:10px 12px;border-bottom:1px solid var(--line);font-size:12px;color:var(--mut);display:flex;align-items:center;gap:8px;flex:none;flex-wrap:wrap}
.arv-panel .apl{overflow:auto;flex:1;padding:2px 0}
.arv-panel .api{padding:7px 12px;border-bottom:1px solid var(--line);cursor:pointer;font-size:12.5px;display:flex;justify-content:space-between;gap:8px}
.arv-panel .api:hover{background:var(--hover)}.arv-panel .api.on{background:var(--btn2)}
.arv-panel .aps{width:100%;box-sizing:border-box;background:var(--panel2);border:1px solid var(--line2);color:var(--ink);border-radius:7px;padding:6px 9px;font-size:12.5px}
.afc{margin:0;padding:11px 12px;border-bottom:1px solid var(--line);background:#0f1826}
.afc-t{font-size:13px;font-weight:600;color:var(--ink);line-height:1.25}
.afc-r{font-size:10.5px;color:var(--accent);margin:2px 0 7px;text-transform:uppercase;letter-spacing:.3px}
.afc-kv{display:flex;justify-content:space-between;gap:10px;font-size:11.5px;padding:2px 0;color:var(--mut)}
.afc-kv span:last-child{color:#dbe3f0;text-align:right;max-width:62%}
.arv-grab{display:none}
.cy-card.fs .arv-toolbar{right:342px!important}@media(max-width:640px){.cy-card.fs .arv-toolbar{right:8px!important}}
/* mobile inline (não-fullscreen): a toolbar do topo-direito estoura à esquerda (buscar+4 botões) e cobria a legenda do topo-esquerdo (âncora/empresa/pessoa ilegíveis) → desce a legenda p/ LOGO ABAIXO da toolbar (~63px), ainda visível na 1ª tela e fora dos botões (o rodapé cairia sob o .botnav fixo). !important obrigatório: top/left são inline. */
@media(max-width:640px){.cy-card:not(.fs) .arv-legend{top:68px!important;bottom:auto!important;left:8px!important;right:8px!important;justify-content:flex-start}}
@media(max-width:640px){
  .cy-card.fs #cy{height:64vh!important;width:100%!important}  /* mobile: grafo em cima, painel ~1/3 embaixo */
  /* tela cheia mobile: some a legenda e a toolbar vira barra full-width no topo (busca + botões com wrap) → sem sobreposição */
  .cy-card.fs .arv-legend{display:none!important}
  .cy-card.fs .arv-toolbar{left:6px!important;right:6px!important;top:6px!important;display:flex;flex-wrap:wrap;justify-content:flex-end;gap:5px;background:rgba(9,13,21,.82);padding:5px 6px;border-radius:8px}
  .cy-card.fs .arv-toolbar #arvBuscaInp{flex:1 1 120px;width:auto!important;min-width:110px}
  .cy-card.fs .arv-panel{position:fixed;left:0;right:0;bottom:0;top:auto;width:auto;height:34vh;border-left:0;border-top:1px solid var(--line);border-radius:14px 14px 0 0;transition:height .18s ease}
  .cy-card.fs .arv-panel.dragging{transition:none}
  .arv-grab{display:block;flex:none;padding:8px 0 4px;text-align:center;cursor:ns-resize;touch-action:none}
  .arv-grab::before{content:"";display:inline-block;width:38px;height:4px;border-radius:3px;background:var(--line2)}
}
/* ---- seletor de ordenação (só mobile; desktop ordena pelo cabeçalho) ---- */
/* ---- typeahead / autocomplete ---- */
.q-wrap input{width:100%}
.sugbox{position:absolute;top:calc(100% + 5px);left:0;right:0;z-index:40;background:var(--panel);border:1px solid var(--line2);border-radius:10px;box-shadow:var(--shadow);overflow:hidden;display:none}
.sugbox.on{display:block}
/* mobile: os botões Buscar/Filtros quebram p/ a linha de baixo do .q-wrap; se o dropdown ancorar no .q-wrap ele os COBRE.
   Ancorando no .ctrls (position:relative) e soltando o .q-wrap, o dropdown cai ABAIXO da linha toda dos botões. */
@media(max-width:640px){#busca .ctrls{position:relative}#busca .q-wrap{position:static!important}#busca #sugBox{left:0;right:0}}
.sug{display:flex;justify-content:space-between;gap:10px;padding:9px 13px;cursor:pointer;border-bottom:1px solid var(--line);align-items:center}
.sug:last-child{border-bottom:none}
.sug:hover,.sug.sel{background:var(--hover)}
.sug .slogo{flex:none}
.sug .r{font-weight:600;font-size:13px;overflow:hidden;min-width:0;flex:1;display:flex;flex-direction:column;gap:1px}
.sug .rt{display:flex;align-items:center;gap:6px;min-width:0}
.sug .rt b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sug .scnpj{font-family:ui-monospace,monospace;font-size:10.5px;color:var(--mut);font-weight:400;letter-spacing:.01em}
.sug .c{color:var(--mut);font-size:11.5px;flex:none;font-variant-numeric:tabular-nums;align-self:center}
.logoav{display:inline-flex;align-items:center;justify-content:center;color:#fff;font-weight:700;line-height:1;letter-spacing:.02em;flex:none;font-family:inherit;overflow:hidden}
.tbl-sort{display:none;background:var(--panel);border:1px solid var(--line);color:var(--ink);padding:8px 10px;border-radius:8px;font-size:12.5px;max-width:100%}
.tbl-sort:focus{outline:none;border-color:var(--accent)}
/* ---- tabela vira CARTÕES no mobile (label:valor), com filtro+ordenação preservados ---- */
@media(max-width:640px){
  .tbl-sort{display:inline-block}
  .scrollhint{display:none!important}
  .tbl-wrap{overflow-x:visible;background:none}
  .tbl-wrap table{min-width:0}
  .tbl-wrap table,.tbl-wrap tbody,.tbl-wrap tr,.tbl-wrap td{display:block;width:auto}
  .tbl-wrap tr:first-child{display:none}
  .tbl-wrap tr{border:1px solid var(--line);border-radius:10px;margin:0 0 10px;padding:10px 13px;background:var(--panel)}
  .tbl-wrap tr.clk:active{background:var(--hover)}
  .tbl-wrap td{border:none;border-bottom:1px solid var(--line);padding:6px 0;display:flex;justify-content:space-between;gap:14px;text-align:right;white-space:normal;overflow-wrap:anywhere}
  .tbl-wrap td:last-child{border-bottom:none}
  .tbl-wrap td::before{content:attr(data-label);color:var(--mut);font-size:10.5px;text-transform:uppercase;letter-spacing:.04em;text-align:left;flex:none;padding-right:12px;font-weight:600;align-self:flex-start}
  .tbl-wrap td[data-nolabel]{display:none}
  .tbl-wrap td:first-child{border-bottom:1px solid var(--line2);padding-bottom:8px;margin-bottom:2px;text-align:left;display:block}
  .tbl-wrap td:first-child::before{display:none}
  /* modo tabela da aba empresas: tabela real com rolagem horizontal (não colapsa em card) */
  .force-table .tbl-wrap{overflow-x:auto;background:radial-gradient(farthest-side at 100% 50%,rgba(0,0,0,.35),#0000) 100% 0/16px 100% no-repeat}
  .force-table .tbl-wrap table{display:table;min-width:760px;width:auto}
  .force-table .tbl-wrap tbody{display:table-row-group}
  .force-table .tbl-wrap tr{display:table-row;border:none;border-radius:0;margin:0;padding:0;background:none}
  .force-table .tbl-wrap tr:first-child{display:table-row}
  .force-table .tbl-wrap th{display:table-cell}
  .force-table .tbl-wrap td{display:table-cell;text-align:left;white-space:nowrap;border:none;border-bottom:1px solid var(--line);padding:9px 12px;overflow-wrap:normal}
  .force-table .tbl-wrap td.num{text-align:right}
  .force-table .tbl-wrap td::before{display:none!important}
  .force-table .tbl-wrap td:first-child{display:table-cell;white-space:normal;min-width:180px;max-width:260px;border-bottom:1px solid var(--line);margin:0;padding:9px 12px}
}
/* ============ POLISH DE LANÇAMENTO ============ */
/* scrollbar discreta e premium */
*{scrollbar-color:#26344d var(--panel2);scrollbar-width:thin}
::-webkit-scrollbar{width:11px;height:11px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:#26344d;border-radius:8px;border:2px solid var(--bg)}
::-webkit-scrollbar-thumb:hover{background:#33456380}
/* microinterações de botão */
.btn{transition:background .15s,box-shadow .15s,transform .05s}
.btn:hover{box-shadow:0 5px 16px rgba(111,159,216,.28)}
.btn:active,.btn-2:active{transform:translateY(1px)}
/* linha clicável mais viva */
tr.clk{transition:background .12s}tr.clk:hover td{background:var(--hover)}
/* KPI: acento sutil + hover */
.kpi{transition:border-color .15s,transform .12s}
.kpi:hover{border-color:var(--line2)}
.kpi .v{font-variant-numeric:tabular-nums}
/* cabeçalho de aba (intro) */
.tabhead{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin:2px 0 15px;padding-bottom:13px;border-bottom:1px solid var(--line)}
.tabhead h2{margin:0;font-size:18px;font-weight:600;letter-spacing:-.01em}
.tabhead p{margin:0;color:var(--mut);font-size:12.5px;line-height:1.4}
@media(max-width:640px){.tabhead{margin-bottom:12px;padding-bottom:11px}.tabhead h2{font-size:16.5px}}
/* helper text dentro dos controles: um respiro consistente */
.ctrls .sub{align-self:center}
/* selo levemente mais sólido */
.selo{line-height:1.1}
/* card com leve realce na borda ao passar (só onde é interativo) */
.card.clk,.sug,.hbrow{transition:background .13s,border-color .13s}
/* foco de teclado nos controles */
.ctrls input:focus-visible,.ctrls select:focus-visible,.tbl-filter:focus-visible{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(111,159,216,.15)}
/* header premium */
header{backdrop-filter:saturate(140%);position:sticky;top:0;z-index:50}
/* mapas Leaflet não pintam sobre o header sticky: isolation cria stacking context próprio e prende panes/controles (z-index até ~1000) do Leaflet abaixo do header. NÃO afeta a teia (cytoscape, .cy-card.fs z-index:2000) nem modais */
.leaflet-container{isolation:isolate}
.brand,.brand:hover{color:var(--ink);text-decoration:none}
.brand-sub{color:var(--mut2);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;margin-top:1px}
/* ---- alternador de tema (claro/escuro) ---- */
.themebtn{display:inline-flex;align-items:center;justify-content:center;background:var(--panel);border:1px solid var(--line2);color:var(--mut);border-radius:9px;width:34px;height:34px;cursor:pointer;flex:none;transition:color .15s,border-color .15s}
.themebtn:hover{color:var(--ink);border-color:var(--accent)}
.themebtn .ic{width:16px;height:16px}
.themebtn .ic-sun{display:none}.themebtn .ic-moon{display:block}
:root[data-theme="light"] .themebtn .ic-sun{display:block}:root[data-theme="light"] .themebtn .ic-moon{display:none}
/* footer profissional */
footer.foot{color:var(--mut);font-size:12px;padding:26px 24px;border-top:1px solid var(--line);margin-top:24px;background:var(--panel2)}
footer.foot .fwrap{max-width:1280px;margin:0 auto;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;gap:12px}
footer.foot b{color:var(--ink);font-weight:600}
footer.foot .fnote{max-width:640px;line-height:1.5;margin:0 auto}
@media(max-width:640px){footer.foot{padding:22px 15px}footer.foot .fwrap{gap:10px}}
/* ---- impressão: só o conteúdo, sem cromo ---- */
@media print{
  :root{--bg:#fff;--panel:#fff;--ink:#111;--mut:#555;--line:#ddd}
  body{background:#fff;color:#111}
  header,nav,.foot,footer,#pxbtns,.ctrls,.tbl-filter,.back,.cpBtn,.no-print{display:none!important}
  section{display:none!important}section.on{display:block!important}
  .card{box-shadow:none;border:1px solid #ddd;break-inside:avoid}
  a{color:#111}.selo{border:1px solid #bbb}
  .alert-distress{background:#fff!important;color:#111!important;border:1.5px solid #b04a4a!important;-webkit-print-color-adjust:exact;print-color-adjust:exact;break-inside:avoid}
  .alert-distress.warn{border-color:#b8860b!important}
  .kv{break-inside:avoid}
  .hx-onb,.hx-tip{display:none!important}
}
/* Onboarding in-product — checklist de ativação (I4). Card flutuante, dispensável, preso ao estado real. */
.hx-onb{position:fixed;right:18px;bottom:18px;z-index:2400;width:322px;max-width:calc(100vw - 28px);background:var(--panel);border:1px solid var(--line2);border-radius:14px;box-shadow:var(--shadow);font-size:13px;overflow:hidden;animation:hxOnbIn .24s ease}
@keyframes hxOnbIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.hx-onb-hd{display:flex;align-items:flex-start;gap:8px;padding:12px 13px;cursor:pointer;background:var(--panel2);border-bottom:1px solid var(--line)}
.hx-onb-hd b{font-size:13px;color:var(--ink)}
.hx-onb-sub{color:var(--mut);font-size:11.5px}
.hx-onb-bar{display:block;height:4px;background:var(--line);border-radius:3px;overflow:hidden;margin-top:6px}
.hx-onb-bar i{display:block;height:100%;background:var(--grad);border-radius:3px;transition:width .35s ease}
.hx-onb-x{flex:0 0 auto;background:none;border:none;color:var(--mut);font-size:16px;cursor:pointer;line-height:1;padding:1px 5px;border-radius:6px}
.hx-onb-x:hover{color:var(--ink);background:var(--hover)}
.hx-onb-body{padding:6px 7px 9px}
.hx-onb-step{display:flex;gap:10px;align-items:flex-start;padding:9px 9px;border-radius:9px;transition:background .15s}
.hx-onb-step.todo{cursor:pointer}
.hx-onb-step.todo:hover{background:var(--hover)}
.hx-onb-ck{flex:0 0 20px;width:20px;height:20px;border-radius:50%;border:1.6px solid var(--line2);display:flex;align-items:center;justify-content:center;font-size:12px;margin-top:1px;color:var(--mut);font-weight:700}
.hx-onb-step.done .hx-onb-ck{background:var(--emer);border-color:var(--emer);color:#04140d}
.hx-onb-tx{flex:1;min-width:0}
.hx-onb-tx b{display:block;font-size:12.8px;color:var(--ink);font-weight:600}
.hx-onb-step.done .hx-onb-tx b{color:var(--mut);text-decoration:line-through}
.hx-onb-tx .hx-onb-d{display:block;font-size:11.5px;color:var(--mut);margin-top:1px;line-height:1.42}
.hx-onb-cta{display:block;font-size:11.8px;color:var(--accent);font-weight:700;margin-top:3px}
.hx-onb.min .hx-onb-body{display:none}
/* Tooltip just-in-time — aponta p/ o próximo passo com um pulse; some ao clicar/timeout. */
.hx-tip{position:fixed;z-index:3400;max-width:252px;background:var(--ink);color:var(--bg);font-size:12px;line-height:1.45;padding:9px 11px;border-radius:9px;box-shadow:var(--shadow);animation:hxOnbIn .2s ease}
.hx-tip:after{content:"";position:absolute;width:10px;height:10px;background:var(--ink);transform:rotate(45deg)}
.hx-tip.top:after{top:-5px;left:calc(50% - 5px)}
.hx-tip.bottom:after{bottom:-5px;left:calc(50% - 5px)}
.hx-onb-pulse{animation:hxPulse 1.1s ease 3}
@keyframes hxPulse{0%,100%{box-shadow:0 0 0 0 rgba(147,51,234,0)}50%{box-shadow:0 0 0 4px rgba(147,51,234,.5)}}


.pport{--border:var(--line);--panel2:var(--card2);--radius:11px}
.pport .wrap{display:grid;grid-template-columns:320px 1fr;gap:0;min-height:calc(100vh - 120px)}
.pport aside{border-right:1px solid var(--border);background:var(--panel2);padding:16px;overflow-y:auto}
.pport main{padding:18px 22px;overflow-x:hidden}
@media(max-width:820px){.pport .wrap{grid-template-columns:1fr}.pport aside{border-right:0;border-bottom:1px solid var(--border)}}
.pport h3{font-size:11px;text-transform:uppercase;letter-spacing:1px;color:var(--mut);margin:0 0 10px}
.pport h2{margin:0;font-size:18px}
.pport .btn{background:var(--panel);border:1px solid var(--border);color:var(--ink);border-radius:9px;padding:8px 13px;font-size:13px}
.pport .btn:hover{background:var(--hover)}
.pport .btn.gold{background:var(--grad);color:var(--accent-ink);border-color:transparent;font-weight:700}
.pport .btn.gold:hover{filter:brightness(1.08)}
.pport .btn.sm{padding:5px 9px;font-size:12px}
.pport .btn.ghost{background:transparent}
.pport .field{margin-bottom:11px}
.pport .field label{display:block;font-size:11px;color:var(--mut);margin-bottom:4px;letter-spacing:.3px}
.pport input,.pport select,.pport textarea{width:100%;background:var(--panel2);border:1px solid var(--border);color:var(--ink);border-radius:8px;padding:9px 10px;font-size:13px;font-family:inherit}
.pport input:focus,.pport select:focus,.pport textarea:focus{outline:0;border-color:var(--accent)}
.pport .chk{display:flex;align-items:center;gap:7px;font-size:12.5px;color:var(--ink);margin-bottom:7px;cursor:pointer}
.pport .chk input{width:auto}
.pport .actions{display:flex;gap:8px;margin-top:6px}
.pport .actions .btn{flex:1;justify-content:center}
.pport .kpis{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:14px}
.pport .kpi{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:10px 14px;min-width:110px}
.pport .kpi .l{font-size:10px;text-transform:uppercase;letter-spacing:.8px;color:var(--mut)}
.pport .kpi .v{font-size:19px;font-weight:700;margin-top:2px}
.pport .chip{background:var(--panel);border:1px solid var(--border);border-radius:20px;padding:4px 11px;font-size:12px;color:var(--mut)}
.pport .chip b{color:var(--ink)}
.pport .chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}
.pport table{width:100%;border-collapse:collapse;font-size:13px}
.pport th,.pport td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border)}
.pport th{font-size:10px;text-transform:uppercase;letter-spacing:.7px;color:var(--mut);font-weight:600}
.pport tbody tr{cursor:pointer}
.pport tbody tr:hover{background:var(--hover)}
.pport td.num,.pport th.num{text-align:right;font-variant-numeric:tabular-nums}
.pport .badge{display:inline-block;background:rgba(87,178,143,.16);color:var(--emer);border:1px solid rgba(87,178,143,.3);border-radius:12px;padding:1px 8px;font-size:10px;font-weight:600}
.pport .badge.gold{background:rgba(198,163,92,.16);color:var(--gold);border-color:rgba(198,163,92,.35)}
.pport .badge.rose{background:rgba(224,138,155,.14);color:var(--rose);border-color:rgba(224,138,155,.32)}
.pport .tbl-wrap{border:1px solid var(--border);border-radius:var(--radius);overflow-x:auto;background:var(--panel)}
.pport .muted{color:var(--mut)}
.pport .empty{text-align:center;color:var(--mut);padding:56px 20px}
.pport .sp{flex:1}
.pport .spinner{display:inline-block;width:15px;height:15px;border:2px solid var(--border);border-top-color:var(--gold);border-radius:50%;animation:ppsp .7s linear infinite;vertical-align:-2px}
@keyframes ppsp{to{transform:rotate(360deg)}}
.pport .loadhint{font-size:12px;color:var(--mut);margin-top:8px}
.pport .skel{margin:20px auto 0;max-width:680px}
.pport .skrow{height:38px;border-radius:9px;margin-bottom:9px;background:linear-gradient(90deg,var(--panel) 25%,var(--hover) 37%,var(--panel) 63%);background-size:400% 100%;animation:ppshim 1.4s ease infinite}
@keyframes ppshim{to{background-position:-400% 0}}
.pport .cnpjtag{display:inline-block;font-family:ui-monospace,monospace;font-size:11px;color:var(--mut);background:var(--panel2);border:1px solid var(--border);border-radius:6px;padding:1px 7px;margin-left:6px;cursor:pointer;vertical-align:1px}
.pport .cnpjtag:hover{border-color:var(--accent);color:var(--ink)}
.pport .cnpjtag::after{content:' \29C9';opacity:.6}
.pport .cnpjtag.done::after{content:' \2713';opacity:1;color:var(--emer)}
/* modal / toast (renderizados dentro de #pportRoot) */
.pport .modal{position:fixed;inset:0;background:rgba(5,8,13,.75);display:flex;align-items:center;justify-content:center;z-index:50;padding:20px}
.pport .modal .box{position:relative;background:var(--panel);border:1px solid var(--border);border-radius:16px;padding:26px;max-width:460px;width:100%}
.pport .modal .box.wide{max-width:720px}
.pport .modal h2{margin:0 0 16px;font-size:17px}
.pport .modal-x{position:absolute;top:12px;right:12px;background:transparent;border:0;color:var(--mut);font-size:20px;line-height:1;padding:2px 6px;border-radius:7px;width:auto}
.pport .modal-x:hover{background:var(--hover);color:var(--ink)}
.pport .toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:11px 18px;font-size:13px;z-index:60;box-shadow:0 8px 30px rgba(0,0,0,.4)}
.pport .itemrow{display:flex;align-items:center;gap:8px;padding:6px 9px;border-bottom:1px solid var(--border);font-size:12.5px}
.itemrow{display:flex;align-items:center;gap:8px;padding:6px 9px;border-bottom:1px solid var(--border);font-size:12.5px;flex-wrap:wrap}
.crmsel{font-size:11.5px;padding:3px 6px;border-radius:6px;border:1px solid var(--border);background:var(--card,#12161c);color:var(--fg,#e6e6e6)}
.crmsel.st-novo{border-color:#3b82f6;color:#93c5fd}
.crmsel.st-contatado{border-color:#a855f7;color:#d8b4fe}
.crmsel.st-em_negociacao{border-color:#f59e0b;color:#fcd34d}
.crmsel.st-ganho{border-color:#10b981;color:#6ee7b7}
.crmsel.st-perdido{border-color:#ef4444;color:#fca5a5}
.crmcard{border-bottom:1px solid var(--border);padding:2px 0 8px}
.crmcard .itemrow{border-bottom:0;padding-bottom:2px}
.crmdetail{display:flex;gap:6px;flex-wrap:wrap;padding:0 9px}
.crmf{flex:1 1 150px;min-width:0;font-size:11.5px;padding:4px 7px;border-radius:6px;border:1px solid var(--border);background:var(--card,#12161c);color:var(--fg,#e6e6e6)}
.crmf.crmdate{flex:0 0 130px}
.crmf.saved{border-color:#10b981;transition:border-color .2s}
.crmf::placeholder{color:var(--mut)}
.pport .itemrow .x{color:var(--rose);background:none;border:0;cursor:pointer;font-size:13px;width:auto}
/* row chrome */
.pport .gp-btn{background:transparent;border:1px solid var(--border);color:var(--mut);border-radius:7px;padding:1px 7px;font-size:10.5px;margin-left:6px;vertical-align:1px;width:auto}
.pport .gp-btn:hover{border-color:var(--gold);color:var(--gold)}
.pport .gp-btn.addcart:hover{border-color:var(--emer);color:var(--emer)}
.pport .gp-alert{background:rgba(224,138,155,.1);border:1px solid rgba(224,138,155,.35);border-radius:10px;padding:11px 13px;margin-bottom:12px;font-size:13px}
.pport .gp-alert ul{margin:7px 0 4px;padding-left:18px}
.pport .gp-sec{margin-top:14px}
.pport .gp-sec h4{font-size:11px;text-transform:uppercase;letter-spacing:1px;color:var(--mut);margin:0 0 8px}
.pport .gp-mix{font-size:12.5px;margin-bottom:5px}
/* carteira */
.pport .clist .seg.on{border-color:var(--gold)}
.pport .seg{display:flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--border);border-radius:9px;margin-bottom:7px;background:var(--panel)}
.pport .seg .n{flex:1;min-width:0}
.pport .seg .n b{display:block;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pport .seg .n span{font-size:11px;color:var(--mut)}
.pport .seg .x{color:var(--rose);background:none;border:0;font-size:15px;padding:2px 5px;width:auto}
.pport .cart-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:6px}
.pport .carttabs{display:flex;gap:4px;margin:0 8px 0 0}
.pport .carttabs button{background:transparent;border:1px solid var(--border);color:var(--mut);padding:5px 12px;border-radius:8px;font-size:12.5px}
.pport .carttabs button.on{background:var(--panel);color:var(--ink);border-color:var(--gold)}
.pport .tog{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--mut);cursor:pointer}
.pport .tog input{width:auto;flex:none}   /* o checkbox do digest não deve esticar (regra global .pport input{width:100%}) */
.pport .addbox{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:12px;margin-bottom:16px}
.pport .addbox textarea{min-height:64px;resize:vertical}
/* mobile: cabeçalho da carteira em linhas limpas (título · abas · digest · ações) em vez de amontoado.
   Card 6c643450a79b — UX da aba Carteira. */
@media(max-width:820px){
  .pport .cart-head{gap:9px 8px}
  .pport .cart-head .sp{display:none}
  .pport .cart-head h2{order:1;width:100%}
  .pport .cart-head .carttabs{order:2;margin:0}
  .pport .cart-head .tog{order:3;width:100%}
  .pport .cart-head .btn{order:4;flex:1;justify-content:center}
}
.pport .feedgrp{margin-bottom:18px}
.pport .feedgrp h4{font-size:11px;text-transform:uppercase;letter-spacing:1px;margin:0 0 8px;display:flex;align-items:center;gap:7px}
.pport .ev{display:flex;gap:10px;align-items:flex-start;padding:9px 11px;border:1px solid var(--border);border-left-width:3px;border-radius:9px;margin-bottom:7px;background:var(--panel);cursor:pointer}
.pport .ev:hover{background:var(--hover)}
.pport .ev.risco{border-left-color:var(--rose)}.pport .ev.oportunidade{border-left-color:var(--emer)}.pport .ev.movimento{border-left-color:var(--accent)}
.pport .ev .r{flex:1;min-width:0}
.pport .ev .r b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pport .ev .r span{font-size:12px;color:var(--mut)}
.pport .ev .m{font-size:11px;color:var(--mut);white-space:nowrap}
.pport .dot{width:8px;height:8px;border-radius:50%;display:inline-block}
.pport .dot.risco{background:var(--rose)}.pport .dot.oportunidade{background:var(--emer)}.pport .dot.movimento{background:var(--accent)}
.pport .whrow{display:flex;align-items:center;gap:8px;padding:7px 9px;border:1px solid var(--border);border-radius:8px;margin-bottom:6px;font-size:12px}
.pport .whrow .u{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-family:ui-monospace,monospace}
.score-info{display:inline-flex;align-items:center;justify-content:center;padding:2px;margin:0;border:0;background:transparent;color:var(--mut);cursor:pointer;border-radius:5px;line-height:0;transition:color .12s,background .12s}
.score-info:hover{color:var(--accent);background:var(--bg-2)}
/* lookalike / lead score */
.pport .lkl-perfil{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:14px 16px;margin-bottom:14px}
.pport .lkl-perfil h4{margin:0 0 8px;font-size:13px;color:var(--ink)}
.pport .lkl-tags{display:flex;flex-wrap:wrap;gap:6px}
.pport .lkl-bar{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;font-size:12.5px;color:var(--mut);gap:8px}
.pport .lkl-card{display:flex;gap:14px;align-items:stretch;background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:12px 14px;margin-bottom:8px;cursor:pointer}
.pport .lkl-card:hover{border-color:var(--accent)}
.pport .lkl-sim{flex:0 0 62px;display:flex;flex-direction:column;align-items:center;justify-content:center;border-right:1px solid var(--border);padding-right:12px}
.pport .lkl-sim b{font-size:22px;color:var(--gold);line-height:1}
.pport .lkl-sim span{font-size:9.5px;color:var(--mut);text-transform:uppercase;letter-spacing:.5px;margin-top:2px}
.pport .lkl-body{flex:1;min-width:0}
.pport .lkl-h{font-size:14px;margin-bottom:3px}
.pport .lkl-meta{font-size:12px;color:var(--mut);margin-bottom:7px}
.pport .lkl-why{display:flex;flex-wrap:wrap;gap:5px}
.pport .why{font-size:11px;background:var(--panel2);border:1px solid var(--border);color:var(--ink);border-radius:6px;padding:2px 8px}
.pport .why.sig{background:rgba(198,163,92,.10);border-color:var(--gold);color:var(--gold)}
.pport .why.sig.risk{background:rgba(220,80,90,.10);border-color:#c8505a;color:#e69aa2}
.pport .ls-prio{flex:0 0 76px}
.pport .ls-ft{display:flex;flex-direction:column;gap:3px;margin-top:6px;width:100%}
.pport .ls-ft i{font-style:normal;font-size:9.5px;text-align:center;border-radius:5px;padding:1px 4px;border:1px solid var(--border);color:var(--mut)}
.pport .ft-fit{background:var(--panel2)}
.pport .ft-tim.hot{background:rgba(224,122,63,.16);border-color:#e07a3f;color:#e8b596}
.pport .ft-tim.warm{background:rgba(198,163,92,.14);border-color:var(--gold);color:var(--gold)}
.pport .ft-tim.cold{background:var(--panel2)}
.pport .ft-risk{background:rgba(220,80,90,.14);border-color:#c8505a;color:#e69aa2}
.pport .nivel{font-size:10px;text-transform:uppercase;letter-spacing:.4px;border-radius:5px;padding:1px 6px;vertical-align:middle}
.pport .nivel.hot{background:rgba(224,122,63,.16);color:#e8b596;border:1px solid #e07a3f}
.pport .nivel.warm{background:rgba(198,163,92,.14);color:var(--gold);border:1px solid var(--gold)}
.pport .nivel.cold{background:var(--panel2);color:var(--mut);border:1px solid var(--border)}
.pport .nivel.ok{background:rgba(90,200,140,.14);color:var(--emer);border:1px solid var(--emer)}
.pport .nivel.bad{background:rgba(220,80,90,.16);color:#e69aa2;border:1px solid #c8505a}
.pport .sa-score{flex:0 0 66px;display:flex;flex-direction:column;align-items:center;justify-content:center;border-right:1px solid var(--border);padding-right:12px}
.pport .sa-score b{font-size:24px;line-height:1}
.pport .sa-score span{font-size:9.5px;color:var(--mut);text-transform:uppercase;letter-spacing:.5px;margin-top:3px}
.pport .sa-good b{color:var(--emer)}.pport .sa-mid b{color:var(--gold)}.pport .sa-bad b{color:#e69aa2}
.pport .sa-meta i{font-style:normal}
/* mapa de mercado (TAM) */
.pport .tamwrap{padding:16px 22px;max-width:1180px;margin:0 auto}
.pport .tambar{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:14px 16px;margin-bottom:16px}
.pport .tambar .tf{display:flex;flex-direction:column;gap:4px}
.pport .tambar .tf label{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:var(--mut)}
.pport .tambar .tf select,.pport .tambar .tf input{min-width:150px}
.pport .tambar .tf.chks{flex-direction:column;gap:2px;justify-content:center}
.pport .tambar .tf.chks .chk{font-size:12px;margin:0}
.pport .tambar .btn{margin-left:auto;align-self:center}
@media(max-width:640px){.pport .tambar .tf{flex:1 1 100%}.pport .tambar .tf select,.pport .tambar .tf input{min-width:0;width:100%}.pport .tambar .btn{margin-left:0;width:100%}}
.pport .tamgrid{display:grid;grid-template-columns:1.6fr 1fr;gap:16px;margin-top:14px}
@media(max-width:820px){.pport .tamgrid{grid-template-columns:1fr}}
.pport #tammap{height:440px;border-radius:12px;overflow:hidden;border:1px solid var(--border)}
.pport .tampanel{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:14px 16px;margin-bottom:16px}
.pport .tampanel h3{margin:0 0 10px;font-size:13px}
.pport .tamnivel{display:flex;gap:4px;margin-bottom:8px;flex-wrap:wrap}
.pport .tamnivel button{background:transparent;border:1px solid var(--border);color:var(--mut);padding:5px 11px;border-radius:8px;font-size:12px}
.pport .tamnivel button.on{background:var(--panel);color:var(--ink);border-color:var(--accent)}
.pport .tammetric{display:flex;gap:4px;flex-wrap:wrap;margin:8px 0 4px}
.pport .tammetric button{background:transparent;border:1px solid var(--border);color:var(--mut);padding:4px 9px;border-radius:7px;font-size:11px}
.pport .tammetric button.on{background:var(--panel2);color:var(--ink);border-color:var(--accent)}
.pport .hbar{display:flex;align-items:center;gap:8px;margin:3px 0;font-size:12px}
.pport .hbar .lab{width:130px;flex:none;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pport .hbar .track{flex:1;background:var(--panel2);border-radius:5px;height:14px;overflow:hidden}
.pport .hbar .fill{height:100%;background:var(--accent);border-radius:5px}
.pport .hbar .val{width:70px;flex:none;text-align:right;color:var(--mut)}
.pport .concbadge{display:inline-block;padding:2px 9px;border-radius:20px;font-size:11px;font-weight:700}
.pport .conc-concentrado{background:rgba(224,122,95,.18);color:#e07a5f}
.pport .conc-moderado{background:rgba(198,163,92,.18);color:var(--gold)}
.pport .conc-pulverizado{background:rgba(87,178,143,.18);color:#57b28f}
.pport .serie-svg{width:100%;height:130px;display:block}
/* chat */
.pport .chatwrap{max-width:820px;margin:0 auto;padding:16px 18px;display:flex;flex-direction:column;min-height:calc(100vh - 160px)}
.pport .chathd{display:flex;align-items:flex-start;gap:10px;padding-bottom:10px;border-bottom:1px solid var(--border);margin-bottom:10px}
.pport .beta{background:#2a2417;color:var(--gold);border:1px solid #4a3f26;border-radius:20px;padding:1px 8px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em}
.pport .chatlog{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:12px;padding:4px 2px;min-height:200px}
.pport .msg{max-width:88%;padding:10px 13px;border-radius:12px;font-size:13.5px;line-height:1.5;white-space:pre-wrap;word-wrap:break-word}
.pport .msg.u{align-self:flex-end;background:var(--accent);color:var(--accent-ink);border-bottom-right-radius:4px}
.pport .msg.a{align-self:flex-start;background:var(--panel);border:1px solid var(--border);border-bottom-left-radius:4px}
.pport .msg.err{align-self:flex-start;background:#2a1518;border:1px solid #5a2a30;color:var(--rose)}
.pport .msg .chatmd-h{font-weight:700;font-size:1.02em;margin:10px 0 4px}
.pport .msg .chatmd-li{margin:2px 0 2px 2px;padding-left:12px;position:relative}
.pport .msg .chatmd-li::before{content:"•";position:absolute;left:0;color:var(--accent)}
.pport .msg .chatmd-hr{border:0;border-top:1px solid var(--border);margin:9px 0}
.pport .msg .chatmd-tbl{border-collapse:collapse;width:100%;margin:8px 0;font-size:12.5px;display:block;overflow-x:auto}
.pport .msg .chatmd-tbl th,.pport .msg .chatmd-tbl td{border:1px solid var(--border);padding:5px 8px;text-align:left;white-space:nowrap}
.pport .msg .chatmd-tbl th{background:var(--panel2);font-weight:700}
/* selo inline da empresa citada na resposta (o marcador [[e:cnpj]] vira este badge — só o ícone do
   portal, clicável, abre a ficha). Linkado à FONTE (id validado contra os objetos, nunca do texto). */
.pport .msg .ebadge{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;margin:0 1px 0 3px;border:1px solid var(--border);border-radius:5px;color:var(--accent);background:var(--panel2,#131a29);vertical-align:-4px;text-decoration:none;transition:background .12s,border-color .12s}
.pport .msg .ebadge:hover{border-color:var(--accent);background:var(--hover)}
.pport .msg .ebadge svg{width:13px;height:13px}
.pport .msg .como{margin-top:8px;font-size:11px;color:var(--mut)}
.pport .msg .como summary{cursor:pointer;color:var(--accent);list-style:none}
.pport .msg .como code{background:var(--hover);border-radius:5px;padding:1px 6px;font-size:10.5px}
.pport .msg .actions{margin-top:9px;display:flex;gap:8px;flex-wrap:wrap}
.pport .msg .actions .btn{font-size:11.5px;padding:5px 11px}
.pport .chatsug{display:flex;gap:7px;flex-wrap:wrap;margin:8px 0}
.pport .chatsug button{background:var(--panel);border:1px solid var(--border);color:var(--mut);border-radius:18px;padding:6px 12px;font-size:12px}
.pport .chatsug button:hover{color:var(--ink);border-color:var(--accent)}
.pport .chatbar{display:flex;gap:8px;margin-top:10px;align-items:flex-end}
.pport .chatbar input,.pport .chatbar textarea{flex:1;background:var(--panel2);border:1px solid var(--border);color:var(--ink);border-radius:10px;padding:11px 13px;font-size:14px;font-family:inherit;line-height:1.4;resize:none;max-height:120px}
.pport .chatbar input:focus,.pport .chatbar textarea:focus{outline:none;border-color:var(--accent)}
/* item 2 (card c2d749c583e4): a caixa do chat precisa caber o placeholder inteiro (2 linhas) — rows=1
   cortava «tem em São Paulo?». min-height p/ 2 linhas; o auto-grow por scrollHeight sobe daqui.
   card 24999bf25596: 58px deixava scrollHeight (67)>clientHeight (62) → barra de rolagem minúscula no
   default; 66px cabe as 2 linhas do placeholder sem scrollbar (desktop; mobile sobe p/ 74 abaixo). */
#chatIn{min-height:66px}
.pport .chatnote{font-size:11px;color:var(--mut);margin-top:3px}
.pport .chatnote summary{cursor:pointer;color:var(--accent);list-style:none;display:inline-flex;align-items:center;gap:4px}
.pport .chatnote summary::-webkit-details-marker{display:none}
.pport .chatnote>div{margin-top:5px;line-height:1.45;max-width:640px}
/* título + «como funciona» na mesma linha; chips SÓ no empty-state (somem após a 1ª pergunta — padrão de chat maduro) */
.pport .chattitle{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.pport .chatnote{display:inline}
.pport .chatnote .cf-ico{display:none}
#chat:not(.empty) .chatsug{display:none}
#chat.empty .chatlog{justify-content:center}
.pport .chatbar .btn{display:inline-flex;align-items:center;gap:7px;justify-content:center}
.pport .chatbar .btn .cbi{width:17px;height:17px;flex:none;display:block}
.pport .typing{align-self:flex-start;color:var(--mut);font-size:12.5px;padding:6px 4px}
:root[data-theme="light"] .pport .beta{background:#f3e8ff;color:#7e22ce;border-color:#e9d5ff}
:root[data-theme="light"] .pport .msg.err{background:#fef2f2;border-color:#fecaca;color:#b91c1c}
/* ===== CHAT MOBILE (vitrine de IA) — layout conversacional real no 390px: histórico visível com
   scroll próprio, bolhas largas, sugestões em STRIP horizontal, e barra de input FIXA no rodapé
   acima do teclado (container 100dvh encolhe com o teclado). --hdrh = altura do header (JS). ===== */
@media(max-width:640px){
  body[data-tab="chat"] footer.foot{display:none!important}          /* sem rodapé roubando o viewport */
  body[data-tab="chat"]{overflow:hidden}                              /* a rolagem vive DENTRO do log */
  #chat .chatwrap{max-width:none;margin:0;padding:8px 12px calc(8px + env(safe-area-inset-bottom));
    height:calc(100vh - var(--hdrh,52px));height:calc(100dvh - var(--hdrh,52px));min-height:0}
  #chat .chathd{padding-bottom:8px;margin-bottom:8px}
  #chat .chatlog{min-height:0;gap:10px;padding:2px 0 2px;overscroll-behavior:contain}
  #chat .msg{max-width:90%;font-size:14px;padding:9px 12px}
  #chat .msg.u{border-bottom-right-radius:5px}
  #chat .msg.a{border-bottom-left-radius:5px}
  /* sugestões: chips numa faixa que rola na horizontal (não empilham nem empurram a barra) */
  #chat .chatsug{flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;gap:7px;margin:6px -12px 0;
    padding:2px 12px 6px;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch}
  #chat .chatsug::-webkit-scrollbar{display:none}
  #chat .chatsug{scrollbar-width:none}
  #chat .chatsug button{flex:0 0 auto;white-space:nowrap;scroll-snap-align:start;padding:7px 13px}
  /* barra fixa no fundo do container dvh — SEMPRE acima do teclado, opaca */
  #chat .chatbar{margin-top:8px;padding-top:8px;border-top:1px solid var(--border);background:var(--bg)}
  #chat .chatbar textarea{font-size:16px;min-height:74px}             /* 16px evita o zoom-in do iOS; min-height p/ 2 linhas do placeholder SEM scrollbar (card 24999bf25596) */
  #chat .chatbar .btn{padding:11px 15px;align-self:stretch}
}
/* o coach flutuante (onboarding) e as dicas NÃO cobrem a barra de input do chat — modo focado */
body[data-tab="chat"] .hx-onb,body[data-tab="chat"] .hx-tip{display:none!important}
/* ===== NAV V2 (reorg 14→5 destinos, card 43ddf4d0420c · flag nav_v2, default ON) ===== */
body.navv2 #mainNav{display:none!important}                 /* nav antiga fora sob a v2 */
#navV2{display:none}
body.navv2 #navV2{display:flex;align-items:center;gap:2px;margin-left:8px}
#navV2 .d2{display:inline-flex;align-items:center;gap:7px;background:none;border:0;color:var(--mut);font:inherit;font-size:13.5px;font-weight:600;padding:8px 13px;border-radius:9px;cursor:pointer;white-space:nowrap;transition:color .15s,background .15s}
#navV2 .d2 .di{width:16px;height:16px;flex:none;opacity:1;color:var(--accent)}  /* ícones roxos como Buscar/Perguntar (spark) — card dab9099ef066 */
#navV2 .d2:hover{color:var(--ink);background:var(--hover,rgba(255,255,255,.04))}
#navV2 .d2.on{color:var(--ink);background:var(--hover,rgba(255,255,255,.06))}
#navV2 .d2.on .di{opacity:1;color:var(--accent)}
#navV2 .d2 .spark{color:var(--accent);font-size:12px}
/* bottom-nav mobile: os 5 destinos sempre à mão, sem ☰ */
#botnav{display:none}
/* z-index ACIMA do .lgmodal (200): o overlay do login NÃO pode comer o toque da nav inferior
   — senão goDest()/nav() nunca dispara e o anon fica «preso» ao abrir um destino gated (card f3c7b608/9cca050c) */
.botnav{position:fixed;left:0;right:0;bottom:0;z-index:210;background:var(--panel2);border-top:1px solid var(--line);
  display:flex;justify-content:space-around;align-items:stretch;padding-bottom:max(env(safe-area-inset-bottom),8px)}
.botnav button{flex:1 1 0;background:none;border:0;color:var(--mut);font:inherit;cursor:pointer;
  display:flex;flex-direction:column;align-items:center;gap:3px;padding:7px 2px 6px;min-width:0}
.botnav button .bi{width:22px;height:22px;flex:none}
.botnav button .bl{font-size:10px;font-weight:600;letter-spacing:.01em;line-height:1;white-space:nowrap}
.botnav button.on{color:var(--accent)}
.botnav button.on .bi{transform:translateY(-1px)}
/* header/filtros enxutos no mobile (card 00b3937d6a36): logo não trunca + 1 faixa de filtro só na Buscar */
/* filtro global do header (engrenagem ⚙) APOSENTADO em todas as larguras — redundante com a barra
   da Buscar (Filtros + Ativas/Todas); card dab9099ef066. Os selects #gfuf/#gfsetor seguem no DOM
   (ocultos) p/ gfChange()/gfClear() não quebrarem. A .gfstat (Ativas/Todas) vira o controle visível. */
body.navv2 #gfbar{display:none}
.gfstat{display:inline-flex}
@media(max-width:640px){
  .bsuf{display:none}                                      /* logo = «Empresas» (não corta «·Hexalt») */
  header h1{overflow:visible;text-overflow:clip}
  body.navv2 #busca .lm-row{gap:8px;margin:0 0 10px}
  body.navv2 #busca .ctrls{margin-bottom:12px}
  body.navv2 .wrap{padding-top:12px}
}
@media(max-width:760px){
  body.navv2 #navV2{display:none}                          /* mobile usa o bottom-nav */
  body.navv2 #botnav{display:flex}
  body.navv2 .wrap{padding-bottom:76px}
  /* o <footer> mora FORA do .wrap (é irmão de topo) → o botnav fixo (bottom:0) cobria o rodapé no fim do
     scroll (bug mobile Samsung/Android, card 95f9b0784cd3). Dá folga = altura do botnav (~49px) + safe-area
     p/ o rodapé aparecer INTEIRO. Fora do navv2/print o botnav não existe e a regra não se aplica. */
  body.navv2 footer.foot{padding-bottom:calc(64px + env(safe-area-inset-bottom))}
  body.navv2 section#chat .chatwrap{height:calc(100vh - var(--hdrh,52px) - 58px);height:calc(100dvh - var(--hdrh,52px) - 58px)}
  /* sob a v2, o ☰ some (destinos no bottom-nav); conta+tema ficam no header */
  body.navv2 .navtoggle{display:none!important}
  body.navv2 #themeToggle,body.navv2 .acct{display:inline-flex}
}
/* ===== CHAT viewport-fit (feedback Eric, card 8982c317894d): input SEMPRE acima do teclado, SEM
   barra preta parasita, e LANDSCAPE ok. dvh sozinho não acompanha o teclado no iOS → o JS publica
   --vvh (visualViewport.height) e --vvtop (offsetTop); o container do chat fica FIXO no recorte visível.
   Inclui (max-height:560px) p/ o telefone DEITADO (largura >760 mas tela baixa) cair no mesmo layout. */
@media (max-width:760px), (max-height:560px){
  body[data-tab="chat"]{overflow:hidden}
  body[data-tab="chat"] footer.foot{display:none!important}
  /* item 2 (card c2d749c583e4): o FAB de feedback FICA visível no chat (Eric quer dar feedback daqui),
     mas ANCORADO NO TOPO-DIREITO (abaixo do header) p/ não cobrir o input do chat; alpha+arrasto (item 7)
     cuidam do resto. Só vale quando o usuário NÃO arrastou (arrasto grava left/top inline e vence). */
  body[data-tab="chat"] .fbfab:not([style*="left"]){top:calc(var(--vvtop,0px) + var(--hdrh,52px) + 10px);bottom:auto;right:14px}
  body[data-tab="chat"] .fbpanel:not([style*="left"]){top:calc(var(--vvtop,0px) + var(--hdrh,52px) + 66px);bottom:auto}
  body[data-tab="chat"] #chat .chatwrap{
    position:fixed!important;left:0;right:0;z-index:70;background:var(--bg);
    top:calc(var(--vvtop,0px) + var(--hdrh,52px));
    height:calc(var(--vvh,100dvh) - var(--hdrh,52px) - 56px)!important;
    max-width:none!important;margin:0!important;
    padding:6px 12px calc(4px + env(safe-area-inset-bottom))!important;min-height:0!important;
    display:flex!important;flex-direction:column}
  body[data-tab="chat"] #chat .chatlog{min-height:0!important;flex:1 1 auto}
  /* «como funciona» vira só o ícone ⓘ ao lado do BETA (economiza a linha inteira no 390) */
  body[data-tab="chat"] #chat .chatnote .cf-txt{display:none}
  body[data-tab="chat"] #chat .chatnote .cf-ico{display:inline;font-size:15px;line-height:1}
  body[data-tab="chat"] #chat .chathd{padding-bottom:6px;margin-bottom:6px}
  /* EMPTY-STATE: chips centrais e proeminentes (o usuário vê o que pode perguntar) */
  body[data-tab="chat"] #chat.empty .chatsug{display:flex!important;flex-wrap:wrap!important;
    overflow:visible!important;justify-content:center;gap:8px;margin:10px 2px 4px;padding:0}
  body[data-tab="chat"] #chat.empty .chatsug button{flex:0 1 auto;white-space:normal;
    padding:9px 14px;font-size:13px;border-radius:16px;max-width:88%}
  /* barra do input compacta, colada no fundo: input flush + botão Enviar como ÍCONE integrado (não flutua) */
  body[data-tab="chat"] #chat .chatbar{margin-top:6px!important;gap:7px;align-items:flex-end}
  body[data-tab="chat"] #chat .chatbar textarea{font-size:16px;min-height:74px}   /* 16px: sem zoom-in do iOS ao focar; min-height p/ 2 linhas sem scrollbar (card 24999bf25596) */
  body[data-tab="chat"] #chat .chatbar .btn .btxt{display:none}   /* só o ícone (avião) no mobile */
  body[data-tab="chat"] #chat .chatbar .btn{padding:0;width:44px;height:44px;border-radius:12px;flex:none;align-self:flex-end}
  body[data-tab="chat"] #chat .chatbar .btn .cbi{width:20px;height:20px}
  /* TECLADO ABERTO: some o bottom-nav (a «barra preta» que sobra sob os ícones) e o chat toma a tela toda — ZERO gap */
  body[data-tab="chat"].kbd #chat .chatwrap{height:calc(var(--vvh,100dvh) - var(--hdrh,52px))!important;
    padding-bottom:calc(4px + env(safe-area-inset-bottom))!important}
  body[data-tab="chat"].kbd .botnav{display:none!important}
  /* FAIXA PRETA ao focar (card 24999bf25596): a colapsagem da nav era disparada SÓ pelo limiar de
     --vvh (teclado > 100px). Enquanto o iOS anima o teclado, .kbd ainda é false e a .botnav (fixed
     bottom:0, fundo --panel2 escuro) fica ESTACIONADA acima do teclado = a «faixa preta». Disparamos
     a mesma colapsagem NO FOCO do input (body.chatfocus), sem esperar o limiar — a nav some limpa e o
     chat toma a tela na hora do toque. Espelha as regras .kbd. */
  body[data-tab="chat"].chatfocus .botnav{display:none!important}
  body[data-tab="chat"].chatfocus #chat .chatwrap{height:calc(var(--vvh,100dvh) - var(--hdrh,52px))!important;
    padding-bottom:calc(4px + env(safe-area-inset-bottom))!important}
}
/* hub de cards (Análises) + fluxo (Prospectar) */
.hubgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px;margin:6px 0 8px}
.hubcard{text-align:left;background:var(--panel);border:1px solid var(--line);border-radius:13px;padding:16px 17px;cursor:pointer;transition:border-color .15s,transform .08s;display:flex;flex-direction:column;gap:6px}
.hubcard:hover{border-color:var(--accent);transform:translateY(-1px)}
.hubcard .hc-t{font-size:15px;font-weight:700;letter-spacing:-.01em;color:var(--ink);display:flex;align-items:center;gap:8px}
.hubcard .hc-t .hc-i{width:19px;height:19px;color:var(--accent);flex:none}
.hubcard .hc-d{font-size:12.5px;color:var(--mut);line-height:1.5}
.hubcard .hc-step{width:24px;height:24px;border-radius:50%;background:var(--accent);color:var(--accent-ink);font-size:12px;font-weight:800;display:inline-flex;align-items:center;justify-content:center;flex:none}
/* step-bar do fluxo Prospectar (dentro de cada passo) */
.stepbar{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 14px}
.stepbar button{background:var(--panel);border:1px solid var(--line);color:var(--mut);border-radius:20px;padding:6px 12px;font-size:12px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:6px}
.stepbar button.on{border-color:var(--accent);color:var(--ink)}
.stepbar button .sn{width:18px;height:18px;border-radius:50%;background:var(--hover,rgba(255,255,255,.08));font-size:10.5px;font-weight:800;display:inline-flex;align-items:center;justify-content:center}
.stepbar button.on .sn{background:var(--accent);color:var(--accent-ink)}
@media(max-width:760px){.stepbar{overflow-x:auto;flex-wrap:nowrap;-webkit-overflow-scrolling:touch}.stepbar button{flex:0 0 auto}}
/* alternância lista↔mapa no Buscar */
.lm-seg{display:inline-flex;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:2px;gap:2px;margin:0 0 12px}
.lm-seg a,.lm-seg button{background:none;border:0;color:var(--mut);font:inherit;font-size:13px;font-weight:600;padding:6px 14px;border-radius:8px;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;gap:6px}
.lm-seg .on{background:var(--accent);color:var(--accent-ink)}
.lm-seg .di{width:15px;height:15px}
/* item 1 (card c2d749c583e4): o Ativas/Todas reusa .lm-seg mas NÃO leva o margin-bottom de 12px do
   toggle Lista/Mapa — senão, na barra Buscar·Filtros (align-items:center), a margem o empurra p/ cima. */
.lm-seg.gfstat{margin:0}
body:not(.navv2) .lm-row{display:none}
/* disclaimer prominente de Fornecedores/Clientes prováveis (heurística) — sempre visível, legível no mobile */
.vc-disc{border:1px solid var(--gold,#d3a24c);background:rgba(211,162,76,.10);border-radius:10px;padding:11px 13px;margin:8px 0 12px;font-size:12.5px;line-height:1.55;color:var(--ink)}
.vc-disc b:first-child{color:var(--gold,#d3a24c)}
:root[data-theme="light"] .vc-disc{background:#fdf6e7;border-color:#e0b657}
