@import url('https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@300;400;500;600;700;800&display=swap');
:root{--az:#0a3d8f;--az2:#1e5fc1;--az-rgb:10,61,143;--azs:#e8f0fb;--bg:#f5f7fa;--bf:#fff;--bd:#e1e6ee;--tx:#1f2937;--fg:#1f2937;--sb:#5f6b78;--mut:#5f6b78;--vd:#16a34a;--vdb:#dcfce7;--am:#ca8a04;--amb:#fef9c3;--vm:#dc2626;--vmb:#fee2e2;--lj:#ea580c;--ljb:#ffedd5;--rx:#7c3aed;--rxb:#ede9fe;--pk:#be185d;--pkb:#fce7f3;--wh:#fff;--wh2:#fafbfd;--lnsel:#0a1d39;--lnsurf:#fff;--lnbd:#e1e6ee;--focus-ring:0 0 0 3px rgba(37,99,235,.28);--shadow-sm:0 1px 3px rgba(0,0,0,.06),0 1px 2px rgba(0,0,0,.04);--shadow-md:0 4px 12px rgba(0,0,0,.08),0 2px 4px rgba(0,0,0,.04);--shadow-lg:0 10px 30px rgba(0,0,0,.1),0 4px 10px rgba(0,0,0,.06);--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--transition:150ms cubic-bezier(.4,0,.2,1)}
*{box-sizing:border-box;margin:0;padding:0}
body{font:15px/1.6 'Plus Jakarta Sans','Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;background:var(--bg);color:var(--tx);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:clip}
header{background:#0a1d39;background-image:radial-gradient(rgba(255,255,255,.05) 1px,transparent 1px);background-size:22px 22px;color:#fff;padding:14px 28px;display:flex;justify-content:space-between;align-items:center;box-shadow:0 2px 10px rgba(0,0,0,.18);position:sticky;top:0;z-index:50;width:100%;transform:translateZ(0)}
.logo{font-size:20px;font-weight:700}.logo span{font-weight:300;opacity:.9}
/* ===== A MARCA: EXEDU em caixa alta + assinatura (06/09/2026) =====
   Rafael escolheu o nome (junção de Excelência + Educação) e a caixa alta.
   Caps NÃO é só `text-transform`: maiúscula preenche a altura inteira da linha
   (não há letra subindo nem descendo), então pesa mais que a caixa mista no mesmo
   corpo — daí um ponto A MENOS de fonte —, e caps colada parece apertada — daí o
   TRACKING POSITIVO. Quanto menor o corpo, mais aberto o tracking (regra ótica),
   por isso cada ponto tem o seu.

   O `margin-right` negativo cancela o espaço que o tracking deixa DEPOIS da
   última letra: sem ele o bloco fica visualmente deslocado à esquerda, e no
   splash, que é centralizado, o desalinho aparece. */
/* O X e' a unica letra colorida do wordmark — e' o gesto da marca. */
.logo.mk i,.lbname.mk i,.lt.mk i{font-style:normal;color:#38bdf8}
/* ===== A assinatura EXPLICA o nome (06/09/2026) =====
   `ex` de excelência + `edu` de educação, em ciano. Quem vê uma vez entende de
   onde EXEDU veio, sem ninguém contar — e caixa baixa embaixo do wordmark em caps
   contrasta melhor do que caps sobre caps, que era o que estava aqui antes. */
.logo.mk small b,.lbname.mk small b,.lt.mk small b{display:inline;color:#38bdf8;
  font-weight:inherit;font-size:inherit;letter-spacing:inherit;margin:0;line-height:inherit}
.logo.mk small,.lbname.mk small,.lt.mk small{text-transform:none;letter-spacing:.01em;
  margin-right:0;font-weight:600;white-space:nowrap;line-height:1.25}
.lt.mk i{color:#0ea5e9}
/* Com o simbolo dentro, os quadrados param de ser pintados por CSS. */
.ltile.mk{background:none;width:auto;height:auto}
.lblogo.mk{background:none;box-shadow:none}
.logo.mk{line-height:1.06}
.logo.mk b{display:block;font-size:19px;font-weight:800;letter-spacing:.085em;margin-right:-.085em}
.logo.mk small{display:block;font-size:11px;color:#a9bcd8;margin-top:2px}
.hr{display:flex;align-items:center;gap:12px}
.bn{background:var(--wh);color:var(--az);border:0;padding:10px 18px;border-radius:8px;cursor:pointer;font-weight:700;font-size:14px;box-shadow:0 2px 8px rgba(0,0,0,.15)}
.bn:hover{transform:translateY(-1px)}
.ui{font-size:13px;display:flex;align-items:center;gap:10px}
.hL{display:flex;align-items:center;gap:12px;min-width:0}
.hmb{display:none;align-items:center;justify-content:center;width:38px;height:38px;border-radius:9px;background:rgba(255,255,255,.14);border:0;color:#fff;cursor:pointer;padding:0;flex:0 0 auto}
.hmb svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round}
.navbk{display:none;position:fixed;inset:0;background:rgba(8,16,30,.5);z-index:120;opacity:0;visibility:hidden;transition:opacity .26s ease,visibility .26s ease}
body.navopen .navbk{opacity:1;visibility:visible}
body.navopen{overflow:hidden}
/* ===== Chrome escuro do header (DNA do login) — azul/vidro estrutural, âmbar só no CTA ===== */
.ltile{width:36px;height:36px;border-radius:10px;background:#2456c8;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800;font-size:19px;line-height:1;flex:0 0 auto}
header .logo{color:#fff}
header #ub{color:#aabfdc;display:flex;align-items:center;gap:6px}
.hdr-av{width:28px;height:28px;border-radius:50%;flex:0 0 auto;vertical-align:middle}
img.hdr-av{object-fit:cover;border:2px solid rgba(255,255,255,.25)}
.hdr-av-ini{background:linear-gradient(135deg,#38bdf8,#0ea5e9);color:#04121f;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:11px;border:2px solid rgba(255,255,255,.18)}
header .bs{background:rgba(255,255,255,.08);color:#dce6f5;border:1px solid rgba(255,255,255,.18)}
header .bs:hover{background:rgba(255,255,255,.15);color:#fff;border-color:rgba(255,255,255,.3)}
.bcta,header .bn{background:#2563eb;color:#fff;border:0;box-shadow:0 2px 10px rgba(37,99,235,.3)}
.bcta:hover,header .bn:hover{background:#1d4ed8;color:#fff}
.b{background:var(--az);color:#fff;border:0;padding:9px 16px;border-radius:6px;cursor:pointer;font-size:13px;font-weight:500}
.b:hover{background:var(--az2)}
.bs{background:var(--wh);color:var(--az);border:1px solid var(--az)}.bs:hover{background:var(--azs)}
.bsm{padding:5px 10px;font-size:12px}
.bd{background:var(--vm)}.bd:hover{background:#b91c1c}
/* `.b.bd` (0,2,0) pelo mesmo motivo do `.b.bg2`: o `.b` pinta o gradiente azul mais
   abaixo no arquivo e a ação destrutiva saía AZUL. São 3 botões — "Voltar como
   negativa", "Cancelar visita" e "Excluir" do In-Company. */
.b.bd{background:var(--vm);color:#fff}
.b.bd:hover{background:#b91c1c}
.bg2{background:transparent;color:var(--sb);border:1px solid var(--bd)}.bg2:hover{background:var(--bg)}
/* `.b.bg2` (0,2,0) porque `.b` — que pinta o gradiente azul — vive MAIS ABAIXO no
   arquivo e vencia `.bg2` (0,1,0) por ordem: o "Cancelar" de TODO modal saía com
   o mesmo fundo azul do "Salvar" e texto cinza por cima — 1,12:1, ilegível, e os
   dois botões visualmente idênticos. São 65 usos em 9 arquivos. */
.b.bg2{background:transparent;color:var(--sb);border:1px solid var(--bd)}
.b.bg2:hover{background:var(--bg);color:var(--tx)}
.bv{background:var(--vd);color:#fff;border:0;padding:8px 14px;border-radius:6px;cursor:pointer;font-size:13px;font-weight:500}.bv:hover{background:#15803d}
.ct{max-width:1400px;margin:0 auto;padding:24px}
.nv{display:flex;gap:4px;border-bottom:2px solid var(--bd);margin-bottom:24px;flex-wrap:wrap}
.nv button{padding:12px 20px;cursor:pointer;background:0;border:0;font-size:14px;color:var(--sb);font-weight:500;border-bottom:3px solid transparent;margin-bottom:-2px}
.nv button:hover{color:var(--az)}
.nv button.on{color:var(--az);border-bottom-color:var(--az);font-weight:600}
.ni{display:inline-flex;align-items:center;justify-content:center;width:20px;height:18px;vertical-align:-4px}
.ni svg{display:block;width:18px;height:18px}
/* ===== Barra lateral (admin/gerente) ===== */
.ct.side{display:flex;gap:24px;align-items:flex-start;max-width:1500px}
.ct.side .nv{flex:0 0 228px;width:228px;flex-direction:column;flex-wrap:nowrap;gap:3px;border-bottom:0;margin-bottom:0;background:linear-gradient(180deg,#f8faff 0%,#f0f4fb 100%);border:1px solid #dde4f0;border-radius:16px;padding:10px;position:sticky;top:80px;max-height:calc(100vh - 100px);overflow-y:auto;box-shadow:0 4px 20px -6px rgba(10,61,143,.08);transition:width .26s cubic-bezier(.4,0,.2,1),flex-basis .26s cubic-bezier(.4,0,.2,1)}
.ct.side .nv::-webkit-scrollbar{width:4px}.ct.side .nv::-webkit-scrollbar-thumb{background:rgba(10,61,143,.12);border-radius:4px}
.ct.side #ct{flex:1;min-width:0}
.ct.side .nv button{width:100%;text-align:left;margin-bottom:0;padding:9px 13px;border-bottom:0;border-left:3px solid transparent;border-radius:10px;transition:all .18s ease;color:#4b5e78;font-size:13.5px;font-weight:500;position:relative}
.ct.side .nv button:hover{background:rgba(14,165,233,.06);color:#0a3d8f;border-left-color:transparent}
.ct.side .nv button.on{color:#04121f;font-weight:700;background:linear-gradient(135deg,rgba(56,189,248,.15),rgba(14,165,233,.10));border-left-color:#0ea5e9;border-bottom-color:transparent;box-shadow:inset 0 0 0 1px rgba(14,165,233,.18)}
.ct.side .nv .ng{font-size:10px;font-weight:700;color:var(--sb);text-transform:uppercase;letter-spacing:.6px;padding:12px 12px 4px}
.ct.side .nv .ng:first-child{padding-top:2px}
@media(max-width:880px){
  .lsplit{flex-direction:column;min-height:100vh;min-height:100dvh}
  .lpane{flex:none;padding:34px 36px}
  .lpane-mid{margin:26px 0 0}
  .lhead{font-size:32px}
  .lpane-r{flex:none;padding:0 36px 44px}
  .lcardx{max-width:440px;margin:0 auto}
  .ct.side{flex-direction:column;gap:0;max-width:100%}
  .ct.side #ct{width:100%;min-width:0}
}
/* ===== Recolher / expandir barra lateral ===== */
.navtog{align-self:flex-end;background:0;border:0;color:var(--sb);cursor:pointer;font-size:16px;padding:4px 10px;border-radius:8px;line-height:1.2;margin-bottom:4px;transition:all .18s ease}
.navtog:hover{background:rgba(14,165,233,.08);color:#0ea5e9}
@media(min-width:881px){
  .ct.side.col .nv{flex:0 0 62px;width:62px;padding:8px 6px}
  .ct.side.col .nv button{text-align:center;padding:10px 0}
  .ct.side.col .nv button .nl,.ct.side.col .nv .ng{display:none}
  .ct.side.col .navtog{align-self:center}
  .ct.side.col .nv button.ngb{display:none}
  .ct.side.col .nv .ngc,.ct.side.col .nv .ngc.hid{display:flex;flex-direction:column}
}
/* ===== Grupos retráteis (accordion) da barra lateral ===== */
.ngc{display:flex;flex-direction:column;gap:3px}
.ngc.hid{display:none}
.ngx{font-size:10px;opacity:.45;font-weight:700;margin-left:auto;transition:opacity .18s,transform .22s ease}
.ct.side .nv button.ngb{display:flex;align-items:center;gap:8px;width:100%;border-left:0;border-radius:10px;padding:16px 10px 7px;transition:all .18s ease}
.ct.side .nv button.ngb:hover{background:0;color:inherit}
.ct.side .nv button.ngb:hover .ngx{opacity:.85}
.ng-ico{width:24px;height:24px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 24px;transition:transform .18s ease,box-shadow .18s ease}
.ng-ico svg{width:14px;height:14px}
.ng-lbl{font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;line-height:1}
.ct.side .nv button.ngb:hover .ng-ico{transform:scale(1.08)}
/* Cores por grupo — modo claro */
.gh-diretor .ng-ico{background:linear-gradient(135deg,#cffafe,#a5f3fc);color:#0e7490;box-shadow:0 2px 8px -2px rgba(14,116,144,.2)}.gh-diretor .ng-lbl{color:#155e75}
.gh-comercial .ng-ico{background:linear-gradient(135deg,#e0ecfc,#d0e0f8);color:#2563eb;box-shadow:0 2px 8px -2px rgba(37,99,235,.18)}.gh-comercial .ng-lbl{color:#1e5fc1}
.gh-eventos .ng-ico{background:linear-gradient(135deg,#fef3c7,#fde68a);color:#b45309;box-shadow:0 2px 8px -2px rgba(217,119,6,.18)}.gh-eventos .ng-lbl{color:#b45309}
.gh-incompany .ng-ico{background:linear-gradient(135deg,#e0e7ff,#c7d2fe);color:#4338ca;box-shadow:0 2px 8px -2px rgba(67,56,202,.18)}.gh-incompany .ng-lbl{color:#4338ca}
.gh-financeiro .ng-ico{background:linear-gradient(135deg,#d1fae5,#a7f3d0);color:#059669;box-shadow:0 2px 8px -2px rgba(5,150,105,.18)}.gh-financeiro .ng-lbl{color:#047857}
.gh-time .ng-ico{background:linear-gradient(135deg,#fce7f3,#fbcfe8);color:#be185d;box-shadow:0 2px 8px -2px rgba(190,24,93,.18)}.gh-time .ng-lbl{color:#9d174d}
.gh-cadastros .ng-ico{background:linear-gradient(135deg,#ede9fe,#ddd6fe);color:#7c3aed;box-shadow:0 2px 8px -2px rgba(124,58,237,.18)}.gh-cadastros .ng-lbl{color:#6d28d9}
.gh-sistema .ng-ico{background:linear-gradient(135deg,#f1f5f9,#e2e8f0);color:#64748b;box-shadow:0 2px 8px -2px rgba(100,116,139,.14)}.gh-sistema .ng-lbl{color:#4b5563}
/* Mobile: barra lateral vira GAVETA (drawer) escura de vidro — DNA do login.
   Estas regras vêm DEPOIS de todas as regras base/.col p/ vencer por ordem de fonte
   e nunca cair no estado recolhido (rail de 58px) do desktop. */
@media(max-width:880px){
  .hmb{display:inline-flex}
  .navbk{display:block}
  .ct.side .nv,.ct.side.col .nv{
    position:fixed!important;top:0;left:0;bottom:0;width:280px!important;max-width:84vw!important;
    flex:none!important;flex-direction:column;flex-wrap:nowrap;gap:3px;align-items:stretch;
    transform:translateX(-100%);transition:transform .3s cubic-bezier(.4,0,.2,1);
    z-index:130;margin:0;border:0;border-radius:0;padding:16px 14px;
    max-height:none;overflow-y:auto;box-shadow:none;
    background:linear-gradient(180deg,#06101e 0%,#0a1d39 40%,#0e2448 100%);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}
  body.navopen .ct.side .nv,body.navopen .ct.side.col .nv{transform:translateX(0);box-shadow:8px 0 40px rgba(0,0,0,.6)}
  .ct.side .nv button,.ct.side.col .nv button{width:100%;text-align:left;white-space:normal;padding:10px 13px;border-radius:10px;border-left:3px solid transparent;border-bottom:0;color:#8da3c4;font-weight:500;font-size:13.5px;transition:all .18s ease}
  .ct.side .nv button:hover{background:rgba(56,189,248,.08);color:#e2ecfa}
  .ct.side .nv button.on,.ct.side.col .nv button.on{background:linear-gradient(135deg,rgba(56,189,248,.16),rgba(14,165,233,.08));border-left-color:#38bdf8;border-bottom-color:transparent;color:#fff;font-weight:700;box-shadow:inset 0 0 0 1px rgba(56,189,248,.15)}
  .ct.side .nv button .nl,.ct.side.col .nv button .nl{display:inline!important}
  .ct.side .nv button.ngb,.ct.side.col .nv button.ngb{display:flex;align-items:center;gap:9px;background:0;color:#6f86a8;font-size:10px;letter-spacing:.6px;text-transform:uppercase;font-weight:800;padding:16px 10px 7px;border-left:0}
  .ct.side .nv button.ngb:hover{background:0;color:#9fb3d1}
  .ct.side .nv .ngx{color:#6f86a8;margin-left:auto}
  /* Gaveta mobile é escura */
  .ct.side .nv .gh-diretor .ng-ico{background:rgba(34,211,238,.16);color:#67e8f9;box-shadow:0 2px 8px -2px rgba(34,211,238,.28)}.ct.side .nv .gh-diretor .ng-lbl{color:#67e8f9}
  .ct.side .nv .gh-comercial .ng-ico{background:rgba(37,99,235,.2);color:#7fb3f4;box-shadow:0 2px 8px -2px rgba(37,99,235,.3)}.ct.side .nv .gh-comercial .ng-lbl{color:#7fb3f4}
  .ct.side .nv .gh-eventos .ng-ico{background:rgba(251,191,36,.12);color:#fbbf24;box-shadow:0 2px 8px -2px rgba(251,191,36,.25)}.ct.side .nv .gh-eventos .ng-lbl{color:#fbbf24}
  .ct.side .nv .gh-incompany .ng-ico{background:rgba(129,140,248,.16);color:#a5b4fc;box-shadow:0 2px 8px -2px rgba(129,140,248,.28)}.ct.side .nv .gh-incompany .ng-lbl{color:#a5b4fc}
  .ct.side .nv .gh-financeiro .ng-ico{background:rgba(74,222,128,.12);color:#4ade80;box-shadow:0 2px 8px -2px rgba(74,222,128,.25)}.ct.side .nv .gh-financeiro .ng-lbl{color:#4ade80}
  .ct.side .nv .gh-time .ng-ico{background:rgba(244,114,182,.14);color:#f9a8d4;box-shadow:0 2px 8px -2px rgba(244,114,182,.25)}.ct.side .nv .gh-time .ng-lbl{color:#f9a8d4}
  .ct.side .nv .gh-cadastros .ng-ico{background:rgba(167,139,250,.14);color:#c4b5fd;box-shadow:0 2px 8px -2px rgba(167,139,250,.25)}.ct.side .nv .gh-cadastros .ng-lbl{color:#c4b5fd}
  .ct.side .nv .gh-sistema .ng-ico{background:rgba(148,163,184,.12);color:#9ca3af;box-shadow:0 2px 8px -2px rgba(148,163,184,.15)}.ct.side .nv .gh-sistema .ng-lbl{color:#9ca3af}
  .ct.side .nv .ngc,.ct.side.col .nv .ngc{display:flex;flex-direction:column}
  .ct.side .nv .ngc.hid,.ct.side.col .nv .ngc.hid{display:none}
  .ct.side .navtog{display:block;align-self:flex-end;font-size:0;color:#8ea6c8;padding:4px 10px;margin:-4px 0 6px;border-radius:8px;transition:all .18s ease}
  .ct.side .navtog::before{content:'\2715';font-size:20px;line-height:1}
  .ct.side .navtog:hover{background:rgba(56,189,248,.1);color:#38bdf8}
}
.cds{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;margin-bottom:24px}
.cd{background:var(--wh);border-radius:10px;padding:20px 22px;box-shadow:0 1px 3px rgba(0,0,0,.04);border:1px solid var(--bd)}
.cl{font-size:11px;color:var(--sb);text-transform:uppercase;letter-spacing:.5px;font-weight:600;margin-bottom:8px}
.cv{font-size:26px;font-weight:700;color:var(--az)}
.cv.g{color:var(--vd)}.cv.y{color:var(--am)}.cv.r{color:var(--vm)}.cv.o{color:var(--lj)}
.cs{font-size:11px;color:var(--sb);margin-top:4px}
.cdx{position:relative}.cdx .cl{padding-right:46px}.cdi{position:absolute;top:18px;right:18px;width:34px;height:34px;border-radius:10px;display:flex;align-items:center;justify-content:center}.cdi svg{width:18px;height:18px}
/* ===== Painel do Líder ===== */
.lnhead{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;flex-wrap:wrap}
.lneye{font-size:10px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:var(--az2)}
.lntitle{font-size:20px;font-weight:800;color:var(--az);letter-spacing:-.3px;margin-top:2px}
.lnmsbox{display:flex;gap:3px;flex-wrap:wrap;background:var(--lnsurf);border:1px solid var(--lnbd);border-radius:9px;padding:3px}
.lnms{font-size:11px;padding:5px 9px;border:0;border-radius:6px;cursor:pointer}
.lnintro{font-size:12px;color:var(--sb);margin:8px 0 14px}
.lndiag{border-radius:14px;padding:15px 16px;margin-bottom:16px;background:#0a1d39;background-image:radial-gradient(rgba(255,255,255,.05) 1px,transparent 1px);background-size:18px 18px}
.lndiagh{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin:6px 0 8px;font-size:17px;font-weight:700;color:#fff}
.lndiagb{font-size:17px;font-weight:800;padding:2px 10px;border-radius:6px}
.lndiagt{font-size:12.5px;line-height:1.55;color:#cdd9ea;margin:0}
.lntier{display:flex;align-items:center;gap:7px;margin:16px 0 8px;flex-wrap:wrap}
.lntn{width:20px;height:20px;border-radius:6px;color:#fff;font-size:11px;font-weight:800;display:flex;align-items:center;justify-content:center;flex:0 0 auto}
.lnth{font-size:13px;font-weight:700;color:var(--az)}
.lntn-note{font-size:10px;color:var(--sb)}
.lnbadge{font-size:10px;font-weight:700;border-radius:5px;padding:1px 6px}
.lngrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px}
.lnmt{margin-top:8px}
.lncard{background:var(--lnsurf);border:1px solid var(--lnbd);border-radius:10px;padding:12px 13px}
.lncard.todo{border:1.5px dashed var(--lnbd);opacity:.92}
.lnlab{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.4px;color:var(--sb)}
.lnrow{display:flex;align-items:baseline;gap:6px;margin-top:5px}
.lnval{font-size:21px;font-weight:800;color:var(--az);font-variant-numeric:tabular-nums}
.lnsub{font-size:11px;color:var(--sb);margin-top:2px}
.lndelta{font-size:12px;font-weight:700;white-space:nowrap}
.lnvalve{background:var(--lnsurf);border:1px solid var(--lnbd);border-radius:9px;padding:8px 11px;display:flex;align-items:center;gap:8px;font-size:11px}
.lnanchor{background:var(--vdb);border:1px solid var(--vd);border-radius:9px;padding:8px 11px;display:flex;align-items:center;gap:8px}
.lnfoot{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:16px}
.lnfh{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--az);margin-bottom:10px;display:flex;align-items:center;gap:8px}
.lnchart{display:flex;align-items:flex-end;gap:6px;height:110px}
.lnbar{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;min-width:0}
.lnbarw{width:100%;display:flex;align-items:flex-end;height:90px}
.lnbarf{width:100%;border-radius:5px 5px 0 0;min-height:3px}
.lnbarl{font-size:10px;color:var(--sb)}
.lnreadyl{list-style:none;padding:0;margin:10px 0 0;display:flex;flex-direction:column;gap:9px}
.lnready{display:flex;align-items:center;gap:8px}
.lndot{width:9px;height:9px;border-radius:50%;flex:0 0 auto}
@media(max-width:640px){.lnfoot{grid-template-columns:1fr}.lntitle{font-size:18px}.lntn-note{display:none}}
.md{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;margin-bottom:14px;padding:14px;background:linear-gradient(135deg,var(--azs) 0%,var(--wh) 100%);border-radius:8px;border:1px solid var(--bd)}
.ms{padding:6px 10px}.ml{font-size:10px;color:var(--sb);text-transform:uppercase;letter-spacing:.5px;font-weight:600;margin-bottom:2px}
.mv{font-size:18px;font-weight:700;color:var(--az)}.mv.g{color:var(--vd)}.mv.y{color:var(--am)}.mv.o{color:var(--lj)}
.p{background:var(--wh);border-radius:10px;padding:20px;box-shadow:0 1px 3px rgba(0,0,0,.04);border:1px solid var(--bd);margin-bottom:20px}
.ph{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;flex-wrap:wrap;gap:10px}
.pt{font-size:16px;font-weight:600}
.fl{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:16px}
.fl select,.fl input{padding:8px 12px;border:1px solid var(--bd);border-radius:6px;font-size:13px;background:var(--wh);font-family:inherit}
.fl input{min-width:220px}
table{width:100%;border-collapse:collapse;font-size:13px}
th{text-align:left;padding:12px 16px;background:var(--azs);color:var(--az);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.3px;border-bottom:1px solid var(--bd);white-space:nowrap}
td{padding:14px 16px;border-bottom:1px solid var(--bd);vertical-align:middle}
tr:hover td{background:var(--wh2)}
.bd1{display:inline-block;padding:3px 9px;border-radius:12px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.3px;white-space:nowrap}
.b-g{background:var(--vdb);color:var(--vd)}.b-y{background:var(--amb);color:var(--am)}.b-r{background:var(--vmb);color:var(--vm)}.b-o{background:var(--ljb);color:var(--lj)}.b-b{background:var(--azs);color:var(--az)}.b-p{background:var(--rxb);color:var(--rx)}.b-c{background:#cffafe;color:#0e7490}.b-pk{background:#fce7f3;color:#be185d}
/* Status badge clicável */
.sb-click{cursor:pointer;transition:transform .15s,box-shadow .15s}
.sb-click:hover{transform:scale(1.05);box-shadow:0 0 10px rgba(0,0,0,.1)}
.sb-arr{font-size:9px;opacity:.6;margin-left:2px;display:inline-block;transition:transform .2s}
.sb-pop{position:fixed;background:var(--wh);border:1px solid var(--lnbd);border-radius:10px;padding:8px;box-shadow:0 12px 32px rgba(0,0,0,.18);z-index:50;min-width:230px;display:flex;flex-direction:column;gap:3px}
.sb-pop::before{content:'';position:absolute;top:-5px;left:var(--sb-arr,50%);margin-left:-5px;width:10px;height:10px;background:var(--wh);border-left:1px solid var(--lnbd);border-top:1px solid var(--lnbd);transform:rotate(45deg)}
.sb-pop.sb-pop-up::before{top:auto;bottom:-5px;border-left:0;border-top:0;border-right:1px solid var(--lnbd);border-bottom:1px solid var(--lnbd)}
.sb-pop .sb-pop-t{font-size:10px;text-transform:uppercase;letter-spacing:.12em;color:var(--sb);font-weight:700;padding:4px 10px 6px}
.sb-pop .bd1{display:block;padding:7px 12px;border-radius:8px;cursor:pointer;text-align:left;transition:filter .15s}
.sb-pop .bd1:hover{filter:brightness(1.1)}
.sb-pop .sb-sel{outline:2px solid var(--az);outline-offset:1px}
/* Celular: a opção do popup media 31,6px e a pílula que o abre, 32 — as duas
   abaixo dos 44 de alvo. A opção cresce de verdade (é um menu, há espaço); a
   pílula vive numa célula de tabela e cresceria a linha, então recebe hitSlop:
   alvo = padding box + 2×inset = 32 + 12 = 44. */
/* Tema claro: `b-y` dava 2,74:1, `b-g` 3,00 e `b-o` 3,11 — reprovado em AA, e o
   status aqui é um CONTROLE (abre o popup, escolhe o valor), não um selo. Mesmos
   tons que `.ct-stw` e `.vg-st` já usam; corrigir `.b-y`/`.b-g`/`.b-o` na origem
   repintaria pílula em meia dezena de telas e continua sendo decisão do Rafael. */
:root:not([data-theme="dark"]) .sb-click.b-y,:root:not([data-theme="dark"]) .sb-pop .b-y{color:#854d0e}
:root:not([data-theme="dark"]) .sb-click.b-g,:root:not([data-theme="dark"]) .sb-pop .b-g{color:#15803d}
:root:not([data-theme="dark"]) .sb-click.b-o,:root:not([data-theme="dark"]) .sb-pop .b-o{color:#9a3412}
@media(max-width:640px){
  .sb-pop .bd1{min-height:44px;display:flex;align-items:center}
  .sb-click{position:relative}
  .sb-click::after{content:'';position:absolute;inset:-6px;border-radius:10px}
}
[data-theme="dark"] .sb-pop{background:var(--bg2);border-color:rgba(255,255,255,.12);box-shadow:0 12px 32px rgba(0,0,0,.5)}
[data-theme="dark"] .sb-pop::before{background:var(--bg2);border-color:rgba(255,255,255,.12)}
/* Redesign tela de vendas do curso (cdMetrics / cdTabela) */
.cdx-top{display:grid;grid-template-columns:2fr 1fr;gap:10px;margin-bottom:10px}
/* Com o chip de Comissão de volta (08/09/2026) a faixa tem 3 peças; sem ele, 2.
   Grade fixa deixaria coluna vazia em quem não pode ver o número. */
.cdx-top.com3{grid-template-columns:2fr 1fr 1fr}
/* Pílula "Marcar pago" na coluna Comissão — voltou junto com a coluna. */
.cdx-com-tg{cursor:pointer;padding:2px 7px;border-radius:4px;font-size:10px;font-weight:600;background:var(--bd);color:var(--sb);transition:all .15s;display:inline-flex;align-items:center;gap:3px;border:none}
.cdx-com-tg:hover{background:var(--vdb);color:var(--vd)}
.cdx-com-tg.on{background:var(--vdb);color:var(--vd)}
.cdx-com-tg.on svg{width:11px;height:11px}
/* Alerta de comissão pendente: cor por CLASSE, para o tema claro poder corrigir. */
.cdx-al-com{background:var(--vdb)}
.cdx-al-com .cdx-em,.cdx-al-com b{color:var(--vd)}
/* `--vd` sobre `--vdb` dá 3,00 no tema claro — reprovado em 10 e 11px. O tom
   escuro da própria paleta resolve, e só no claro (no escuro o verde é claro e
   já passa). Mesmo remédio do `.ct-stw` e das pílulas de status. */
:root:not([data-theme="dark"]) .cdx-al-com .cdx-em,
:root:not([data-theme="dark"]) .cdx-al-com b,
:root:not([data-theme="dark"]) .cdx-com-tg.on,
:root:not([data-theme="dark"]) .cdx-com-tg:hover{color:#15803d}
/* O estado neutro ("Marcar pago") também: `--sb` sobre `--bd` dá 4,34 em 10px. */
:root:not([data-theme="dark"]) .cdx-com-tg{color:#475569}
.cdx-fat,.cdx-chip{background:var(--wh);border:1px solid var(--lnbd);border-radius:10px}
.cdx-fat{padding:10px 14px}
.cdx-fh{display:flex;align-items:baseline;justify-content:space-between;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.cdx-l{font-size:10px;color:var(--sb);text-transform:uppercase;letter-spacing:.5px;font-weight:600}
.cdx-big{font-size:22px;font-weight:700;color:var(--tx);margin-top:2px;line-height:1;font-variant-numeric:tabular-nums}
.cdx-meta{text-align:right;font-size:11px;color:var(--sb);line-height:1.4}
.cdx-bar{height:6px;border-radius:4px;overflow:hidden;display:flex;background:var(--bd)}
.cdx-bar>i{display:block;height:100%}
.cdx-leg{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;margin-top:6px;font-size:11px}
.cdx-leg>span{display:flex;align-items:center;gap:5px;color:var(--sb)}
.cdx-leg b{color:var(--tx);font-weight:700}
.cdx-dot{width:7px;height:7px;border-radius:50%;flex:0 0 auto}
.cdx-chip{padding:10px 13px;display:flex;align-items:center;gap:10px}
.cdx-ic{width:28px;height:28px;border-radius:7px;display:flex;align-items:center;justify-content:center;flex:0 0 auto}
.cdx-ic svg{width:15px;height:15px}
.cdx-chv{font-size:17px;font-weight:700;color:var(--tx);line-height:1.15;font-variant-numeric:tabular-nums}
.cdx-alerts{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.cdx-al{flex:1;min-width:140px;border-radius:8px;padding:6px 10px;display:flex;align-items:center;gap:8px;font-size:11px;line-height:1.3;color:var(--tx)}
.cdx-al .cdx-em{flex:0 0 auto;display:inline-flex}
.cdx-al .cdx-em svg{width:15px;height:15px}
.cdx-al b{font-weight:700;display:block}
.cdx-cons{display:inline-flex;align-items:center;white-space:nowrap}
.cdx-cons::before{content:attr(data-i);width:23px;height:23px;border-radius:50%;background:var(--azs);color:var(--az);font-size:11px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;margin-right:8px;flex:0 0 auto}
.cdx-sub{font-size:11px;color:var(--sb);margin-top:3px;font-weight:400}
.cdx-sub svg{width:12px;height:12px;vertical-align:-1px}
.cdx-tw{border:1px solid var(--lnbd);border-radius:10px;overflow:hidden}
.cdx-tbl thead th{background:var(--wh2);color:var(--sb);border-bottom:1px solid var(--lnbd);font-weight:600}
.cdx-acts{display:inline-flex;gap:6px;align-items:center}
.cdx-ab{width:29px;height:29px;border-radius:7px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;border:1px solid var(--lnbd);background:var(--wh);padding:0;color:var(--sb)}
.cdx-ab svg{width:15px;height:15px}
.cdx-ab.ed{color:var(--az);background:var(--azs);border-color:transparent}
.cdx-ab.de{color:var(--vm)}
.cdx-ab:hover{filter:brightness(1.08)}
/* ===== Venda fora do placar (22/09/2026) =====
   O olho da aba Comercial do curso. Marcado, ele fica em âmbar — não em
   vermelho: tirar do placar não é destrutivo, e o vermelho da casa é de
   excluir. A etiqueta ao lado do cliente é o que explica a linha sem depender
   de passar o mouse no ícone. */
.cdx-ab-off{color:#8a5a00;background:var(--amb);border-color:transparent}
[data-theme="dark"] .cdx-ab-off{color:#fbbf24;background:rgba(245,181,68,.14)}
.cdx-fp{display:inline-block;margin-left:7px;padding:1px 7px;border-radius:999px;font-size:10px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;vertical-align:middle;background:var(--amb);color:#8a5a00;white-space:nowrap}
[data-theme="dark"] .cdx-fp{background:rgba(245,181,68,.14);color:#fbbf24}
.cdx-pag{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px;flex-wrap:wrap;font-size:12px;color:var(--sb)}
.cdx-pag-ctrl{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.cdx-pag-ctrl button{min-width:30px;height:30px;border:1px solid var(--lnbd);background:var(--wh);color:var(--tx);border-radius:7px;cursor:pointer;font-size:12px;padding:0 8px}
.cdx-pag-ctrl button:disabled{opacity:.4;cursor:default}
.cdx-pag-ctrl button.on{background:var(--az);color:#fff;border-color:var(--az)}
/* No tema escuro --az é claro (#60a5fa): branco em cima dá 2,54:1. Texto escuro
   resolve (7,36:1) — mesma correção dos chips do Roteiro e de Métricas.
   Vale para toda paginação .cdx-pag do app, não só a de Recebimentos. */
[data-theme="dark"] .cdx-pag-ctrl button.on{color:#0b1220}
.cdx-pag-ctrl select{height:30px;border:1px solid var(--lnbd);background:var(--wh);color:var(--tx);border-radius:7px;font-size:12px;padding:0 6px;font-family:inherit}
@media(max-width:640px){.cdx-top{grid-template-columns:1fr}}
.mb{position:fixed;inset:0;background:rgba(0,0,0,.5);display:none;align-items:flex-start;justify-content:center;z-index:100;padding:20px;overflow-y:auto}
.mb.on{display:flex}
.m{background:var(--wh);border-radius:12px;padding:24px;max-width:1100px;width:100%;margin:auto}
.mt{font-size:18px;font-weight:600;margin-bottom:18px;color:var(--az)}
.fg{margin-bottom:14px}
.fg label{display:block;font-size:12px;font-weight:600;margin-bottom:5px}.fg label .rq{color:var(--vm)}
.fg input:not([type=checkbox]):not([type=radio]),.fg select,.fg textarea{width:100%;padding:9px 12px;border:1px solid var(--bd);border-radius:6px;font-size:13px;font-family:inherit;background:var(--wh);color:var(--tx)}
/* Marca nativa, colorida pelo tema (accent-color) — controle de sistema é mais
   previsível que um custom, e já vem com foco e teclado prontos. */
.fg input[type=checkbox],.fg input[type=radio],
.fg-check input[type=checkbox],.fg-check input[type=radio]{width:17px;height:17px;min-height:0;padding:0;margin:0;flex:0 0 auto;accent-color:var(--az);cursor:pointer}

/* .fg label (0,1,1) traz display:block, font-size:12px e font-weight:600 — uma
   classe simples (0,1,0) perde para ela. Daí o seletor duplo. min-height 40px
   alinha a linha do checkbox com o select/input da coluna ao lado. */
.fg-check,.fg label.fg-check{display:flex;align-items:center;gap:9px;min-height:40px;margin-bottom:0;font-size:13px;font-weight:400;color:var(--tx);cursor:pointer;line-height:1.35}
.fg input:not([type=email]):not([type=number]):not([type=date]):not([type=password]):not([type=checkbox]):not([type=radio]):not([type=hidden]):not([type=color]),.fg textarea,.pt-t input:not([type=email]){text-transform:uppercase}
.fg input:focus,.fg select:focus,.fg textarea:focus{outline:0;border-color:var(--az);box-shadow:0 0 0 3px var(--azs)}
.fr{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.fr3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px}
.fr4{display:grid;grid-template-columns:1.4fr 1.2fr .8fr .5fr;gap:10px}
.nf-sec{border:1px solid var(--bd);border-radius:8px;padding:10px 14px;margin-bottom:14px;background:var(--wh2)}
.nf-sec-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;font-size:11px;font-weight:700;color:var(--sb);text-transform:uppercase;letter-spacing:.08em}
.nf-line{display:grid;grid-template-columns:1fr .7fr .7fr 32px;gap:8px;align-items:end;margin-bottom:6px}
.nf-line .fg{margin-bottom:0}
.nf-add{font-size:12px;color:var(--az);cursor:pointer;display:inline-flex;align-items:center;gap:4px;margin-top:6px;padding:4px 0;background:none;border:none;font-family:inherit;font-weight:600}
.nf-add:hover{text-decoration:underline}
.nf-rm{width:28px;height:28px;border-radius:6px;border:1px solid var(--bd);background:none;color:var(--sb);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;margin-bottom:1px}
.nf-rm:hover{background:var(--vmb);color:var(--vm);border-color:var(--vm)}
.ma{display:flex;gap:10px;justify-content:flex-end;margin-top:20px}
.em{text-align:center;padding:40px 20px;color:var(--sb)}
.lb{position:fixed;inset:0;background:linear-gradient(135deg,var(--az) 0%,var(--az2) 100%);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px;z-index:200;overflow-y:auto}
.lx{background:var(--wh);border-radius:12px;padding:36px;max-width:400px;width:100%;box-shadow:0 20px 60px rgba(0,0,0,.2)}
.lt{text-align:center;font-size:22px;font-weight:700;color:var(--az);margin-bottom:6px}
.lt.mk{line-height:1.1;margin-bottom:8px}
.lt.mk b{display:block;font-size:24px;font-weight:800;letter-spacing:.11em;margin-right:-.11em}
.lt.mk small{display:block;font-size:12.5px;color:var(--sb);margin-top:4px}
.ls{text-align:center;color:var(--sb);font-size:13px;margin-bottom:24px}
/* ===== Login premium (split-screen — Opção 3) ===== */
#lg{padding:0;align-items:stretch}
.lsplit{flex:1;display:flex;width:100%;min-height:100vh;min-height:100dvh;background:radial-gradient(120% 130% at 18% 100%,#143a6b 0%,#0a1d39 50%,#08152a 100%)}
.lpane{flex:1 1 54%;min-width:0;padding:clamp(34px,3.3vw,60px) clamp(40px,4vw,84px);display:flex;flex-direction:column;background-image:radial-gradient(rgba(255,255,255,.06) 1px,transparent 1px);background-size:24px 24px}
.lpane-r{flex:1 1 46%;min-width:0;display:flex;align-items:center;justify-content:center;padding:clamp(24px,2.5vw,48px)}
.lbrand{display:flex;align-items:center;gap:13px;color:#fff}
.lblogo{width:clamp(42px,3.1vw,58px);height:clamp(42px,3.1vw,58px);border-radius:12px;background:linear-gradient(135deg,#3b82f6,#1e40af);display:flex;align-items:center;justify-content:center;box-shadow:0 8px 22px rgba(37,99,235,.35);flex:0 0 auto}
.lblogo svg{width:54%;height:54%;stroke:#fff;fill:none;stroke-width:2}
.lbname{font-size:clamp(17px,1.25vw,23px);font-weight:700;line-height:1.15;color:#fff}
.lbname small{display:block;font-size:clamp(11px,0.85vw,14px);font-weight:400;color:#93a9c9}
.lbname.mk b{display:block;font-size:clamp(20px,1.4vw,26px);font-weight:800;letter-spacing:.10em;margin-right:-.10em}
.lbname.mk small{font-size:clamp(11px,.85vw,13.5px);margin-top:5px}
.lpane-mid{margin:auto 0}
.lgreet{display:inline-flex;align-items:center;gap:8px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.16);border-radius:30px;padding:clamp(7px,0.55vw,10px) clamp(15px,1.1vw,21px);color:#fff;font-size:clamp(12.5px,0.95vw,16px);font-weight:600;margin-bottom:clamp(18px,1.5vw,28px)}
.lgreet svg{width:clamp(15px,1.1vw,19px);height:clamp(15px,1.1vw,19px);stroke:#cfe0ff;fill:none;stroke-width:2;flex:0 0 auto}
.lhead{font-size:clamp(28px,2.85vw,54px);font-weight:800;line-height:1.14;letter-spacing:-.02em;color:#fff;margin-bottom:clamp(14px,1.2vw,22px);max-width:clamp(420px,40vw,660px)}
.lhead .la{color:#5b9bf5}
.lsub{color:#88a4cc;font-size:clamp(14px,1.05vw,19px);font-weight:500;line-height:1.5;max-width:clamp(360px,30vw,500px)}
.lcardx{width:100%;max-width:clamp(360px,27vw,480px);background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.11);border-radius:20px;padding:clamp(30px,2.4vw,46px) clamp(28px,2.2vw,42px);box-shadow:0 30px 70px rgba(0,0,0,.4)}
.lcico{width:clamp(54px,4vw,74px);height:clamp(54px,4vw,74px);border-radius:50%;margin:0 auto 16px;background:rgba(59,130,246,.16);border:1px solid rgba(96,165,250,.42);display:flex;align-items:center;justify-content:center}
.lcico svg{width:47%;height:47%;stroke:#7fb0ff;fill:none;stroke-width:1.7}
.lct{text-align:center;color:#fff;font-size:clamp(20px,1.55vw,28px);font-weight:700;margin-bottom:4px}
.lcs{text-align:center;color:#8ea6c8;font-size:clamp(12.5px,1vw,16px);margin-bottom:22px}
.lflab{display:block;color:#cdd9ec;font-size:clamp(12px,0.9vw,15px);font-weight:600;margin-bottom:6px}
.lfld{display:flex;align-items:center;gap:9px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.13);border-radius:10px;padding:clamp(10px,0.85vw,15px) clamp(12px,1vw,16px);margin-bottom:14px;transition:border-color .15s,box-shadow .15s}
.lfld:focus-within{border-color:#3b82f6;box-shadow:0 0 0 3px rgba(59,130,246,.18)}
.lfld>svg{width:clamp(15px,1.15vw,19px);height:clamp(15px,1.15vw,19px);stroke:#7e93b3;fill:none;stroke-width:2;flex:0 0 auto}
.lfld input{flex:1;min-width:0;background:0;border:0;outline:0;color:#e8eefc;font-size:clamp(13px,1vw,16px);font-family:inherit}
.lfld input::placeholder{color:#6b7f9e}
.lfld .ey{cursor:pointer;display:flex;color:#7e93b3}
.lfld .ey svg{width:clamp(15px,1.15vw,19px)!important;height:clamp(15px,1.15vw,19px)!important;stroke:currentColor;fill:none;stroke-width:2}
.lbrow{display:flex;align-items:center;justify-content:space-between;margin:4px 0 18px;font-size:clamp(12px,0.95vw,15px);flex-wrap:wrap;gap:8px}
.lbrow label{color:#9fb3d1;display:flex;align-items:center;gap:7px;cursor:pointer}
.lbrow a{color:#5b9bf5;text-decoration:none;cursor:pointer}
.lbrow a:hover{text-decoration:underline}
.lcbtn{width:100%;padding:clamp(12px,1vw,17px);border:0;border-radius:11px;background:linear-gradient(90deg,#2563eb,#3b82f6);color:#fff;font-size:clamp(14px,1.05vw,18px);font-weight:700;cursor:pointer;transition:filter .15s}
.lcbtn:hover{filter:brightness(1.08)}
.lcfoot{display:flex;align-items:flex-start;gap:8px;justify-content:center;color:#7186a4;font-size:clamp(10.5px,0.8vw,13px);margin-top:18px;text-align:center;line-height:1.45}
.lcfoot svg{width:14px;height:14px;stroke:#5b9bf5;fill:none;stroke-width:2;flex:0 0 auto;margin-top:1px}
.lts{display:flex;margin-bottom:20px;border-bottom:1px solid var(--bd)}
.lts button{flex:1;padding:10px;background:0;border:0;cursor:pointer;font-size:13px;color:var(--sb);font-weight:500;border-bottom:2px solid transparent}
.lts button.on{color:var(--az);border-bottom-color:var(--az);font-weight:600}
.cfl{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:20px}
.cfl button{display:inline-flex;align-items:center;gap:7px;padding:7px 13px;background:var(--wh);border:1px solid var(--bd);border-radius:999px;cursor:pointer;font-size:12.5px;color:var(--sb);font-weight:500;line-height:1;transition:border-color .16s,background-color .16s,color .16s}
.cfl button:hover{border-color:var(--az2);color:var(--az)}
.cfl button.on{background:var(--az);border-color:var(--az);color:#fff}
.cfl button.on:hover{color:#fff}
.cfl button .n{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:#eef2f7;color:var(--sb);font-size:11px;font-weight:600}
.cfl button.on .n{background:rgba(255,255,255,.22);color:#fff}
.cfl button.z{opacity:.5}
.er{color:var(--vm);font-size:12px;margin-top:10px;text-align:center;min-height:18px}
.pw{position:relative}.pw input{padding-right:36px}.pw .ey{position:absolute;right:10px;top:50%;transform:translateY(-50%);cursor:pointer;opacity:.55;user-select:none;font-size:15px}.pw .ey:hover{opacity:1}
.ac{display:flex;gap:5px;align-items:center;flex-wrap:nowrap}
td.ac{display:table-cell;white-space:nowrap}
td.ac>*{vertical-align:middle}
td.ac>*+*{margin-left:5px}
.ac .b,.ac button{padding:4px 9px;font-size:11.5px;font-weight:500;white-space:nowrap;border-radius:5px}
.ac .bic{padding:4px 6px;display:inline-flex;align-items:center;justify-content:center}
.ac .bic svg{width:14px;height:14px;display:block}
.cg{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px}
.cc{background:var(--wh);border-radius:10px;border:1px solid var(--bd);overflow:hidden;cursor:pointer;display:flex;flex-direction:column}
.cc:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(10,61,143,.12);border-color:var(--az2)}
.cct{background:linear-gradient(135deg,var(--az) 0%,var(--az2) 100%);color:#fff;padding:14px 16px;display:flex;justify-content:space-between;align-items:center;font-size:12px;font-weight:600}
.ccd{font-size:13px}.ccl{opacity:.9;font-size:11px;text-transform:uppercase}
.ccb{padding:14px 16px;flex:1;display:flex;flex-direction:column}
.ccn{font-size:14px;font-weight:600;line-height:1.35;margin-bottom:10px;min-height:38px}
.ccs{display:flex;gap:10px;font-size:12px;color:var(--sb);margin-top:auto;padding-top:10px;border-top:1px solid var(--bd)}
.ccs b{color:var(--az);font-size:14px;display:block}
.ccs .cc-des b{color:var(--rx)}
.cca{padding:10px 16px;border-top:1px solid var(--bd);background:var(--wh2);display:flex;gap:6px;justify-content:flex-end}
.cc.cc-r{opacity:.88}.cc.cc-r .cct{background:linear-gradient(135deg,#4b6282 0%,#6b82a0 100%)}
.neg-acc{border:1px solid var(--bd);border-radius:8px;margin-bottom:8px;overflow:hidden}
.neg-acc summary{cursor:pointer;list-style:none;display:flex;align-items:center;justify-content:space-between;padding:11px 16px;background:var(--azs);font-weight:600;font-size:13px;user-select:none;gap:8px}
.neg-acc summary::-webkit-details-marker{display:none}
.neg-acc[open] summary{border-bottom:1px solid var(--bd)}
.neg-acc table{width:100%;border-collapse:collapse}
.neg-acc td{padding:8px 16px;border-bottom:1px solid var(--bd);font-size:13px}
.neg-acc tr:last-child td{border-bottom:none}
.neg-badge{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:20px;padding:0 7px;background:var(--az);color:#fff;border-radius:10px;font-size:11px;font-weight:700;flex-shrink:0}
.sg{display:flex;flex-wrap:wrap;gap:4px;background:var(--lb-panel-bg);border:1px solid var(--lb-panel-bd);border-radius:12px;padding:4px;box-shadow:var(--lb-panel-shadow);backdrop-filter:var(--lb-blur);-webkit-backdrop-filter:var(--lb-blur);margin-bottom:2px}
.sg button{border:0;background:transparent;border-radius:8px;padding:8px 14px;font-size:12.5px;font-weight:600;color:var(--sb);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:6px;white-space:nowrap;transition:background .16s,color .16s,box-shadow .16s}
.sg button:hover{background:var(--azs);color:var(--az)}
.sg button.on{background:linear-gradient(135deg,var(--az2),var(--az));color:#fff;font-weight:700;box-shadow:0 3px 10px -2px rgba(10,61,143,.4)}
.sg button.on:hover{background:linear-gradient(135deg,var(--az2),var(--az))}
.sg button:disabled{cursor:not-allowed;opacity:.55}
.sg button:focus-visible{outline:2px solid var(--az2);outline-offset:2px}
.sg button.wa.on{background:linear-gradient(135deg,#2be07e,#1DA851);box-shadow:0 3px 10px -2px rgba(29,168,81,.5)}
.sg button.wa:not(.on):hover{background:rgba(37,211,102,.14);color:#1DA851}
[data-theme="dark"] .sg button.on{box-shadow:0 3px 10px -2px rgba(59,130,246,.5)}
.atvchk{width:20px;height:20px;cursor:pointer}
.sx{overflow-x:auto;-webkit-overflow-scrolling:touch}
.sx::-webkit-scrollbar,.pt-w::-webkit-scrollbar{height:7px}
.sx::-webkit-scrollbar-thumb,.pt-w::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:4px}
.pt-w{-webkit-overflow-scrolling:touch}
.bk{display:inline-flex;align-items:center;gap:6px;color:var(--az);font-size:13px;margin-bottom:14px;cursor:pointer;background:0;border:0;font-weight:500}
.bk:hover{text-decoration:underline}
.dh{background:linear-gradient(135deg,var(--az) 0%,var(--az2) 100%);color:#fff;padding:24px;border-radius:10px;margin-bottom:20px}
.dh h2{font-size:20px;margin-bottom:8px}
.di{display:flex;gap:24px;flex-wrap:wrap;font-size:13px;opacity:.95}
.tg{display:inline-block;background:var(--azs);color:var(--az);padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600;margin-right:4px}
.tg.mk{background:var(--rxb);color:var(--rx)}
.pm{display:inline-block;background:var(--wh);border:1px solid var(--bd);border-radius:4px;padding:1px 8px;font-size:11px;margin:1px 2px}
.px td{background:var(--wh2);padding:10px 18px;border-top:0}
.pt-h{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:12px;background:var(--azs);border-radius:6px;margin-bottom:10px}
.pt-h label{font-size:12px;font-weight:600;color:var(--az)}
.pt-h input{width:80px;padding:6px 10px;border:1px solid var(--bd);border-radius:4px}
.pt-t{width:100%;border-collapse:collapse;font-size:12px}
.pt-t th{background:var(--azs);color:var(--az);padding:6px 8px;font-size:10px;text-align:left;border-bottom:1px solid var(--bd)}
.pt-t td{padding:4px;border-bottom:1px solid var(--bd)}
.pt-t input{width:100%;padding:5px 7px;border:1px solid var(--bd);border-radius:4px;font-size:12px;font-family:inherit;background:var(--wh);color:var(--tx)}
.pt-t input:focus{outline:0;border-color:var(--az);box-shadow:0 0 0 2px var(--azs)}
.pt-t .x{background:var(--vm);color:#fff;border:0;border-radius:4px;padding:3px 7px;font-size:11px;cursor:pointer}
.pt-w{overflow-x:auto;border:1px solid var(--bd);border-radius:6px}
.fxh{background:var(--azs);border-left:4px solid var(--az);padding:10px 14px;border-radius:6px;margin-bottom:14px;font-size:13px;color:var(--az)}
.fxh b{font-weight:700}
.spin{width:38px;height:38px;border:4px solid var(--azs);border-top-color:var(--az);border-radius:50%;margin:0 auto 16px;animation:sp 1s linear infinite}
@keyframes sp{to{transform:rotate(360deg)}}
/* ===== Polimento visual: transições + micro-animações ===== */
.b,.bn,.bs,.bd,.bg2,.bv,.nv button,.lts button,.pm,.tg,.bk,.ey{transition:background-color .16s ease,color .16s ease,box-shadow .16s ease,transform .12s ease,border-color .16s ease}
.cd,.cc,.p{transition:box-shadow .2s ease,transform .2s ease,border-color .2s ease}
.fg input,.fg select,.fg textarea,.fl input,.fl select{transition:border-color .16s ease,box-shadow .16s ease,background-color .16s ease}
td{transition:background-color .12s ease}
.b:hover,.bv:hover,.bd:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(10,61,143,.16)}
.b:active,.bn:active,.bv:active,.bs:active,.bd:active{transform:translateY(0)}
.cd:hover{transform:translateY(-2px);box-shadow:0 8px 22px rgba(10,61,143,.10);border-color:var(--az2)}
.em::before{content:none}
@keyframes fadeUp{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
#ct>.p,#ct>.cds,#ct>.md,#ct>.dh{animation:fadeUp .22s ease both}
/* ===== UI/UX Pro Max — Acessibilidade & Interação ===== */
/* Focus-visible: anel visível para navegação por teclado (WCAG 2.4.7) */
:focus-visible{outline:2px solid var(--az2);outline-offset:2px;border-radius:4px}
.b:focus-visible,.bn:focus-visible,.bs:focus-visible,.bd:focus-visible,.bg2:focus-visible,.bv:focus-visible{outline:2px solid var(--az2);outline-offset:2px;box-shadow:0 0 0 4px var(--azs)}
.nv button:focus-visible,.lts button:focus-visible,.cfl button:focus-visible{outline:2px solid var(--az2);outline-offset:2px}
.fg input:focus-visible,.fg select:focus-visible,.fg textarea:focus-visible{outline:none;border-color:var(--az);box-shadow:0 0 0 3px var(--azs)}
.cdx-ab:focus-visible,.cdx-pag-ctrl button:focus-visible,.hmb:focus-visible{outline:2px solid var(--az2);outline-offset:2px}
header .b:focus-visible,header .bn:focus-visible,header .bs:focus-visible{outline-color:#60a5fa;box-shadow:0 0 0 4px rgba(96,165,250,.3)}
[data-theme="dark"] :focus-visible{outline-color:#60a5fa}
[data-theme="dark"] .b:focus-visible,[data-theme="dark"] .bn:focus-visible{box-shadow:0 0 0 4px rgba(96,165,250,.25)}
/* Disabled: estado visual claro para elementos desabilitados */
.b:disabled,.bn:disabled,.bs:disabled,.bd:disabled,.bg2:disabled,.bv:disabled,button:disabled{opacity:.45;cursor:not-allowed;transform:none!important;box-shadow:none!important}
/* Touch: remove delay de 300ms em dispositivos touch */
a,button,input,select,textarea,[role="button"]{touch-action:manipulation}
/* Selection: cor de seleção alinhada com o brand */
::selection{background:var(--az2);color:#fff}
::-moz-selection{background:var(--az2);color:#fff}
/* Scroll suave para ancoragem */
html{scroll-behavior:smooth}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
/* Trava zoom (pinch + double-tap) p/ sensação de app nativo — scroll continua normal */
html{touch-action:pan-x pan-y}
/* Tabular nums: dados numéricos alinhados em tabelas e cards */
td,th,.cv,.mv,.cd,.lnval,.cdx-big,.cdx-chv,.neg-badge,.bd1{font-variant-numeric:tabular-nums}
/* Touch devices: remove hover transforms que causam "sticky hover" */
@media(hover:none){
  .b:hover,.bv:hover,.bd:hover,.bn:hover{transform:none;box-shadow:none}
  .cd:hover{transform:none;box-shadow:0 1px 3px rgba(0,0,0,.04)}
  .cc:hover{transform:none;box-shadow:none}
}
/* Reduced motion: respeita preferência do usuário por menos movimento */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
  .toast{transition:none}
  #ct>.p,#ct>.cds,#ct>.md,#ct>.dh{animation:none}
  .spin{animation-duration:2s!important;animation-iteration-count:infinite!important}
}
/* ===== Loading button state ===== */
.b.loading,.bn.loading,.bv.loading,.bs.loading{pointer-events:none;opacity:.7;position:relative;color:transparent!important}
.b.loading::after,.bn.loading::after,.bv.loading::after,.bs.loading::after{content:'';position:absolute;inset:0;margin:auto;width:18px;height:18px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:sp .7s linear infinite}
.bs.loading::after{border-color:rgba(10,61,143,.15);border-top-color:var(--az)}
/* ===== Skeleton loading ===== */
.skel{background:linear-gradient(90deg,var(--bd) 25%,var(--wh2) 50%,var(--bd) 75%);background-size:200% 100%;animation:skel 1.5s ease infinite;border-radius:6px;min-height:16px}
@keyframes skel{0%{background-position:200% 0}to{background-position:-200% 0}}
[data-theme="dark"] .skel{background:linear-gradient(90deg,#1e293b 25%,#273549 50%,#1e293b 75%);background-size:200% 100%}
/* ===== Active press feedback (mobile cards) ===== */
.cc:active{transform:scale(.985);transition-duration:.08s}
.mcard:active{transform:scale(.985);transition-duration:.08s}
.cdx-ab:active{transform:scale(.9);transition-duration:.06s}
@media(hover:none){.cc:active,.mcard:active{box-shadow:0 1px 3px rgba(0,0,0,.06)}}
/* ===== Toasts ===== */
/* ===== Prévia de front (06/09/2026) — só o admin =====
   Canto inferior ESQUERDO: os toasts moram no direito, e a gaveta do menu no
   celular é overlay, então não disputam espaço. */
#pvDock{position:fixed;left:calc(14px + env(safe-area-inset-left));
  bottom:calc(14px + env(safe-area-inset-bottom));z-index:9998;
  display:flex;flex-direction:column;align-items:flex-start;gap:8px;
  font-family:inherit;pointer-events:none}
#pvDock>*{pointer-events:auto}
.pv-ics{display:flex;align-items:center;gap:6px;padding:6px 10px;border-radius:999px;
  background:var(--wh);border:1px solid var(--lnbd);box-shadow:var(--shadow-md)}
.pv-lbl{font-size:9.5px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;
  color:var(--sb);margin-right:2px}
.pv-b{width:32px;height:32px;min-height:32px;display:inline-flex;align-items:center;
  justify-content:center;border:1px solid transparent;border-radius:9px;background:0;
  color:var(--sb);cursor:pointer;padding:0;position:relative;font-family:inherit}
.pv-b::after{content:'';position:absolute;inset:-6px}
.pv-b:hover{background:var(--azs);color:var(--az2)}
.pv-b.on{background:var(--az2);border-color:var(--az2);color:#fff}
.pv-b:focus-visible{outline:3px solid var(--az2);outline-offset:2px}
/* A faixa é a trava contra esquecer que a prévia está ligada: some junto com ela. */
.pv-bar{display:flex;align-items:center;gap:9px;padding:7px 8px 7px 12px;border-radius:12px;
  background:var(--am);border:1px solid var(--am);box-shadow:var(--shadow-md);
  font-size:12px;font-weight:700;color:#2a1a02;max-width:min(340px,72vw)}
.pv-txt{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pv-txt b{font-weight:800}
.pv-dot{flex:none;width:8px;height:8px;border-radius:999px;background:#2a1a02}
.pv-x{flex:none;width:30px;height:30px;min-height:30px;display:inline-flex;align-items:center;
  justify-content:center;border:1px solid rgba(42,26,2,.35);border-radius:8px;background:0;
  color:#2a1a02;cursor:pointer;padding:0;position:relative;font-family:inherit}
.pv-x::after{content:'';position:absolute;inset:-7px}
.pv-x:hover{background:rgba(42,26,2,.14)}
[data-theme="dark"] .pv-ics{background:var(--wh);border-color:var(--lnbd)}
@media(max-width:640px){
  #pvDock{left:calc(10px + env(safe-area-inset-left));bottom:calc(10px + env(safe-area-inset-bottom))}
  .pv-lbl{display:none}
  .pv-b{width:38px;height:38px;min-height:38px}
  .pv-b::after{inset:-4px}
  .pv-x{width:38px;height:38px;min-height:38px}
  .pv-x::after{inset:-4px}
  .pv-bar{font-size:11.5px;max-width:calc(100vw - 28px)}
}
/* A gaveta do menu no celular passa por cima: o dock some enquanto ela está aberta. */
body.navopen #pvDock{display:none}
/* o dock e ferramenta de ajuste do admin — nao entra na TV da sala (z 9998 > 9000 do #tvRoot) */
body.tvmode #pvDock{display:none}
#toastWrap{position:fixed;right:16px;bottom:16px;z-index:9999;display:flex;flex-direction:column;gap:10px;max-width:360px}
.toast{display:flex;gap:10px;align-items:flex-start;background:var(--wh);border:1px solid var(--bd);border-left:4px solid var(--az2);border-radius:10px;padding:12px 14px;box-shadow:0 8px 28px rgba(0,0,0,.16);font-size:13px;color:var(--tx);cursor:pointer;opacity:0;transform:translateX(20px);transition:opacity .22s ease,transform .22s ease}
.toast.show{opacity:1;transform:translateX(0)}
.toast .ti{font-size:15px;line-height:1.25;display:inline-flex;align-items:center;margin-top:1px}
.toast.t-ok{border-left-color:var(--vd)}.toast.t-ok .ti{color:var(--vd)}.toast.t-err{border-left-color:var(--vm)}.toast.t-err .ti{color:var(--vm)}.toast.t-info .ti{color:var(--az2)}
.cfb{position:fixed;inset:0;background:rgba(15,23,42,.5);display:none;align-items:center;justify-content:center;z-index:300;padding:20px}
.cfb.on{display:flex}
.cfd{background:var(--wh);border-radius:14px;max-width:380px;width:100%;padding:24px;box-shadow:0 20px 60px rgba(0,0,0,.3);text-align:center;animation:cfPop .2s ease both}
@keyframes cfPop{from{opacity:0;transform:translateY(8px) scale(.97)}to{opacity:1;transform:none}}
.cfi{width:52px;height:52px;border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto 14px;background:var(--azs);color:var(--az2)}
.cfi.dg{background:#fee2e2;color:var(--vm)}
.cfi svg{width:26px;height:26px}
.cft{font-size:17px;font-weight:600;color:var(--az);margin-bottom:6px}
.cfm{font-size:14px;color:var(--sb);line-height:1.5;margin-bottom:22px;word-break:break-word}
.cfa{display:flex;gap:10px}
.cfa .b{flex:1;padding:10px}
.cfa .bdg{background:var(--vm)}.cfa .bdg:hover{background:#b91c1c}
@media(max-width:880px){.cds{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}}
@media(max-width:640px){
  .fr,.fr3,.fr4{grid-template-columns:1fr}
  .nf-line{grid-template-columns:1fr;gap:6px}
  /* insets laterais: só o bottom estava compensado. Com viewport-fit=cover o notch e os
     cantos arredondados comem as LATERAIS (sobretudo em paisagem) — sem isto o conteúdo
     encosta/some na borda. Em tela sem notch os env() valem 0 e nada muda. */
  .ct{padding:14px calc(14px + env(safe-area-inset-right,0px)) calc(32px + env(safe-area-inset-bottom,0px)) calc(14px + env(safe-area-inset-left,0px))}
  header{padding:12px calc(16px + env(safe-area-inset-right,0px)) 12px calc(16px + env(safe-area-inset-left,0px));flex-direction:column;align-items:stretch;gap:10px}
  .logo{font-size:16px}
  .logo.mk b{font-size:16px}
  .logo.mk small{display:none}
  .ltile{display:none}
  table{font-size:12px}
  th,td{padding:8px 6px}
  .bn{padding:8px 12px;font-size:12px}
  /* ===== Cabeçalho: duas linhas, não três =====
     Medido em 375px: o header ocupava 148px, 18% da tela, em 3 alturas
     diferentes (logo 42px, chips 32px, conta 32px) e com os botões abaixo dos
     44px de alvo que o resto do app usa. Agora: linha 1 = menu + logo,
     linha 2 = ações, todas na MESMA altura e numa linha só, com a conta
     encostada à direita. */
  .hr{gap:6px;flex-wrap:nowrap;width:100%;align-items:center}
  .hr>.b,.ui>.b{min-height:38px;padding:0 11px;font-size:12px;white-space:nowrap;flex:0 0 auto;
    display:inline-flex;align-items:center;gap:5px}
  /* O tema era o único sem moldura na fileira. `header .thm-btn` (0,1,1) porque
     a regra base .thm-btn (0,1,0) está DEPOIS deste bloco no arquivo e venceria
     por ordem — a mesma armadilha do .fg input e do .pgen-bar. */
  header .thm-btn{width:38px;height:38px;flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;
    background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.16);border-radius:6px;padding:0;opacity:1}
  .ui{margin-left:auto;gap:6px;min-width:0;align-items:center}
  .hdr-nome{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;opacity:.9}
  .nv{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch}
  .nv button{padding:10px 14px;white-space:nowrap;min-height:44px}
  .cds{grid-template-columns:1fr 1fr;gap:10px}
  .cd{padding:14px 16px}.cv{font-size:22px}
  #ct .cg{grid-template-columns:1fr}
  .m{padding:18px}
  .p{padding:16px}
  #toastWrap{left:12px;right:12px;bottom:calc(12px + env(safe-area-inset-bottom,0px));max-width:none}
  .fl{gap:8px}
  .fl input,.fl select{min-width:0;flex:1 1 100%;width:100%}
  .ph{gap:8px}
  .ma{flex-direction:column;gap:8px}
  .ma .b,.ma button{width:100%}
  .mb{padding:10px;align-items:flex-start}
  .m{padding:16px;border-radius:10px}
  .dh{padding:18px}.dh h2{font-size:18px}
  .di{gap:14px}
  .bsm{padding:8px 12px}
  .ac{gap:8px}
  td.ac>*+*{margin-left:8px}
  td .b,td .bs,td .bv,td .bd,td .bg2,.ac button,.ac a{padding:9px 12px;font-size:12px}
  td select,td input:not([type=checkbox]):not([type=radio]){min-height:38px}
  .pt-t .x{padding:8px 11px}
  .lts button{padding:11px 6px}
  .mh{display:none!important}
  #ub{display:none}
  .hr>.btn-refresh{display:none}
  .md{grid-template-columns:1fr 1fr}
  .ms{min-width:0}.mv{font-size:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums}
  .ac{gap:10px}
  td.ac>*+*{margin-left:10px}
  .ac button,.ac a{min-height:40px}
  .atvchk{width:26px;height:26px}
  .lts{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch}
  .lts button{white-space:nowrap;flex:0 0 auto}
  .cc{min-width:0}
  .pt-h input{width:100%}
  .lhead{font-size:26px}
  .lpane{padding:26px 22px}
  .lpane-r{padding:0 22px 36px}
  .lsub{font-size:14px}
}
/* ===== Tabelas LARGAS viram CARDS no celular (só as marcadas .cardize, que não cabem) ===== */
@media(max-width:640px){
  .sx.cardize{overflow-x:visible;border:0}
  .sx.cardize table,.sx.cardize tbody,.sx.cardize tfoot,.sx.cardize tr{display:block;width:100%}
  .sx.cardize thead{display:none}
  .sx.cardize tr{border:1px solid var(--bd);border-radius:10px;margin:0 0 10px;padding:4px 13px;background:var(--wh);box-shadow:0 1px 2px rgba(0,0,0,.04)}
  .sx.cardize td{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:8px 0;border:0;border-bottom:1px solid var(--bd);text-align:right;white-space:normal!important;max-width:none!important;overflow:visible!important;text-overflow:clip!important;font-size:13px;min-height:0}
  .sx.cardize td:last-child{border-bottom:0}
  /* A pílula de status é nowrap (.bd1) e o rótulo do cartão já toma 42% da
     linha: "AUTORIZADO / AG. INSCRIÇÃO" pede 187px onde sobram ~158 e vaza
     para fora do cartão — sem barra de rolagem, porque o body é overflow-x:clip.
     Mesma correção que o .mc-st .bd1 já usa no modal de curso. */
  .sx.cardize td .bd1{white-space:normal;min-width:0;line-height:1.3;text-align:right}
  .sx.cardize td[data-label]::before{content:attr(data-label);font-weight:600;color:var(--sb);text-align:left;flex:0 0 42%;white-space:normal;font-size:12px}
  .sx.cardize td.ac{justify-content:flex-end;flex-wrap:wrap;gap:6px;padding-top:10px}
  .sx.cardize td.ac::before{display:none}
  .sx.cardize td.ac>*+*{margin-left:0}
  .sx.cardize tr.cardfull td{display:block;text-align:left;border-bottom:0;padding:6px 0}
  .sx.cardize tr.cardfull td::before{display:none}
  .sx.cardize tr.cardfull{background:var(--bg)}
}
/* ===== Cards DESENHADOS p/ Vendas e Recebimentos no celular (saleCards) ===== */
.mcards{display:none}
@media(max-width:640px){
  .mcards{display:block}
  .mcard{background:var(--wh);border:1px solid var(--bd);border-radius:14px;padding:14px 15px;margin:0 0 11px;box-shadow:0 1px 3px rgba(0,0,0,.05)}
  .mcard.clk{cursor:pointer}
  .mcard.clk:active{background:var(--wh2,var(--bg))}
  .mc-title{font-size:15px;font-weight:700;color:var(--tx);line-height:1.32}
  .mc-title b{font-weight:700}
  .mc-title span{font-weight:400;color:var(--sb)}
  .mc-sub{font-size:12px;color:var(--sb);margin-top:3px;line-height:1.3}
  .mc-mid{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px 10px;margin-top:11px}
  .mc-amt{font-size:21px;font-weight:800;color:var(--tx);letter-spacing:-.3px;white-space:nowrap}
  .mc-amt b{font-weight:800}
  .mc-st{flex:0 1 auto;text-align:right}
  .mc-st .bd1{white-space:normal;text-align:center;line-height:1.25;max-width:175px}
  .mc-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:12px;padding-top:11px;border-top:1px solid var(--bd)}
  .mc-meta{font-size:12px;color:var(--sb);line-height:1.35}
  .mc-act{flex:0 0 auto;display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
  .mc-act .b{margin:0}
  .mc-act .bsm{padding:8px 15px;font-size:13px}
  .mcard-exp{background:var(--bg);border:1px solid var(--bd);border-radius:10px;padding:12px;margin:-4px 0 11px;font-size:12px;overflow-x:auto}
  .mcard-exp .sx{margin:0}
}
@media(max-width:430px){
  .cds{grid-template-columns:1fr 1fr;gap:8px}
  .cd{padding:12px 14px}.cv{font-size:20px}
  .md{grid-template-columns:1fr 1fr;gap:6px;padding:10px 12px;border-radius:10px}
  .ms{padding:4px 6px}
  .mv{font-size:15px}
  .ml{font-size:9px;letter-spacing:.4px}
  .logo{font-size:15px}
  .logo.mk b{font-size:15px}
  .logo.mk small{display:none}
  .bn{padding:7px 11px;font-size:12px}
  .dh{padding:16px}.dh h2{font-size:17px}
  .lx{padding:26px 22px}
  .p{padding:14px 12px;border-radius:10px}
  .ph .b,.ph button{width:100%;text-align:center}
  .fl input,.fl select{font-size:14px;padding:10px 12px;min-height:44px;border-radius:8px}
  .fl .b,.fl button{min-height:44px;font-size:13px}
  .mcard{padding:12px 13px;border-radius:12px}
  .mc-title{font-size:14px}
  .mc-amt{font-size:19px}
  .mc-sub{font-size:11.5px}
  .mc-meta{font-size:11.5px}
  .mc-act .bsm{padding:8px 12px;font-size:12px}
  .mc-foot{margin-top:10px;padding-top:10px}
}
/* ===== Métricas — glassmorphism ===== */
.met{padding:20px 24px}
.met-hdr{display:flex;justify-content:space-between;align-items:center;margin-bottom:22px;flex-wrap:wrap;gap:12px}
.met-ttl{font-size:21px;font-weight:800;letter-spacing:-.4px}
.met-sub{font-size:12px;color:var(--sb);margin-top:3px;font-weight:400}
.met-pills{display:flex;gap:0;border-radius:10px;overflow:hidden;border:1px solid var(--bd);background:var(--wh)}
.met-pills button{background:transparent;color:var(--sb);border:0;padding:7px 16px;font-size:12px;font-weight:600;cursor:pointer;transition:all .18s ease;font-family:inherit}
.met-pills button.on{background:var(--az);color:#fff;box-shadow:0 2px 8px rgba(10,61,143,.25)}
.met-pills button:hover:not(.on){background:rgba(10,61,143,.06);color:var(--az)}
.met-g{background:rgba(255,255,255,.62);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border:1px solid rgba(255,255,255,.55);border-radius:16px;box-shadow:0 4px 24px rgba(0,0,0,.04),0 1px 2px rgba(0,0,0,.02);padding:18px 20px;transition:box-shadow .22s ease,transform .22s ease,border-color .22s ease}
.met-g:hover{box-shadow:0 8px 32px rgba(0,0,0,.07),0 2px 4px rgba(0,0,0,.03);transform:translateY(-2px);border-color:rgba(10,61,143,.12)}
.met-hero{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:16px}
.met-hero .met-g{text-align:center;padding:20px 14px;position:relative;overflow:hidden}
.met-hero .met-g::before{content:'';position:absolute;top:-30%;right:-30%;width:80%;height:80%;background:radial-gradient(circle,rgba(10,61,143,.04) 0%,transparent 70%);pointer-events:none}
.met-ico{width:40px;height:40px;border-radius:12px;display:inline-flex;align-items:center;justify-content:center;margin:0 auto 10px;color:var(--az);background:rgba(10,61,143,.08)}
.met-ico svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.met-ico.green{color:var(--vd);background:rgba(22,163,74,.08)}.met-ico.amber{color:var(--am);background:rgba(202,138,4,.08)}
.met-lbl{font-size:10px;text-transform:uppercase;letter-spacing:.7px;color:var(--sb);font-weight:700;margin-bottom:6px}
.met-val{font-size:26px;font-weight:800;color:var(--az);font-variant-numeric:tabular-nums;letter-spacing:-.5px}
.met-val.g{color:var(--vd)}.met-val.y{color:var(--am)}.met-val.r{color:var(--vm)}
.met-sections{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:16px}
.met-sec-ttl{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--sb);font-weight:700;margin-bottom:14px;display:flex;align-items:center;gap:7px}
.met-sec-ttl svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.met-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(85px,1fr));gap:8px}
.met-tile{text-align:center;padding:12px 6px 10px;background:rgba(255,255,255,.35);border-radius:10px;border:1px solid rgba(255,255,255,.35);transition:background .18s ease,border-color .18s ease}
.met-tile:hover{background:rgba(255,255,255,.55);border-color:rgba(10,61,143,.1)}
.met-tile .met-lbl{font-size:9px;letter-spacing:.4px;margin-bottom:4px}
.met-tile .met-val{font-size:17px;font-weight:700;color:var(--tx)}
.met-tile .met-val.g{color:var(--vd)}.met-tile .met-val.r{color:var(--vm)}
.met-tbl .met-sec-ttl{margin-bottom:12px}
.met-tbl table{width:100%;border-collapse:separate;border-spacing:0;font-size:12px}
.met-tbl thead th{background:rgba(10,61,143,.06);color:var(--az);padding:8px 6px;font-size:10px;text-align:left;font-weight:700;text-transform:uppercase;letter-spacing:.3px;border-bottom:2px solid rgba(10,61,143,.1)}
.met-tbl thead th:first-child{border-radius:8px 0 0 0}.met-tbl thead th:last-child{border-radius:0 8px 0 0}
.met-tbl tbody td{padding:7px 6px;border-bottom:1px solid rgba(0,0,0,.04);font-variant-numeric:tabular-nums}
.met-tbl tbody tr:hover{background:rgba(10,61,143,.03)}
.met-tbl tbody tr:last-child td{border-bottom:0}
.met-badge{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;color:#fff;font-weight:800;font-size:12px;box-shadow:0 2px 6px rgba(0,0,0,.15)}
.met-badge.gold{background:linear-gradient(135deg,#F59E0B,#D97706)}.met-badge.silver{background:linear-gradient(135deg,#9CA3AF,#6B7280)}.met-badge.bronze{background:linear-gradient(135deg,#D97706,#92400E)}
.met-note{font-size:11px;color:var(--sb);margin-top:-8px;margin-bottom:16px;font-style:italic}
@media(max-width:880px){
  .met{padding:16px}
  .met-hero{grid-template-columns:1fr 1fr;gap:10px}
  .met-hero .met-val{font-size:20px}
  .met-sections{grid-template-columns:1fr;gap:12px}
  .met-tiles{grid-template-columns:repeat(auto-fit,minmax(75px,1fr))}
}
@media(max-width:430px){
  .met-hero{grid-template-columns:1fr 1fr;gap:8px}
  .met-hero .met-g{padding:14px 10px}
  .met-hero .met-val{font-size:18px}
  .met-ico{width:30px;height:30px;margin-bottom:6px}
  .met-ico svg{width:16px;height:16px}
}
/* ===== Modo noturno ===== */
[data-theme="dark"]{
  color-scheme:dark;
  --az:#60a5fa;--az2:#3b82f6;--azs:#1e3a5f;
  --bg:#0f172a;--bd:#1e293b;--tx:#e2e8f0;--sb:#94a3b8;
  --vd:#4ade80;--vdb:#052e16;--am:#fbbf24;--amb:#451a03;
  --vm:#f87171;--vmb:#450a0a;--lj:#fb923c;--ljb:#431407;
  --rx:#a78bfa;--rxb:#2e1065;--pk:#f9a8d4;--pkb:#4a0e2b;
  --wh:#1e293b;--wh2:#0d1525;--wh3:#273549;
  --lnsel:#2f63b8;--lnsurf:#273549;--lnbd:#2d4a6b
}
[data-theme="dark"] body{background:var(--bg)}
[data-theme="dark"] .lndiag{background:#0b1f3f;border:1px solid #21406e}
[data-theme="dark"] .lncard.todo{border-color:#3a4a63}
[data-theme="dark"] .lnanchor{background:#0f2e22;border-color:#1f5f43}
[data-theme="dark"] .cd{background:var(--wh3);border-color:#2d4a6b}
[data-theme="dark"] .md{background:linear-gradient(135deg,var(--azs) 0%,var(--wh3) 100%)}
[data-theme="dark"] .cc{background:var(--wh3)}
[data-theme="dark"] .ccs{border-top-color:#2d4a6b}
[data-theme="dark"] .cca{background:var(--wh2)}
[data-theme="dark"] .p{border-color:#2d4a6b}
/* Métricas glass — dark */
[data-theme="dark"] .met-ico{background:rgba(96,165,250,.1)}
[data-theme="dark"] .met-ico.green{background:rgba(74,222,128,.1)}
[data-theme="dark"] .met-g{background:rgba(30,41,59,.5);border-color:rgba(255,255,255,.07);box-shadow:0 4px 24px rgba(0,0,0,.25),0 1px 3px rgba(0,0,0,.18)}
[data-theme="dark"] .met-g:hover{box-shadow:0 8px 32px rgba(0,0,0,.35);border-color:rgba(96,165,250,.15)}
[data-theme="dark"] .met-g::before{background:radial-gradient(circle,rgba(96,165,250,.06) 0%,transparent 70%)}
[data-theme="dark"] .met-pills{border-color:rgba(255,255,255,.1);background:rgba(255,255,255,.04)}
[data-theme="dark"] .met-pills button:hover:not(.on){background:rgba(255,255,255,.08);color:var(--az)}
[data-theme="dark"] .met-pills button.on{box-shadow:0 2px 8px rgba(96,165,250,.3)}
[data-theme="dark"] .met-tile{background:rgba(255,255,255,.04);border-color:rgba(255,255,255,.06)}
[data-theme="dark"] .met-tile:hover{background:rgba(255,255,255,.08);border-color:rgba(96,165,250,.12)}
[data-theme="dark"] .met-tbl thead th{background:rgba(96,165,250,.08);border-bottom-color:rgba(96,165,250,.15)}
[data-theme="dark"] .met-tbl tbody td{border-bottom-color:rgba(255,255,255,.04)}
[data-theme="dark"] .met-tbl tbody tr:hover{background:rgba(96,165,250,.06)}
/* Modal */
[data-theme="dark"] .mb{background:rgba(0,0,0,.72)}
[data-theme="dark"] .m{background:#172033;border:1px solid #2a3f5a;color:var(--tx)}
[data-theme="dark"] .mt{color:var(--az)}
[data-theme="dark"] .fg label{color:var(--tx)}
[data-theme="dark"] .fg input:not([type=checkbox]):not([type=radio]),
[data-theme="dark"] .fg select,
[data-theme="dark"] .fg textarea{background:#1e293b!important;border-color:#2a3f5a!important;color:var(--tx)!important}
[data-theme="dark"] .fg input:focus,
[data-theme="dark"] .fg select:focus,
[data-theme="dark"] .fg textarea:focus{border-color:var(--az)!important;box-shadow:0 0 0 3px rgba(96,165,250,.18)!important}
[data-theme="dark"] .ma .bs{border-color:#2a3f5a;color:var(--tx)}
[data-theme="dark"] .lx{background:#172033;border:1px solid #2a3f5a}
[data-theme="dark"] header{background:#081127;background-image:radial-gradient(rgba(255,255,255,.05) 1px,transparent 1px);background-size:22px 22px;box-shadow:0 2px 10px rgba(0,0,0,.5)}
[data-theme="dark"] .lb{background:linear-gradient(135deg,#0c2a5e 0%,#1e3a8a 100%)}
[data-theme="dark"] .cct{background:linear-gradient(135deg,#0c2a5e 0%,#1e3a8a 100%)}
[data-theme="dark"] .dh{background:linear-gradient(135deg,#0c2a5e 0%,#1e3a8a 100%)}
[data-theme="dark"] .cc.cc-r .cct{background:linear-gradient(135deg,#2d3748 0%,#4a5568 100%)}
[data-theme="dark"] .cc:hover{box-shadow:0 8px 24px rgba(0,0,0,.4)}
[data-theme="dark"] .cd:hover{box-shadow:0 8px 22px rgba(0,0,0,.35)}
[data-theme="dark"] .cfi{background:#1e3a5f;color:var(--az)}
[data-theme="dark"] .cfi.dg{background:#450a0a;color:var(--vm)}
[data-theme="dark"] .b-c{background:#0c2d33;color:#67e8f9}
[data-theme="dark"] .b-pk{background:#4a0e2b;color:#f9a8d4}
[data-theme="dark"] td{border-bottom:1px solid #2a3f5a}
[data-theme="dark"] th{background:var(--azs);border-bottom:1px solid #2a3f5a}
[data-theme="dark"] tr:last-child td{border-bottom-color:transparent}
[data-theme="dark"] .neg-acc td{border-bottom-color:#2a3f5a}
[data-theme="dark"] .neg-acc summary{background:var(--azs)}
[data-theme="dark"] .spin{border-color:var(--azs);border-top-color:var(--az)}
[data-theme="dark"] .toast{box-shadow:0 8px 28px rgba(0,0,0,.5)}
/* Form elements — dark bg explícito para evitar branco do browser */
[data-theme="dark"] input:not([type=button]):not([type=submit]):not([type=checkbox]):not([type=radio]),
[data-theme="dark"] select,
[data-theme="dark"] textarea{background:var(--wh)!important;color:var(--tx)!important;border-color:var(--bd)!important;color-scheme:dark}
/* Botões que usam input[type] — mantém cor própria */
[data-theme="dark"] input[type=button],[data-theme="dark"] input[type=submit]{background:var(--az)!important;color:#fff!important}
/* Nav lateral — dark */
[data-theme="dark"] .ct.side .nv{background:rgba(255,255,255,.035);border-color:rgba(255,255,255,.08);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:0 4px 24px -6px rgba(0,0,0,.35)}
[data-theme="dark"] .ct.side .nv button{color:#a2b5cf}
[data-theme="dark"] .ct.side .nv button:hover{background:rgba(56,189,248,.08);color:#e2ecfa}
[data-theme="dark"] .ct.side .nv button.on{color:#fff;background:linear-gradient(135deg,rgba(56,189,248,.16),rgba(14,165,233,.10));border-left-color:#38bdf8;box-shadow:inset 0 0 0 1px rgba(56,189,248,.2)}
[data-theme="dark"] .navtog:hover{background:rgba(56,189,248,.1);color:#38bdf8}
/* Cabeçalhos coloridos de grupo — modo noite */
[data-theme="dark"] .gh-diretor .ng-ico{background:rgba(34,211,238,.14);color:#67e8f9;box-shadow:0 2px 8px -2px rgba(34,211,238,.25)}
[data-theme="dark"] .gh-diretor .ng-lbl{color:#67e8f9}
[data-theme="dark"] .gh-comercial .ng-ico{background:rgba(37,99,235,.2);color:#7fb3f4;box-shadow:0 2px 8px -2px rgba(37,99,235,.3)}
[data-theme="dark"] .gh-comercial .ng-lbl{color:#7fb3f4}
[data-theme="dark"] .gh-eventos .ng-ico{background:rgba(251,191,36,.12);color:#fbbf24;box-shadow:0 2px 8px -2px rgba(251,191,36,.25)}
[data-theme="dark"] .gh-eventos .ng-lbl{color:#fbbf24}
[data-theme="dark"] .gh-incompany .ng-ico{background:rgba(129,140,248,.16);color:#a5b4fc;box-shadow:0 2px 8px -2px rgba(129,140,248,.28)}
[data-theme="dark"] .gh-incompany .ng-lbl{color:#a5b4fc}
[data-theme="dark"] .gh-financeiro .ng-ico{background:rgba(74,222,128,.12);color:#4ade80;box-shadow:0 2px 8px -2px rgba(74,222,128,.25)}
[data-theme="dark"] .gh-financeiro .ng-lbl{color:#4ade80}
[data-theme="dark"] .gh-time .ng-ico{background:rgba(244,114,182,.14);color:#f9a8d4;box-shadow:0 2px 8px -2px rgba(244,114,182,.25)}
[data-theme="dark"] .gh-time .ng-lbl{color:#f9a8d4}
[data-theme="dark"] .gh-cadastros .ng-ico{background:rgba(167,139,250,.14);color:#c4b5fd;box-shadow:0 2px 8px -2px rgba(167,139,250,.25)}
[data-theme="dark"] .gh-cadastros .ng-lbl{color:#c4b5fd}
[data-theme="dark"] .gh-sistema .ng-ico{background:rgba(148,163,184,.12);color:#9ca3af;box-shadow:0 2px 8px -2px rgba(148,163,184,.15)}
[data-theme="dark"] .gh-sistema .ng-lbl{color:#9ca3af}
/* Tabs horizontais (.lts) */
[data-theme="dark"] .lts{border-bottom-color:#2d4a6b}
[data-theme="dark"] .lts button{color:var(--tx)}
[data-theme="dark"] .lts button.on{color:var(--az);border-bottom-color:var(--az)}
/* Tabs topo sem sidebar (.nv) */
[data-theme="dark"] .nv{border-bottom-color:#2d4a6b}
[data-theme="dark"] .nv button{color:var(--tx)}
[data-theme="dark"] .nv button:hover{color:var(--az)}
/* Filter chips */
[data-theme="dark"] .cfl button{color:var(--tx);border-color:#2d4a6b}
[data-theme="dark"] .cfl button .n{background:var(--azs);color:var(--sb)}
/* Secondary buttons */
[data-theme="dark"] .bs{border-color:var(--az);color:var(--az)}
[data-theme="dark"] .bs:hover{background:var(--azs)}
[data-theme="dark"] .bg2,[data-theme="dark"] .b.bg2{background:var(--wh3);border-color:#3a4f6b;color:#cbd5e1}
/* No escuro `--vm` é claro (#f87171) — branco em cima reprova, como no `--az`.
   `--vmb` (#450a0a) é o tom escuro que a própria paleta já traz para ele. */
[data-theme="dark"] .b.bd{color:var(--vmb)}
[data-theme="dark"] .b.bd:hover{background:#ef4444;color:var(--vmb)}
[data-theme="dark"] .bg2:hover{background:#324158;border-color:var(--az2);color:#fff}
/* Tags e info box */
[data-theme="dark"] .fxh{background:var(--azs);border-left-color:var(--az);color:var(--az)}
[data-theme="dark"] .tg{background:var(--azs);color:var(--az)}
/* Table extras */
[data-theme="dark"] th{color:var(--az)}
[data-theme="dark"] .pt-h{background:var(--azs)}
[data-theme="dark"] .pt-h label{color:var(--az)}
[data-theme="dark"] .pt-t th{background:var(--azs);color:var(--az)}
[data-theme="dark"] .thm-btn svg{display:none}
[data-theme="dark"] .thm-btn .ic-sun{display:block}
/* Dark mode: fix filter input contrast */
[data-theme="dark"] .fl input,
[data-theme="dark"] .fl select{border-color:#334155!important}
/* Leads stat cards */
.ld-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:18px}
.ld-stat{background:var(--wh);border:1px solid var(--lnbd);border-radius:10px;padding:14px 16px;position:relative;overflow:hidden}
.ld-stat::before{content:'';position:absolute;left:0;top:8px;bottom:8px;width:3px;border-radius:2px}
.ld-stat:nth-child(1)::before{background:var(--az)}
.ld-stat:nth-child(2)::before{background:var(--rx)}
.ld-stat:nth-child(3)::before{background:var(--vd)}
.ld-stat:nth-child(4)::before{background:var(--am)}
.ld-sl{font-size:10px;color:var(--sb);text-transform:uppercase;letter-spacing:.5px;font-weight:600;margin-bottom:4px}
.ld-sv{font-size:22px;font-weight:700}
.ld-sv.az{color:var(--az)}.ld-sv.rx{color:var(--rx)}.ld-sv.vd{color:var(--vd)}.ld-sv.am{color:var(--am)}
/* Leads column filter row */
.ld-fr th{padding:4px 6px!important;background:transparent!important;border-bottom:1px solid var(--bd)!important}
.ld-fr select{padding:4px 6px;border:1px solid var(--bd);border-radius:5px;font-size:11px;background:var(--wh);color:var(--tx);font-family:inherit;width:100%;cursor:pointer}
[data-theme="dark"] .ld-fr select{border-color:#334155!important}
@media(max-width:640px){.ld-stats{grid-template-columns:1fr 1fr}.ld-fr{display:none!important}}
/* Botão toggle */
.thm-btn{background:0;border:0;cursor:pointer;color:#fff;padding:6px;border-radius:6px;display:flex;align-items:center;opacity:.85}
.thm-btn:hover{opacity:1;background:rgba(255,255,255,.12)}
.thm-btn svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.thm-btn .ic-sun{display:none}
/* Autocomplete órgão no form de venda */
.cl-sug{position:absolute;top:100%;left:0;right:0;background:var(--wh);border:1px solid var(--bd);border-radius:8px;box-shadow:0 4px 16px rgba(0,0,0,.12);z-index:90;max-height:220px;overflow-y:auto}
.cl-sug-item{padding:8px 12px;cursor:pointer;font-size:13px;border-bottom:1px solid var(--bg)}
.cl-sug-item:last-child{border-bottom:0}
.cl-sug-item:hover{background:var(--azs)}

/* ===== Painel do Líder — Command Center (bento) ===== */
:root{
  --lb-ground:radial-gradient(1000px 560px at 82% -10%,rgba(14,165,233,.10),transparent 60%),radial-gradient(820px 520px at 8% 2%,rgba(124,110,255,.07),transparent 55%),linear-gradient(180deg,#eef2f9,#f6f8fc 55%,#f2f5fb);
  --lb-panel-bg:#fff;--lb-panel-bd:#e3e8f1;--lb-panel-shadow:0 2px 10px rgba(20,40,80,.05);--lb-blur:none;
  --lb-tile:#f4f7fc;--lb-tile-bd:#e5ebf4;
  --lb-txt:#182338;--lb-muted:#5a6a86;--lb-faint:#657594;--lb-stroke:#e3e8f1;
  --lb-num-a:#12213c;--lb-num-b:#33507f;--lb-numam-a:#8a5a00;--lb-numam-b:#c98a10;--lb-numgn-a:#0b7a4e;--lb-numgn-b:#1aa66a;
  --lb-cy:#0b77a8;--lb-am:#9c6907;--lb-amtile:rgba(200,138,16,.1);--lb-ambd:rgba(200,138,16,.4);
  --lb-rx:#6d28d9;--lb-rxbg:rgba(109,40,217,.12);
  --lb-gn:#0f844f;--lb-gnbg:rgba(22,163,74,.12);--lb-gnbd:rgba(22,163,74,.32);--lb-vm:#dc2626;--lb-vmbg:rgba(220,38,38,.12);
  --lb-up-bg:rgba(22,163,74,.13);--lb-up-tx:#12864f;--lb-down-bg:rgba(220,38,38,.12);--lb-down-tx:#c0392b;
  --lb-flat-bg:rgba(120,138,166,.15);--lb-flat-tx:#5a6a86;--lb-att-tx:#9a6a04;--lb-attbg:rgba(202,138,4,.14);
  --lb-pp:#7c3aed;--lb-ppbg:rgba(124,58,237,.09);--lb-ppbd:rgba(124,58,237,.28);--lb-numpp-a:#5b21b6;--lb-numpp-b:#8b5cf6;
  --lb-tl:#0b8177;--lb-tlbg:rgba(13,148,136,.09);--lb-tlbd:rgba(13,148,136,.28);--lb-numtl-a:#0f766e;--lb-numtl-b:#14b8a6;
  --lb-au:#b45309;--lb-aubg:rgba(180,83,9,.09);--lb-aubd:rgba(180,83,9,.28);--lb-numau-a:#92400e;--lb-numau-b:#d97706;
  --lb-numcy-a:#0369a1;--lb-numcy-b:#0ea5e9;
}
[data-theme="dark"]{
  --lb-ground:radial-gradient(1100px 600px at 78% -8%,rgba(56,189,248,.16),transparent 60%),radial-gradient(900px 620px at 12% 4%,rgba(124,110,255,.12),transparent 55%),linear-gradient(180deg,#060a15,#0a1122 45%,#0e1730);
  --lb-panel-bg:rgba(255,255,255,.045);--lb-panel-bd:rgba(255,255,255,.10);--lb-panel-shadow:none;--lb-blur:blur(9px);
  --lb-tile:rgba(255,255,255,.035);--lb-tile-bd:rgba(255,255,255,.09);
  --lb-txt:#eaf1fc;--lb-muted:#a2b2ce;--lb-faint:#8091ad;--lb-stroke:rgba(255,255,255,.10);
  --lb-num-a:#fff;--lb-num-b:#a9c7ec;--lb-numam-a:#fff3d6;--lb-numam-b:#f5b544;--lb-numgn-a:#eafff6;--lb-numgn-b:#57e0a8;
  --lb-cy:#38bdf8;--lb-am:#f5b544;--lb-amtile:rgba(245,181,68,.1);--lb-ambd:rgba(245,181,68,.35);
  --lb-rx:#c4b5fd;--lb-rxbg:rgba(196,181,253,.14);
  --lb-gn:#34d399;--lb-gnbg:rgba(52,211,153,.10);--lb-gnbd:rgba(52,211,153,.3);--lb-vm:#f87171;--lb-vmbg:rgba(248,113,113,.14);
  --lb-up-bg:rgba(52,211,153,.16);--lb-up-tx:#34d399;--lb-down-bg:rgba(248,113,113,.16);--lb-down-tx:#f87171;
  --lb-flat-bg:rgba(148,163,184,.16);--lb-flat-tx:#8091ad;--lb-att-tx:#f5b544;--lb-attbg:rgba(245,181,68,.15);
  --lb-pp:#a78bfa;--lb-ppbg:rgba(167,139,250,.10);--lb-ppbd:rgba(167,139,250,.30);--lb-numpp-a:#ede9fe;--lb-numpp-b:#a78bfa;
  --lb-tl:#2dd4bf;--lb-tlbg:rgba(45,212,191,.10);--lb-tlbd:rgba(45,212,191,.28);--lb-numtl-a:#ccfbf1;--lb-numtl-b:#2dd4bf;
  --lb-au:#fbbf24;--lb-aubg:rgba(251,191,36,.10);--lb-aubd:rgba(251,191,36,.28);--lb-numau-a:#fef3c7;--lb-numau-b:#fbbf24;
  --lb-numcy-a:#e0f2fe;--lb-numcy-b:#38bdf8;
}
@keyframes lbFadeUp{from{opacity:0;transform:translateY(15px)}to{opacity:1;transform:none}}
@keyframes lbGrow{from{height:0}to{height:var(--h)}}
.lb-cc{background:var(--lb-ground);border-radius:16px;padding:22px 20px 28px;color:var(--lb-txt)}
.lb-anim{opacity:0;animation:lbFadeUp .5s cubic-bezier(.2,.75,.2,1) forwards}
@media(prefers-reduced-motion:reduce){.lb-anim{animation:none;opacity:1}.lb-barw>i{animation:none!important;height:var(--h)!important}}
.lb-top{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;margin-bottom:6px}
.lb-eye{font-size:10px;font-weight:800;letter-spacing:1.5px;text-transform:uppercase;color:var(--lb-cy)}
.lb-h1{font-size:26px;font-weight:900;letter-spacing:-.7px;margin:4px 0 0;line-height:1.06;color:var(--lb-txt)}
.lb-lead{font-size:12.5px;color:var(--lb-muted);margin:10px 0 16px;max-width:74ch;line-height:1.5}
.lb-lead b{color:var(--lb-txt)}
.lb-months{display:inline-flex;gap:3px;background:var(--lb-panel-bg);border:1px solid var(--lb-panel-bd);border-radius:12px;padding:4px;flex-wrap:wrap;box-shadow:var(--lb-panel-shadow)}
.lb-mbtn{font-size:11.5px;padding:6px 12px;border:0;border-radius:8px;cursor:pointer;background:transparent;color:var(--lb-muted);font-weight:600}
.lb-mbtn.on{background:linear-gradient(135deg,#38bdf8,#0ea5e9);color:#04121f;font-weight:800}
.lb-bento{display:grid;grid-template-columns:repeat(12,1fr);gap:13px}
.lb-panel{background:var(--lb-panel-bg);border:1px solid var(--lb-panel-bd);border-radius:19px;padding:19px;box-shadow:var(--lb-panel-shadow);backdrop-filter:var(--lb-blur);-webkit-backdrop-filter:var(--lb-blur)}
.lb-c7{grid-column:span 7}.lb-c5{grid-column:span 5}.lb-c12{grid-column:span 12}
@media(max-width:820px){.lb-c7,.lb-c5{grid-column:span 12}}
.lb-diag{position:relative;overflow:hidden;border:1px solid #24467a;background:linear-gradient(140deg,#0d2144,#0a1a35),radial-gradient(560px 300px at 92% 0,rgba(245,181,68,.16),transparent 60%)}
.lb-diageye{font-size:10.5px;font-weight:800;letter-spacing:1.2px;text-transform:uppercase;color:#f5b544}
.lb-diaghead{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:13px;font-size:19px;font-weight:700;color:#fff}
.lb-diagbadge{font-size:18px;font-weight:900;padding:4px 14px;border-radius:10px;letter-spacing:.5px;box-shadow:0 6px 20px -6px rgba(0,0,0,.4)}
.lb-diagt{font-size:12.5px;line-height:1.6;color:#cfdcf0;margin:12px 0 0;max-width:72ch}
.lb-diagt b{color:#fff}
.lb-money{position:relative;overflow:hidden;display:flex;flex-direction:column;justify-content:center;border:1px solid var(--lb-gnbd);background:linear-gradient(150deg,var(--lb-gnbg),var(--lb-panel-bg)),radial-gradient(360px 200px at 100% 0,var(--lb-gnbg),transparent 60%)}
.lb-big{font-size:38px;font-weight:900;letter-spacing:-1.4px;line-height:1;font-variant-numeric:tabular-nums;background:linear-gradient(180deg,var(--lb-numgn-a),var(--lb-numgn-b));-webkit-background-clip:text;background-clip:text;color:transparent}
.lb-shead{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:15px}
.lb-tn{width:29px;height:29px;border-radius:10px;color:#04121f;font-size:13px;font-weight:900;display:flex;align-items:center;justify-content:center;flex:0 0 auto}
.lb-th{font-size:14.5px;font-weight:800;letter-spacing:-.2px;color:var(--lb-txt)}
.lb-snote{font-size:11px;color:var(--lb-faint)}
.lb-rbadge{font-size:9.5px;font-weight:800;letter-spacing:.6px;text-transform:uppercase;padding:3px 9px;border-radius:7px;color:var(--lb-gn);background:var(--lb-gnbg);border:1px solid var(--lb-gnbd)}
.lb-rbadge.todo{color:var(--lb-faint);background:var(--lb-flat-bg);border-color:var(--lb-stroke)}
.lb-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(158px,1fr));gap:11px}
.lb-tile{background:var(--lb-tile);border:1px solid var(--lb-tile-bd);border-radius:14px;padding:14px 15px;transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease}
.lb-tile:hover{transform:translateY(-3px);border-color:var(--lb-cy);box-shadow:0 12px 28px -14px rgba(14,165,233,.4)}
.lb-tile.todo{border-style:dashed;opacity:.9}
.lb-lab{font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--lb-faint);display:flex;align-items:center;gap:6px}
.lb-dot{width:6px;height:6px;border-radius:50%;flex:0 0 auto}
.lb-num{font-size:26px;font-weight:900;letter-spacing:-.8px;line-height:1.04;font-variant-numeric:tabular-nums;background:linear-gradient(180deg,var(--lb-num-a),var(--lb-num-b));-webkit-background-clip:text;background-clip:text;color:transparent}
.lb-krow{display:flex;align-items:baseline;gap:8px;margin-top:8px;flex-wrap:wrap}
.lb-sub{font-size:11px;color:var(--lb-faint);margin-top:5px}
.lb-sub b{color:var(--lb-txt)}
.lb-chip{font-size:11px;font-weight:800;padding:2px 8px;border-radius:999px;white-space:nowrap}
.lb-chip.up{background:var(--lb-up-bg);color:var(--lb-up-tx)}
.lb-chip.down{background:var(--lb-down-bg);color:var(--lb-down-tx)}
.lb-chip.flat{background:var(--lb-flat-bg);color:var(--lb-flat-tx)}
.lb-divlab{display:flex;align-items:center;gap:10px;margin:17px 0 11px;font-size:10px;font-weight:800;letter-spacing:.7px;text-transform:uppercase;color:var(--lb-faint)}
.lb-divlab::after{content:"";flex:1;height:1px;background:var(--lb-stroke)}
.lb-valve{display:flex;align-items:center;gap:11px;background:var(--lb-tile);border:1px solid var(--lb-tile-bd);border-radius:13px;padding:11px 14px}
.lb-vb{width:3px;align-self:stretch;border-radius:3px;flex:0 0 auto}
.lb-vt{font-size:12.5px;font-weight:700;color:var(--lb-txt)}
.lb-vstat{margin-left:auto;font-size:9.5px;font-weight:800;letter-spacing:.5px;text-transform:uppercase;padding:3px 9px;border-radius:7px}
.lb-anchor{display:flex;align-items:center;gap:11px;background:var(--lb-gnbg);border:1px solid var(--lb-gnbd);border-radius:13px;padding:11px 14px}
.lb-refresh{margin-left:auto;font-size:11px;font-weight:700;padding:6px 12px;border-radius:9px;cursor:pointer;border:1px solid var(--lb-panel-bd);background:var(--lb-tile);color:var(--lb-txt)}
.lb-refresh.pri{background:linear-gradient(135deg,#38bdf8,#0ea5e9);color:#04121f;border:0}
.lb-bars{display:flex;align-items:flex-end;gap:10px;height:128px;margin-top:4px}
.lb-bar{flex:1;display:flex;flex-direction:column;align-items:center;gap:7px;min-width:0}
.lb-barw{width:100%;height:100px;display:flex;align-items:flex-end}
.lb-barw>i{display:block;width:100%;border-radius:7px 7px 0 0;height:var(--h);animation:lbGrow .85s cubic-bezier(.2,.8,.2,1) forwards}
.lb-barl{font-size:10px;color:var(--lb-faint)}
.lb-rl{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:12px}
.lb-rl li{display:flex;align-items:center;gap:10px}
.lb-rl b{font-weight:600;font-size:12.5px;color:var(--lb-txt)}
.lb-rl .st{margin-left:auto;font-size:11px;color:var(--lb-faint);text-align:right}
/* === Command center scoped overrides for shared classes inside lb-cc === */
.lb-cc .p{background:var(--lb-panel-bg);border:1px solid var(--lb-panel-bd);border-radius:19px;box-shadow:var(--lb-panel-shadow);backdrop-filter:var(--lb-blur);-webkit-backdrop-filter:var(--lb-blur);color:var(--lb-txt);padding:22px}
.lb-cc .pt{color:var(--lb-txt);font-size:22px;font-weight:900;letter-spacing:-.5px;background:linear-gradient(180deg,var(--lb-num-a),var(--lb-num-b));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.lb-cc .ph{margin-bottom:18px}
.lb-cc .ph .b{background:linear-gradient(135deg,#38bdf8,#0ea5e9);color:#04121f;font-weight:700;border:0;border-radius:10px;padding:10px 20px;font-size:13px;box-shadow:0 4px 14px -4px rgba(14,165,233,.45);transition:transform .15s,box-shadow .15s}
.lb-cc .ph .b:hover{transform:translateY(-1px);box-shadow:0 6px 20px -4px rgba(14,165,233,.55)}
.lb-cc .lts{border-bottom:0;display:inline-flex;gap:3px;background:var(--lb-panel-bg);border:1px solid var(--lb-panel-bd);border-radius:12px;padding:4px;margin-bottom:18px;box-shadow:var(--lb-panel-shadow);backdrop-filter:var(--lb-blur);-webkit-backdrop-filter:var(--lb-blur)}
.lb-cc .lts button{flex:none;border:0;border-bottom:0;border-radius:8px;padding:8px 16px;font-weight:600;color:var(--lb-muted);transition:all .18s ease}
.lb-cc .lts button.on{background:linear-gradient(135deg,#38bdf8,#0ea5e9);color:#04121f;font-weight:800;box-shadow:0 2px 8px -2px rgba(14,165,233,.4)}
.lb-cc .lts button:hover:not(.on){color:var(--lb-txt);background:var(--lb-tile)}
/* --- Course / Event cards --- */
.lb-cc .cg{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:16px}
.lb-cc .cc{background:var(--lb-panel-bg);border:1px solid var(--lb-panel-bd);border-radius:19px;box-shadow:var(--lb-panel-shadow);backdrop-filter:var(--lb-blur);-webkit-backdrop-filter:var(--lb-blur);overflow:hidden;transition:transform .22s cubic-bezier(.2,.75,.2,1),border-color .22s,box-shadow .22s;opacity:0;animation:lbFadeUp .5s cubic-bezier(.2,.75,.2,1) forwards}
.lb-cc .cc:nth-child(1){animation-delay:0s}.lb-cc .cc:nth-child(2){animation-delay:.06s}.lb-cc .cc:nth-child(3){animation-delay:.12s}.lb-cc .cc:nth-child(4){animation-delay:.18s}.lb-cc .cc:nth-child(5){animation-delay:.24s}.lb-cc .cc:nth-child(6){animation-delay:.3s}.lb-cc .cc:nth-child(7){animation-delay:.36s}.lb-cc .cc:nth-child(8){animation-delay:.42s}
.lb-cc .cc:hover{transform:translateY(-4px) scale(1.015);border-color:var(--lb-cy);box-shadow:0 16px 40px -12px rgba(14,165,233,.35)}
.lb-cc .cct{background:linear-gradient(140deg,#0a1d39 0%,#0d2d5e 50%,#1e4d8a 100%);border-radius:19px 19px 0 0;padding:16px 18px;position:relative;overflow:hidden}
.lb-cc .cct::after{content:'';position:absolute;top:-30%;right:-10%;width:120px;height:120px;background:radial-gradient(circle,rgba(56,189,248,.18),transparent 70%);pointer-events:none}
.lb-cc .cct .ccd{font-size:14px;font-weight:700;letter-spacing:-.01em}
.lb-cc .cct .ccl{font-size:10px;letter-spacing:.08em;text-transform:uppercase;opacity:.75}
.lb-cc .cc.cc-r .cct{background:linear-gradient(140deg,#1e293b,#334155,#475569)}
.lb-cc .ccb{padding:16px 18px;flex:1;display:flex;flex-direction:column}
.lb-cc .ccn{font-size:15px;font-weight:700;color:var(--lb-txt);letter-spacing:-.02em;line-height:1.3;margin-bottom:10px}
.lb-cc .ccs{border-top:1px solid var(--lb-stroke);padding-top:12px;margin-top:auto;display:grid;grid-template-columns:repeat(auto-fit,minmax(70px,1fr));gap:8px;color:var(--lb-muted);font-size:11px}
.lb-cc .ccs>div{display:flex;flex-direction:column;gap:2px}
.lb-cc .ccs b{font-size:18px;font-weight:900;letter-spacing:-.5px;display:block;background:linear-gradient(180deg,var(--lb-num-a),var(--lb-num-b));-webkit-background-clip:text;background-clip:text;color:transparent}
.lb-cc .cca{border-top:1px solid var(--lb-stroke);background:var(--lb-tile);padding:12px 18px;display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap}
.lb-cc .cca .b{border-radius:9px;font-size:12px;font-weight:600;padding:6px 14px;transition:all .15s}
/* --- Info hint --- */
.lb-cc .fxh{background:rgba(14,165,233,.08);border-left:3px solid var(--lb-cy);color:var(--lb-muted);padding:12px 16px;border-radius:0 12px 12px 0;margin-bottom:16px;font-size:13px}
.lb-cc .fxh b{color:var(--lb-txt)}
.lb-cc .em{color:var(--lb-faint);font-size:13px;padding:44px 20px}
/* --- KPI summary cards (tarefas) --- */
.lb-cc .cds{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:13px;margin-bottom:20px}
.lb-cc .cds .cd{background:var(--lb-panel-bg);border:1px solid var(--lb-panel-bd);border-radius:16px;padding:18px 20px;box-shadow:var(--lb-panel-shadow);backdrop-filter:var(--lb-blur);-webkit-backdrop-filter:var(--lb-blur);transition:transform .16s,border-color .16s}
.lb-cc .cds .cd:hover{transform:translateY(-2px);border-color:var(--lb-cy)}
.lb-cc .cds .cd .cl{color:var(--lb-faint);font-size:10px;font-weight:700;letter-spacing:.6px}
.lb-cc .cds .cd .cv{font-size:28px;font-weight:900;background:linear-gradient(180deg,var(--lb-num-a),var(--lb-num-b));-webkit-background-clip:text;background-clip:text;color:transparent}
.lb-cc .cds .cd .cs{color:var(--lb-faint)}
.lb-cc .cds .cd.cdx .cdi{border-radius:10px}
/* Fluxo de Caixa: os 4 KPIs são valores de 7 dígitos COM centavos e a grade
   genérica (minmax 180px) dava cartão de 199px — MEDIDO, "R$ 1.511.498,20" a
   28px pede 222px e vinha cortado em 157. Cartão maior resolve sem encolher o
   número, e `nowrap` garante que ele nunca quebre em duas linhas.
   A grade base não foi tocada: o Diagnóstico de Funil também a usa. */
/* `.lb-cc.fx-cc` (0,3,0), não `.fx-cc` (0,2,0): a regra mobile `.lb-cc .cds`
   (0,2,0) vive MAIS ABAIXO no arquivo e venceria por ordem — a grade continuava
   em 2 colunas de 148px no celular com a regra escrita e ignorada. */
.lb-cc.fx-cc .cds{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
.lb-cc.fx-cc .cds .cd .cv{white-space:nowrap;font-size:clamp(21px,2.3vw,28px)}
/* Celular: a grade caía em 2 colunas de 148px e TODOS os valores cortavam — nem
   o piso de 21px cabe em ~108px úteis. Uma coluna dá 279px de espaço interno
   para um número que precisa de ~167px. */
/* `--lb-faint` dá 4,45:1 no escuro — reprova AA por 0,05 num rótulo de 10px.
   `--lb-muted` é o tom que o resto do app já usa quando o texto é pequeno. */
.lb-cc.fx-cc .cds .cd .cl,.lb-cc.fx-cc .cds .cd .cs{color:var(--lb-muted)}
@media(max-width:640px){.lb-cc.fx-cc .cds{grid-template-columns:1fr}}
/* --- Tables (tarefas) --- */
.lb-cc .sx{overflow-x:auto;border-radius:16px;border:1px solid var(--lb-panel-bd);background:var(--lb-panel-bg);backdrop-filter:var(--lb-blur);-webkit-backdrop-filter:var(--lb-blur)}
.lb-cc .sx table{border-collapse:collapse;width:100%}
.lb-cc .sx table th{color:var(--lb-cy);background:var(--lb-tile);border-bottom:1px solid var(--lb-stroke);font-size:10px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;padding:11px 14px}
.lb-cc .sx table td{color:var(--lb-txt);border-bottom:1px solid var(--lb-stroke);padding:12px 14px;font-size:13px}
.lb-cc .sx table tbody tr:last-child td{border-bottom:0}
.lb-cc .sx table tbody tr{transition:background .12s}
.lb-cc .sx table tbody tr:hover{background:var(--lb-tile)}
.lb-cc .sx table select{background:var(--lb-tile);border:1px solid var(--lb-tile-bd);color:var(--lb-txt);border-radius:8px;padding:5px 8px;font-size:12px;font-weight:600}
/* --- Buttons inside lb-cc --- */
.lb-cc .b.bs{border:1px solid var(--lb-panel-bd);color:var(--lb-cy);background:transparent;border-radius:9px;transition:all .15s}
.lb-cc .b.bs:hover{background:rgba(14,165,233,.1);border-color:var(--lb-cy)}
.lb-cc .b.bg2{border:1px solid var(--lb-panel-bd);color:var(--lb-muted);border-radius:9px}
.lb-cc .b.bg2:hover{background:var(--lb-tile);color:var(--lb-txt)}
.lb-cc .b.bd{background:var(--lb-vm);border-radius:9px}
.lb-cc .b.bv{background:linear-gradient(135deg,#22c55e,#16a34a);color:#fff;border:0;border-radius:9px;box-shadow:0 2px 8px -2px rgba(22,197,94,.4)}
.lb-cc .b.bv:hover{filter:brightness(1.08)}
/* --- Back button --- */
.lb-cc .bk{color:var(--lb-cy);font-weight:700}
.lb-cc .bk:hover{color:var(--lb-txt)}
@media(max-width:880px){.lb-cc .cg{grid-template-columns:1fr}.lb-cc .lts{flex-wrap:nowrap;overflow-x:auto}.lb-cc .lts button{white-space:nowrap}}
@media(prefers-reduced-motion:reduce){.lb-cc .cc,.mp-tile{animation:none;opacity:1}}
/* === Meu Desempenho — KPI bento grid === */
.mp-bento{display:grid;grid-template-columns:repeat(4,1fr);gap:13px;margin-bottom:18px}
.mp-tile{background:var(--lb-panel-bg);border:1px solid var(--lb-panel-bd);border-radius:16px;padding:16px 18px;box-shadow:var(--lb-panel-shadow);backdrop-filter:var(--lb-blur);-webkit-backdrop-filter:var(--lb-blur);transition:transform .16s,border-color .16s,box-shadow .16s;opacity:0;animation:lbFadeUp .5s cubic-bezier(.2,.75,.2,1) forwards}
.mp-tile:nth-child(1){animation-delay:0s}.mp-tile:nth-child(2){animation-delay:.05s}.mp-tile:nth-child(3){animation-delay:.1s}.mp-tile:nth-child(4){animation-delay:.15s}.mp-tile:nth-child(5){animation-delay:.2s}.mp-tile:nth-child(6){animation-delay:.25s}.mp-tile:nth-child(7){animation-delay:.3s}.mp-tile:nth-child(8){animation-delay:.35s}
.mp-tile:hover{transform:translateY(-3px);border-color:var(--lb-cy);box-shadow:0 12px 28px -14px rgba(14,165,233,.35)}
.mp-tile.hero{grid-column:span 2;padding:16px 18px;position:relative;overflow:hidden}
.mp-tile.hero::after{content:'';position:absolute;top:-40%;right:-8%;width:140px;height:140px;border-radius:50%;pointer-events:none}
.mp-tile.hero-gn{border-color:var(--lb-gnbd);background:linear-gradient(150deg,var(--lb-gnbg),var(--lb-panel-bg))}.mp-tile.hero-gn::after{background:radial-gradient(circle,var(--lb-gnbg),transparent 70%)}
.mp-tile.hero-am{border-color:rgba(200,138,16,.3);background:linear-gradient(150deg,var(--lb-amtile),var(--lb-panel-bg))}.mp-tile.hero-am::after{background:radial-gradient(circle,var(--lb-amtile),transparent 70%)}
/* Accent tiles — cor por significado */
.mp-tile.t-cy{border-left:3px solid var(--lb-cy);background:linear-gradient(135deg,rgba(14,165,233,.06),var(--lb-panel-bg))}
.mp-tile.t-cy:hover{border-color:var(--lb-cy);box-shadow:0 12px 28px -14px rgba(14,165,233,.30)}
.mp-tile.t-cy .lb-num{background:linear-gradient(180deg,var(--lb-numcy-a),var(--lb-numcy-b));-webkit-background-clip:text;background-clip:text;color:transparent}
.mp-tile.t-gn{border-left:3px solid var(--lb-gn);background:linear-gradient(135deg,var(--lb-gnbg),var(--lb-panel-bg))}
.mp-tile.t-gn:hover{border-color:var(--lb-gn);box-shadow:0 12px 28px -14px rgba(22,163,74,.30)}
.mp-tile.t-gn .lb-num{background:linear-gradient(180deg,var(--lb-numgn-a),var(--lb-numgn-b));-webkit-background-clip:text;background-clip:text;color:transparent}
.mp-tile.t-pp{border-left:3px solid var(--lb-pp);background:linear-gradient(135deg,var(--lb-ppbg),var(--lb-panel-bg))}
.mp-tile.t-pp:hover{border-color:var(--lb-pp);box-shadow:0 12px 28px -14px rgba(124,58,237,.30)}
.mp-tile.t-pp .lb-num{background:linear-gradient(180deg,var(--lb-numpp-a),var(--lb-numpp-b));-webkit-background-clip:text;background-clip:text;color:transparent}
.mp-tile.t-tl{border-left:3px solid var(--lb-tl);background:linear-gradient(135deg,var(--lb-tlbg),var(--lb-panel-bg))}
.mp-tile.t-tl:hover{border-color:var(--lb-tl);box-shadow:0 12px 28px -14px rgba(13,148,136,.30)}
.mp-tile.t-tl .lb-num{background:linear-gradient(180deg,var(--lb-numtl-a),var(--lb-numtl-b));-webkit-background-clip:text;background-clip:text;color:transparent}
.mp-tile.t-au{border-left:3px solid var(--lb-au);background:linear-gradient(135deg,var(--lb-aubg),var(--lb-panel-bg))}
.mp-tile.t-au:hover{border-color:var(--lb-au);box-shadow:0 12px 28px -14px rgba(180,83,9,.30)}
.mp-tile.t-au .lb-num{background:linear-gradient(180deg,var(--lb-numau-a),var(--lb-numau-b));-webkit-background-clip:text;background-clip:text;color:transparent}
/* Records section header */
.mp-rec-hdr{display:flex;align-items:center;gap:10px;margin:20px 0 10px;padding:10px 16px;border-radius:12px;background:linear-gradient(135deg,var(--lb-aubg),transparent 70%);border:1px solid var(--lb-aubd)}
.mp-rec-hdr .lb-divlab{margin:0;color:var(--lb-au)}
.lb-num.mp-big{font-size:26px;letter-spacing:-1px}
/* Barras horizontais uniformes (canal + comissões) */
.gm-bars{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}
.gm-bar-row{display:flex;align-items:center;gap:10px}
.gm-bar-lbl{min-width:34px;font-size:12px;font-weight:600;color:var(--sb);text-align:right;flex-shrink:0}
.gm-bar-lbl.cur{font-weight:800;color:var(--lb-txt)}
.gm-bar-track{flex:1;height:10px;background:var(--azs);border-radius:6px;overflow:hidden}
.gm-bar-track .fill{height:100%;border-radius:6px;transition:width .4s ease-out}
.gm-bar-val{min-width:90px;text-align:right;font-size:13px;font-weight:600;color:var(--sb);flex-shrink:0;font-variant-numeric:tabular-nums}
.gm-bar-val.cur{font-weight:800}
.gm-bar-val.gn{color:#059669}
/* Resumo compacto inline (comissão header) */
.gm-summary{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.gm-summary-item{display:flex;align-items:baseline;gap:6px;padding:8px 14px;border-radius:10px;background:var(--lb-panel-bg);border:1px solid var(--lb-panel-bd);backdrop-filter:var(--lb-blur);-webkit-backdrop-filter:var(--lb-blur);flex:1;min-width:160px}
.gm-summary-label{font-size:11px;color:var(--lb-faint);font-weight:600}
.gm-summary-val{font-size:18px;font-weight:900;letter-spacing:-.5px;font-variant-numeric:tabular-nums}
.lb-num.gn{background:linear-gradient(180deg,var(--lb-numgn-a),var(--lb-numgn-b));-webkit-background-clip:text;background-clip:text;color:transparent}
.lb-num.am{background:linear-gradient(180deg,var(--lb-numam-a),var(--lb-numam-b));-webkit-background-clip:text;background-clip:text;color:transparent}
/* === Meu Desempenho — Gamificação === */
.gm-profile{display:flex;align-items:center;gap:16px;margin-bottom:6px}
.gm-avatar{width:96px;height:96px;border-radius:50%;background:var(--lb-tile);display:flex;align-items:center;justify-content:center;font-size:24px;font-weight:800;color:var(--lb-au);position:relative;flex-shrink:0;overflow:hidden;box-sizing:border-box}
.gm-av-foto{width:100%;height:100%;object-fit:cover;border-radius:50%;object-position:center 20%}
.gm-avatar.ferro{border:2.5px solid #71717a;color:#71717a}
.gm-avatar.bronze{border:2.5px solid #a0826d;color:#a0826d}
.gm-avatar.prata{border:2.5px solid #94a3b8;color:#94a3b8}
.gm-avatar.ouro{border:2.5px solid var(--lb-au);color:var(--lb-au)}
.gm-avatar.diamante{border:2.5px solid var(--lb-pp);color:var(--lb-pp)}
.gm-avatar.mestre{border:2.5px solid #dc2626;color:#dc2626;box-shadow:0 0 12px rgba(220,38,38,.25)}
.gm-lvl{position:absolute;bottom:-5px;right:-8px;font-size:9px;font-weight:800;padding:1px 7px;border-radius:8px;letter-spacing:.3px;text-transform:uppercase}
.gm-avatar.ferro .gm-lvl{background:#71717a;color:#fff}
.gm-avatar.bronze .gm-lvl{background:#a0826d;color:#1a1208}
.gm-avatar.prata .gm-lvl{background:#94a3b8;color:#0f172a}
.gm-avatar.ouro .gm-lvl{background:var(--lb-au);color:#1a1208}
.gm-avatar.diamante .gm-lvl{background:var(--lb-pp);color:#fff}
.gm-avatar.mestre .gm-lvl{background:#dc2626;color:#fff}
.gm-info{flex:1;min-width:0}
.gm-name{font-size:16px;font-weight:800;color:var(--lb-txt)}
.gm-rank{font-size:11px;color:var(--lb-faint);margin-top:1px}
.gm-xp-box{text-align:right;flex-shrink:0}
.gm-xp-num{font-size:26px;font-weight:900;letter-spacing:-1px;color:var(--lb-au)}
.gm-xp-lab{font-size:10px;color:var(--lb-faint);text-transform:uppercase;letter-spacing:.5px}
.gm-bar{height:5px;background:var(--lb-tile);border-radius:5px;margin-bottom:16px;overflow:hidden}
.gm-bar-fill{height:100%;border-radius:5px;transition:width .8s cubic-bezier(.25,.75,.2,1)}
.gm-bar.ferro .gm-bar-fill{background:#71717a}
.gm-bar.bronze .gm-bar-fill{background:#a0826d}
.gm-bar.prata .gm-bar-fill{background:#94a3b8}
.gm-bar.ouro .gm-bar-fill{background:var(--lb-au)}
.gm-bar.diamante .gm-bar-fill{background:var(--lb-pp)}
.gm-bar.mestre .gm-bar-fill{background:linear-gradient(90deg,#dc2626,#f97316)}
.gm-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:16px}
.gm-stat{background:var(--lb-panel-bg);border:1px solid var(--lb-panel-bd);border-radius:12px;padding:12px 14px;text-align:center;backdrop-filter:var(--lb-blur);-webkit-backdrop-filter:var(--lb-blur);transition:transform .16s,border-color .16s,box-shadow .16s}
.gm-stat:hover{transform:translateY(-2px);box-shadow:0 8px 20px -10px rgba(0,0,0,.15)}
.gm-stat-ico{font-size:15px;margin-bottom:4px;display:block;opacity:.7}
.gm-stat-n{font-size:22px;font-weight:900;letter-spacing:-.5px;font-variant-numeric:tabular-nums}
.gm-stat-l{font-size:10px;color:var(--lb-faint);margin-top:3px;text-transform:uppercase;letter-spacing:.4px;font-weight:600}
.gm-sec{font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:1.2px;color:var(--lb-faint);margin:18px 0 8px;display:flex;align-items:center;gap:8px}
.gm-sec::after{content:'';flex:1;height:1px;background:var(--lb-stroke)}
.gm-badges{display:grid;grid-template-columns:repeat(auto-fill,minmax(105px,1fr));gap:10px;margin-bottom:10px}
.gm-badge{background:var(--lb-panel-bg);border:1px solid var(--lb-panel-bd);border-radius:14px;padding:14px 8px 12px;text-align:center;backdrop-filter:var(--lb-blur);-webkit-backdrop-filter:var(--lb-blur);position:relative;transition:transform .16s,border-color .16s,box-shadow .16s}
.gm-badge:hover{transform:translateY(-3px);box-shadow:0 8px 20px -10px rgba(0,0,0,.15)}
.gm-badge.rare{border-color:var(--lb-ppbd);background:linear-gradient(160deg,var(--lb-ppbg),var(--lb-panel-bg))}
.gm-badge.rare:hover{border-color:var(--lb-pp);box-shadow:0 8px 20px -10px rgba(124,58,237,.25)}
.gm-badge.locked{opacity:.25;pointer-events:none}
.gm-badge-ico{width:38px;height:38px;border-radius:50%;margin:0 auto 6px;display:flex;align-items:center;justify-content:center;font-size:17px;background:var(--lb-tile)}
.gm-badge.rare .gm-badge-ico{background:var(--lb-ppbg)}
.gm-badge-name{font-size:11px;font-weight:700;color:var(--lb-txt);line-height:1.2}
.gm-badge-sub{font-size:10px;color:var(--lb-faint);margin-top:3px}
.gm-rare-tag{position:absolute;top:4px;right:5px;font-size:10px;color:var(--lb-pp)}
.gm-courses{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;margin-bottom:12px}
.gm-course{background:var(--lb-panel-bg);border:1px solid var(--lb-panel-bd);border-radius:14px;padding:14px;display:flex;align-items:center;gap:14px;backdrop-filter:var(--lb-blur);-webkit-backdrop-filter:var(--lb-blur);transition:transform .16s,border-color .16s,box-shadow .16s}
.gm-course:hover{transform:translateY(-3px);border-color:var(--lb-cy);box-shadow:0 8px 20px -10px rgba(14,165,233,.2)}
.gm-ring{position:relative;flex-shrink:0;width:56px;height:56px}
.gm-ring-pct{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:800;line-height:1;letter-spacing:-.3px}
.gm-course-name{font-size:13px;font-weight:700;color:var(--lb-txt);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gm-course-det{font-size:11px;color:var(--lb-faint);margin-top:3px}
.gm-course-det b{color:var(--lb-muted);font-weight:700}
/* Como funciona — colapsável */
.gm-regras{background:var(--lb-panel-bg);border:1px solid var(--lb-panel-bd);border-radius:12px;padding:0;margin-bottom:16px;backdrop-filter:var(--lb-blur);-webkit-backdrop-filter:var(--lb-blur)}
.gm-regras summary{padding:12px 16px;font-size:12px;font-weight:700;color:var(--lb-faint);cursor:pointer;display:flex;align-items:center;gap:6px;list-style:none;user-select:none}
.gm-regras summary::-webkit-details-marker{display:none}
.gm-regras summary::after{content:'▸';margin-left:auto;font-size:10px;transition:transform .2s}
.gm-regras[open] summary::after{transform:rotate(90deg)}
.gm-regras-body{padding:0 16px 14px;font-size:12px;color:var(--lb-muted);line-height:1.5}
.gm-regras-body p{margin:0 0 8px}
.gm-pilares{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin:10px 0 12px}
.gm-pilar{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--lb-txt);background:var(--lb-tile);padding:6px 10px;border-radius:8px}
.gm-pilar b{margin-left:auto;font-size:12px;color:var(--lb-faint)}
.gm-faixas{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.gm-faixa{display:inline-flex;align-items:center;gap:5px;font-size:10px;font-weight:700;color:var(--fc);padding:3px 10px;border-radius:6px;background:color-mix(in srgb,var(--fc) 10%,transparent);border:1px solid color-mix(in srgb,var(--fc) 25%,transparent)}
.gm-faixa-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}
/* Histórico de temporadas */
.gm-hist{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}
.gm-hist-item{display:flex;flex-direction:column;align-items:center;gap:4px;min-width:58px;padding:10px 8px;border-radius:12px;background:var(--lb-panel-bg);border:1px solid var(--lb-panel-bd);backdrop-filter:var(--lb-blur);-webkit-backdrop-filter:var(--lb-blur);transition:transform .16s,border-color .16s,box-shadow .16s}
.gm-hist-item:hover{transform:translateY(-2px);box-shadow:0 6px 16px -8px rgba(0,0,0,.12)}
.gm-hist-item.cur{border-color:var(--lb-cy);box-shadow:0 0 12px rgba(14,165,233,.18)}
.gm-hist-badge{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:900;color:#fff}
.gm-hist-mes{font-size:10px;font-weight:700;color:var(--lb-faint);text-transform:uppercase;letter-spacing:.4px}
.gm-hist-pat{font-size:11px;font-weight:800}
.gm-hist-score{font-size:10px;color:var(--lb-faint);font-variant-numeric:tabular-nums}
@keyframes gmUnlock{0%{transform:scale(0) rotate(-20deg);opacity:0}60%{transform:scale(1.15) rotate(4deg);opacity:1}100%{transform:scale(1) rotate(0);opacity:1}}
@keyframes gmXpPulse{0%{box-shadow:0 0 0 0 rgba(180,83,9,.4)}70%{box-shadow:0 0 0 10px rgba(180,83,9,0)}100%{box-shadow:0 0 0 0 rgba(180,83,9,0)}}
.gm-badge.new{animation:gmUnlock .5s cubic-bezier(.2,.75,.2,1) forwards}
.gm-badge.new .gm-badge-ico{animation:gmXpPulse 1s ease-out .4s}
@media(max-width:880px){
  .gm-profile{flex-wrap:wrap;gap:12px}
  .gm-avatar{width:80px;height:80px;font-size:21px}
  .gm-info{flex:1;min-width:120px}
  .gm-xp-box{flex:0 0 auto}
  .gm-stats{grid-template-columns:repeat(2,1fr);gap:8px}
  .gm-courses{grid-template-columns:1fr}
  .gm-pilares{grid-template-columns:repeat(2,1fr)}
  .gm-summary{flex-direction:column}
  .gm-summary-item{min-width:0}
  .gm-bar-val{min-width:70px;font-size:12px}
}
@media(max-width:640px){
  .gm-profile{flex-direction:column;align-items:center;text-align:center;gap:8px}
  .gm-avatar{width:76px;height:76px;font-size:22px}
  .gm-lvl{font-size:10px;padding:2px 8px}
  .gm-info{text-align:center;min-width:0;flex:none;width:100%}
  .gm-name{font-size:15px}
  .gm-rank{font-size:11px;line-height:1.4}
  .gm-xp-box{text-align:center;display:flex;align-items:baseline;justify-content:center;gap:6px}
  .gm-xp-num{font-size:22px}
  .gm-xp-lab{font-size:10px}
  .gm-bar{margin-bottom:12px}
  .gm-stats{gap:8px;margin-bottom:12px}
  .gm-stat{padding:10px 8px;border-radius:10px}
  .gm-stat-n{font-size:20px}
  .gm-stat-l{font-size:9px;letter-spacing:.3px}
  .gm-sec{margin:14px 0 6px;font-size:8.5px}
  .gm-courses{gap:8px;margin-bottom:10px}
  .gm-course{padding:12px;gap:10px;border-radius:12px}
  .gm-course-name{font-size:12.5px}
  .gm-course-det{font-size:10.5px}
  .gm-bars{gap:6px;margin-bottom:10px}
  .gm-bar-row{gap:6px}
  .gm-bar-lbl{font-size:11px;min-width:28px}
  .gm-bar-track{height:8px}
  .gm-bar-val{min-width:60px;font-size:11px}
  .gm-summary{gap:6px;margin-bottom:8px}
  .gm-summary-item{padding:6px 10px;border-radius:8px}
  .gm-summary-label{font-size:10px}
  .gm-summary-val{font-size:16px}
  .gm-badges{grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:8px}
  .gm-badge{padding:12px 6px 10px;border-radius:12px}
  .gm-badge-ico{width:34px;height:34px;font-size:15px}
  .gm-badge-name{font-size:10.5px}
  .gm-badge-sub{font-size:9px}
  .gm-hist{gap:6px;margin-bottom:12px}
  .gm-hist-item{min-width:48px;padding:8px 6px;border-radius:10px}
  .gm-hist-badge{width:28px;height:28px;font-size:12px}
  .gm-hist-mes{font-size:9px}
  .gm-hist-pat{font-size:10px}
  .gm-pilares{grid-template-columns:repeat(2,1fr);gap:4px}
  .gm-pilar{font-size:10px;padding:5px 8px;border-radius:6px}
  .gm-regras summary{padding:10px 14px;font-size:11px}
  .gm-regras-body{padding:0 14px 12px;font-size:11px}
  .gm-faixas{gap:4px;margin-top:6px}
  .gm-faixa{font-size:9px;padding:2px 8px}
}
@media(max-width:430px){
  .gm-avatar{width:68px;height:68px;font-size:20px}
  .gm-name{font-size:14px}
  .gm-rank{font-size:10.5px}
  .gm-xp-num{font-size:20px}
  .gm-stat{padding:8px 6px}
  .gm-stat-n{font-size:18px}
  .gm-stat-l{font-size:8.5px}
  .gm-course{padding:10px;gap:8px}
  .gm-ring svg{width:48px;height:48px}
  .gm-ring-pct{font-size:11px}
  .gm-bar-lbl{font-size:10px;min-width:24px}
  .gm-bar-val{min-width:55px;font-size:10.5px}
  .gm-badges{grid-template-columns:repeat(3,1fr);gap:6px}
  .gm-badge{padding:10px 4px 8px;border-radius:10px}
  .gm-badge-ico{width:30px;height:30px;font-size:14px}
  .gm-badge-name{font-size:10px}
  .gm-hist-item{min-width:40px;padding:6px 4px}
  .gm-hist-badge{width:26px;height:26px;font-size:11px}
  .gm-pilares{grid-template-columns:1fr}
}
/* === Meu Desempenho — Propostas mini cards === */
.mp-prop{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:14px}
.mp-pc{background:var(--lb-panel-bg);border:1px solid var(--lb-panel-bd);border-radius:12px;padding:12px 14px;backdrop-filter:var(--lb-blur);-webkit-backdrop-filter:var(--lb-blur);text-align:center;transition:transform .16s,box-shadow .16s}
.mp-pc:hover{transform:translateY(-2px);box-shadow:0 8px 20px -10px rgba(0,0,0,.15)}
.mp-pcl{font-size:10px;font-weight:600;letter-spacing:.4px;text-transform:uppercase;color:var(--lb-faint);margin-bottom:4px}
.mp-pcv{font-size:22px;font-weight:900;letter-spacing:-.5px;font-variant-numeric:tabular-nums}
.mp-pcv.cy{color:var(--lb-cy)}.mp-pcv.gn{color:var(--lb-gn)}.mp-pcv.vm{color:var(--lb-vm)}
.mp-pcv.grad{font-size:18px;background:linear-gradient(180deg,var(--lb-num-a),var(--lb-num-b));-webkit-background-clip:text;background-clip:text;color:transparent}
/* === Meu Desempenho — Municípios === */
.mp-mun-hd{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:16px}
.mp-mun-count{display:inline-flex;align-items:center;gap:8px;background:rgba(14,165,233,.12);color:var(--lb-cy);font-weight:700;font-size:13px;padding:7px 14px;border-radius:999px}
.mp-mun-search{flex:1;min-width:180px}
.mp-mun-search input{width:100%;padding:9px 14px;border:1px solid var(--lb-panel-bd);border-radius:10px;background:var(--lb-tile);color:var(--lb-txt);font-size:13px;font-family:inherit;box-sizing:border-box}
.mp-mun-search input::placeholder{color:var(--lb-faint)}
.mp-mun-gh{display:flex;align-items:center;gap:10px;margin-bottom:9px}
.mp-mun-letter{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;background:linear-gradient(135deg,#38bdf8,#0ea5e9);color:#04121f;font-weight:800;font-size:13px;border-radius:9px;flex:0 0 auto}
.mp-mun-line{flex:1;height:1px;background:var(--lb-stroke)}
.mp-mun-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:9px;margin-bottom:20px}
.mp-mun-card{display:flex;align-items:center;gap:9px;padding:11px 14px;background:var(--lb-panel-bg);border:1px solid var(--lb-panel-bd);border-radius:13px;backdrop-filter:var(--lb-blur);-webkit-backdrop-filter:var(--lb-blur);transition:transform .14s,border-color .14s}
.mp-mun-card:hover{transform:translateY(-2px);border-color:var(--lb-cy)}
.mp-mun-pin{color:var(--lb-cy);flex-shrink:0;display:inline-flex}
.mp-mun-name{font-size:13.5px;color:var(--lb-txt);font-weight:500;line-height:1.25;flex:1}
.mp-mun-uf{font-size:10.5px;font-weight:700;color:var(--lb-faint);background:var(--lb-tile);border:1px solid var(--lb-tile-bd);padding:2px 6px;border-radius:6px}
@media(max-width:880px){.mp-bento{grid-template-columns:repeat(2,1fr)}.mp-tile.hero{grid-column:span 2}.mp-prop{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.mp-bento{grid-template-columns:1fr}.mp-tile.hero{grid-column:span 1}.mp-prop{grid-template-columns:repeat(2,1fr)}.mp-mun-grid{grid-template-columns:1fr}}
/* === Mobile 640px — command center (lb-cc) === */
@media(max-width:640px){
  .lb-cc{padding:14px 12px 32px;border-radius:12px;overflow-x:hidden}
  .lb-top{gap:10px;margin-bottom:4px}
  .lb-h1{font-size:20px;letter-spacing:-.4px}
  .lb-lead{font-size:11.5px;margin:6px 0 12px}
  .lb-eye{font-size:9px;letter-spacing:1px}
  .lb-top .lb-refresh{width:100%;text-align:center;margin:0;padding:10px 14px;font-size:12px;border-radius:10px}
  .lb-cc .lts{margin-bottom:12px;padding:3px;max-width:100%;box-sizing:border-box}
  .lb-cc .lts button{padding:9px 12px;font-size:12px}
  .mp-bento{gap:8px;margin-bottom:12px}
  .mp-tile{padding:12px 14px;border-radius:12px}
  .mp-tile.hero{padding:14px 16px}
  .lb-num{font-size:22px;letter-spacing:-.5px}
  .lb-num.mp-big{font-size:28px;letter-spacing:-.8px}
  .lb-lab{font-size:8.5px;letter-spacing:.5px}
  .lb-sub{font-size:10px;margin-top:3px}
  .lb-divlab{margin:12px 0 8px;font-size:9px}
  .mp-prop{gap:8px;margin-bottom:12px}
  .mp-pc{padding:10px 12px;border-radius:10px}
  .mp-pcl{font-size:9px;margin-bottom:4px}
  .mp-pcv{font-size:18px}
  .mp-pcv.grad{font-size:15px}
  .lb-cc .sx{border-radius:12px}
  .lb-cc .sx table th{padding:9px 10px;font-size:9px}
  .lb-cc .sx table td{padding:10px;font-size:12px}
  .lb-cc .fxh{padding:10px 12px;font-size:12px;border-radius:0 10px 10px 0}
  .lb-cc .em{padding:28px 14px;font-size:12px}
  .lb-cc .cds{grid-template-columns:1fr 1fr;gap:8px}
  .lb-cc .cds .cd{padding:12px 14px;border-radius:12px}
  .lb-cc .cds .cd .cv{font-size:22px}
  .mp-mun-hd{gap:8px;margin-bottom:10px}
  .mp-mun-count{font-size:12px;padding:6px 12px}
  .mp-mun-search{min-width:0;flex:1 1 100%}
  .mp-mun-search input{padding:10px 12px;border-radius:10px}
  .mp-mun-card{padding:10px 12px;border-radius:10px}
  .mp-mun-name{font-size:13px}
  .mp-mun-grid{gap:6px;margin-bottom:14px}
}
/* === Mobile 430px — iPhone Pro Max fine-tuning === */
@media(max-width:430px){
  .lb-cc{padding:12px 10px 28px;overflow-x:hidden}
  .lb-h1{font-size:18px}
  .lb-lead{font-size:11px;margin:5px 0 10px}
  .lb-cc .lts button{padding:8px 10px;font-size:11px}
  .mp-bento{gap:6px}
  .mp-tile{padding:10px 12px;border-radius:10px}
  .mp-tile.hero{padding:12px 14px}
  .lb-num{font-size:20px}
  .lb-num.mp-big{font-size:26px}
  .mp-prop{gap:6px}
  .mp-pc{padding:9px 10px;border-radius:9px}
  .mp-pcv{font-size:16px}
  .lb-cc .sx table th{padding:8px 8px;font-size:8.5px;letter-spacing:.3px}
  .lb-cc .sx table td{padding:9px 8px;font-size:11.5px}
}
/* === Mobile — caixas de ajuda (.fxh) === */
@media(max-width:880px){
  #ct .fxh{font-size:11.5px;padding:8px 10px;line-height:1.5}
}
/* === Mobile 430px — Sidebar drawer fine-tuning === */
@media(max-width:430px){
  .ct.side .nv,.ct.side.col .nv{width:300px;max-width:88vw;padding:14px 12px}
  .ct.side .nv button,.ct.side.col .nv button{padding:12px 13px;font-size:14px;min-height:44px;border-radius:10px}
  .ct.side .nv button.ngb,.ct.side.col .nv button.ngb{padding:14px 10px 6px;font-size:10px}
  .ct.side .navtog{padding:8px 12px;margin:-4px 0 8px}
  .ct.side .navtog::before{font-size:22px}
  .hmb{width:42px;height:42px;border-radius:10px}
  .hmb svg{width:24px;height:24px}
}
/* === Mobile 640px — Eventos: cards, estoque, tarefas, negociações === */
@media(max-width:640px){
  .cc{border-radius:12px}
  .cct{padding:12px 14px;font-size:11.5px}
  .ccb{padding:12px 14px}
  .ccn{font-size:13.5px;min-height:auto;margin-bottom:8px}
  .ccs{gap:8px;font-size:11.5px;flex-wrap:wrap}
  .cca{padding:10px 14px;flex-wrap:wrap;gap:6px;justify-content:stretch}
  .cca .b{flex:1 1 auto;text-align:center;min-height:40px;font-size:12px}
  .cfl{overflow-x:auto;flex-wrap:nowrap;-webkit-overflow-scrolling:touch;gap:6px;margin-bottom:14px;padding-bottom:4px}
  .cfl button{white-space:nowrap;flex:0 0 auto;padding:10px 14px;font-size:12px;min-height:40px}
  .cdx-top{grid-template-columns:1fr;gap:8px}
  .cdx-fat{padding:10px 12px}
  .cdx-big{font-size:20px}
  .cdx-meta{text-align:left;font-size:11px}
  .cdx-chip{padding:9px 11px;gap:8px;border-radius:10px}
  .cdx-chv{font-size:16px}
  .cdx-alerts{flex-direction:column;gap:8px}
  .cdx-al{min-width:0;padding:8px 10px;border-radius:8px}
  .cdx-pag{flex-direction:column;align-items:stretch;gap:8px;font-size:11.5px}
  .cdx-pag-ctrl{justify-content:center;gap:4px}
  .cdx-pag-ctrl button{min-width:36px;height:36px;font-size:13px;border-radius:8px}
  /* alvo = padding box + 2×inset: com borda de 1px, 44px de altura entregam 42. */
  .cdx-pag-ctrl select{height:46px;font-size:13px}
  .cdx-pag-ctrl select{min-height:36px;font-size:13px;padding:6px 8px}
  .cdx-ab{width:34px;height:34px;border-radius:8px}
  .cdx-ab svg{width:16px;height:16px}
  .neg-acc summary{padding:12px 14px;font-size:13px;min-height:44px}
  .neg-acc td{padding:10px 14px;font-size:13px}
  .neg-badge{min-width:24px;height:22px;font-size:12px}
  .sg button{min-height:44px;font-size:13px}
  table .ac{gap:6px;flex-wrap:wrap}
  table .ac .b{min-height:38px;padding:8px 12px;font-size:12px}
}
/* === Mobile 430px — Eventos fine-tuning === */
@media(max-width:430px){
  .cct{padding:10px 12px;font-size:11px}
  .ccb{padding:10px 12px}
  .ccn{font-size:13px}
  .ccs{font-size:11px}
  .cca .b{font-size:11.5px;padding:8px 10px}
  .cfl button{padding:8px 12px;font-size:11.5px}
  .cdx-big{font-size:20px}
  .cdx-chv{font-size:16px}
  .cdx-pag-ctrl button{min-width:34px;height:34px}
  .neg-acc summary{padding:11px 12px;font-size:12.5px}
  .neg-acc td{padding:9px 12px;font-size:12.5px}
  .dh{padding:14px 12px}
  .dh h2{font-size:16px;line-height:1.3}
  .di{gap:8px;font-size:12px;flex-wrap:wrap}
}
/* === Mobile 640px — Dashboard: tabela desempenho, seções, pautas === */
@media(max-width:880px){
  /* Grid/flex items nunca estouram a coluna (min-width:auto é o vilão) */
  .dx-cols>*,.cg>*,.cds>*,.md>*,.lngrid>*,.lnfoot>*,.fr>*,.fr3>*,.cdx-top>*,.dx-mural-grid>*{min-width:0;max-width:100%}
  #ct>*{min-width:0;max-width:100%}
  /* Painéis nunca passam da largura da tela */
  .p,.cd,.cc,.dx-tab,.lb-cc{max-width:100%}
}
@media(max-width:640px){
  .dx-sec{flex-wrap:wrap;gap:6px 10px}
  .dx-sec::after{display:none}
  .dx-sec-lbl{white-space:normal;font-size:9px}
  .dx-card-action{white-space:nowrap;font-size:10px;margin-left:auto}
  .dx-tab{padding:14px;border-radius:14px;overflow-x:auto;-webkit-overflow-scrolling:touch}
  .dx-tab table{font-size:12px}
  .dx-tab th{font-size:9px;padding:7px 8px 7px 0;letter-spacing:.1em}
  .dx-tab td{padding:10px 8px 10px 0;font-size:12px}
  .dx-tab th:first-child,.dx-tab td:first-child{padding-left:8px}
  .dx-tab th:last-child,.dx-tab td:last-child{padding-right:8px}
  .dx-rank{font-size:10px;padding:2px 6px;min-width:24px}
  .dx-pauta-data{width:36px;height:40px}
  .dx-np-folio{flex-wrap:wrap;gap:4px 12px}
}
@media(max-width:430px){
  .dx-sec-lbl{font-size:8.5px;letter-spacing:.4px}
  .dx-card-action{font-size:9.5px}
  .dx-tab{padding:12px;border-radius:12px}
  .dx-tab th{font-size:8.5px;padding:6px 6px 6px 0}
  .dx-tab td{padding:9px 6px 9px 0;font-size:11.5px}
  .dx-tab th:first-child{width:36px}
  .dx-rank{font-size:9px;padding:2px 5px;min-width:22px}
}
/* === Mobile — bottom breathing room + iPhone safe area === */
@media(max-width:640px){
  #ct>.p:last-child,.lb-cc>.p:last-child{margin-bottom:calc(8px + env(safe-area-inset-bottom,0px))}
  .lb-cc>.cg:last-child,.lb-cc>.sx:last-child,.lb-cc>.em:last-child{margin-bottom:calc(8px + env(safe-area-inset-bottom,0px))}
  .lb-cc{padding-bottom:calc(32px + env(safe-area-inset-bottom,0px))}
}
/* === Mobile 640px — Financeiro, Leads, In-Company, Modais === */
@media(max-width:640px){
  /* Financeiro: input com min-width inline de 220px */
  .fl input[style*="min-width"]{min-width:0!important;flex:1 1 100%!important}
  /* In-Company: KPI cards com min-width:170px inline */
  .p [style*="min-width:170px"],.p [style*="min-width:140px"]{min-width:0!important;flex:1 1 calc(50% - 5px)!important}
  /* Leads: tabela expandida — nested table overflow */
  .sx table table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}
  .sx table table td[style*="padding:6px 10px 6px 38px"]{padding-left:10px!important}
  /* In-Company: barra meta inline — melhor wrapping */
  .p [style*="min-width:62px"]{min-width:0!important}
  /* Eventos: inputs com min-width:280px inline */
  .fl input[style*="min-width:280px"]{min-width:0!important;flex:1 1 auto!important}
  input[style*="min-width:280px"]{min-width:0!important;width:100%!important;box-sizing:border-box!important}
  /* Comercial: nav label e stats div com largura fixa */
  b[style*="min-width:220px"]{min-width:0!important;flex:1 1 auto!important;text-align:center}
  /* Comercial: funnel pipeline — labels e stats overflow */
  div[style*="width:190px"][style*="min-width:190px"]{width:auto!important;min-width:0!important;max-width:100px!important;font-size:11px!important}
  div[style*="width:250px"][style*="min-width:250px"]{width:100%!important;min-width:0!important;font-size:11px!important;margin-top:2px}
  /* Comercial: period tabs e select com min-width */
  .lts[style*="max-width:360px"]{max-width:100%!important}
  select[style*="min-width:150px"],select[style*="min-width:200px"],select[style*="min-width:210px"]{min-width:0!important;width:100%!important}
  /* Saúde do dado (flSaudeBar): inline min-widths que estouram em 375px */
  .lb-panel[style*="flex-wrap"] div[style*="min-width:180px"]{min-width:0!important;flex:1 1 auto!important}
  .lb-panel[style*="flex-wrap"] div[style*="min-width:110px"]{min-width:0!important}
  /* Faturamento por canal: label com inline min-width:70px sobrescreve a classe */
  .gm-bar-lbl[style*="min-width"]{min-width:0!important}
  /* Faturamento por canal: detalhe marketing com margin-left:80px */
  div[style*="margin-left:80px"]{margin-left:36px!important}
  /* Eventos: modal período com max-width */
  .fg[style*="max-width:300px"]{max-width:100%!important}
  /* Modais: melhorar usabilidade mobile */
  .m{padding:18px 14px;border-radius:12px;max-height:calc(100vh - 40px);max-height:calc(100dvh - 40px);overflow-y:auto}
  .mt{font-size:16px;margin-bottom:14px}
  .fg label{font-size:12.5px}
  .fg input:not([type=checkbox]):not([type=radio]),.fg select,.fg textarea{font-size:16px;padding:10px 12px;min-height:44px;border-radius:8px}
  .fg-check,.fg label.fg-check{min-height:44px;font-size:14px}
  .ma{gap:8px;flex-direction:column}
  .ma .b,.ma button{width:100%;min-height:44px;text-align:center;font-size:14px}
  .fr,.fr3{gap:4px}
  /* Login page (mobile) */
  .lx{padding:20px 16px}
  .lhead{font-size:24px}
  .lpane{padding:20px 18px}
  .lpane-r{padding:0 18px 28px}
  .lpane input{min-height:44px;font-size:16px}
}
/* === Mobile 430px — Financeiro/Leads/InCompany fine-tuning === */
@media(max-width:430px){
  .p [style*="min-width:170px"],.p [style*="min-width:140px"]{flex:1 1 100%!important}
  .m{padding:14px 12px;margin:10px}
  .mt{font-size:15px}
  .mb{padding:10px}
  /* Comercial: funnel row empilha no 430px */
  div[style*="width:190px"][style*="min-width:190px"]{max-width:80px!important;font-size:10px!important}
  div[style*="width:250px"][style*="min-width:250px"]{font-size:10.5px!important}
}
/* ============================================================
   ADMIN TABLES — Cadastros (Estoque, Fornecedores, Professores)
   UI/UX Pro Max: touch targets 44px, card hierarchy, semantic color
   ============================================================ */
/* Section titles — estilo Painel do Líder (Etapa 1) */
.sec-title{font-size:11px;font-weight:800;letter-spacing:0.08em;text-transform:uppercase;color:var(--az);margin-bottom:12px;display:block}
.sec-heading{font-size:20px;font-weight:700;letter-spacing:-0.01em;color:var(--fg);margin-bottom:16px;line-height:1.2}
/* Cards e separadores (Etapa 2) */
.admin-card-title{font-size:11px;font-weight:800;letter-spacing:0.08em;text-transform:uppercase;color:var(--az);margin-bottom:10px;padding-bottom:10px;border-bottom:1px solid var(--bd);display:block}
.admin-sep{display:flex;align-items:center;gap:10px;margin:16px 0 12px;font-size:11px;font-weight:700;letter-spacing:0.06em;text-transform:uppercase;color:var(--sb)}
.admin-sep::after{content:"";flex:1;height:1px;background:var(--bd)}
/* Row de ações com 44px touch targets */
.act-row{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.act-btn{min-height:44px;min-width:44px;padding:8px 12px;font-size:13px;display:flex;align-items:center;justify-content:center;border-radius:8px;cursor:pointer;border:1px solid transparent;font-weight:500;transition:all .15s ease;touch-action:manipulation}
.act-btn.primary{background:var(--az);color:#fff}
.act-btn.primary:hover{background:var(--az2);box-shadow:0 2px 8px rgba(var(--az-rgb),.2)}
.act-btn.primary:active{transform:scale(.96)}
.act-btn.secondary{background:transparent;color:var(--sb);border-color:var(--bd)}
.act-btn.secondary:hover{background:var(--bf);border-color:var(--az)}
.act-btn.danger{background:#dc2626;color:#fff}
.act-btn.danger:hover{background:#991b1b;box-shadow:0 2px 8px rgba(220,38,38,.2)}
.act-btn.danger:active{transform:scale(.96)}
.act-btn:disabled,.act-btn.disabled{opacity:.45;cursor:not-allowed;pointer-events:none}
/* Admin card — resumo/métrica com visual hierarchy */
.admin-card{background:var(--bg);border:1px solid var(--bd);border-radius:12px;padding:14px;display:flex;flex-direction:column;justify-content:space-between;box-shadow:0 1px 3px rgba(0,0,0,.05)}
.admin-card:hover{box-shadow:0 4px 12px rgba(0,0,0,.08);border-color:var(--az)}
.admin-card-icon{width:40px;height:40px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:20px;margin-bottom:10px}
.admin-card-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--sb);margin-bottom:8px}
.admin-card-value{font-size:24px;font-weight:700;line-height:1.1;letter-spacing:-.5px;color:var(--fg)}
.admin-card-hint{font-size:11px;color:var(--sb);margin-top:6px}
/* Status badges com semantic color */
.badge-ok{background:#dcfce7;color:#166534;font-size:11px;font-weight:600;padding:4px 10px;border-radius:6px;display:inline-block}
.badge-warn{background:#fef3c7;color:#92400e;font-size:11px;font-weight:600;padding:4px 10px;border-radius:6px;display:inline-block}
.badge-alert{background:#fee2e2;color:#991b1b;font-size:11px;font-weight:600;padding:4px 10px;border-radius:6px;display:inline-block}
.badge-info{background:#dbeafe;color:#1e40af;font-size:11px;font-weight:600;padding:4px 10px;border-radius:6px;display:inline-block}
/* Table row actions — sticky on right, responsive */
.tbl-actions{display:flex;gap:4px;min-width:100px;flex-wrap:nowrap}
.tbl-actions .b{padding:6px 10px;font-size:12px;min-height:auto}
/* ============================================================
   HARMONIZAÇÃO MOBILE — parâmetros do Painel do Líder (lb-cc)
   replicados p/ todas as abas. Fica no FIM p/ vencer a cascata.
   ============================================================ */
@media(max-width:640px){
  /* Painéis: mesmo raio e respiro do lb-cc */
  .p{border-radius:12px;padding:14px 12px}
  .pt{font-size:15px;letter-spacing:-.2px}
  .ph{margin-bottom:12px}
  /* KPI cards: escala do lb-cc (valor forte, label pequeno) */
  .cds{gap:8px;margin-bottom:14px}
  .cd{border-radius:12px;padding:12px 14px}
  .cl{font-size:8.5px;letter-spacing:.5px;margin-bottom:5px}
  .cv{font-size:22px;letter-spacing:-.5px}
  .cs{font-size:10px;margin-top:3px}
  .cdi{top:12px;right:12px;width:30px;height:30px;border-radius:9px}
  .cdi svg{width:16px;height:16px}
  /* Tabelas: tipografia compacta do lb-cc (th micro-uppercase, td c/ respiro) */
  .sx table th,table th{font-size:9px;letter-spacing:.1em;padding:9px 10px;white-space:nowrap}
  .sx table td,table td{font-size:12px;padding:10px}
  /* Métricas .md: mesma pegada dos tiles */
  .md{gap:8px;padding:12px;border-radius:12px}
  .ml{font-size:8.5px}
  .mv{font-size:17px;letter-spacing:-.3px}
  /* Tabs .lts: pill c/ scroll horizontal (padrão lb-cc) */
  .lts{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;gap:3px;border-radius:12px}
  .lts button{white-space:nowrap;flex:0 0 auto;padding:9px 12px;font-size:12px;border-radius:8px}
  /* Filtros: alinhados e touch */
  .fl{gap:8px;margin-bottom:12px}
  /* Hint boxes */
  .fxh{padding:10px 12px;font-size:12px;border-radius:0 10px 10px 0;margin-bottom:12px}
  .em{padding:28px 14px;font-size:12px}
  /* Badges compactos */
  .bd1{font-size:10px;padding:3px 8px}
  /* Admin table actions — touch-friendly */
  .act-row{gap:8px}
  .act-btn{min-height:40px;padding:8px 12px;font-size:12px}
  .admin-card{padding:12px;border-radius:10px}
  .admin-card-value{font-size:22px}
  .badge-ok,.badge-warn,.badge-alert,.badge-info{font-size:10px;padding:3px 8px}
}
@media(max-width:430px){
  .p{padding:12px 10px}
  .pt{font-size:14px}
  .cds{gap:6px}
  .cd{padding:10px 12px;border-radius:10px}
  .cv{font-size:20px}
  .sx table th,table th{font-size:8.5px;padding:8px 8px;letter-spacing:.06em}
  .sx table td,table td{font-size:11.5px;padding:9px 8px}
  .md{gap:6px;padding:10px}
  .mv{font-size:16px}
  .lts button{padding:8px 10px;font-size:11px}
  .fxh{font-size:11.5px;padding:9px 10px}
  /* Admin actions para iPhone — stack vertical ou reduz gap */
  .act-row{gap:6px}
  .act-btn{min-height:40px;padding:8px 10px;font-size:11px;flex:1}
  .tbl-actions{gap:3px}
  .admin-card{padding:10px;border-radius:10px}
  .admin-card-value{font-size:20px}
  .admin-card-icon{width:36px;height:36px;font-size:18px}
  .badge-ok,.badge-warn,.badge-alert,.badge-info{font-size:9px;padding:2px 6px}
}

/* ============================================================
   UI/UX PRO MAX — melhorias aplicadas em 2026-07
   Prioridades: Acessibilidade > Toque > Animação > Polish
   ============================================================ */

/* 1. FOCUS STATES — visíveis para navegação por teclado (WCAG 2.4.7) */
:focus-visible{outline:2px solid var(--az2);outline-offset:2px;border-radius:4px}
button:focus-visible,a:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--az2);outline-offset:3px;border-radius:6px;box-shadow:var(--focus-ring)}
.fg input:focus,.fg select:focus,.fg textarea:focus{outline:2px solid var(--az2);outline-offset:0;border-color:var(--az2);box-shadow:var(--focus-ring)}

/* 2. TRANSIÇÕES GLOBAIS — consistentes em 150ms (anti-jank) */
button,.b,.bs,.bd,.bg2,.bv,.bcta,.bn,.b-action,.act-btn,.cfl button,.lnms,.nv button,.lts button,.cdx-ab,.cdx-pag-ctrl button{transition:background-color var(--transition),color var(--transition),border-color var(--transition),box-shadow var(--transition),opacity var(--transition),transform var(--transition)}

/* 3. HOVER LIFT — sutil em cards e botões primários */
.cd:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}
.p:hover{box-shadow:var(--shadow-sm)}
.b:hover,.bv:hover,.bcta:hover{transform:translateY(-1px);box-shadow:var(--shadow-md)}
.bs:hover,.bg2:hover{transform:translateY(-1px)}

/* 4. SOMBRAS REFINADAS — Soft UI Evolution */
.cd{box-shadow:var(--shadow-sm)}
.p{box-shadow:var(--shadow-sm)}
.ct.side .nv{box-shadow:var(--shadow-md)}

/* 5. CARDS — border-radius mais moderno */
.cd,.p,.lncard,.lndiag,.cdx-fat,.cdx-chip{border-radius:var(--radius-lg)}

/* 6. BOTÃO PRIMÁRIO — gradiente suave e sombra colorida */
.b{background:linear-gradient(135deg,var(--az2),var(--az));box-shadow:0 2px 8px rgba(10,61,143,.25)}
.b:hover{background:linear-gradient(135deg,#2563eb,var(--az2));box-shadow:0 4px 14px rgba(10,61,143,.32)}
.bv{box-shadow:0 2px 8px rgba(22,163,74,.2)}
.bv:hover{box-shadow:0 4px 12px rgba(22,163,74,.3)}

/* 7. TABELA — linha hover mais suave */
tr{transition:background-color var(--transition)}
tr:hover td{background:var(--azs);transition:background-color var(--transition)}

/* 8. BADGES — radius pill consistente */
.bd1{border-radius:20px;font-size:11px;letter-spacing:.2px}

/* 9. INPUTS — altura mínima touch-friendly (44px iOS) */
.fg input,.fg select,.fg textarea,.fl select,.fl input{min-height:40px;font-family:inherit;transition:border-color var(--transition),box-shadow var(--transition)}
.fg input:hover,.fg select:hover{border-color:var(--az2)}

/* 10. NAVEGAÇÃO LATERAL — item ativo com polish */
.ct.side .nv button.on{box-shadow:0 2px 8px rgba(14,165,233,.18),inset 0 0 0 1px rgba(14,165,233,.2)}

/* 11. REDUCED MOTION — respeita preferência do sistema (complementa o bloco principal ~linha 400) */
@media(prefers-reduced-motion:reduce){
  .cd:hover,.b:hover,.bv:hover,.bcta:hover,.bs:hover{transform:none}
}

/* 12. FONT SMOOTHING & NÚMEROS TABULARES em valores financeiros */
.cv,.lnval,.cdx-big,.cdx-chv,.mv,.admin-card-value{font-variant-numeric:tabular-nums;letter-spacing:-.3px}

/* 13. SCROLLBAR personalizada — Webkit */
::-webkit-scrollbar{width:5px;height:5px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:rgba(10,61,143,.15);border-radius:10px}
::-webkit-scrollbar-thumb:hover{background:rgba(10,61,143,.28)}

/* 14. SELEÇÃO DE TEXTO com cor da marca */
::selection{background:var(--azs);color:var(--az)}

/* 15. HEADER — shadow mais refinada */
header{box-shadow:0 1px 0 rgba(255,255,255,.06),0 4px 16px rgba(0,0,0,.22)}

/* 16. LOADING SKELETON — animação shimmer (para uso futuro) */
@keyframes shimmer{0%{background-position:-400px 0}100%{background-position:400px 0}}
.skeleton{background:linear-gradient(90deg,var(--bd) 25%,var(--wh2) 50%,var(--bd) 75%);background-size:800px 100%;animation:shimmer 1.4s ease-in-out infinite}

/* ============================================================
   LEADS & EQUIPAMENTOS — design lb-* (padronizado com Painel do Líder)
   ============================================================ */
/* Wrapper principal (equivale ao .lb-cc) */
.ld-cc,.eq-cc{background:var(--lb-ground);border-radius:16px;padding:26px 24px 32px;color:var(--lb-txt)}
/* Cabeçalho */
.ld-top,.eq-top{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap;margin-bottom:20px}
.ld-eye,.eq-eye{font-size:10px;font-weight:800;letter-spacing:1.5px;text-transform:uppercase;color:var(--lb-cy);margin-bottom:4px}
.ld-h1,.eq-h1{font-size:24px;font-weight:900;letter-spacing:-.6px;line-height:1.08;color:var(--lb-txt);text-wrap:balance}
.ld-lead,.eq-lead{font-size:12.5px;color:var(--lb-muted);margin-top:6px;line-height:1.5}
.ld-actions,.eq-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center;flex-shrink:0}
/* Bento tiles de estatística */
.ld-bento,.eq-bento{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:18px}
.ld-tile,.eq-tile{background:var(--lb-panel-bg);border:1px solid var(--lb-panel-bd);border-radius:10px;padding:12px 13px 11px;box-shadow:var(--lb-panel-shadow);backdrop-filter:var(--lb-blur);-webkit-backdrop-filter:var(--lb-blur);display:flex;flex-direction:column;gap:4px;position:relative;overflow:hidden;transition:box-shadow var(--transition),transform var(--transition)}
.ld-tile:hover,.eq-tile:hover{box-shadow:0 4px 16px rgba(20,40,80,.1);transform:translateY(-1px)}
.ld-tile::before,.eq-tile::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;border-radius:2px 2px 0 0}
.ld-tile.cy::before,.eq-tile.cy::before{background:var(--lb-cy)}
.ld-tile.rx::before,.eq-tile.rx::before{background:var(--lb-rx)}
.ld-tile.gn::before,.eq-tile.gn::before{background:var(--lb-gn)}
.ld-tile.am::before,.eq-tile.am::before{background:var(--lb-am)}
.ld-tile.vm::before,.eq-tile.vm::before{background:var(--lb-vm)}
.ld-tile-ico,.eq-tile-ico{width:26px;height:26px;border-radius:7px;display:flex;align-items:center;justify-content:center;margin-bottom:1px}
.ld-tile.cy .ld-tile-ico,.eq-tile.cy .eq-tile-ico{background:rgba(14,165,233,.12);color:var(--lb-cy)}
.ld-tile.rx .ld-tile-ico,.eq-tile.rx .eq-tile-ico{background:var(--lb-rxbg);color:var(--lb-rx)}
.ld-tile.gn .ld-tile-ico,.eq-tile.gn .eq-tile-ico{background:var(--lb-gnbg);color:var(--lb-gn)}
.ld-tile.am .ld-tile-ico,.eq-tile.am .eq-tile-ico{background:var(--lb-amtile);color:var(--lb-am)}
.ld-tile.vm .ld-tile-ico,.eq-tile.vm .eq-tile-ico{background:var(--lb-vmbg);color:var(--lb-vm)}
.ld-tile-lbl,.eq-tile-lbl{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--lb-faint)}
.ld-tile-val,.eq-tile-val{font-size:22px;font-weight:800;letter-spacing:-.5px;line-height:1;font-variant-numeric:tabular-nums}
.ld-tile.cy .ld-tile-val,.eq-tile.cy .eq-tile-val{color:var(--lb-cy)}
.ld-tile.rx .ld-tile-val,.eq-tile.rx .eq-tile-val{color:var(--lb-rx)}
.ld-tile.gn .ld-tile-val,.eq-tile.gn .eq-tile-val{color:var(--lb-gn)}
.ld-tile.am .ld-tile-val,.eq-tile.am .eq-tile-val{color:var(--lb-am)}
.ld-tile.vm .ld-tile-val,.eq-tile.vm .eq-tile-val{color:var(--lb-vm)}
.ld-tile.tl::before,.eq-tile.tl::before{background:var(--lb-tl)}
.ld-tile.tl .ld-tile-ico,.eq-tile.tl .eq-tile-ico{background:var(--lb-tlbg);color:var(--lb-tl)}
.ld-tile.tl .ld-tile-val,.eq-tile.tl .eq-tile-val{color:var(--lb-tl)}
.ld-tile.pk::before,.eq-tile.pk::before{background:var(--pk)}
.ld-tile.pk .ld-tile-ico,.eq-tile.pk .eq-tile-ico{background:var(--pkb);color:var(--pk)}
.ld-tile.pk .ld-tile-val,.eq-tile.pk .eq-tile-val{color:var(--pk)}
.ld-tile-sub,.eq-tile-sub{font-size:11px;color:var(--lb-faint);margin-top:1px}
/* Filtros */
.ld-filters,.eq-filters{display:flex;gap:8px;flex-wrap:wrap;background:var(--lb-panel-bg);border:1px solid var(--lb-panel-bd);border-radius:10px;padding:10px 12px;margin-bottom:16px;backdrop-filter:var(--lb-blur);-webkit-backdrop-filter:var(--lb-blur);align-items:center}
.ld-search{flex:1;min-width:200px;display:flex;align-items:center;gap:8px;background:var(--lb-tile);border:1px solid var(--lb-tile-bd);border-radius:8px;padding:7px 12px}
.ld-search svg{color:var(--lb-faint);flex-shrink:0}
.ld-search input{background:none;border:none;outline:none;font-family:inherit;font-size:13px;line-height:1;color:var(--lb-txt);width:100%}
/* `--lb-faint` no placeholder dá 4,32 sobre o `--lb-tile` — reprova AA por 0,18.
   O ÍCONE fica em faint (é componente de UI, mínimo 3:1, e passa com folga); só
   o texto sobe para `--lb-muted`. Vale para as buscas de Leads e PNCP também. */
.ld-search input::placeholder{color:var(--lb-muted)}
/* ===== Select solto: a aparência nativa destoava do resto (05/09/2026) =====
   Havia 28 `<select>` no app SEM classe nenhuma — Comissões, Folha, Cursos,
   Leads, PNCP e o `selMes()`/`selMesL()` do core, que servem várias telas.
   Eles herdavam o widget do sistema operacional no meio de uma interface que já
   tem componente próprio.

   O alvo é `select:not([class])` cujo pai NÃO é `.fg` nem `.fl`: pega só quem
   está sem estilo e não disputa com o campo de formulário nem com o filtro
   clássico. Select COM classe (`.ld-sel`, `.evf-sel`…) segue como está.

   `:not(#pgen *)` é OBRIGATÓRIO: o gerador de propostas tem estilo próprio de
   select (`#pgen select`, propostas.css:58, com chevron ciano e cores `--nav-*`),
   e esta regra — (1,3,1) contra (1,0,1) — o vencia por especificidade, desfazendo
   o layout calibrado e aprovado em 01/09. */
#ct :not(.fg):not(.fl) > select:not([class]):not(#pgen *),
#mc :not(.fg):not(.fl) > select:not([class]){
  appearance:none;-webkit-appearance:none;
  background-color:var(--wh);
  background-image:linear-gradient(45deg,transparent 49%,var(--sb) 50%,var(--sb) 63%,transparent 64%),linear-gradient(-45deg,transparent 49%,var(--sb) 50%,var(--sb) 63%,transparent 64%);
  background-size:6px 6px,6px 6px;
  background-position:calc(100% - 16px) 53%,calc(100% - 11px) 53%;
  background-repeat:no-repeat;
  border:1px solid var(--lnbd);border-radius:8px;padding:8px 32px 8px 11px;
  /* NÃO usar o shorthand `font:13px/1.2 inherit`: ele não aceita `inherit` como
     família e a declaração INTEIRA é descartada — os 28 selects sem classe ficavam
     nos 13,33px do navegador, com a fonte do sistema. Propriedades separadas. */
  font-family:inherit;font-size:13px;line-height:1.2;color:var(--tx);cursor:pointer;max-width:100%;min-width:0;
  transition:border-color var(--transition),box-shadow var(--transition);
}
#ct :not(.fg):not(.fl) > select:not([class]):not(#pgen *):hover,
#mc :not(.fg):not(.fl) > select:not([class]):hover{border-color:var(--az2)}
#ct :not(.fg):not(.fl) > select:not([class]):not(#pgen *):focus-visible,
#mc :not(.fg):not(.fl) > select:not([class]):focus-visible{outline:none;border-color:var(--az);box-shadow:var(--focus-ring)}
@media(max-width:640px){
  /* 16px é PISO, não estética: abaixo disso o Safari do iPhone dá zoom sozinho
     ao focar o campo — e o select entra nessa regra como o input. */
  #ct :not(.fg):not(.fl) > select:not([class]):not(#pgen *),
  #mc :not(.fg):not(.fl) > select:not([class]){min-height:44px;font-size:16px}
}
.ld-sel,.eq-sel{background:var(--lb-tile);border:1px solid var(--lb-tile-bd);border-radius:8px;padding:7px 10px;font-family:inherit;font-size:12.5px;line-height:1;color:var(--lb-txt);outline:none;cursor:pointer;transition:border-color var(--transition);max-width:100%;min-width:0}
.ld-sel:focus,.eq-sel:focus{border-color:var(--lb-cy)}
/* Tabs (Patrimônio / Consumo) */
.eq-tabs{display:flex;gap:3px;background:var(--lb-panel-bg);border:1px solid var(--lb-panel-bd);border-radius:12px;padding:4px;margin-bottom:16px;backdrop-filter:var(--lb-blur);-webkit-backdrop-filter:var(--lb-blur);overflow-x:auto;flex-wrap:nowrap;scrollbar-width:none}
.eq-tabs::-webkit-scrollbar{display:none}
.eq-tab{font-size:11.5px;padding:6px 13px;border:0;border-radius:8px;cursor:pointer;background:transparent;color:var(--lb-muted);font-weight:600;font-family:inherit;transition:all var(--transition);display:flex;align-items:center;gap:5px;white-space:nowrap;flex-shrink:0}
/* o ciano aqui é SUPERFÍCIE, com texto escuro em cima — escurecer o token
   pioraria este contraste em vez de melhorar. Literais de propósito. */
.eq-tab.on{background:linear-gradient(135deg,#0ea5e9,#0284c7);color:#04121f;font-weight:800}
/* o escuro mantém o ciano claro que o --lb-cy dava antes de a aba passar a
   usar literais: a ponta mais escura do gradiente (#0284c7) é a mesma nos
   dois, então o pior contraste não muda — muda só o brilho da aba ativa. */
[data-theme="dark"] .eq-tab.on{background:linear-gradient(135deg,#38bdf8,#0284c7)}
.eq-tab .n{background:rgba(255,255,255,.25);border-radius:10px;padding:1px 6px;font-size:10px}
.eq-tab:not(.on) .n{background:var(--lb-tile-bd);color:var(--lb-faint)}
/* Cards de eventos dentro do eq-cc */
.eq-cc .cg{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:16px}
.eq-cc .cc{background:var(--lb-panel-bg);border:1px solid var(--lb-panel-bd);border-radius:19px;box-shadow:var(--lb-panel-shadow);backdrop-filter:var(--lb-blur);-webkit-backdrop-filter:var(--lb-blur);overflow:hidden;transition:transform .22s cubic-bezier(.2,.75,.2,1),border-color .22s,box-shadow .22s;opacity:0;animation:lbFadeUp .5s cubic-bezier(.2,.75,.2,1) forwards}
.eq-cc .cc:nth-child(1){animation-delay:0s}.eq-cc .cc:nth-child(2){animation-delay:.06s}.eq-cc .cc:nth-child(3){animation-delay:.12s}.eq-cc .cc:nth-child(4){animation-delay:.18s}.eq-cc .cc:nth-child(5){animation-delay:.24s}.eq-cc .cc:nth-child(6){animation-delay:.3s}.eq-cc .cc:nth-child(7){animation-delay:.36s}.eq-cc .cc:nth-child(8){animation-delay:.42s}
.eq-cc .cc:hover{transform:translateY(-4px) scale(1.015);border-color:var(--lb-cy);box-shadow:0 16px 40px -12px rgba(14,165,233,.35)}
.eq-cc .cct{background:linear-gradient(140deg,#0a1d39 0%,#0d2d5e 50%,#1e4d8a 100%);border-radius:19px 19px 0 0;padding:16px 18px;position:relative;overflow:hidden}
.eq-cc .cct::after{content:'';position:absolute;top:-30%;right:-10%;width:120px;height:120px;background:radial-gradient(circle,rgba(56,189,248,.18),transparent 70%);pointer-events:none}
.eq-cc .cct .ccd{font-size:14px;font-weight:700;letter-spacing:-.01em}
.eq-cc .cct .ccl{font-size:10px;letter-spacing:.08em;text-transform:uppercase;opacity:.75}
.eq-cc .cc.cc-r .cct{background:linear-gradient(140deg,#1e293b,#334155,#475569)}
.eq-cc .ccb{padding:16px 18px;flex:1;display:flex;flex-direction:column}
.eq-cc .ccn{font-size:15px;font-weight:700;color:var(--lb-txt);letter-spacing:-.02em;line-height:1.3;margin-bottom:10px}
.eq-cc .ccs{border-top:1px solid var(--lb-stroke);padding-top:12px;margin-top:auto;display:grid;grid-template-columns:repeat(auto-fit,minmax(70px,1fr));gap:8px;color:var(--lb-muted);font-size:11px}
.eq-cc .ccs>div{display:flex;flex-direction:column;gap:2px}
.eq-cc .ccs b{font-size:18px;font-weight:900;letter-spacing:-.5px;display:block;background:linear-gradient(180deg,var(--lb-num-a),var(--lb-num-b));-webkit-background-clip:text;background-clip:text;color:transparent}
.eq-cc .cctot{margin-top:12px;background:var(--lb-tile);border:1px solid var(--lb-tile-bd);border-radius:12px;padding:11px 14px;display:flex;align-items:baseline;justify-content:space-between;gap:10px;min-width:0}
.eq-cc .cctot span{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--lb-muted);flex:none}
.eq-cc .cctot b{font-size:23px;font-weight:900;letter-spacing:-.6px;line-height:1;text-align:right;background:linear-gradient(180deg,var(--lb-num-a),var(--lb-num-b));-webkit-background-clip:text;background-clip:text;color:transparent;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.eq-cc .cca{border-top:1px solid var(--lb-stroke);background:var(--lb-tile);padding:12px 18px;display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap}
.eq-cc .cca .b{border-radius:9px;font-size:12px;font-weight:600;padding:6px 14px;transition:all .15s}
/* Detalhe de curso / evento dentro do eq-cc */
.cd-bk{display:inline-flex;align-items:center;gap:5px;color:var(--az2);font-size:12px;font-weight:700;letter-spacing:.02em;background:0;border:0;cursor:pointer;margin-bottom:14px;transition:opacity .15s;padding:0}
/* MEDIDO: o ciano --lb-cy sobre o fundo claro dá 2,58:1 (e o opacity:.8 ainda
   derrubava mais) — é o link de VOLTAR, a saída da tela. No escuro o mesmo
   ciano dá 8,33:1 e fica. */
[data-theme="dark"] .cd-bk{color:var(--lb-cy)}
.cd-bk:hover{opacity:1;text-decoration:underline}
.cd-title{font-size:20px!important;line-height:1.25!important;margin-top:4px}
.cd-resumo{grid-template-columns:repeat(auto-fit,minmax(130px,1fr))!important;margin-bottom:16px}
.cd-money{font-size:14px!important;letter-spacing:-.3px!important}
.eq-cc .p{background:var(--lb-panel-bg);border:1px solid var(--lb-panel-bd);border-radius:16px;box-shadow:var(--lb-panel-shadow);backdrop-filter:var(--lb-blur);-webkit-backdrop-filter:var(--lb-blur);color:var(--lb-txt);padding:20px 22px;margin-bottom:16px}
.eq-cc .ph{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:18px}
.eq-cc .pt{font-size:17px;font-weight:800;letter-spacing:-.3px;color:var(--lb-txt)}
/* ===== Painel que só tem cabeçalho é uma BARRA, não um cartão (08/09/2026) =====
   O `.ph` carrega `margin-bottom:18px` para separar o cabeçalho do conteúdo — e
   quando não há conteúdo nenhum (a barra do Credenciamento é um `.p` com um `.ph`
   dentro e mais nada) esses 18px viram vão morto somado aos 20px de padding de
   baixo: 38px embaixo contra 20px em cima, num cartão de 95px para uma fila de
   botões de 33px. O `:only-child` é o que reconhece esse caso sozinho, sem
   precisar de classe no JS — e a barra passa a caber no que ela tem (65px). */
.eq-cc .p>.ph:only-child{margin-bottom:0}
.eq-cc .p:has(>.ph:only-child){padding-top:14px;padding-bottom:14px}

/* ===== Aba AVALIAÇÃO do evento (08/09/2026) =====
   A barra é a distribuição, não uma média: a escala herdada do Google Forms tem
   três pontos e NENHUM negativo, então uma média esconde justamente o sinal que
   interessa. Ver a cor separada por segmento, com o número de respostas ao lado.

   As cores vêm de `--lb-*` porque este bloco vive dentro do `.eq-cc`, cujo fundo
   é um GRADIENTE: token do chrome do app (`--bf`, `--bd`) não tem variante
   escura e sairia branco no tema dark. */
/* O nº de respostas ao lado da nota, no rodapé do cartão do Quais Cursos
   Repetir: 4,8 de 2 pessoas e 4,8 de 40 não são a mesma informação. */
.rc-ft .rc-nn{font-weight:500;opacity:.75}
.eq-cc .av-l{display:flex;flex-direction:column;gap:2px}
.eq-cc .av-it{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr) minmax(0,.75fr);
  align-items:center;gap:14px;padding:9px 0;border-top:1px solid var(--lb-stroke)}
.eq-cc .av-it:first-child{border-top:0}
.eq-cc .av-it-n{font-size:13.5px;font-weight:600;line-height:1.35;color:var(--lb-txt);min-width:0}
.eq-cc .av-it-b{display:flex;height:10px;border-radius:6px;overflow:hidden;background:var(--lb-tile);min-width:0}
.eq-cc .av-seg{display:block;height:100%}
.eq-cc .av-seg.gn{background:var(--lb-gn)}
.eq-cc .av-seg.ol{background:#4d7c0f}
.eq-cc .av-seg.am{background:var(--lb-am)}
.eq-cc .av-seg.vm{background:var(--lb-vm)}
.eq-cc .av-it-v{font-size:12.5px;font-weight:700;line-height:1.35;color:var(--lb-txt);text-align:right}
.eq-cc .av-it-t{font-weight:500;color:var(--lb-muted)}
.eq-cc .av-sub{font-size:11px;font-weight:800;letter-spacing:.6px;color:var(--lb-muted);
  margin:14px 0 2px}
.eq-cc .av-sub:first-child{margin-top:0}
.eq-cc .av-sg{display:flex;flex-direction:column;gap:10px}
.eq-cc .av-sg-i{background:var(--lb-tile);border:1px solid var(--lb-tile-bd);border-radius:12px;
  padding:12px 14px}
.eq-cc .av-sg-i p{font-size:13.5px;line-height:1.5;color:var(--lb-txt);white-space:pre-wrap;
  overflow-wrap:anywhere}
.eq-cc .av-sg-i small{display:block;margin-top:6px;font-size:11.5px;color:var(--lb-muted)}
@media(max-width:640px){
  /* Em três colunas o rótulo fica com ~90px e quebra em quatro linhas. Empilhado,
     o nome ocupa a linha inteira e a barra e o número dividem a de baixo. */
  .eq-cc .av-it{grid-template-columns:minmax(0,1fr) auto;gap:6px 12px;padding:11px 0}
  .eq-cc .av-it-n{grid-column:1/-1}
  .eq-cc .av-it-v{font-size:12px}
}

.eq-cc .fxh{background:var(--lb-tile);border:1px solid var(--lb-panel-bd);border-radius:10px;padding:10px 14px;font-size:12.5px;color:var(--lb-muted);margin-bottom:14px;line-height:1.5}
.eq-cc .sx{overflow-x:auto}
.eq-cc .sx table{width:100%;border-collapse:collapse;font-size:13px;color:var(--lb-txt)}
.eq-cc .sx th{padding:10px 14px;text-align:left;background:var(--lb-tile);border-bottom:1px solid var(--lb-stroke);font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.6px;color:var(--lb-cy);white-space:nowrap}
.eq-cc .sx tbody tr{border-bottom:1px solid var(--lb-stroke);transition:background var(--transition)}
.eq-cc .sx tbody tr:last-child{border-bottom:none}
.eq-cc .sx tbody tr:hover td{background:var(--lb-tile)}
.eq-cc .sx td{padding:10px 14px;vertical-align:middle}
/* stat cards dentro de eq-cc */
.eq-cc .cd{background:var(--lb-panel-bg);border:1px solid var(--lb-panel-bd);border-radius:14px;box-shadow:var(--lb-panel-shadow);backdrop-filter:var(--lb-blur);-webkit-backdrop-filter:var(--lb-blur)}
.eq-cc .cd .cl{color:var(--lb-muted);font-size:10px;letter-spacing:.6px;font-weight:700}
.eq-cc .cd .cv{font-size:26px;font-weight:900;letter-spacing:-.6px;line-height:1.05;font-variant-numeric:tabular-nums;background:linear-gradient(180deg,var(--lb-num-a),var(--lb-num-b));-webkit-background-clip:text;background-clip:text;color:transparent}
.eq-cc .cd .cv.g{background:linear-gradient(180deg,var(--lb-numgn-a),var(--lb-numgn-b));-webkit-background-clip:text;background-clip:text;color:transparent}
.eq-cc .cd .cv.y,.eq-cc .cd .cv.o{background:linear-gradient(180deg,var(--lb-numam-a),var(--lb-numam-b));-webkit-background-clip:text;background-clip:text;color:transparent}
.eq-cc .cd .cv.r{background:linear-gradient(180deg,#b91c1c,#f87171);-webkit-background-clip:text;background-clip:text;color:transparent}
.eq-cc .cd .cs{color:var(--lb-muted);font-size:11px;margin-top:5px}
/* Tabela dentro do lb-cc */
.ld-table-wrap,.eq-table-wrap{background:var(--lb-panel-bg);border:1px solid var(--lb-panel-bd);border-radius:10px;box-shadow:var(--lb-panel-shadow);backdrop-filter:var(--lb-blur);-webkit-backdrop-filter:var(--lb-blur);overflow:hidden;overflow-x:auto}
.ld-table-wrap table,.eq-table-wrap table,.eq-table-wrap .sx table{width:100%;border-collapse:collapse;font-size:13px}
.ld-table-wrap table th,.eq-table-wrap table th,.eq-table-wrap .sx table th{padding:11px 16px;text-align:left;background:var(--lb-tile);border-bottom:1px solid var(--lb-stroke);font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.6px;color:var(--lb-cy);white-space:nowrap}
.ld-table-wrap table tbody tr,.eq-table-wrap table tbody tr,.eq-table-wrap .sx table tbody tr{border-bottom:1px solid var(--lb-stroke);transition:background var(--transition)}
.ld-table-wrap table tbody tr:last-child,.eq-table-wrap table tbody tr:last-child,.eq-table-wrap .sx table tbody tr:last-child{border-bottom:none}
.ld-table-wrap table tbody tr:hover td,.eq-table-wrap table tbody tr:hover td,.eq-table-wrap .sx table tbody tr:hover td{background:var(--lb-tile)}
.ld-table-wrap table td,.eq-table-wrap table td,.eq-table-wrap .sx table td{padding:13px 16px;vertical-align:middle;color:var(--lb-txt);transition:background var(--transition);border-bottom:none}
/* Linha de filtros inline na tabela de leads */
.ld-table-wrap .ld-fr th{background:transparent;color:var(--lb-cy);padding:6px 10px;border-bottom:1px solid var(--lb-stroke)}
.ld-table-wrap .ld-fr select{background:var(--lb-tile);border:1px solid var(--lb-tile-bd);border-radius:6px;padding:4px 6px;font-family:inherit;font-size:11px;line-height:1;color:var(--lb-txt);outline:none;cursor:pointer;width:100%}
/* Seta expansão */
.ld-arrow{display:inline-flex;color:var(--lb-cy);transition:transform var(--transition);flex-shrink:0;vertical-align:middle;margin-right:6px}
.ld-arrow.open{transform:rotate(90deg)}
/* Badges de curso e origem */
.ld-curso-tag{display:inline-block;font-size:10px;padding:2px 7px;border-radius:10px;background:rgba(14,165,233,.10);color:var(--lb-cy);font-weight:600;margin:1px 2px;border:1px solid rgba(14,165,233,.18);max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}
.ld-origem{font-size:10px;font-weight:700;padding:2px 8px;border-radius:8px;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap;display:inline-block}
.ld-origem.inscrito{background:var(--lb-gnbg);color:var(--lb-gn)}
.ld-origem.manual{background:rgba(14,165,233,.12);color:var(--lb-cy)}
.ld-origem.csv,.ld-origem.excel{background:var(--lb-amtile);color:var(--lb-am)}
/* Card de contatos expandidos */
.ld-contacts-card{margin:0 12px 12px;background:var(--lb-panel-bg);border:1px solid var(--lb-panel-bd);border-radius:10px;box-shadow:var(--lb-panel-shadow);overflow:hidden}
.ld-contacts-head{display:flex;align-items:flex-end;justify-content:space-between;padding:0 16px;border-bottom:1px solid var(--lb-stroke)}
.ld-contacts-title{font-size:10px;font-weight:800;letter-spacing:.08em;color:var(--lb-cy);text-transform:uppercase;padding-bottom:9px;border-bottom:2px solid var(--lb-cy);margin-bottom:-1px;margin-top:10px}
.ld-contacts-add{font-size:11px;color:var(--lb-cy);font-weight:700;background:none;border:none;cursor:pointer;font-family:inherit;padding:4px 8px;border-radius:6px;margin-bottom:4px;transition:background var(--transition)}
.ld-contacts-add:hover{background:rgba(14,165,233,.10)}
.ld-contact-row{display:flex;align-items:center;gap:12px;padding:11px 16px;border-bottom:1px solid var(--lb-stroke);transition:background var(--transition)}
.ld-contact-row:last-child{border-bottom:none}
.ld-contact-row:hover{background:var(--lb-tile)}
.ld-avatar{width:34px;height:34px;border-radius:50%;background:rgba(14,165,233,.15);color:var(--lb-cy);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;flex-shrink:0;border:1px solid var(--lb-panel-bd);letter-spacing:-.02em;text-transform:uppercase}
.ld-contact-info{flex:1;min-width:0}
.ld-contact-nome{font-size:13px;font-weight:600;color:var(--lb-txt);line-height:1.2}
.ld-contact-cargo{font-size:11px;color:var(--lb-muted);margin-top:1px}
.ld-contact-meta{display:flex;align-items:center;gap:14px;font-size:12px;color:var(--lb-muted);flex-shrink:0;flex-wrap:wrap}
.ld-contact-meta a{color:var(--lb-cy);text-decoration:none}
.ld-contact-meta a:hover{text-decoration:underline}
.ld-expand-bg{background:var(--lb-tile)!important}
/* Paginação */
.ld-pagination{display:flex;justify-content:space-between;align-items:center;margin-top:14px;padding:0 2px;flex-wrap:wrap;gap:8px}
.ld-pagination-info{font-size:12px;color:var(--lb-faint)}
.ld-pagination-btns{display:flex;gap:4px}
.ld-pag-btn{min-width:32px;height:32px;padding:0 10px;border-radius:8px;border:1px solid var(--lb-panel-bd);background:var(--lb-panel-bg);color:var(--lb-muted);font-family:inherit;font-size:12px;font-weight:600;line-height:1;cursor:pointer;transition:all var(--transition);display:inline-flex;align-items:center;justify-content:center}
.ld-pag-btn:hover{background:var(--lb-tile);color:var(--lb-txt)}
.ld-pag-btn.on{background:linear-gradient(135deg,var(--lb-cy),#0284c7);color:#fff;border-color:transparent;box-shadow:0 2px 8px rgba(14,165,233,.25)}
/* label de grupo do equip */
.eq-section-lbl{font-size:10px;font-weight:800;letter-spacing:.7px;text-transform:uppercase;color:var(--lb-faint);margin:18px 0 8px;display:flex;align-items:center;gap:8px}
.eq-section-lbl::after{content:'';flex:1;height:1px;background:var(--lb-stroke)}
/* In-Company badges */
.ic-badge{display:inline-flex;align-items:center;gap:5px;padding:3px 8px;border-radius:6px;font-size:11px;font-weight:600;letter-spacing:.2px;white-space:nowrap}
.ic-badge-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}
.ic-badge-negociacao{background:rgba(245,158,11,.12);color:#d97706}
.ic-badge-negociacao .ic-badge-dot{background:#f59e0b}
.ic-badge-autorizado{background:rgba(37,99,235,.12);color:#3b82f6}
.ic-badge-autorizado .ic-badge-dot{background:#2563eb}
.ic-badge-realizado{background:rgba(5,150,105,.12);color:#10b981}
.ic-badge-realizado .ic-badge-dot{background:#059669}
.ic-badge-cancelado{background:rgba(220,38,38,.12);color:#ef4444}
.ic-badge-cancelado .ic-badge-dot{background:#dc2626}
/* In-Company */
.ic-meta-bar{background:var(--lb-tile);border:1px solid var(--lb-tile-bd);border-radius:12px;padding:14px 16px;margin:14px 0}
.ic-meta-head{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:6px;margin-bottom:8px}
.ic-meta-lbl{font-size:10px;font-weight:800;letter-spacing:.6px;text-transform:uppercase;color:var(--lb-faint)}
.ic-meta-val{font-size:12px;color:var(--lb-txt)}
.ic-meta-pct{color:var(--lb-gn)}
.ic-meta-track{height:8px;background:var(--lb-stroke);border-radius:4px;overflow:hidden}
.ic-meta-fill{height:100%;background:linear-gradient(90deg,var(--lb-gn),#34d399);border-radius:4px;transition:width .4s ease}
.ic-filter-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:14px 0 4px}
.ic-filter-row .eq-tabs{flex:1}
.ic-prosp{background:var(--lb-faint);background:color-mix(in srgb,var(--lb-cy) 12%,transparent);color:var(--lb-cy);padding:2px 9px;border-radius:10px;font-size:11px;font-weight:700;letter-spacing:.2px}
.ic-tot-strip{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px;padding-top:14px;border-top:1px solid var(--lb-stroke)}
.ic-tot-tile{flex:1;min-width:130px;background:var(--lb-tile);border:1px solid var(--lb-tile-bd);border-radius:10px;padding:10px 14px}
.ic-tot-lbl{font-size:10px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;color:var(--lb-faint);margin-bottom:4px}
.ic-tot-val{font-size:17px;font-weight:700;color:var(--lb-txt)}
/* Cadastros (cad-table) — Professores e Fornecedores */
.cad-table table{width:100%;border-collapse:collapse;font-size:13.5px}
.cad-table thead th{padding:10px 14px;font-size:10px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;color:var(--lb-faint);border-bottom:2px solid var(--lb-stroke);text-align:left;white-space:nowrap}
.cad-table tbody tr{border-bottom:1px solid var(--lb-stroke);transition:background .12s}
.cad-table tbody tr:last-child{border-bottom:none}
.cad-table tbody tr:hover{background:var(--lb-tile)}
.cad-table tbody td{padding:14px 14px;vertical-align:middle;line-height:1.4}
.cad-nome{font-weight:600;color:var(--lb-txt);font-size:13.5px}
.cad-meta{font-size:11px;color:var(--lb-faint);margin-top:2px}
.cad-dim{font-size:12.5px;color:var(--lb-muted)}
.cad-valor{font-size:14px;font-weight:700;color:var(--lb-txt);font-variant-numeric:tabular-nums}
.cad-badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:6px;font-size:11px;font-weight:700;letter-spacing:.2px;white-space:nowrap}
.cad-badge-info{background:color-mix(in srgb,var(--lb-cy) 14%,transparent);color:var(--lb-cy)}
.cad-badge-ok{background:color-mix(in srgb,var(--lb-gn) 14%,transparent);color:var(--lb-gn)}
.cad-badge-warn{background:color-mix(in srgb,var(--lb-am) 14%,transparent);color:var(--lb-am)}
.cad-badge-off{background:color-mix(in srgb,var(--lb-vm) 14%,transparent);color:var(--lb-vm)}
.cad-actions{display:flex;gap:6px;align-items:center;white-space:nowrap}
.cad-actions .b{display:inline-flex;align-items:center;justify-content:center;min-width:32px;padding:6px 10px;font-size:16px;line-height:1}
.cad-actions .b svg{width:14px!important;height:14px!important;flex-shrink:0;display:block}
/* Custos Fixos (cf-table) */
.cf-table table{width:100%;border-collapse:collapse;font-size:13.5px}
.cf-table thead th{padding:10px 14px;font-size:10px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;color:var(--lb-faint);border-bottom:2px solid var(--lb-stroke);text-align:left;white-space:nowrap}
.cf-table tbody tr{border-bottom:1px solid var(--lb-stroke);transition:background .12s}
.cf-table tbody tr:last-child{border-bottom:none}
.cf-table tbody tr:hover{background:var(--lb-tile)}
.cf-table tbody td{padding:13px 14px;vertical-align:middle;line-height:1.4}
.cf-inativo td{opacity:.5}
.cf-badge-on{display:inline-block;padding:2px 8px;border-radius:6px;font-size:11px;font-weight:700;background:color-mix(in srgb,var(--lb-gn) 14%,transparent);color:var(--lb-gn)}
.cf-badge-off{display:inline-block;padding:2px 8px;border-radius:6px;font-size:11px;font-weight:700;background:color-mix(in srgb,var(--lb-vm) 14%,transparent);color:var(--lb-vm)}
.cf-obs{font-size:11px;color:var(--lb-faint);max-width:150px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cf-row-com{background:color-mix(in srgb,var(--lb-cy) 5%,transparent)}
.cf-row-total td,.cf-row-grand td{padding:12px 14px;border-top:2px solid var(--lb-stroke)}
.cf-total-lbl{font-size:11px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;color:var(--lb-faint)}
.cf-total-val{font-size:15px;font-weight:800;font-variant-numeric:tabular-nums}
.cf-row-grand{background:color-mix(in srgb,var(--lb-gn) 6%,transparent)}
/* Equipamentos (equip-table) */
.equip-row{cursor:pointer}
.equip-row:hover td{background:color-mix(in srgb,var(--lb-cy) 6%,transparent)}
.equip-table td:last-child{width:1px;white-space:nowrap}
.equip-table th:last-child{width:1px}
/* Recebimentos (fin-table) */
.fin-table table{width:100%;border-collapse:collapse;font-size:13.5px}
.fin-table thead th{padding:10px 10px;font-size:10px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;color:var(--lb-faint);border-bottom:2px solid var(--lb-stroke);text-align:left;white-space:nowrap}
.fin-table tbody tr{border-bottom:1px solid var(--lb-stroke);transition:background .12s}
.fin-table tbody tr:last-child{border-bottom:none}
.fin-table tbody tr:hover{background:var(--lb-tile)}
.fin-table tbody td{padding:8px 10px;vertical-align:middle;line-height:1.3}
/* Nome de órgão é longo e em CAIXA ALTA: sem o teto de 2 linhas ele quebra em 3 e
   sozinho responde por 57px dos 128px que a linha tinha. */
.fin-cliente{font-weight:600;color:var(--lb-txt);font-size:13.5px;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.fin-meta{font-size:11px;color:var(--lb-faint);margin-top:1px;line-height:1.3}
/* A célula da NF empilhava número, botão e e-mail com alturas próprias. */
.fin-nf{display:flex;align-items:center;gap:6px;flex-wrap:nowrap}
/* Filtro por número da nota: reusa a caixa da busca (`.ld-search`), mas o
   conteúdo tem 3 dígitos — sem o teto ele dividiria a linha meio a meio com a
   busca de cliente, que é a que precisa de espaço. No celular vira largura
   inteira, como a outra. */
.ld-filters .ld-search.fin-nf-f{flex:0 1 150px;min-width:120px}
@media(max-width:640px){.ld-filters .ld-search.fin-nf-f{flex:1 1 100%;min-width:0}}
.fin-nf-b{width:26px;height:26px;border-radius:6px}
.fin-nf-b svg{width:14px;height:14px}
.fin-dim{font-size:12.5px;color:var(--lb-muted)}
.fin-curso{display:block;max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fin-num{font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}
.fin-valor{font-size:14px;font-weight:700;color:var(--lb-txt);font-variant-numeric:tabular-nums}
.fin-vencido{color:var(--lb-vm);font-weight:600;font-size:12.5px}
.fin-sem-prev{display:inline-block;font-size:10px;font-weight:700;letter-spacing:.3px;padding:2px 7px;border-radius:4px;border:1px solid var(--lb-am);color:var(--lb-am);opacity:.85}
/* O botão de ação virou ícone puro (.cdx-ab) em 09/09/2026, no desktop também:
   escrito por extenso ele custava 34px de coluna, e a tabela rolava de lado.
   O componente já traz o alvo de 40px + hitSlop no celular. */
/* O rodapé alinha com as pílulas de status, que usam 16px de recuo no .eq-cc. */
.fin-pag-wrap{padding:0 16px 4px}
.anv-sub{font-weight:400;font-size:11px;color:var(--sb)}

/* Espaço de aniversário dentro da ficha (05/09/2026).
   Os dois selects herdam o estilo de campo do app; o que este bloco faz é
   agrupá-los sob um título e reservar a linha da prévia. */
/* ===== Foto: arquivo OU link (05/09/2026) ===== */
.fto{display:flex;align-items:flex-start;gap:10px}
.fto-av{flex:none;width:52px;height:52px;border-radius:50%;overflow:hidden;background:var(--azs);
  display:flex;align-items:center;justify-content:center;color:var(--az);font-weight:800;font-size:15px;border:1px solid var(--lnbd)}
.fto-av img{width:100%;height:100%;object-fit:cover;display:block}
.fto-b{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}
.fto-r{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
/* O <input type=file> nativo não aceita estilo; quem recebe o clique é o
   <label> em volta — por isso ele é o botão, e o input fica escondido dentro. */
.fto-up{position:relative;display:inline-flex;align-items:center;gap:6px;cursor:pointer;
  padding:0 12px;min-height:38px;border:1px solid var(--az);border-radius:8px;
  font-size:12px;font-weight:600;color:var(--az);background:transparent;line-height:1}
.fto-up input[type=file]{position:absolute;inset:0;opacity:0;width:100%;height:100%;cursor:pointer}
.fto-up::after{content:'';position:absolute;inset:-3px;border-radius:11px}
.fto-up:focus-within{outline:none;box-shadow:var(--focus-ring)}
/* A borda É o componente: o botão não tem preenchimento, e com `--lnbd` ela dá
   1,25:1 e some. `currentColor` a iguala ao texto — mesmo remédio do "+ Adicionar"
   das oficinas e dos ícones de Mídias. */
.fto-x{cursor:pointer;padding:0 10px;min-height:38px;border:1px solid currentColor;border-radius:8px;
  background:transparent;font-size:12px;font-weight:600;color:var(--sb);position:relative}
.fto-x::after{content:'';position:absolute;inset:-3px;border-radius:11px}
.fto-n{font-size:11px;line-height:1.4;color:var(--sb)}
.fto-desf{background:none;border:0;padding:0;font:inherit;color:var(--az2);text-decoration:underline;cursor:pointer}
[data-theme="dark"] .fto-desf{color:var(--az)}
@media(max-width:640px){
  .fto-up,.fto-x{min-height:44px}
  .fto-up::after,.fto-x::after{inset:0}
}
/* ===== Balão da pessoa da equipe: comprimido (05/09/2026) ===== */
/* `minmax(0,1fr)`, não `1fr`: o select da Função tem largura mínima própria e
   `1fr` não encolhe abaixo do min-content — a mesma medição do `mC`. */
.eqf-3{display:grid;grid-template-columns:1.7fr minmax(0,1fr) minmax(0,1fr);gap:12px}
.eqf-cur{border:1px solid var(--lnbd);border-radius:10px;margin:0 0 14px}
.eqf-cur>summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:8px;
  padding:11px 12px;min-height:44px;font-size:12px;font-weight:600;color:var(--tx);user-select:none}
.eqf-cur>summary::-webkit-details-marker{display:none}
.eqf-cur>summary::after{content:'';width:7px;height:7px;flex:none;margin-left:2px;border-right:2px solid var(--sb);border-bottom:2px solid var(--sb);transform:rotate(45deg) translateY(-2px);transition:transform var(--transition)}
.eqf-cur[open]>summary::after{transform:rotate(-135deg) translateY(-2px)}
.eqf-cur-r{margin-left:auto;font-weight:400;font-size:11px;color:var(--sb)}
.eqf-cur-b{max-height:150px;overflow:auto;padding:0 12px 10px}
.eqf-cur-i{display:flex;align-items:center;gap:8px;padding:4px 0;font-weight:400;font-size:13px;cursor:pointer;min-height:24px}
.eqf-cur-i input{width:auto;margin:0;flex:none}
@media(max-width:640px){
  .eqf-3{grid-template-columns:1fr}
  /* o alvo aqui é o <label> inteiro, e ele tem a largura da caixa — os 44px
     custam só rolagem interna, que a lista já tem. */
  .eqf-cur-i{min-height:44px}
}
.anv-fk{border:1px solid var(--lnbd);border-radius:10px;padding:10px 12px;margin:0 0 14px}
.anv-fk-h{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--az);display:flex;align-items:center;gap:6px;margin-bottom:8px}
.anv-fk-h svg{width:13px;height:13px}
.anv-fk-r{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
/* A regra de skin do select do app (`#mc :not(.fg):not(.fl) > select:not([class])`,
   linha ~1712) é (1,3,1) e zera o `min-width` — os selects nasciam com 67px.
   Aqui o seletor EMPATA em (1,3,1) e vence por vir depois no arquivo; o select
   continua sem classe de propósito, senão perde a seta, a borda e o foco daquela
   regra. Terceira vez que esta família de armadilha aparece no repo. */
#mc .anv-fk .anv-fk-r select:not([class]){width:auto;min-width:96px;min-height:44px;font-size:14px}
.anv-fk-p{flex:1 1 190px;min-width:0;font-size:12px;line-height:1.4;color:var(--sb)}
.anv-fk-p b{color:var(--tx)}
@media(max-width:640px){#mc .anv-fk .anv-fk-r select:not([class]){flex:1 1 calc(50% - 4px);min-width:0;font-size:16px}.anv-fk-p{flex:1 1 100%}}


/* ===== Equipe por papel (05/09/2026) ===== */
.cad-eq-n{font-size:12px;color:var(--sb)}
.cad-eq-sec{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin:16px 0 8px;padding-bottom:5px;border-bottom:1px solid var(--lnbd)}
.cad-eq-t{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--az)}
.cad-eq-d{font-size:11px;color:var(--sb)}
.cad-eq-c{margin-left:auto;font-size:11px;font-weight:700;color:var(--sb)}
.cad-eq-g{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:8px}
.cad-eq-p{display:flex;align-items:center;gap:10px;padding:9px 11px;border:1px solid var(--lnbd);border-radius:10px;background:var(--wh);min-width:0}
.cad-eq-p.alerta{border-color:var(--vm)}
.cad-eq-av{flex:none;width:30px;height:30px;border-radius:50%;background:var(--azs);color:var(--az);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:12px}
.cad-eq-i{flex:1;min-width:0}
.cad-eq-i b{font-size:13px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cad-eq-m{font-size:11px;color:var(--sb);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* O aniversário ganhou linha própria (05/09/2026): concatenado ao e-mail ele
   NUNCA aparecia — medido, a sub-linha pedia 340px e tem 113. Agora que a lista
   separada saiu, o cartão é o único lugar onde a data se vê de relance. */
.cad-eq-m2{display:flex;align-items:center;gap:4px;margin-top:1px}
.cad-eq-m2 svg{flex:none}
/* Sem `opacity`: com .75 o texto caía para 3,24:1 e reprovava AA — a mesma
   dívida já registrada no modal de custo. Quem diferencia aqui é o itálico. */
.cad-eq-sd{font-style:italic}
.cad-eq-tag{flex:none;font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:3px 7px;border-radius:5px;border:1px solid}
.cad-eq-tag.ok{color:#15803d;border-color:#15803d33;background:#dcfce755}
.cad-eq-tag.am{color:#854d0e;border-color:#854d0e33;background:#fef9c355}
.cad-eq-tag.vm{color:var(--vm);border-color:#dc262633;background:#fee2e255}
/* "login ok" aparecia em quase todo cartão e comia 66px do nome — virou um visto.
   Quem PRECISA de atenção (sem login, sem ficha) continua com etiqueta escrita. */
.cad-eq-ok{flex:none;display:inline-flex;color:#15803d}
[data-theme="dark"] .cad-eq-ok{color:var(--vd)}
.cad-eq-ac{flex:none;display:inline-flex;gap:4px;align-items:center}
.cad-eq-p .cdx-ab{width:30px;height:30px;position:relative}
.cad-eq-p .cdx-ab svg{width:14px;height:14px}
.cad-eq-num{position:absolute;bottom:-2px;right:-2px;background:var(--az);color:#fff;font-size:8.5px;font-weight:800;line-height:1;padding:2px 3px;border-radius:4px}
img.cad-eq-av{object-fit:cover}
.cad-eq-p.saiu{opacity:.7}
.cad-eq-p.saiu .cad-eq-av{filter:grayscale(1)}
[data-theme="dark"] .cad-eq-tag.ok{color:var(--vd);background:transparent}
[data-theme="dark"] .cad-eq-tag.am{color:var(--am);background:transparent}
[data-theme="dark"] .cad-eq-tag.vm{color:var(--vm);background:transparent}
[data-theme="dark"] .cad-eq-av{background:rgba(96,165,250,.16);color:#bfdbfe}
/* Branco sobre `--az` da 2,54 no escuro (o azul de la e CLARO) — a familia de
   dividas do --az/--vd/--vm. Texto escuro resolve, como nos chips do Roteiro. */
[data-theme="dark"] .cad-eq-num{color:#0b1220}
@media(max-width:640px){
  .cad-eq-g{grid-template-columns:1fr}
  .cad-eq-p{flex-wrap:wrap}
  .cad-eq-i{min-width:140px}
  .cad-eq-tag{margin-left:40px}
  /* os ícones de ação vão para a linha de baixo, com alvo de toque cheio.
     gap 8 = 2 x inset: com 4px os hitSlops se sobrepõem e o botão do meio
     perde os cantos para os vizinhos (medido com elementFromPoint). */
  .cad-eq-ac{margin-left:auto;gap:8px}
  .cad-eq-p .cdx-ab{width:40px;height:40px}
  .cad-eq-p .cdx-ab::after{content:'';position:absolute;inset:-2px}
}

/* ===== Consultores & Acessos (05/09/2026) =====
   A tabela pedia 829px num espaço de 622 e a coluna Ações ficava fora da vista.
   MEDIDO: o e-mail levava 287px e "Cursos liberados" 138 para um conteúdo de 35
   — o `th` é `white-space:nowrap` por regra global, então quem define a largura
   da coluna é o RÓTULO, não o dado. */
.cad-mail{display:inline-block;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}
/* 6 colunas × 28px de padding = 168px só de respiro. 10px lateral devolve 48px e
   é o que faz a coluna Ações caber sem rolagem. Escopado nesta tela. */
.cad-cc .sx table td,.cad-cc .sx table th{padding-left:10px;padding-right:10px}
@media(max-width:880px){.cad-mail{max-width:none;white-space:normal;overflow-wrap:anywhere}}

/* ===== Comissões: liberar à mão as vendas de um consultor (05/09/2026) ===== */
/* Barra de filtros da aba (curso e data, 08/09/2026). Cada seletor leva RÓTULO
   porque a tela tem DUAS datas que não são a mesma coisa: o mês em que a comissão
   entrou e a previsão de pagamento da venda. Sem rótulo, dois selects de mês lado
   a lado não se distinguem.
   `flex:1 1 170px` em vez de colunas fixas: o seletor de consultor não existe para
   o consultor logado, e uma grade cravada deixaria buraco quando ele some. */
.com-fil{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end;margin:0 0 16px}
.com-fil-i{display:flex;flex-direction:column;gap:4px;flex:1 1 170px;min-width:0;max-width:280px}
.com-fil-i>span{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--sb);line-height:1.2}
.com-fil-x{align-self:flex-end}
@media(max-width:640px){
  .com-fil-i{flex:1 1 140px;max-width:none}
  /* O alvo do Limpar vem do hitSlop do `.b.bsm` (38 de caixa + 2×4 de inset = 44
     reais); forçar min-height aqui só engordaria o botão sem ganhar toque. */
  .com-fil-x{width:100%}
}
.com-chv{margin-left:8px;font-size:11px;font-weight:600;color:var(--az2)}
.com-lin.on{background:var(--azs)}
.com-exp>td{background:var(--bg);padding:10px 14px!important}
.com-exp-h{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--sb);margin-bottom:8px}
.com-v{display:flex;align-items:center;gap:12px;padding:8px 10px;border:1px solid var(--lnbd);border-radius:9px;background:var(--wh);margin-bottom:6px}
.com-v:last-child{margin-bottom:0}
.com-v-i{flex:1;min-width:0}
.com-v-i b{font-size:13px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.com-v-s{font-size:11px;font-weight:500;color:var(--sb);text-transform:none;letter-spacing:0}
.com-v-n{text-align:right;flex:none}
.com-v-c{display:block;font-weight:700;font-size:14px;color:var(--am)}
/* `--am` sobre branco dá 2,94:1 — a mesma dívida já corrigida nas pílulas de
   status e no `.ct-stw`. No claro o tom que passa é #854d0e. */
:root:not([data-theme="dark"]) .com-v-c{color:#854d0e}
.com-v-b{flex:none;font:inherit;font-size:12px;font-weight:600;padding:9px 12px;border-radius:8px;border:1px solid var(--lnbd);background:var(--wh);color:var(--az2);cursor:pointer;min-height:38px}
/* A nota que separa "comissão liberada" de "venda paga" — sem ela o botão
   "Marcar paga" se lê como dar a venda por paga, que é o oposto do que ele faz. */
.com-nota{font-size:12px;line-height:1.45;color:var(--sb);background:var(--azs);
  border:1px solid var(--lnbd);border-radius:8px;padding:9px 12px;margin:0 0 10px}
.com-nota b{color:var(--tx);font-weight:800}
[data-theme="dark"] .com-nota{background:rgba(56,189,248,.09)}
.com-v-b:hover{border-color:var(--az);background:var(--azs)}
.com-tag{font-size:9.5px;margin-left:5px}
/* comissão já liberada: valor em verde e etiqueta no lugar do botão */
.com-v-c.ok{color:var(--vd)}
:root:not([data-theme="dark"]) .com-v-c.ok{color:#15803d}
.com-v-tg{flex:none;font-size:11px;font-weight:700;color:var(--vd);text-transform:uppercase;letter-spacing:.04em}
/* Etiqueta + Desmarcar ficam juntos na ponta do cartão (08/09/2026). O desfazer
   é ação secundária: contorno e texto neutro, para não competir com o
   "Marcar paga" dos cartões vizinhos, que é o primário da lista. */
.com-v-end{flex:none;display:flex;align-items:center;gap:9px}
.com-v-und{color:var(--sb)}
.com-v-und:hover{border-color:var(--vm);color:var(--vm);background:transparent}
@media(max-width:640px){.com-v-end{gap:7px}}
:root:not([data-theme="dark"]) .com-v-tg{color:#15803d}
/* `--az2` é o azul ESCURO: no dark dá 3,98:1 como texto. Mesma correção já
   feita no `.cd-bk` e no `.vg-bk` — no escuro quem serve é `--az`. */
[data-theme="dark"] .com-chv{color:var(--az)}
[data-theme="dark"] .com-lin.on{background:rgba(96,165,250,.10)}
[data-theme="dark"] .com-exp>td{background:rgba(255,255,255,.03)}
[data-theme="dark"] .com-v{background:var(--wh);border-color:var(--lnbd)}
/* `:not(.com-v-und)` porque `[data-theme="dark"] .com-v-b` é (0,2,0) e venceria
   o `.com-v-und` (0,1,0) — o desfazer sairia azul, idêntico ao "Marcar paga", e a
   hierarquia entre primário e secundário se perderia. Mesma armadilha do
   `.pgm-b`/`.pgm-b-x`, já registrada no CLAUDE.md. */
[data-theme="dark"] .com-v-b:not(.com-v-und){color:var(--az)}
@media(max-width:640px){
  /* o cartão empilha: o valor vai para baixo do nome e o botão ocupa a linha */
  .com-v{flex-wrap:wrap}
  .com-v-n{text-align:left}
  .com-v-b{width:100%;min-height:44px}
}

/* ===== Balão "Atualizar Pagamento" (mPag) — layout compacto 05/09/2026 ===== */
.pgm-hd{background:var(--azs);border-left:3px solid var(--az);border-radius:8px;padding:8px 12px;margin-bottom:12px;font-size:12px;line-height:1.45;color:var(--tx)}
.pgm-hd b{font-size:13px}
/* Contagem de gente e faixa da comissão (09/09/2026). Fio acima em vez de bloco
   próprio: o balão foi comprimido de 1.099 para 823px e uma seção nova custaria
   ~40px. Assim são 19px, e a informação fica onde o contexto da venda já está. */
.pgm-hd-n{display:flex;flex-wrap:wrap;gap:4px 10px;margin-top:5px;padding-top:5px;
 border-top:1px solid var(--lnbd);font-size:11.5px;color:var(--sb);line-height:1.35}
.pgm-hd-n b{font-size:11.5px;color:var(--az2);font-variant-numeric:tabular-nums}
/* No escuro o fundo do .pgm-hd é o azul-marinho --azs: `--sb` ali dá 4,49 e
   reprova AA por 0,01, e `--az` no número dá 4,52 — os dois raspando. Medido:
   --lb-muted 5,37 e #93c5fd 5,79. Tokens que existem nos dois temas. */
[data-theme="dark"] .pgm-hd-n{color:var(--lb-muted)}
[data-theme="dark"] .pgm-hd-n b{color:#93c5fd}
.pgm-sec{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--az);border-bottom:1px solid var(--lnbd);padding-bottom:3px;margin:8px 0 6px}
.pgm-sub{font-weight:500;text-transform:none;letter-spacing:0;color:var(--sb);font-size:11px}

/* Balão de pagamento: fileira flex, não grade fixa (09/09/2026). A razão social
   some quando a coluna não existe (`vendaTemColunaRazao`), e com `repeat(4,1fr)`
   isso deixaria 1/4 de linha vazia — a armadilha registrada no guia de balões.
   `flex:1 1 <base>` redistribui sozinho. */
.pgm-fl{display:flex;flex-wrap:wrap;gap:0 12px;align-items:flex-start}
.pgm-fl>.fg{flex:1 1 150px;min-width:0}
/* LARGURAS MEDIDAS CONTRA O TEXTO REAL DAS 412 VENDAS (09/09/2026).
   O balão dividia tudo em partes iguais: o CEP ficava com 302px para exibir 9
   dígitos (115px), enquanto o Endereço tinha 520 e precisava de 645. Somadas,
   eram ~890px de sobra — quase a largura útil inteira.

   Os `flex-basis` abaixo são o que cada campo pede, com folga:
     status 250 · data 165 · previsão 165 · CNPJ 185 · CEP 125 · UF 78 · NF 110
   Quem cresce é só quem tem texto longo (razão social, endereço, e-mail) e o
   checkbox, que não tem caixa desenhada — esticá-lo não aparece na tela. */
.pgm-fl>.pgm-f-st{flex:0 1 250px}
.pgm-fl>.pgm-f-dt{flex:0 1 165px}
.pgm-fl>.pgm-f-pv{flex:0 1 165px}
.pgm-fl>.pgm-f-ck{flex:1 1 200px}
.pgm-fl>.pgm-f-ck .pgm-chk{margin-top:22px}
.pgm-fl>.pgm-f-cnpj{flex:0 1 185px}
.pgm-fl>.pgm-f-cep{flex:0 1 125px}
.pgm-fl>.pgm-f-uf{flex:0 1 78px}
.pgm-f-nf{flex:0 1 110px}
/* Sem a coluna `razao_social` a fileira fica com 3 campos curtos e a sobra vai
   para o CNPJ, que é o único dos três com o que fazer com ela. */
.pgm-fl>.pgm-f-rz{flex:1 1 260px}
/* Endereço e e-mail são os dois longos — medido: até 172 e 117 caracteres, com
   p90 de 645 e 342px. O endereço leva a parte maior. */
.pgm-fl>.pgm-f-end{flex:1.4 1 300px}
.pgm-fl>.pgm-f-eml{flex:1 1 260px}

/* O balão de pagamento tem largura PRÓPRIA (`m-pag`, passada pelo `mO`): `.m` é
   1.100px e vale para TODOS os modais do app. MEDIDO: só dimensionar os campos
   deixava 184 e 226px de sobra no fim de duas fileiras — o desperdício mudava de
   lugar em vez de sumir. A 960px as três fileiras fecham com sobra ZERO. */
.m.m-pag{max-width:960px}
/* Balão "Textos da proposta" do gerador IC (Etapa 7): são 10 textareas, um
   embaixo do outro — largura de leitura, não de formulário. */
.m.m-textos{max-width:900px}
.m.m-textos .fg textarea{min-height:0;line-height:1.35}
@media(min-width:641px){.m.m-textos .fg textarea{font-size:13px}} /* no celular fica o 16px do #mc (piso do Safari) */
.m.m-textos .fg{margin-bottom:8px}
.m.m-textos .ptx-r4{display:grid;grid-template-columns:1.4fr 1.6fr 1fr 1fr;gap:10px}
@media(max-width:640px){.m.m-textos .ptx-r4{grid-template-columns:1fr 1fr}}
/* No celular a largura útil é 306px: mantidos os `flex-basis` do desktop, o
   Status ficava com 250 (sobrando 56 à direita) e Data/Previsão quebravam uma
   por linha com 165 cada — campos de larguras diferentes empilhados, cada um com
   sobra própria. Aqui a fileira vira 1 coluna, com os pares que cabem lado a
   lado divididos: data/previsão meio a meio e CEP/UF em 60/40.
   Todas empatam em (0,2,0) com as regras base e vencem por ordem no arquivo. */
@media(max-width:640px){
  .pgm-fl>.fg{flex:1 1 100%}
  .pgm-fl>.pgm-f-dt,.pgm-fl>.pgm-f-pv{flex:1 1 calc(50% - 6px)}
  .pgm-fl>.pgm-f-cep{flex:1 1 calc(58% - 6px)}
  .pgm-fl>.pgm-f-uf{flex:1 1 calc(42% - 6px)}
  .pgm-fl>.pgm-f-ck .pgm-chk{margin-top:0}
}

/* "Situação do recebimento" está preenchida em 16 das 412 vendas (3,9%): como
   campo sempre aberto ela custava 97px para mostrar uma caixa vazia. Fechada
   custa 46. O textarea CONTINUA no DOM — `details` fechado não remove filhos —
   então o `sPag` lê `p_obsr` sem saber que ela existe. Nasce ABERTA quando há
   anotação, que é a regra da casa para bloco recolhível. */
.pgm-det{margin-bottom:10px}
.pgm-det>summary{cursor:pointer;list-style:none;font-size:12px;font-weight:600;
 color:var(--tx);padding:7px 0;display:flex;align-items:center;gap:6px;min-height:34px}
.pgm-det>summary::-webkit-details-marker{display:none}
.pgm-det>summary::before{content:'';width:0;height:0;flex:0 0 auto;
 border-left:5px solid currentColor;border-top:4px solid transparent;border-bottom:4px solid transparent;
 transition:transform var(--transition)}
.pgm-det[open]>summary::before{transform:rotate(90deg)}
.pgm-det>.fg{margin-bottom:0}
@media(max-width:640px){.pgm-det>summary{min-height:44px}}

/* o rótulo do checkbox mora DENTRO de um .fg, então precisa vencer `.fg label`
   (0,1,1) — daí o seletor com a classe do bloco, não a classe sozinha. */
.fg .pgm-chk,.pgm-chk{display:flex;align-items:center;gap:6px;font-size:11px;font-weight:500;margin:5px 0 0;color:var(--sb);cursor:pointer;min-height:24px}
/* O alvo do checkbox é o LABEL inteiro (clicar no texto alterna) — o input não
   aceita ::after, então quem carrega a área é ele. 24px é o mínimo do WCAG 2.2
   AA; no celular vai a 44, a régua da casa. */
.fg .pgm-chk input[type=checkbox]{width:auto;margin:0;flex:none}
/* 170px vinham do rótulo "Número da NF" (82px), não do dado (50). Com o rótulo
   curto a coluna cabe em 110. Quem manda numa coluna estreita é o cabeçalho —
   a mesma lição da tabela de Recebimentos. */
.pgm-nf{display:grid;grid-template-columns:110px 1fr;gap:12px;align-items:end}
.pgm-nf-a{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding-bottom:12px}
.pgm-ok{font-size:12px;font-weight:700;color:var(--vd)}
/* `--vd` sobre branco dá 3,3:1 — mesmo caso do botão de UF e das pílulas de
   status; no claro o tom que passa é #15803d. */
:root:not([data-theme="dark"]) .pgm-ok{color:#15803d}
.pgm-no{font-size:12px;color:var(--sb)}
.pgm-b{display:inline-flex;align-items:center;gap:5px;font:inherit;font-size:12px;font-weight:600;padding:8px 11px;border-radius:8px;border:1px solid var(--lnbd);background:var(--wh);color:var(--az2);cursor:pointer}
.pgm-b-x{color:var(--vm)}
.pgm-b:hover{filter:brightness(1.06)}
.pgm-file{font-size:12px;border:1px dashed var(--lnbd);border-radius:8px;padding:9px 12px;cursor:pointer;color:var(--sb)}
.pgm-file:hover{border-color:var(--az);color:var(--az)}
/* `:not(.pgm-b-x)` é obrigatório: sem ele esta regra (0,2,0) vence `.pgm-b-x`
   (0,1,0) e o "Remover" volta a sair AZUL no escuro — o mesmo defeito do
   `class="b bd"` que este bloco veio corrigir. */
[data-theme="dark"] .pgm-b:not(.pgm-b-x){color:var(--az)}
/* Celular: o campo do modal ficava em 42–43px (padding 9px + borda) — abaixo dos
   44 de alvo. Vale para TODO modal do app, não só este. */
@media(max-width:640px){
  #mc .fg input:not([type=checkbox]):not([type=radio]):not([type=file]),
  #mc .fg select,#mc .fg textarea{min-height:44px}
  #mc .pgm-nf{grid-template-columns:1fr}
  #mc .pgm-b,#mc .pgm-file{min-height:44px}
  #mc .pgm-chk{min-height:44px}
}
/* Recebimentos embutido na aba do Fluxo: o .p do Fluxo já é o cartão, então o
   .eq-cc não pode trazer o dele por cima (cartão dentro de cartão). */
.eq-cc-emb{background:none;border:0;box-shadow:none;padding:0;margin:0}
.fin-emb-lead{padding:2px 0 10px}
/* No embutido são 3 peças (o "A Receber" saiu por repetir o cartão do Fluxo) e a
   grade base é de 4 colunas fixas: sobrava uma vaga vazia e cada peça ficava com
   132px úteis — MEDIDO, "R$ 129.400,00" a 22px pede 149px e vinha CORTADO.
   Com 3 colunas a peça vai a ~208px e o número cabe. `minmax(0,1fr)` para a
   coluna poder encolher abaixo do conteúdo no meio do caminho. */
.eq-cc-emb .eq-bento{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(max-width:880px){.eq-cc-emb .eq-bento{grid-template-columns:1fr 1fr}}
@media(max-width:430px){.eq-cc-emb .eq-bento{grid-template-columns:1fr}}
.cdx-pag-el{padding:0 3px;color:var(--sb)}
@media(max-width:880px){
  /* 4 colunas em 349px: MEDIDO, com o padding herdado (7px) a tabela pedia 369px
     e o botão de ação saía da vista, exigindo rolagem lateral.
     `#ct` é obrigatório aqui: `#ct th,#ct td` (1,0,1) mais abaixo neste mesmo
     media query define padding 6px 7px e vence `.fin-table tbody td` (0,2,1).
     Quarta vez que essa família de armadilha aparece no repo. */
  #ct .fin-table th,#ct .fin-table td{padding:6px 4px}
  .fin-table .fin-valor{white-space:nowrap;font-size:13px}
}
/* Palavra sem espaço — e-mail, URL — não quebra sozinha e estoura a tabela no
   celular. `anywhere` só age quando falta espaço, então não afeta texto curto. */
@media(max-width:880px){
  #ct td{overflow-wrap:anywhere}
  /* A pílula de status é nowrap, então o navegador dá à coluna Status a largura
     inteira dela e espreme o que sobra. MEDIDO em 375px, Últimas vendas:
     Status 205px contra 74px do nome do órgão, que quebrava em 13 linhas e
     deixava a linha com 240px de altura. Deixando a pílula quebrar, a coluna
     passa a valer a maior PALAVRA e o nome — que é o que importa na linha —
     recupera o espaço. */
  /* min-width para a coluna não colapsar na maior PALAVRA: sem ele o status
     virava 4 linhas de 77px e passava a ser ele o dono da altura da linha. */
  #ct td .bd1{white-space:normal;min-width:84px;max-width:110px;font-size:9.5px;padding:2px 7px;line-height:1.25}
  /* Linha mais fina: o nome do órgão ocupa 5 linhas e o entrelinha de 1,6 era o
     que engordava a célula. Corpo e respiro menores derrubam a altura sem tirar
     nenhuma informação da tela. */
  /* o tamanho tem de ir no TD: a regra .lb-cc .sx table td define a fonte da
     célula e a herança do <table> não a alcança. #ct td (1,0,1) vence. */
  #ct th,#ct td{font-size:10.5px;padding:6px 7px;line-height:1.35}
  /* <select> se dimensiona pela MAIOR opção, e os nomes de curso da casa passam
     de 60 caracteres — sem trava ele empurra o container inteiro (medido: 441px
     de vazamento no gerador de propostas). */
  #ct select{max-width:100%;min-width:0}
}
/* Responsive */
@media(max-width:640px){
  .ld-bento,.eq-bento{grid-template-columns:1fr 1fr}
  .ld-filters,.eq-filters{flex-direction:column}
  .ld-search{width:100%;min-width:0}
  /* 16px é o piso que evita o zoom automático do Safari ao focar. Estes campos
     vinham dos 13,33px do navegador porque o `font:` acima era inválido. */
  .ld-search input{font-size:16px}
  /* em coluna o select ainda estica pela maior opção se não for travado */
  .ld-sel,.eq-sel{width:100%;font-size:16px;min-height:44px}
  .ld-h1,.eq-h1{font-size:20px}
  .ld-top,.eq-top{flex-direction:column}
  .ld-contact-meta{display:none}
  /* Valor de 7 dígitos não cabe: "R$ 4.050.603,59" a 22px pedia 32px a mais do
     que existe em 375px. Corpo menor no lugar de cortar os centavos — o formato
     do dinheiro é o mesmo em 55 pontos de render, e mexer nele por causa de
     layout é o tipo de divergência que este repo evita. */
  .ld-tile-val,.eq-tile-val{font-size:18px;letter-spacing:-.6px}
  .lb-cc .cds .cd .cv,.eq-cc .cd .cv{font-size:19px;letter-spacing:-.5px}
}
/* ===== Detalhe do curso no celular: tela cheia e informação mais densa =====
   MEDIDO em 375px: a casca .eq-cc gastava 48px só de padding lateral (13% da
   tela), o título ocupava 100px em 4 linhas e cada valor da lista de vendas
   vinha a 19px — catorze deles na mesma tela. O `:has(.cd-title)` mira só esta
   página; as outras que usam a mesma casca ficam como estão. */
@media(max-width:640px){
  #ct .eq-cc:has(.cd-title){
    margin-left:calc(-14px - env(safe-area-inset-left,0px));
    margin-right:calc(-14px - env(safe-area-inset-right,0px));
    border-radius:0;
    /* sem isto a margem negativa não alarga nada: o max-width:100% da casca a
       trava na largura do pai */
    max-width:none;
    padding:16px calc(12px + env(safe-area-inset-right,0px)) 24px calc(12px + env(safe-area-inset-left,0px))}
  /* .cd-title tem font-size:20px !important no CSS existente — só !important
     vence !important, mesmo com esta especificidade toda. */
  #ct .eq-cc:has(.cd-title) .eq-h1.cd-title{font-size:17px!important;line-height:1.25}
  #ct .eq-cc:has(.cd-title) .cdx-big{font-size:17px}
  #ct .eq-cc:has(.cd-title) .eq-tile-val{font-size:16px}
  #ct .eq-cc:has(.cd-title) .eq-tile{padding:8px 10px}
  #ct .eq-cc:has(.cd-title) .cdx-chip,
  #ct .eq-cc:has(.cd-title) .cdx-fat{padding:8px 10px}
  /* valor de cada venda: 19px é tamanho de destaque, não de item de lista */
  #ct .mc-amt{font-size:14.5px;line-height:1.35}
  /* Filtros: a regra geral do celular dá 100% a cada controle e empilha três
     linhas (139px). A busca merece a linha inteira; os dois selects dividem a
     seguinte — uma linha a menos sem perder nada. */
  #ct .eq-cc:has(.cd-title) .fl select{flex:1 1 calc(50% - 4px);width:auto}
  /* o painel interno somava mais 23px de cada lado ao padding da casca */
  #ct .eq-cc:has(.cd-title) .p{padding:12px}
  /* abas do curso com 27px de alvo — é a navegação principal desta tela */
  #ct .eq-tab{min-height:40px}
  /* ===== Escala única de alvos no celular =====
     AUDITADO nesta tela: 50 botões, 49 abaixo de 44x44, gaps de 3 a 7px e SEIS
     alturas diferentes (14/20/32/34/40/44). Agora são três papéis:
       44px  ação primária      · 36px  chip de texto      · 40px  ícone quadrado
     Onde crescer custaria altura de página, a área de toque é estendida por
     ::after com inset negativo — 48x48 de alvo real sem mexer no layout, que é
     a técnica que o próprio guia recomenda (hitSlop). */
  #ct .cdx-ab,#ct .cpb,#ct .cdx-pag-ctrl button,#ct .ey,#ct .bk{width:40px;height:40px;position:relative;
    display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}
  #ct .cdx-ab::after,#ct .cpb::after,#ct .cdx-pag-ctrl button::after,
  #ct .ey::after,#ct .bk::after{content:'';position:absolute;inset:-4px}
  /* vale para as três abas do curso e para o resto do app, não só a Comercial */
  #ct td.ac,#ct .ac,#ct .ma,#ct .ph,#ct .fl{gap:8px}
  #ct .b.bsm,#ct .bs.bsm{min-height:36px;min-width:36px;display:inline-flex;align-items:center;
    justify-content:center;position:relative}
  /* chips de 36 e abas de 40 chegam a 44/48 de alvo real sem crescer na tela.
     O inset de -4 casa com o gap de 8: as áreas encostam, nunca se sobrepõem. */
  #ct .b.bsm::after,#ct .bs.bsm::after,#ct .eq-tab::after{content:'';position:absolute;inset:-4px}
  #ct .eq-tab{position:relative;min-height:40px}
  /* o trilho de filtros de status vinha com 7px entre os chips */
  #ct div:has(> .bs.bsm){gap:8px}
  #ct td .b.bsm+.b.bsm,#ct td .bs.bsm+.bs.bsm{margin-left:8px}
  #ct .b.bsm+.bs.bsm,#ct .bs.bsm+.b.bsm{margin-left:4px}
  #ct .ld-pagination-btns,#ct .sg{gap:8px}
  #ct .b.bcta{min-height:44px}
  /* "Salas das oficinas" divide a linha com "Editar evento": sem isto ele
     cai no #ct .b (40px, alvo real de 42) e fica mais baixo que o vizinho. */
  #ct .eq-actions .b{min-height:44px}
  /* "Editar evento" chegava como bloco azul chapado com sombra, acima dos
     números — o elemento mais pesado da tela para uma ação secundária. Vira
     contorno: mesmo alvo de 44px, peso de secundário. Só nesta tela. */
  #ct .eq-cc:has(.cd-title) .eq-top .b.bcta{background:transparent;box-shadow:none;
    border:1px solid var(--az);color:var(--az);font-weight:600}
  /* os que sobraram na auditoria das outras abas: .b comum a 34px, o trilho
     segmentado a 30px e a paginação de leads a 32x32 */
  #ct .b{min-height:40px;position:relative}
  #ct .b::after{content:'';position:absolute;inset:-2px}
  #ct .sg button,#ct .lts button,#ct .met-pills button,#ct .rc-par-b{min-height:40px;position:relative}
  #ct .sg button::after,#ct .lts button::after,#ct .met-pills button::after,#ct .rc-par-b::after{content:'';position:absolute;inset:-2px}
  #ct .rc-eds{min-height:36px;display:inline-flex;align-items:center;position:relative}
  #ct .rc-eds::after{content:'';position:absolute;inset:-4px}
  #ct .lts,#ct .met-pills{gap:8px}
  #ct .ld-pag-btn{width:36px;height:36px;position:relative;display:inline-flex;
    align-items:center;justify-content:center}
  #ct .ld-pag-btn::after{content:'';position:absolute;inset:-4px}
  #ct .ld-pagination{gap:8px}
  /* a pílula de status é clicável e tinha 20px de altura */
  #ct .bd1.sb-click{min-height:32px;display:inline-flex;align-items:center;justify-content:center;position:relative}
  #ct .bd1.sb-click::after{content:'';position:absolute;inset:-6px}
  /* "← Cursos" era um alvo de 14px */
  #ct .cd-bk{min-height:44px;display:inline-flex;align-items:center}
  /* gap mínimo de 8px entre alvos vizinhos (estavam em 3 a 7) */
  #ct .mc-act,#ct .cca,#ct .cdx-pag-ctrl,#ct .cdx-parts-h,#ct .eq-tabs{gap:8px}

  /* cartão de venda: 191px + 11 de margem, catorze deles. O respiro cede,
     os botões de ação não — eles são alvo de toque. */
  #ct .mcard{padding:10px 11px;margin-bottom:8px}
  #ct .mc-foot{padding-top:8px}

  /* ===== Lista de cursos: mesma dieta =====
     MEDIDO em 375px: 452px por cartão, nove deles = 4.826px. O `:has(.cg .ccb)`
     mira só esta lista — .ccb existe apenas no cartão de curso. */
  #ct .eq-cc:has(.cg .ccb){
    margin-left:calc(-14px - env(safe-area-inset-left,0px));
    margin-right:calc(-14px - env(safe-area-inset-right,0px));
    border-radius:0;max-width:none;
    padding:16px calc(12px + env(safe-area-inset-right,0px)) 24px calc(12px + env(safe-area-inset-left,0px))}
  #ct .cg:has(.ccb){gap:10px}
  /* A coluna única dos tiles nasceu para caber "R$ 4.050.603,59" num container
     de 299px. Aqui a casca é borda a borda (351px) e os valores são contagens
     de 1 a 4 dígitos — duas colunas cabem, e a faixa cai de 496px para ~250. */
  #ct .eq-cc:has(.cg .ccb) .eq-bento{grid-template-columns:1fr 1fr}

  /* Tile com o ícone AO LADO do conteúdo, não empilhado em cima: o ícone
     ocupava uma linha inteira de 26px + 1 de margem só para si. Vira grade de
     duas colunas com o ícone atravessando as três linhas. 117px → ~75px. */
  #ct .eq-cc:has(.cd-title) .eq-tile,
  #ct .eq-cc:has(.cg .ccb) .eq-tile{
    display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:10px;align-items:center}
  #ct .eq-cc:has(.cd-title) .eq-tile-ico,
  #ct .eq-cc:has(.cg .ccb) .eq-tile-ico{grid-row:1/4;grid-column:1;margin-bottom:0;align-self:center}
  #ct .eq-cc:has(.cd-title) .eq-tile-lbl,#ct .eq-cc:has(.cd-title) .eq-tile-val,#ct .eq-cc:has(.cd-title) .eq-tile-sub,
  #ct .eq-cc:has(.cg .ccb) .eq-tile-lbl,#ct .eq-cc:has(.cg .ccb) .eq-tile-val,#ct .eq-cc:has(.cg .ccb) .eq-tile-sub{grid-column:2}

  /* ===== Afinar a tela do evento no celular =====
     MEDIDO em 375px: a chapa de ícone tinha 26px para um traço de 15, e a faixa
     de 5 peças ocupava 275px — mais que o título, o subtítulo e o botão juntos.
     O ícone é apoio de leitura, não conteúdo: encolhe primeiro. */
  #ct .eq-cc:has(.cd-title) .eq-tile-ico,
  #ct .eq-cc:has(.cg .ccb) .eq-tile-ico{width:20px;height:20px;border-radius:6px}
  #ct .eq-cc:has(.cd-title) .eq-tile-ico svg,
  #ct .eq-cc:has(.cg .ccb) .eq-tile-ico svg{width:12px;height:12px}
  /* rótulo de 10px numa caixa de 16: a entrelinha 1,6 é de texto corrido */
  /* MEDIDO aqui: o rótulo do tile dá 3,2:1 a 10px — reprova AA (mínimo 4,5).
     É o --lb-faint, dívida antiga da família .eq-tile já registrada no
     CLAUDE.md; nesta tela ele passa a usar o --lb-muted, que é o tom de
     rótulo do resto do app. */
  #ct .eq-cc:has(.cd-title) .eq-tile-lbl{line-height:1.3;letter-spacing:.04em;color:var(--lb-muted)}
  #ct .eq-cc:has(.cd-title) .eq-tile-sub{line-height:1.3}
  #ct .eq-cc:has(.cd-title) .eq-bento{gap:8px}
  /* o mesmo traço de 15px aparece no cabeçalho e nos avisos desta tela */
  #ct .eq-cc:has(.cd-title) .cdx-ic svg,
  #ct .eq-cc:has(.cd-title) .cdx-em svg{width:13px;height:13px}
  /* ritmo vertical: 16px entre cada bloco somava 64px só de respiro antes do
     conteúdo, num aparelho onde a primeira dobra tem 812 menos o cabeçalho */
  #ct .eq-cc:has(.cd-title) .eq-top{gap:10px}
  #ct .eq-cc:has(.cd-title)>.eq-top,
  #ct .eq-cc:has(.cd-title)>.eq-bento,
  #ct .eq-cc:has(.cd-title)>.eq-tabs{margin-bottom:12px}
  #ct .eq-cc:has(.cd-title)>.cd-bk{margin-bottom:8px}

  /* Textos do cartão de curso: o nome vinha a 15px e os três números a 18px com
     entrelinha 1,6 — 29px de caixa para um número de dois dígitos. */
  /* Escala do cartão, de cima para baixo: total 18 > nome 14,5 > números 14 >
     apoio 12 > data 11. Antes a DATA vinha a 14px com entrelinha 1,6 — maior
     que o nome do curso, que é a identidade do cartão. */
  #ct .cc .ccd{font-size:11px;line-height:1.25}
  #ct .cc .ccn{font-size:14.5px;line-height:1.28}
  #ct .cc .ccs b{font-size:14px;line-height:1.15}
  #ct .cc .ccs{gap:6px}
  #ct .cc .cct{padding:12px 14px}
  #ct .cc .ccb{padding:12px 14px}
  #ct .cc .cca{padding:10px 14px}
  #ct .cc .ccn{margin-bottom:8px}
  #ct .cc .ccs{padding-top:8px}
  #ct .cc .cctot{margin-top:8px;padding:8px 12px}
  /* R$ a 23px é tamanho de destaque de painel, não de item de lista */
  #ct .cc .cctot b{font-size:18px}
  #ct .cc .cc-vi{margin-top:8px;padding:8px 10px}
}
@media(max-width:430px){
  /* Faixa do curso: 2 colunas de 122px, e o chip de Comissão precisa de 137 — o
     valor ficava espremido em três linhas e vazava 16px. Uma coluna, como as
     outras grades de KPI já fazem abaixo deste ponto. O `span 2` do bloco de
     640px precisa ser desfeito, senão sobra uma coluna fantasma. */
  /* Inscritos e Comissão lado a lado: a coluna única existia porque o chip de
     Comissão pedia 137px e a coluna dava 122. Com a casca borda a borda são
     170px por coluna — cabe, e a faixa deixa de gastar duas alturas. */
  #ct .cdx-top{grid-template-columns:1fr}
  /* As três faixas de alerta vinham com fundo SÓLIDO inline (var(--amb)/--azs/
     --vdb), sem borda e raio 8 — o resto da página é cartão com borda e raio 14.
     Mesma casca dos outros; a cor continua no texto e no ícone, que é onde ela
     informa. O !important é obrigatório: o fundo é estilo inline. */
  #ct .cdx-al{background:var(--wh)!important;border:1px solid var(--lnbd);border-radius:14px}
  /* Rótulo do cartão a 42% da linha desperdiçava 125px em "Nome"/"E-mail", e
     empurrava o nome do participante para duas linhas alinhadas à direita. */
  #ct .sx.cardize td[data-label]::before{flex:0 0 auto;min-width:52px;max-width:40%}
  #ct .sx.cardize td{padding:6px 0}
  /* Em 430px os rótulos não cabem junto das ações: Café, Modo TV e Senha viram
     botões quadrados de ícone, do mesmo tamanho do tema — o header fica com uma
     fileira de alvos iguais em vez de chips de larguras diferentes. */
  .hdr-nome{display:none}
  .hr>.b .hdr-lbl,.ui>.b .hdr-lbl{display:none}
  .hr>.b:has(.hdr-lbl),.ui>.b:has(.hdr-lbl){width:38px;padding:0;justify-content:center}
  .ld-bento,.eq-bento{grid-template-columns:1fr}
  .cds{grid-template-columns:1fr}
  .lb-cc .cds .cd .cv,.eq-cc .cd .cv{font-size:20px}
}


/* ===== Custos por evento — cabe as 10 colunas sem scroll horizontal =====
   O app é limitado a 1500px (.ct.side) e sobra ~1150px para o conteúdo. Com o
   padding padrão (16px de cada lado, 320px só nisso) e th{white-space:nowrap},
   a tabela estourava e a coluna Descrição saía da tela cortada.
   Compacta APENAS esta tabela; as outras seguem com o padrão. */
.fin-custos table{width:100%}
.fin-custos th,.fin-custos td{padding:9px 10px}
.fin-custos th{white-space:normal;line-height:1.25}   /* "Fornecedor / Professor" quebra em 2 linhas */
.fin-custos td:first-child{min-width:190px}            /* descrição nunca espremida a ponto de sumir */
.fin-custos .ac .b,.fin-custos .ac button{padding:3px 7px;font-size:11px}
.fin-custos td .b.bsm{padding:3px 7px;font-size:11px}
/* Célula de orçamento: com anexo são DOIS botões. Soltos na <td> o "Orçamento"
   quebrava em duas linhas e o × caía numa terceira, esticando a linha inteira. */
.orc-cel{display:inline-flex;align-items:center;gap:5px;flex-wrap:nowrap}
.fin-custos td:nth-last-child(2){white-space:nowrap}

/* Telas grandes: o app era limitado a 1500px e sobravam ~400px sem uso num
   monitor de 1920. Só acima de 1700px de viewport — abaixo disso nada muda.
   Vale para .ct.side e .ct.side.col (sidebar colapsada), que é o layout do app. */
@media(min-width:1700px){
  .ct.side{max-width:1800px}
}

/* ===== Resultado por Produto (financeiro.js — vProdutos) =====
   Comparação lado a lado de duas linhas de produto. Usa os tokens --lb-* (não
   --bf/--bd/--tx): só a família --lb-* tem variante de tema escuro de verdade —
   --bf continua #fff no dark e foi o que apagou os cartões da 1ª versão. */
.prod-scope{--c-curso:#0284c7;--c-ic:#7c3aed;--c-curso-t:#0369a1;--c-ic-t:#6d28d9}
[data-theme="dark"] .prod-scope{--c-curso:#38bdf8;--c-ic:#a78bfa;--c-curso-t:#7dd3fc;--c-ic-t:#c4b5fd}

.prod-split{display:flex;height:10px;border-radius:6px;overflow:hidden;background:var(--lb-tile);border:1px solid var(--lb-stroke);margin:4px 0 18px}
.prod-split i{display:block;height:100%}

.prod-duel{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}
.prod-side{--pc:var(--c-curso);--pct:var(--c-curso-t);position:relative;background:var(--lb-panel-bg);border:1px solid var(--lb-panel-bd);border-radius:16px;padding:20px 22px 18px;box-shadow:var(--lb-panel-shadow);backdrop-filter:var(--lb-blur);-webkit-backdrop-filter:var(--lb-blur);overflow:hidden;min-width:0}
.prod-side.rx{--pc:var(--c-ic);--pct:var(--c-ic-t)}
.prod-side::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:var(--pc)}
.prod-side-h{display:flex;align-items:flex-start;gap:10px;margin-bottom:16px}
.prod-dot{width:10px;height:10px;border-radius:3px;background:var(--pc);flex:0 0 auto;margin-top:5px}
.prod-side-t{font-size:16px;font-weight:800;color:var(--lb-txt);line-height:1.2;margin:0;letter-spacing:-.2px}
.prod-side-s{font-size:11.5px;color:var(--lb-muted);font-weight:600;margin:3px 0 0;line-height:1.3}
.prod-share{margin-left:auto;flex:0 0 auto;font-size:13px;font-weight:800;color:var(--pct);background:var(--lb-tile);border:1px solid var(--lb-stroke);border-radius:8px;padding:4px 9px;font-variant-numeric:tabular-nums}
.prod-lbl{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.7px;color:var(--lb-muted);margin:0 0 3px}
.prod-hero{font-size:clamp(28px,3.2vw,38px);font-weight:800;letter-spacing:-1.2px;line-height:1.05;color:var(--lb-txt);font-variant-numeric:tabular-nums;margin:0 0 18px}

.prod-meter{margin-bottom:18px}
.prod-meter-top{display:flex;justify-content:space-between;align-items:baseline;gap:10px;font-size:12.5px;color:var(--lb-muted);margin-bottom:6px}
.prod-meter-top b{color:var(--lb-txt);font-weight:700;font-variant-numeric:tabular-nums}
.prod-meter-pct{font-weight:800;color:var(--pct);font-variant-numeric:tabular-nums;white-space:nowrap}
.prod-bar{height:9px;border-radius:5px;background:var(--lb-tile);border:1px solid var(--lb-stroke);overflow:hidden}
.prod-bar-fill,.prod-top-bar i{display:block;height:100%;border-radius:inherit;background:var(--pc);transform-origin:left center;transform:scaleX(var(--s,0));animation:prodGrow .45s cubic-bezier(.2,.75,.2,1) forwards}
@keyframes prodGrow{from{transform:scaleX(0)}to{transform:scaleX(var(--s,0))}}
.prod-meter-bot{display:flex;justify-content:space-between;gap:10px;font-size:11.5px;color:var(--lb-muted);margin-top:5px;font-variant-numeric:tabular-nums}

.prod-sts{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding-top:15px;border-top:1px solid var(--lb-stroke)}
.prod-st{min-width:0}
.prod-st b{display:block;font-size:17px;font-weight:800;color:var(--lb-txt);line-height:1.15;font-variant-numeric:tabular-nums;letter-spacing:-.4px}
.prod-st span{display:block;font-size:11px;font-weight:600;color:var(--lb-muted);margin-top:2px;line-height:1.25}

.prod-trend{margin-top:16px;color:var(--pc)}
.prod-spark{display:block;width:100%;height:28px}
.prod-trend-l{font-size:11.5px;color:var(--lb-muted);margin:6px 0 0;font-weight:600}
.prod-trend-l b{color:var(--lb-txt)}
.prod-note{font-size:11.5px;color:var(--lb-muted);margin:12px 0 0;font-weight:600}

.prod-top{margin-top:20px;background:var(--lb-panel-bg);border:1px solid var(--lb-panel-bd);border-radius:16px;padding:18px 20px;box-shadow:var(--lb-panel-shadow);backdrop-filter:var(--lb-blur);-webkit-backdrop-filter:var(--lb-blur)}
.prod-top-h{font-size:13px;font-weight:800;color:var(--lb-txt);margin:0 0 14px;letter-spacing:-.1px}
.prod-top-l{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}
.prod-top-b{display:flex;justify-content:space-between;align-items:baseline;gap:12px;width:100%;background:none;border:0;padding:4px 2px;margin:0 0 5px;cursor:pointer;font:inherit;text-align:left;border-radius:6px;transition:opacity var(--transition)}
.prod-top-b:hover{opacity:.7}
.prod-top-n{display:flex;align-items:baseline;gap:8px;min-width:0;font-size:13px;font-weight:600;color:var(--lb-txt);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.prod-top-v{flex:0 0 auto;font-size:13px;font-weight:800;color:var(--lb-txt);font-variant-numeric:tabular-nums}
.prod-top-bar{height:6px;border-radius:4px;background:var(--lb-tile);overflow:hidden}

.prod-avisos{margin-top:18px;display:flex;flex-direction:column;gap:8px}
.prod-aviso{font-size:12.5px;line-height:1.5;color:var(--lb-muted);background:var(--lb-tile);border-left:3px solid var(--lb-stroke);border-radius:0 8px 8px 0;padding:10px 14px;margin:0}
.prod-aviso b{color:var(--lb-txt);font-weight:700}
.prod-aviso.lj{border-left-color:var(--lb-am)}
.prod-aviso.az{border-left-color:var(--lb-cy)}
.prod-rodape{font-size:11.5px;line-height:1.55;color:var(--lb-muted);margin:16px 0 0}
.prod-rodape b{color:var(--lb-txt)}
.prod-vazio{text-align:center;padding:48px 20px;color:var(--lb-muted)}
.prod-vazio svg{color:var(--lb-muted);margin-bottom:10px}
.prod-vazio p{margin:0;font-size:13.5px;line-height:1.6}
.prod-vazio b{color:var(--lb-txt)}

@media(max-width:880px){
  .prod-duel{grid-template-columns:1fr;gap:14px}
  .prod-side{padding:18px 16px 16px}
  .prod-hero{font-size:30px}
  .prod-top-b{padding:11px 2px;min-height:44px}
}
@media(max-width:430px){
  .prod-sts{grid-template-columns:1fr 1fr}
  .prod-st:last-child{grid-column:1/-1;padding-top:8px;border-top:1px solid var(--lb-stroke)}
}

/* ===== Resultado por Produto no celular: a tela inteira, sem calha =====
   MEDIDO em 375px: o texto dentro de um painel começava a 54px da borda —
   .ct (14) + .eq-cc (24) + .prod-side (16) — e sobravam 267px de 375 (71%)
   para os números que a tela existe para mostrar. Três recuos aninhados
   separando um cartão de um fundo que, no celular, não tem nada ao lado.

   O cartão passa a SANGRAR de ponta a ponta: a margem negativa cancela o
   padding lateral do .ct e o recuo do texto vira um só (12px).

   > O env() do notch é PRESERVADO nas duas pontas. Ele não é decoração: em
   > paisagem, num aparelho com notch, sangrar por baixo dele esconde texto.
   > Por isso a margem cancela "14px + inset" e o padding devolve "12px + inset"
   > — o cartão encosta na borda SEGURA, não na borda física. */
@media(max-width:640px){
  #ct .eq-cc.prod-scope{
    margin-left:calc(-14px - env(safe-area-inset-left,0px));
    margin-right:calc(-14px - env(safe-area-inset-right,0px));
    border-radius:0;
    /* sem isto a margem negativa não alarga nada: o `#ct>*{max-width:100%}`
       da linha 1328 trava a casca na largura do pai — mesma armadilha já
       documentada no bloco do detalhe do curso, logo acima. */
    max-width:none;
    padding:18px calc(12px + env(safe-area-inset-right,0px)) 26px calc(12px + env(safe-area-inset-left,0px));
  }
  /* De ponta a ponta o painel não precisa de tanta calha própria. */
  #ct .eq-cc.prod-scope .prod-side{padding:16px 14px 14px}
  #ct .eq-cc.prod-scope .prod-top{padding:16px 14px}
}
@media(prefers-reduced-motion:reduce){
  .prod-bar-fill,.prod-top-bar i{animation:none}
}

/* ===== Investimento × Retorno: linha do evento que abre (dashboard.js) =====
   O marketing se lança e se edita AQUI, sem ir ao Custos & Lucro do evento. */
.fli{border-top:1px solid var(--lb-stroke)}
.fli-h{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;padding:8px 0}
.fli-n{flex:1 1 240px;min-width:0;display:flex;align-items:baseline;gap:7px;background:none;border:0;padding:4px 2px;margin:0;
  font:inherit;font-size:12.5px;font-weight:600;color:var(--lb-txt);text-align:left;cursor:pointer;border-radius:7px}
.fli-n:hover{opacity:.75}
.fli-n:focus-visible{outline:2px solid var(--lb-cy);outline-offset:2px}
.fli-ar{width:13px;height:13px;flex:0 0 auto;color:var(--lb-muted);transition:transform .18s ease;transform:translateY(1px)}
.fli.on .fli-ar{transform:translateY(1px) rotate(90deg)}
.fli-d,.fli-c{font-style:normal;font-size:11px;font-weight:600;color:var(--lb-muted);white-space:nowrap}
.fli-c.vazio{color:var(--lb-am)}
.fli-v{flex:0 0 auto;font-size:12px;color:var(--lb-muted);font-variant-numeric:tabular-nums}
.fli-v b{color:var(--lb-txt)}
.fli-v.fut{color:var(--lb-muted);font-style:italic}
.fli-r{flex:0 0 auto;min-width:52px;text-align:right;font-size:13px;font-weight:800;font-variant-numeric:tabular-nums}
.fli-add{flex:0 0 auto;width:30px;height:30px;border-radius:9px;border:1px solid var(--lb-panel-bd);background:var(--lb-tile);
  color:var(--lb-txt);font:inherit;font-size:17px;font-weight:700;line-height:1;cursor:pointer;transition:all .15s}
.fli-add:hover{border-color:var(--lb-cy);color:var(--lb-cy)}
.fli-add:focus-visible{outline:2px solid var(--lb-cy);outline-offset:2px}
.fli-camps{padding:4px 0 12px 20px;display:flex;flex-direction:column;gap:7px}
.fli-camp{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.fli-camp .ct-in{flex:1 1 180px;min-width:0}
.fli-ci{flex:0 0 118px!important}
.fli-camp .fli-cs{flex:0 0 128px!important}
.fli-cn{flex:1 1 180px;min-width:0;font-size:12.5px;color:var(--lb-txt);font-weight:600}
.fli-cv{font-size:12.5px;font-weight:700;color:var(--lb-txt);font-variant-numeric:tabular-nums}
.fli-vazio{font-size:12px;color:var(--lb-muted);margin:2px 0;font-weight:600}
.fli-mais{align-self:flex-start;background:var(--lb-tile);color:var(--lb-txt);border:1px solid var(--lb-panel-bd)}
.fli-mais:hover{border-color:var(--lb-cy)}
@media(max-width:640px){
  .fli-h{gap:6px 10px}
  /* O "+" NÃO cresce para 44px. MEDIDO em 375px: a linha do evento quebra em
     três, o botão cai sozinho na última e um quadrado de 44x44 com um sinal de
     17px no meio vira o elemento mais pesado da lista — pesa mais que o nome do
     evento, que é o que se lê. Ele fica com os 30px do desktop e o alvo de toque
     vem do ::after com inset negativo (hitSlop, a mesma técnica da reforma da
     tela do evento, logo acima): 44x44 de área real sem ocupar 44x44 na tela. */
  /* -8px, não -7px: o inset de um absoluto conta a partir do PADDING BOX, e o
     botão tem borda de 1px com box-sizing:border-box — 30px de fora viram 28px
     por dentro. Com -7 o alvo saía 42x42 e reprovava por 2px. MEDIDO com
     elementFromPoint: com -8 os quatro cantos de 44x44 acertam o botão. */
  .fli-add{margin-left:auto;position:relative}
  .fli-add::after{content:'';position:absolute;inset:-8px}
  .fli-camps{padding-left:0}
  .fli-ci,.fli-camp .fli-cs{flex:1 1 120px!important}
  .fli-camp .ct-in{min-height:44px}
}

/* Etiqueta de classificação na listagem de Custos Fixos. Rosa da categoria
   Marketing (o mesmo do Custos & Lucro e do Diagnóstico), não a cor de área. */
.cf-mkt{display:inline-flex;align-items:center;margin-left:7px;padding:2px 8px;border-radius:999px;
  font-size:10px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap;
  color:#9d174d;background:rgba(190,24,93,.12);border:1px solid rgba(190,24,93,.28)}
[data-theme="dark"] .cf-mkt{color:#f9a8d4;background:rgba(244,114,182,.14);border-color:rgba(244,114,182,.34)}

/* ===== Investimento × Retorno em caixas (dashboard.js — flBlocoInv) =====
   Saiu → Voltou → quanto rendeu. O fixo tem caixa própria porque na prática
   ele é metade do investimento e vinha no rodapé. */
.mki{--camp:#0369a1;--fixo:#be185d;--avul:#6d28d9;--rt:var(--lb-gn);--amb:#a16207}
[data-theme="dark"] .mki{--camp:#38bdf8;--fixo:#f472b6;--avul:#a78bfa;--amb:#f5b544}
[data-theme="dark"] .mki-fx{--ct:#f9a8d4}
[data-theme="dark"] .mki-rt{--ct:var(--c)}
.mki-bento{display:grid;grid-template-columns:5fr 3.4fr 4fr;gap:12px;margin-bottom:12px}
.mki-bx{--c:var(--camp);--ct:var(--c);position:relative;background:var(--lb-panel-bg);border:1px solid var(--lb-panel-bd);
  border-radius:14px;padding:15px 17px;min-width:0}
.mki-bx::before{content:'';position:absolute;inset:0 0 auto 0;height:3px;border-radius:14px 14px 0 0;background:var(--c)}
/* No claro o verde --lb-gn (#12a05f) dá 3,38:1: passa como texto grande, mas o
   "Voltou" é número de decisão — tom próprio, 4,9:1. */
.mki-am{--c:var(--amb)} .mki-fx{--c:var(--fixo)} .mki-rt{--c:var(--rt);--ct:#0b7a4e}
.mki-lbl{display:flex;align-items:center;gap:7px;font-size:10.5px;font-weight:800;letter-spacing:.08em;
  text-transform:uppercase;color:var(--lb-muted);margin:0 0 8px}
.mki-lbl i{width:8px;height:8px;border-radius:3px;background:var(--c);flex:0 0 auto}
/* --c pinta faixa e ponto (não-texto); --ct é o tom do NÚMERO. O rosa do fixo
   dava 3,86:1 no escuro — passa como texto grande, mas é o número promovido
   da tela, então ganha um tom próprio. */
.mki-big{font-size:clamp(24px,2.6vw,31px);font-weight:800;letter-spacing:-1.1px;line-height:1;margin:0;
  color:var(--ct);font-variant-numeric:tabular-nums}
.mki-sub{font-size:11.5px;color:var(--lb-muted);font-weight:600;margin:7px 0 0;line-height:1.4}
.mki-sub b{color:var(--lb-txt)}
/* composição — barra empilhada com rótulo direto (2-3 fatias não pedem rosca) */
.mki-stack{display:flex;height:12px;border-radius:7px;overflow:hidden;border:1px solid var(--lb-stroke);
  background:var(--lb-tile);margin:13px 0 9px}
.mki-stack i{display:block;height:100%}
.mki-stack i+i{border-left:2px solid var(--lb-panel-bg)}
.mki-camp{background:var(--camp)} .mki-fixo{background:var(--fixo)} .mki-avul{background:var(--avul)}
.mki-leg{display:flex;flex-direction:column;gap:5px}
.mki-lg{display:flex;align-items:baseline;gap:8px;font-size:12px;color:var(--lb-muted);font-weight:600;min-width:0}
.mki-lg em{font-style:normal;width:9px;height:9px;border-radius:3px;flex:0 0 auto;transform:translateY(1px)}
.mki-lg s{text-decoration:none;font-size:11px;opacity:.85;font-variant-numeric:tabular-nums}
.mki-lg b{margin-left:auto;color:var(--lb-txt);font-variant-numeric:tabular-nums;white-space:nowrap}
/* caixa do fixo */
.mki-fl{display:flex;flex-direction:column;gap:5px;margin-top:11px}
.mki-fi{display:flex;align-items:baseline;gap:8px;font-size:12px;padding:6px 10px;background:var(--lb-tile);
  border:1px solid var(--lb-stroke);border-radius:8px;min-width:0}
/* Nome de custo fixo é longo e em caixa alta ("AGÊNCIA DE MARKETING"): quebrar
   em duas linhas informa, cortar com reticências não. */
.mki-fi{align-items:flex-start}
.mki-fi span{min-width:0;font-weight:600;color:var(--lb-txt);line-height:1.3;overflow-wrap:anywhere}
.mki-fi b{margin-left:auto;flex:0 0 auto;font-variant-numeric:tabular-nums;color:var(--lb-txt)}
.mki-mais,.mki-vazio{font-size:11.5px;color:var(--lb-muted);font-weight:600;margin:8px 0 0;line-height:1.45}
.mki-act{margin-top:10px}
.mki-b{background:var(--lb-tile);color:var(--lb-txt);border:1px solid var(--lb-panel-bd);border-radius:9px;
  padding:8px 13px;font:inherit;font-size:12px;font-weight:700;cursor:pointer;min-height:38px}
.mki-b:hover{border-color:var(--c)}
.mki-b:focus-visible{outline:2px solid var(--lb-cy);outline-offset:2px}
/* números pequenos dentro da caixa de retorno */
.mki-sts{display:flex;gap:16px;flex-wrap:wrap;margin-top:13px;padding-top:11px;border-top:1px solid var(--lb-stroke)}
.mki-st{min-width:0}
.mki-st b{display:block;font-size:16px;font-weight:800;color:var(--lb-txt);letter-spacing:-.4px;font-variant-numeric:tabular-nums}
.mki-st span{display:block;font-size:10.5px;color:var(--lb-muted);font-weight:600;margin-top:2px;line-height:1.3}
/* faixa de contexto */
.mki-faixa{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:4px}
.mki-fc{background:var(--lb-panel-bg);border:1px solid var(--lb-panel-bd);border-radius:12px;padding:11px 14px;min-width:0}
.mki-fc b{display:block;font-size:17px;font-weight:800;color:var(--lb-txt);letter-spacing:-.5px;font-variant-numeric:tabular-nums}
.mki-fc span{display:block;font-size:11px;color:var(--lb-muted);font-weight:600;margin-top:3px;line-height:1.35}
.mki-nota{font-size:11.5px;color:var(--lb-muted);font-weight:600;margin:-2px 0 2px}
@media(max-width:1100px){
  .mki-bento{grid-template-columns:1fr 1fr}
  .mki-rt{grid-column:1/-1}
}
@media(max-width:760px){
  .mki-bento,.mki-faixa{grid-template-columns:1fr}
  .mki-rt{grid-column:auto}
  .mki-b{min-height:44px}
}

/* Fixo de marketing na aba + modal de marcação (dashboard/financeiro) */
.mkfx-l{display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding:7px 0;
  border-top:1px solid var(--lb-stroke);font-size:12.5px;color:var(--lb-txt)}
.mkfx-l b{font-variant-numeric:tabular-nums}
.mkfx-l.tot{font-weight:800;color:var(--lb-muted)}
.mkfx-l.tot b{color:var(--lb-txt)}
.mkfx{display:flex;flex-direction:column;gap:6px;max-height:52vh;overflow:auto}
.mkfx-i{display:flex;align-items:center;gap:11px;padding:9px 12px;background:var(--azs);border-radius:9px;cursor:pointer;min-height:44px}
.mkfx-i input{flex:0 0 auto;width:18px;height:18px;accent-color:var(--az);cursor:pointer}
.mkfx-i input:disabled{cursor:default}
.mkfx-n{flex:1 1 auto;min-width:0;font-size:13px;font-weight:600}
.mkfx-n small{display:block;font-size:11px;font-weight:600;color:var(--sb);margin-top:1px}
.mkfx-v{flex:0 0 auto;text-align:right;font-size:13px;font-weight:700;font-variant-numeric:tabular-nums}
.mkfx-v small{display:block;font-size:10.5px;font-weight:600;color:var(--sb)}
/* --sb sobre o --azs escuro fica em 4,49:1, um fio abaixo de AA (mesmo caso do .uf-pd) */
[data-theme="dark"] .mkfx-n small,[data-theme="dark"] .mkfx-v small{color:#b6c4d6}

/* ===== Financeiro do evento — categorias (cdFinanceiro) — 23/08/2026 =====
   A planilha única virou "uma resposta + uma porta por categoria". Tokens
   --lb-* (a família --bf/--bd/--tx não tem variante escura completa).
   As cores de categoria são as MESMAS da quebra de custos do Diagnóstico. */
/* --c pinta barra, ponto e ícone (não-texto). --ct é o MESMO matiz num tom que
   passa em AA como texto: medido, o azul de categoria dava 4,02:1 no escuro. */
.evf{--c:var(--lb-muted);--ct:var(--lb-txt)}
.evf-c-local{--c:#2563eb;--ct:#1d4ed8} .evf-c-professor{--c:#7c3aed;--ct:#6d28d9} .evf-c-aluno{--c:#15803d;--ct:#15803d}
.evf-c-marketing{--c:#be185d;--ct:#be185d} .evf-c-geral{--c:#a16207;--ct:#8a5a00} .evf-c-na{--c:#5b6b82;--ct:#475569}
[data-theme="dark"] .evf-c-local{--c:#60a5fa;--ct:#93c5fd} [data-theme="dark"] .evf-c-professor{--c:#a78bfa;--ct:#c4b5fd}
[data-theme="dark"] .evf-c-aluno{--c:#4ade80;--ct:#86efac} [data-theme="dark"] .evf-c-marketing{--c:#f472b6;--ct:#f9a8d4}
[data-theme="dark"] .evf-c-geral{--c:#fbbf24;--ct:#fcd34d} [data-theme="dark"] .evf-c-na{--c:#a2b2ce;--ct:#cbd5e1}
.evf-c-equipe{--c:#0f766e;--ct:#0f766e} [data-theme="dark"] .evf-c-equipe{--c:#2dd4bf;--ct:#5eead4}
/* In-Company · Despesas com equipe: a faixa com as pessoas da ficha (29/09/2026) */
.evf-eqbar{display:flex;align-items:baseline;gap:6px;flex-wrap:wrap;padding:10px 16px;border-bottom:1px solid var(--lb-stroke);background:var(--lb-tile);font-size:13px;line-height:1.35;color:var(--lb-txt)}
.evf-eqbar b{font-size:14px;font-weight:800}
.evf-eqbar span{font-size:12px;color:var(--lb-muted)}

/* 1. Resultado */
.evf-res{background:var(--lb-panel-bg);border:1px solid var(--lb-panel-bd);border-radius:16px;box-shadow:var(--lb-panel-shadow);padding:18px 20px;margin-bottom:12px}
.evf-res-h{display:flex;align-items:flex-start;gap:18px;flex-wrap:wrap}
.evf-res-t{min-width:0;flex:1 1 300px}
.evf-eye{font-size:10.5px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:var(--lb-muted);margin:0 0 3px}
.evf-h{font-size:18px;font-weight:800;letter-spacing:-.3px;color:var(--lb-txt);margin:0;line-height:1.3}
.evf-h b{font-weight:900}
.evf-s{font-size:12.5px;color:var(--lb-muted);margin:5px 0 0;font-weight:600}
.evf-nums{display:flex;gap:24px;margin-left:auto;flex-wrap:wrap}
.evf-rn span{display:block;font-size:10.5px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:var(--lb-muted);margin-bottom:2px}
.evf-rn b{display:block;font-size:24px;font-weight:800;letter-spacing:-1px;line-height:1.05;color:var(--lb-txt);font-variant-numeric:tabular-nums}
.evf-rn b.pos{color:var(--lb-gn)} .evf-rn b.neg{color:var(--lb-vm)} .evf-rn b.am{color:var(--lb-am)}
.evf-rn i{display:block;font-style:normal;font-size:11.5px;color:var(--lb-muted);margin-top:3px;font-weight:600}

/* Composição: barra 100% empilhada com rótulo direto (pizza com 5 fatias
   depende só da cor e obriga a comparar ângulos). */
.evf-stack{margin-top:18px}
.evf-stack-l{display:flex;justify-content:space-between;align-items:baseline;gap:10px;font-size:11.5px;color:var(--lb-muted);font-weight:600;margin-bottom:7px}
.evf-bar{display:flex;height:15px;border-radius:8px;overflow:hidden;border:1px solid var(--lb-stroke);background:var(--lb-tile)}
.evf-bar i{display:block;height:100%;background:var(--c)}
.evf-bar i+i{border-left:2px solid var(--lb-panel-bg)}
.evf-leg{display:flex;flex-wrap:wrap;gap:6px 16px;margin-top:10px}
.evf-lg{display:flex;align-items:baseline;gap:6px;font-size:12px;color:var(--lb-muted);font-weight:600}
.evf-lg b{color:var(--lb-txt);font-variant-numeric:tabular-nums}
.evf-dot{width:9px;height:9px;border-radius:3px;background:var(--c);flex:0 0 auto;transform:translateY(1px)}

/* 2. Cartões por categoria */
.evf-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-bottom:12px}
.evf-cat{position:relative;background:var(--lb-panel-bg);border:1px solid var(--lb-panel-bd);border-radius:14px;box-shadow:var(--lb-panel-shadow);padding:14px 15px 12px;text-align:left;width:100%;font:inherit;color:inherit;cursor:pointer;transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease}
.evf-cat::before{content:'';position:absolute;inset:0 0 auto 0;height:3px;border-radius:14px 14px 0 0;background:var(--c)}
.evf-cat:hover{transform:translateY(-2px);border-color:var(--c)}
.evf-cat:focus-visible{outline:2px solid var(--az);outline-offset:2px}
.evf-cat.on{border-color:var(--c);box-shadow:0 0 0 1px var(--c),var(--lb-panel-shadow)}
.evf-cat-h{display:flex;align-items:center;gap:8px;margin-bottom:9px}
.evf-ic{width:28px;height:28px;border-radius:9px;display:grid;place-items:center;color:var(--c);background:color-mix(in srgb,var(--c) 15%,transparent);flex:0 0 auto}
.evf-ic svg{width:16px;height:16px}
.evf-cat-n{font-size:12.5px;font-weight:700;color:var(--lb-txt);line-height:1.25;min-width:0}
.evf-cat-p{margin-left:auto;font-size:12px;font-weight:800;color:var(--ct);font-variant-numeric:tabular-nums;flex:0 0 auto}
.evf-cat-v{font-size:22px;font-weight:800;letter-spacing:-.8px;color:var(--lb-txt);font-variant-numeric:tabular-nums;line-height:1.1}
.evf-cat-bar{height:6px;border-radius:4px;background:var(--lb-tile);border:1px solid var(--lb-stroke);overflow:hidden;margin:8px 0 9px}
.evf-cat-bar i{display:block;height:100%;background:var(--c)}
.evf-cat-f{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:11.5px;color:var(--lb-muted);font-weight:600}
.evf-cat-go{display:inline-flex;align-items:center;gap:3px;color:var(--ct);font-weight:700;white-space:nowrap}
.evf-cat-go svg{width:13px;height:13px;transition:transform .2s ease}
.evf-cat.on .evf-cat-go svg{transform:rotate(90deg)}
.evf-cat-x{margin-top:8px;padding-top:8px;border-top:1px dashed var(--lb-stroke);font-size:11px;color:var(--lb-am);font-weight:700}

/* 3. Painel de itens */
.evf-det{background:var(--lb-panel-bg);border:1px solid var(--lb-panel-bd);border-radius:16px;box-shadow:var(--lb-panel-shadow);overflow:hidden;margin-bottom:12px}
.evf-det-h{display:flex;align-items:center;gap:10px;padding:13px 16px;border-bottom:1px solid var(--lb-stroke);flex-wrap:wrap}
.evf-det-t{font-size:14px;font-weight:800;color:var(--lb-txt)}
.evf-det-s{font-size:12px;color:var(--lb-muted);font-weight:600}
.evf-det-a{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap;align-items:center}
/* `.bg2` deixa o rótulo ilegível sobre o azul (3ª vez que essa armadilha
   aparece) — botão secundário aqui é contorno, não fundo colorido. */
.evf-gh{background:var(--lb-panel-bg);color:var(--lb-txt);border:1px solid var(--lb-panel-bd)}
.evf-gh:hover{border-color:var(--az)}
.evf-sel{width:auto;min-height:38px}
.evf-det .fin-custos table{margin:0}
.evf-mini{display:inline-block;vertical-align:middle;width:48px;height:5px;border-radius:3px;background:var(--lb-tile);border:1px solid var(--lb-stroke);overflow:hidden}
.evf-mini i{display:block;height:100%;background:var(--c)}
.evf-det-f{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:11px 16px;border-top:2px solid var(--lb-stroke);background:var(--lb-tile);font-size:13px;font-weight:800;color:var(--lb-txt)}
.evf-det-f span{font-variant-numeric:tabular-nums}
.evf-det-f em{font-style:normal;font-weight:700;color:var(--lb-am);font-size:12px}
.evf-tot>td{font-weight:800;background:var(--lb-tile)}
/* Quadro por professor dentro de "Despesas com professor" (10/09/2026): a linha
   de cabeçalho leva nome + subtotal da pessoa. Tokens --lb-* porque a tabela
   vive no .evf-det, que tem gradiente por baixo; no celular vira .cardfull
   sozinha (tem colspan), e o fundo do tile continua a separá-la das linhas.
   `#ct` no seletor porque `#ct td` (1,0,1) força 10,5px abaixo de 880px — é
   cabeçalho de quadro, não célula, e precisa ler como tal no celular. */
#ct .ct-prof>td{font-weight:800;font-size:12px;line-height:1.3;color:var(--lb-txt);background:var(--lb-tile);border-top:2px solid var(--lb-stroke);padding-top:8px;padding-bottom:8px;font-variant-numeric:tabular-nums}
.ct-prof>td span{font-weight:600;color:var(--lb-muted)}
/* Selo "In-Company · vN" na aba Registradas (11/09/2026): o `.b-y` do app dá
   2,74 no tema claro (dívida do `.bd1`). Tom próprio só no claro — o mesmo
   remédio do `.ct-stw`; no escuro o âmbar claro sobre o fundo escuro passa. */
.bd1.prop-ic{color:#854d0e}
[data-theme="dark"] .bd1.prop-ic{color:var(--am)}
/* "abaixo do piso" (Etapa 6): vermelho de texto no claro, o --vm claro no escuro. */
.bd1.prop-piso{color:#b91c1c;margin-left:4px}
[data-theme="dark"] .bd1.prop-piso{color:var(--vm)}
.sx.cardize tr.ct-prof{background:var(--lb-tile);border-color:var(--lb-stroke)}
.sx.cardize tr.ct-prof td{border-top:0;display:inline-block;width:auto;padding:4px 8px 4px 0}

/* 4. Fora da conta */
.evf-av{display:flex;flex-direction:column;gap:8px}
.evf-avi{font-size:12.5px;line-height:1.55;color:var(--lb-muted);background:var(--lb-tile);border-left:3px solid var(--lb-stroke);border-radius:0 10px 10px 0;padding:10px 14px;margin:0}
.evf-avi b{color:var(--lb-txt)}
.evf-avi.w{border-left-color:var(--lb-am)}
.evf-avi.i{border-left-color:var(--lb-cy)}

@media(max-width:1359px){.evf-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:880px){
  .evf-grid{grid-template-columns:1fr 1fr}
  .evf-nums{margin-left:0;gap:16px;width:100%}
  .evf-rn b{font-size:20px}
  .evf-det-a{width:100%}
  .evf-det-a .b,.evf-sel{flex:1 1 auto;min-height:44px}
  .evf-cat{min-height:44px}
}
@media(max-width:560px){.evf-grid{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){.evf-cat{transition:none}}

/* ===== Linha de marketing editável na tabela de custos do evento =====
   Só a seção Marketing do Custos & Lucro usa isto. Campos compactos para não
   engordar a linha da tabela; `.fg input` não alcança aqui (não há .fg). */
/* Status na própria linha (Custos & Lucro do evento). A pílula do status virou
   controle: o WRAPPER carrega a cor (as classes .b-g/.b-y/.b-b de sempre) e o
   select é transparente, herdando cor — assim o verde/azul/âmbar continua sendo
   a leitura da coluna. O caret é um IRMÃO do select, não um background-image:
   <select> não renderiza filhos, e um data-URI não herda a cor do status. */
/* Cadastro de curso/evento: lista de professores e as ajudas do form.
   Grade de 2 colunas no desktop (um seminário tem 4, 6 professores e uma
   coluna só empurraria o resto do form para fora da tela), 1 no celular. */
.mc-nome{display:grid;grid-template-columns:2fr minmax(0,1fr);gap:0 14px}
.mc-4{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1.15fr) minmax(0,.8fr);gap:0 14px}
/* FLEX, não grade fixa (08/09/2026). Com 3 colunas cravadas, esconder o contador
   de professores — o que o formato "Curso" faz — deixava 1/3 DA LINHA VAZIO,
   medido em 1052px de modal. Em flex os campos que sobram se redistribuem
   sozinhos, e o buraco some sem ninguém precisar contar colunas. */
.mc-vp{display:flex;flex-wrap:wrap;gap:0 14px}
.mc-vp>*{flex:1 1 220px;min-width:0}
.mc-vp>*[hidden]{display:none}
/* Oficinas por turno: o select à esquerda e a explicação ao lado, para a linha
   não virar um campo pequeno sozinho numa faixa vazia. Fica FORA do .mc-4 de
   propósito — aquela linha já tem dois input[type=date], que têm largura
   mínima própria e não encolhem. */
.mc-of{display:grid;grid-template-columns:minmax(0,200px) minmax(0,1fr);gap:0 14px;align-items:start}
.mc-of-h{font-size:11.5px;line-height:1.45;color:var(--sb);padding-top:22px}
@media(max-width:820px){.mc-of{grid-template-columns:minmax(0,1fr)}.mc-of-h{padding-top:0;margin-bottom:12px}}
/* Mesma coisa aqui: com 3 colunas fixas e UM professor, o select ficava com
   341px de 1052 e dois terços da linha em branco. `auto-fit` colapsa as trilhas
   vazias e o `max-width` impede que um professor só vire um campo de 1052px —
   nome de professor não precisa disso. */
.mc-profs{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:0 14px}
.mc-profs .mc-prof{max-width:420px}
.mc-profs .mc-prof{margin-bottom:12px}
.mc-profs .mc-prof>label{color:var(--sb)}
/* Origem do material por formato (cadastro do item de estoque) */
/* Lançar custo: passos, lista de itens da categoria e fila de classificação */
.ct-passo{display:flex;align-items:center;gap:8px;font-size:11px;font-weight:800;letter-spacing:.7px;
  text-transform:uppercase;color:var(--sb);margin:16px 0 8px}
.ct-passo i{width:19px;height:19px;border-radius:50%;background:var(--azs);color:var(--az);font-style:normal;
  font-size:10px;font-weight:900;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}
/* 4 colunas e cartao de 2 linhas: a etiqueta divide a linha do valor em vez de
   ocupar uma linha so dela. Medido a 1240px: 304px -> 164px de altura. O
   min-height guarda o alvo de toque de 44px, que o padding menor nao garante. */
.ct-itens{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}
.ct-it{border:1px solid var(--lnbd);border-radius:10px;background:var(--wh);padding:8px 10px;cursor:pointer;
  text-align:left;font:inherit;color:var(--tx);min-height:44px;
  display:flex;flex-direction:column;justify-content:center}
.ct-it b{display:block;font-size:12.5px;font-weight:700;line-height:1.25}
.ct-it small{display:flex;align-items:center;gap:6px;flex-wrap:wrap;color:var(--sb);font-size:11px;margin-top:2px}
.ct-it.on{border-color:var(--az);background:var(--azs)}
.ct-it.livre{border-style:dashed;color:var(--sb)}
.ct-it:focus-visible{outline:2px solid var(--az);outline-offset:2px}
.ct-et{display:inline-block;font-size:9.5px;font-weight:800;letter-spacing:.4px;text-transform:uppercase;
  padding:2px 6px;border-radius:20px;flex:0 0 auto}
.ct-et.est{background:var(--vdb);color:var(--vd)}
.ct-et.sem{background:var(--amb);color:var(--am)}
/* MEDIDO no tema claro: --vd sobre #dcfce7 da 3,00:1 e --am sobre #fef9c3 da
   2,74:1 — os dois reprovam o minimo de 4,5:1 de texto pequeno. Mesmo defeito e
   mesma correcao das pilulas de status (.ct-stw): tom proprio, so no claro. */
:root:not([data-theme="dark"]) .ct-et.est{color:#15803d}
:root:not([data-theme="dark"]) .ct-et.sem{color:#854d0e}
.ct-vazio{font-size:12.5px;color:var(--sb);padding:10px 12px;border:1px dashed var(--bd);border-radius:10px}
.est-pend{border:1px solid var(--am);border-radius:12px;overflow:hidden;margin:12px 0 4px}
.est-pend-t{padding:10px 14px;background:var(--amb);color:var(--am);font-size:12.5px;font-weight:600}
.est-pend-l{display:flex;align-items:center;gap:10px;padding:8px 14px;border-top:1px solid var(--bd);flex-wrap:wrap}
.est-pend-l b{flex:1 1 220px;min-width:0;font-size:13px}
.est-pend-c{font-size:11px;color:var(--sb)}
.est-pend-l select{flex:0 0 auto;min-width:170px;padding:7px 10px;border:1px solid var(--lnbd);border-radius:8px;
  background:var(--wh);color:var(--tx);font:inherit;font-size:12px}
/* Balão de custo por categoria (28/09): uma grade de 4 colunas, cada linha
   cheia. .ct-g3 é a linha de 3 (datas/estado; marketing sem quantidade). Os
   inputs se alinham pela base (align-items:end) porque o rótulo da quantidade
   carrega a caixa "por participante" e é mais alto que os vizinhos. */
.m.m-ct{max-width:940px}
.ct-g{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0 12px;align-items:end}
.ct-g.ct-g3{grid-template-columns:repeat(3,minmax(0,1fr))}
.ct-g>.fg{margin-bottom:12px;min-width:0}
.ct-g>.s2{grid-column:span 2}.ct-g>.s4{grid-column:1/-1}
.ct-g>.fg-check{margin-bottom:12px;min-height:40px}
.ct-lbl{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:2px 8px;margin-bottom:5px}
.ct-lbl>label{margin:0!important}
.ct-pp{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:500;line-height:1.2;color:var(--sb);cursor:pointer;min-width:0}
.ct-pp input{width:15px;height:15px;margin:0;accent-color:var(--az);cursor:pointer}
/* Flex em vez de grade SÓ no balão de custo: a última fileira estica e não
   sobra buraco (grade de 4 com 11 itens + "Outro" deixava uma casa vazia). 5 por fileira: o kit do professor + "Outro" cabe numa só. */
.m-ct .ct-itens{display:flex;flex-wrap:wrap}
.m-ct .ct-it{flex:1 1 calc(20% - 7px);min-width:0}
@media(max-width:760px){.m-ct .ct-it{flex-basis:calc(50% - 7px)}}
.m-ct .ct-passo:first-of-type{margin-top:10px}
.m-ct .ct-passo{margin:12px 0 8px}
@media(max-width:640px){
  .ct-g,.ct-g.ct-g3{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ct-g>.s2{grid-column:1/-1}
  .ct-g.ct-g3>.fg:last-child:nth-child(odd){grid-column:1/-1}
  .ct-pp{min-height:44px;font-size:13px}
  .ct-pp input{width:22px;height:22px}
  .ct-lbl{margin-bottom:0}
}
@media(max-width:980px){.ct-itens{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:760px){.ct-itens{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){.ct-itens{grid-template-columns:repeat(2,minmax(0,1fr))}.est-pend-l select{width:100%;min-height:44px}}
.est-fmt{display:flex;gap:7px;flex-wrap:wrap}
.est-fmt-b{padding:8px 13px;border:1px solid var(--bd);border-radius:9px;background:none;color:var(--sb);
  font:inherit;font-size:12px;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;gap:7px}
.est-fmt-b::before{content:'';width:14px;height:14px;border-radius:4px;border:1px solid var(--sb);flex:0 0 auto}
.est-fmt-b.on{border-color:transparent;background:var(--azs);color:var(--az)}
.est-fmt-b.on::before{background:var(--az);border-color:var(--az);
  content:'✓';color:#04121f;font-size:10px;font-weight:900;display:inline-flex;align-items:center;justify-content:center}
.est-fmt-b:focus-visible{outline:2px solid var(--az);outline-offset:2px}
@media(max-width:640px){.est-fmt-b{min-height:44px}}
.mc-nome input,.mc-4 input,.mc-4 select,.mc-vp input{min-width:0}
.mc-4 select{padding-right:26px;text-overflow:ellipsis}
/* ajuda que saiu do corpo do form: o texto vive no title, como no modal de
   custo (21/08). tabindex para o teclado alcançar. */
.mc-qm{display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;border-radius:50%;
  border:1px solid var(--sb);color:var(--sb);font-size:10px;font-weight:700;margin-left:5px;cursor:help;vertical-align:1px}
.mc-qm:hover,.mc-qm:focus-visible{border-color:var(--az);color:var(--az)}
/* contador de professores: a ação é "mais um", um por vez — campo de digitar
   convidaria a apagar e redigitar, e cada mudança redesenha a lista abaixo */
.mc-stp-w{display:flex;align-items:center;flex-wrap:wrap;gap:8px}
/* `--wh`, NÃO `--bf`: `--bf` é #fff nos DOIS temas (o dark redefine os inputs um
   a um, não o token). Com ele o contador saía branco com texto claro — medido em
   1,09:1, ilegível — desde 03/09. Terceira vez que esta armadilha aparece no repo. */
.mc-stp{display:inline-flex;align-items:center;border:1px solid var(--lnbd);border-radius:9px;overflow:hidden;background:var(--wh)}
.mc-stp button{width:36px;height:38px;border:0;background:rgba(120,140,170,.12);color:var(--tx);font:inherit;font-size:16px;font-weight:700;cursor:pointer}
.mc-stp button:hover{background:var(--azs);color:var(--az)}
.mc-stp .n{min-width:42px;text-align:center;font-weight:800;font-size:15px;font-variant-numeric:tabular-nums}
.mc-qk{display:inline-flex;gap:5px}
.mc-qk button{padding:6px 10px;border:1px solid var(--bd);border-radius:7px;background:none;color:var(--sb);font:inherit;font-size:11px;font-weight:700;cursor:pointer}
.mc-qk button:hover{border-color:var(--az);color:var(--az)}
.mc-qk button.on{background:var(--azs);border-color:transparent;color:var(--az)}
.mc-hint{font-size:11px;color:var(--sb);margin-top:4px;line-height:1.45}
.mc-hint code{font-size:10.5px}
@media(max-width:820px){.mc-nome{grid-template-columns:minmax(0,1fr)}
  .mc-profs .mc-prof{max-width:none}
  .mc-4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){.mc-stp button{width:44px;height:44px}
  /* Os atalhos 2 · 4 · 6 · +10 ficavam em 32px. Quem entrega os 44 é o hitSlop,
     e o `gap` de 5px do `.mc-qk` foi para 12 porque a regra da casa é
     `gap >= 2 x inset` (aqui inset -6). MEDIDO em 10/09: com 32px o alvo era 42,
     porque o inset conta do PADDING box e a borda de 1px come 2; e varrendo o
     `elementFromPoint` o alcance real do inset é 5 de um lado e 4 do outro
     (subpixel) — 36 é o que entrega 44 de verdade. */
  .mc-qk{gap:12px}
  .mc-qk button{position:relative;min-height:36px;min-width:36px}  /* largura também: "2" tinha 29px e fechava em 38 */
  .mc-qk button::after{content:'';position:absolute;inset:-6px}}
.ct-stw{position:relative;display:inline-flex;align-items:center;gap:5px;border-radius:12px;padding:3px 9px;
  font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.3px;white-space:nowrap;cursor:pointer}
/* o select cobre a pílula inteira, invisível: o rótulo visível é o <b>, senão a
   largura viria da MAIOR opção e "Pago" ficaria numa pílula com vão */
.ct-stw>select{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;font:inherit;border:0;padding:0}
/* a lista aberta é desenhada pelo sistema: sem isto, no tema escuro sai texto
   claro sobre fundo claro */
.ct-stw>select option{background:var(--bf);color:var(--tx);text-transform:none;font-weight:500}
.ct-stw>b{font-weight:600}
.ct-stw>i{font-size:9px;font-style:normal;opacity:.75}
.ct-stw:focus-within{outline:2px solid var(--az);outline-offset:2px}
.ct-stw.busy{opacity:.5;cursor:progress}
:root:not([data-theme="dark"]) .ct-stw.b-g{color:#15803d}
:root:not([data-theme="dark"]) .ct-stw.b-y{color:#854d0e}
:root:not([data-theme="dark"]) .ct-stw>i{opacity:.85}
.ct-in{width:100%;min-width:0;padding:6px 8px;font:inherit;font-size:13px;border:1px solid var(--bd);border-radius:7px;background:var(--bf);color:var(--tx)}
.ct-in.num{text-align:right;font-variant-numeric:tabular-nums}
.ct-in.sel{padding:6px 4px}
.ct-in:focus{outline:2px solid var(--az);outline-offset:1px;border-color:var(--az)}
.ct-mkt>td{vertical-align:middle}
.ct-mkt td:first-child{min-width:240px}
.ct-mkt td:nth-child(2){min-width:74px}
.ct-mkt td:nth-child(3){min-width:104px}
[data-theme="dark"] .ct-in{background:#1e293b;border-color:#334155;color:#e2e8f0}
@media(max-width:880px){
  .ct-in{min-height:44px}
  .ct-stw{padding:8px 13px;min-height:44px;font-size:12px}
}

/* ===== Comemoração de visita no app (leads.js — rvCele) — 24/08/2026 =====
   Curta e não-bloqueante: não usa overlay de tela cheia nem trava o toque. */
.rvc{position:fixed;inset:0;z-index:9500;pointer-events:none;display:flex;align-items:flex-start;justify-content:center;
  padding-top:calc(18px + env(safe-area-inset-top,0px));animation:rvcIn .32s cubic-bezier(.2,.8,.2,1)}
.rvc.out{animation:rvcOut .4s ease forwards}
@keyframes rvcIn{from{opacity:0;transform:translateY(-14px)}to{opacity:1;transform:none}}
@keyframes rvcOut{to{opacity:0;transform:translateY(-10px)}}
.rvc-box{display:flex;align-items:center;gap:12px;background:#0b2a1b;border:1px solid rgba(74,222,128,.45);
  border-radius:14px;padding:13px 18px;box-shadow:0 18px 40px -18px rgba(0,0,0,.6);max-width:min(92vw,460px)}
.rvc-ic{flex:0 0 auto;width:38px;height:38px;border-radius:11px;display:grid;place-items:center;
  color:#0b2a1b;background:linear-gradient(140deg,#bbf7d0,#4ade80)}
.rvc-ic svg{width:21px;height:21px}
.rvc-t{min-width:0}
.rvc-t b{display:block;font-size:14.5px;font-weight:800;color:#eafff4;letter-spacing:-.2px}
.rvc-t span{display:block;font-size:12.5px;color:#a7f3d0;font-weight:600;margin-top:2px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rvc-conf{position:absolute;inset:0;overflow:hidden}
.rvc-conf i{position:absolute;top:-6vh;width:8px;height:13px;border-radius:2px;opacity:.95;animation:rvcFall linear forwards}
@keyframes rvcFall{to{transform:translateY(70vh) rotate(540deg);opacity:0}}
@media(prefers-reduced-motion:reduce){
  .rvc,.rvc.out{animation:none}
  .rvc-conf{display:none}
}

/* ===== Botão de copiar (core.js — btnCopiar/celTel) — 24/08/2026 =====
   Ícone só, sem rótulo: o valor ao lado já diz o que é. Fica discreto até o
   hover/foco, mas nunca invisível — descoberta antes de estética. */
.cp-cel{display:inline-flex;align-items:center;gap:6px;min-width:0;max-width:100%}
/* O valor é quem encolhe/quebra; o ícone tem flex:0 0 auto e nunca sai da célula. */
.cp-val{min-width:0;overflow-wrap:anywhere}
.cpb{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;
  border:1px solid transparent;border-radius:6px;background:transparent;color:var(--sb);cursor:pointer;
  transition:color .15s,background .15s,border-color .15s}
.cpb svg{width:13px;height:13px}
.cpb:hover{color:var(--az);background:var(--azs);border-color:var(--bd)}
.cpb:active{transform:scale(.94)}
.cpb:focus-visible{outline:2px solid var(--az);outline-offset:1px}
[data-theme="dark"] .cpb:hover{color:#93c5fd;background:rgba(255,255,255,.07);border-color:#334155}
/* "Copiar N telefones" — fica no cabeçalho do bloco de participantes, ao lado
   da contagem. Herda .b .bsm; aqui só o alinhamento do ícone e o tom. */
.cpb-all{display:inline-flex;align-items:center;gap:5px;vertical-align:middle;margin-left:2px;
  padding:3px 8px;font-size:11px;line-height:1.45;border-radius:5px;
  background:var(--azs);color:var(--az);border:1px solid var(--bd);font-weight:700;text-transform:none;letter-spacing:0}
.cpb-all svg{width:11px;height:11px;flex:0 0 auto}
.cpb-all:hover{border-color:var(--az)}
.cpb-all:focus-visible{outline:2px solid var(--az);outline-offset:1px}
[data-theme="dark"] .cpb-all{background:rgba(255,255,255,.06);color:#93c5fd;border-color:#334155}
@media(max-width:880px){.cpb{width:34px;height:34px}.cpb svg{width:15px;height:15px}
  /* .cpb-all vence o .bsm do mobile (mesma especificidade, regra posterior):
     o alvo de toque volta pelo min-height, sem inchar o chip. */
  .cpb-all{min-height:32px;padding:5px 10px;font-size:11.5px}}
@media(prefers-reduced-motion:reduce){.cpb{transition:none}.cpb:active{transform:none}}

/* ===== Estados por Consultor (comercial.js — vEstados) — 02/09/2026 =========
   Mapa de contorno real (mapa-br.js, CC0) + lista de siglas. A lista existe
   porque no mapa o DF tem 25 unidades de largura contra 452 do Amazonas: no
   celular ele é impossível de acertar com o dedo. O mapa serve para LER a
   cobertura; a lista, para EDITAR sem errar (alvo de 44px para os 27).
   Tokens --lb-* porque a tela vive dentro do .eq-cc. */
.mp-scope{--e1:#0ea5e9;--e2:#22c55e;--e3:#f59e0b;--e4:#a78bfa;--e5:#f472b6;
  --e6:#38bdf8;--e7:#fb7185;--e8:#4ade80}
.mp-kpi{font-size:12px;color:var(--lb-muted);font-weight:600;white-space:nowrap}
.mp-kpi b{font-size:19px;font-weight:800;color:var(--lb-txt);font-variant-numeric:tabular-nums;margin-right:4px}
.mp-cols{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:14px;align-items:start}
.mp-card{background:var(--lb-panel-bg);border:1px solid var(--lb-panel-bd);border-radius:16px;padding:18px;
  box-shadow:var(--lb-panel-shadow);margin-bottom:14px}
.mp-vazio{font-size:12.5px;color:var(--lb-muted);font-weight:600;text-align:center;padding:26px 18px}
.mp-svg{width:100%;height:auto;display:block;max-height:66vh;margin:0 auto}
.uf{fill:var(--lb-tile);stroke:var(--lb-panel-bg);stroke-width:2.5;cursor:pointer;transition:opacity .12s}
.uf:hover{opacity:.75}
.uf.vago{stroke-dasharray:6 5;stroke:var(--lb-muted);stroke-width:2}
.uf.sel{stroke:var(--lb-txt);stroke-width:6}
.uf.e1{fill:var(--e1)}.uf.e2{fill:var(--e2)}.uf.e3{fill:var(--e3)}.uf.e4{fill:var(--e4)}
.uf.e5{fill:var(--e5)}.uf.e6{fill:var(--e6)}.uf.e7{fill:var(--e7)}.uf.e8{fill:var(--e8)}
/* sigla escura sobre o estado colorido; clara sobre o estado sem dono, que é escuro */
.uf-t{fill:#0b1220;font-size:26px;font-weight:800;text-anchor:middle;dominant-baseline:middle;
  pointer-events:none;paint-order:stroke;stroke:rgba(255,255,255,.35);stroke-width:3}
.uf-t.vago{fill:var(--lb-txt);stroke:none;opacity:.85}
.mp-sec{font-size:11px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:var(--lb-muted);margin:0 0 10px}
.mp-chips{display:grid;grid-template-columns:repeat(auto-fill,minmax(52px,1fr));gap:6px}
.mp-ch{min-height:44px;border-radius:10px;border:1px solid var(--lb-stroke);background:var(--lb-tile);
  color:var(--lb-txt);font:800 12.5px/1 inherit;cursor:pointer}
.mp-ch.vago{border-style:dashed;color:var(--lb-muted)}
.mp-ch.sel{outline:2px solid var(--lb-txt);outline-offset:2px}
.mp-ch:focus-visible,.mp-op:focus-visible{outline:2px solid var(--az);outline-offset:2px}
.mp-ch.e1{background:var(--e1)}.mp-ch.e2{background:var(--e2)}.mp-ch.e3{background:var(--e3)}
.mp-ch.e4{background:var(--e4)}.mp-ch.e5{background:var(--e5)}.mp-ch.e6{background:var(--e6)}
.mp-ch.e7{background:var(--e7)}.mp-ch.e8{background:var(--e8)}
/* texto ESCURO sobre os chips coloridos: são cores claras, branco reprovaria */
.mp-ch.e1,.mp-ch.e2,.mp-ch.e3,.mp-ch.e4,.mp-ch.e5,.mp-ch.e6,.mp-ch.e7,.mp-ch.e8{color:#0b1220;border-color:transparent}
.mp-lgs{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px;padding-top:12px;border-top:1px solid var(--lb-stroke)}
.mp-lg{display:flex;align-items:center;gap:7px;background:var(--lb-tile);border:1px solid var(--lb-stroke);
  border-radius:999px;padding:5px 12px 5px 6px;font-size:12px;font-weight:600;color:var(--lb-txt)}
.mp-lg s{text-decoration:none;width:16px;height:16px;border-radius:50%;flex:0 0 auto;background:var(--lb-muted)}
.mp-lg i{font-style:normal;color:var(--lb-muted);font-weight:700}
.mp-lg.vago s{background:transparent;border:1px dashed var(--lb-muted)}
.mp-lg.e1 s{background:var(--e1)}.mp-lg.e2 s{background:var(--e2)}.mp-lg.e3 s{background:var(--e3)}
.mp-lg.e4 s{background:var(--e4)}.mp-lg.e5 s{background:var(--e5)}.mp-lg.e6 s{background:var(--e6)}
.mp-lg.e7 s{background:var(--e7)}.mp-lg.e8 s{background:var(--e8)}
.mp-ph{display:flex;align-items:baseline;gap:10px;margin-bottom:4px;flex-wrap:wrap}
.mp-ph b{font-size:17px;font-weight:800;color:var(--lb-txt)}
.mp-ph i{font-style:normal;font-size:12.5px;color:var(--lb-muted);font-weight:600}
.mp-ps{font-size:12.5px;color:var(--lb-muted);margin:0 0 13px;line-height:1.55}
.mp-ops{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:8px}
.mp-op{display:flex;align-items:center;gap:9px;background:var(--lb-tile);border:1px solid var(--lb-stroke);
  border-radius:11px;padding:11px 13px;cursor:pointer;font:600 13px/1.3 inherit;color:var(--lb-txt);
  min-height:46px;text-align:left}
.mp-op s{text-decoration:none;width:14px;height:14px;border-radius:50%;flex:0 0 auto;background:var(--lb-muted)}
.mp-op.e1 s{background:var(--e1)}.mp-op.e2 s{background:var(--e2)}.mp-op.e3 s{background:var(--e3)}
.mp-op.e4 s{background:var(--e4)}.mp-op.e5 s{background:var(--e5)}.mp-op.e6 s{background:var(--e6)}
.mp-op.e7 s{background:var(--e7)}.mp-op.e8 s{background:var(--e8)}
.mp-op.on{border-color:var(--lb-cy);box-shadow:0 0 0 1px var(--lb-cy)}
.mp-op b{margin-left:auto;color:var(--lb-cy)}
.mp-op.limpar{color:var(--lb-muted)}
.mp-op.limpar s{background:transparent;border:1px dashed var(--lb-muted)}
@media(max-width:880px){
  .mp-cols{grid-template-columns:1fr}
  .mp-card{padding:14px}
  .uf-t{font-size:30px}
  .mp-kpi b{font-size:17px}
}

/* ===== "Este curso se paga?" no card de evento (eventos.js — ccViab) — 01/09/2026
   Só o admin vê. Barra = quanto do custo já lançado as inscrições cobriram.
   Tokens --lb-* porque o card vive dentro do .eq-cc (mesma família do .cctot). */
.cc-vi{--c:var(--lb-gn);--ct:#0b7a4e;margin-top:9px;padding:9px 11px;border-radius:10px;
  background:var(--lb-tile);border:1px solid var(--lb-tile-bd,var(--lb-stroke))}
.cc-vi.perto{--c:var(--lb-am);--ct:#8a5a00}
.cc-vi.falta{--c:var(--lb-vm);--ct:#b91c1c}
.cc-vi.nc{--c:var(--lb-muted);--ct:var(--lb-muted)}
[data-theme="dark"] .cc-vi.ok{--ct:#4ade80}
[data-theme="dark"] .cc-vi.perto{--ct:#f5b544}
[data-theme="dark"] .cc-vi.falta{--ct:#fca5a5}
.cc-vi-b{height:7px;border-radius:4px;background:var(--lb-stroke);overflow:hidden;margin-bottom:7px}
/* A barra usa --ct, não --c: medido, o verde --lb-gn sobre a calha clara dá
   2,75:1 no tema claro e reprova o mínimo de 3:1 de componente de UI. */
.cc-vi-b i{display:block;height:100%;background:var(--ct);border-radius:3px}
.cc-vi-t{font-size:12px;font-weight:800;color:var(--ct);line-height:1.35}
.cc-vi-s{font-size:10.5px;font-weight:600;color:var(--lb-muted);margin-top:3px;line-height:1.45}
.cc-vi-s b{color:var(--lb-txt);font-weight:800}

/* ===== Quais Cursos Repetir · cartões, um parâmetro por vez — 01/09/2026 =====
   Curso aberto e evento em SEÇÕES separadas (evGrupoFam). O parâmetro escolhido
   manda no número grande, na barra, na mediana e no corte — os outros dois
   descem para o rodapé do cartão. Tokens --lb-* (os únicos com variante escura
   completa); --c pinta barra/faixa, --ct é o tom que passa em AA como TEXTO. */
.rc-par{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 14px}
.rc-par-l{font-size:11.5px;font-weight:700;color:var(--lb-muted)}
.rc-par-b{background:var(--lb-tile);border:1px solid var(--lb-panel-bd);color:var(--lb-txt);border-radius:999px;
  padding:7px 14px;font:inherit;font-size:12px;font-weight:700;cursor:pointer;min-height:34px;
  transition:background var(--transition),border-color var(--transition),color var(--transition)}
.rc-par-b:hover{border-color:var(--az)}
.rc-par-b.on{background:var(--az);color:#fff;border-color:var(--az)}
/* No escuro --az é azul CLARO (#60a5fa): branco em cima dá 2,54:1. */
[data-theme="dark"] .rc-par-b.on{color:#0b1220}
.rc-par-b:focus-visible{outline:2px solid var(--az);outline-offset:2px}
.rc-lead{font-size:13px;line-height:1.65;color:var(--lb-muted);margin:0 0 20px;max-width:900px}
.rc-lead b{color:var(--lb-txt);font-weight:700}

.rc-sec{margin-bottom:30px}
.rc-sec-h{display:flex;align-items:flex-end;gap:16px;flex-wrap:wrap;margin-bottom:15px;padding-bottom:11px;
  border-bottom:2px solid var(--lb-stroke)}
.rc-sec-t b{display:block;font-size:21px;font-weight:800;letter-spacing:-.5px;color:var(--lb-txt);line-height:1.15}
.rc-sec-t i{display:block;font-style:normal;font-size:12.5px;color:var(--lb-muted);font-weight:600;margin-top:3px}
.rc-kpis{margin-left:auto;display:flex;gap:18px;flex-wrap:wrap}
.rc-kpis span{font-size:12px;color:var(--lb-muted);font-weight:600;white-space:nowrap}
.rc-kpis b{font-size:17px;font-weight:800;color:var(--lb-txt);font-variant-numeric:tabular-nums;margin-right:3px}
.rc-poucos{font-size:12.5px;line-height:1.6;color:var(--lb-muted);font-weight:600;margin:0 0 13px;
  background:var(--lb-tile);border:1px solid var(--lb-stroke);border-radius:12px;padding:11px 15px}
.rc-poucos b{color:var(--lb-txt);font-weight:800}

.rc-g{margin-bottom:18px}
.rc-g.gn{--c:var(--lb-gn);--ct:#0b7a4e}
.rc-g.cy{--c:var(--lb-cy);--ct:#0369a1}
[data-theme="dark"] .rc-g.gn{--ct:#4ade80}
[data-theme="dark"] .rc-g.cy{--ct:#7dd3fc}
.rc-g-h{display:flex;align-items:baseline;gap:9px;flex-wrap:wrap;margin-bottom:11px;padding-left:11px;
  border-left:3px solid var(--c)}
.rc-g-h b{font-size:15px;font-weight:800;color:var(--lb-txt)}
.rc-g-h i{font-style:normal;font-size:12.5px;color:var(--lb-muted);font-weight:600}
.rc-g-h s{text-decoration:none;margin-left:auto;font-size:11.5px;font-weight:800;color:var(--ct);white-space:nowrap}
.rc-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(262px,1fr));gap:12px}

.rc{--c:var(--lb-gn);--ct:#0b7a4e;background:var(--lb-panel-bg);border:1px solid var(--lb-panel-bd);
  border-radius:14px;padding:15px 16px 13px;box-shadow:var(--lb-panel-shadow);position:relative;overflow:hidden;min-width:0}
.rc::before{content:'';position:absolute;inset:0 0 auto 0;height:3px;background:var(--c)}
.rc.cy{--c:var(--lb-cy);--ct:#0369a1}
.rc.neg{--c:var(--lb-vm);--ct:#b91c1c}
[data-theme="dark"] .rc{--ct:#4ade80}
[data-theme="dark"] .rc.cy{--ct:#7dd3fc}
[data-theme="dark"] .rc.neg{--ct:#fca5a5}
.rc-n{display:block;width:100%;text-align:left;background:none;border:0;padding:0;margin:2px 0 9px;cursor:pointer;
  font:inherit;font-size:12px;font-weight:700;color:var(--lb-txt);line-height:1.4;min-height:50px;
  display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;line-clamp:3;overflow:hidden}
.rc-n:hover{text-decoration:underline}
.rc-n:focus-visible{outline:2px solid var(--az);outline-offset:2px;border-radius:4px}
.rc-big{display:flex;align-items:baseline;gap:7px;flex-wrap:wrap}
.rc-big b{font-size:33px;font-weight:800;letter-spacing:-1.5px;line-height:1.05;color:var(--ct);font-variant-numeric:tabular-nums}
.rc-big span{font-size:12px;font-weight:700;color:var(--lb-muted)}
.rc-bw{position:relative;height:10px;border-radius:5px;background:var(--lb-tile);border:1px solid var(--lb-stroke);
  overflow:hidden;margin:11px 0 6px}
.rc-bw i{display:block;height:100%;background:var(--c);border-radius:4px}
/* marca da mediana: é o corte entre os dois grupos, precisa ser visível na barra */
.rc-bw u{position:absolute;top:-2px;bottom:-2px;width:2px;background:var(--lb-txt);opacity:.6;text-decoration:none}
.rc-md{font-size:11px;color:var(--lb-muted);font-weight:600}
.rc-md b{color:var(--lb-txt);font-weight:800}
.rc-ft{font-size:11px;color:var(--lb-muted);font-weight:600;line-height:1.7;margin-top:11px;padding-top:11px;
  border-top:1px solid var(--lb-stroke)}
.rc-ft b{color:var(--lb-txt);font-weight:800}
/* ===== Dinheiro no cartão (23/09/2026, fusão com o Custos & Lucro) =====
   Uma conta lida de cima para baixo: entrou, uma barra só dividida entre gasto e
   sobra, e a margem como selo. Números tabulares para não dançarem entre cartões.
   Classes com prefixo próprio: `.md` já existe no app (contêiner de KPIs) e
   esticava o selo na prévia. */
.rcf{margin-top:14px;padding-top:12px;border-top:1px solid var(--lb-stroke);font-variant-numeric:tabular-nums}
.rcf-top{display:flex;align-items:baseline;justify-content:space-between;gap:8px;line-height:1.25}
.rcf-in{font-size:12px;color:var(--lb-muted)}
.rcf-in b{display:block;font-size:15px;font-weight:800;color:var(--lb-txt);letter-spacing:-.01em}
.rcf-mg{flex:0 0 auto;font-size:11.5px;font-weight:800;padding:3px 8px;border-radius:999px;
  background:color-mix(in srgb,var(--lb-gn) 14%,transparent);color:var(--lb-gn)}
.rcf-mg.rcf-am{background:color-mix(in srgb,var(--lb-am) 16%,transparent);color:var(--lb-am)}
.rcf-mg.rcf-rd{background:color-mix(in srgb,var(--lb-vm) 14%,transparent);color:var(--lb-vm)}
.rcf-mg.rcf-nt{background:var(--lb-tile);color:var(--lb-muted)}
.rcf-bar{display:flex;height:6px;border-radius:999px;overflow:hidden;margin:9px 0 6px;background:var(--lb-tile)}
.rcf-bar i{background:color-mix(in srgb,var(--lb-muted) 55%,transparent)}
.rcf-bar s{background:var(--lb-gn);text-decoration:none}
.rcf-leg{display:flex;justify-content:space-between;gap:8px;font-size:12px;color:var(--lb-muted);line-height:1.3}
.rcf-leg span{display:flex;align-items:center;gap:5px;min-width:0}
.rcf-leg span::before{content:'';flex:0 0 8px;height:8px;border-radius:2px;background:color-mix(in srgb,var(--lb-muted) 55%,transparent)}
.rcf-leg b{font-weight:800;color:var(--lb-txt)}
.rcf-leg .ok::before{background:var(--lb-gn)}
.rcf-leg .ok b{color:var(--lb-gn)}
.rcf-leg .ok.neg::before{background:var(--lb-vm)}
.rcf-leg .ok.neg b{color:var(--lb-vm)}
.rcf-meta{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:10px;font-size:12px;color:var(--lb-muted);line-height:1.3}
.rcf-meta>span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.rcf-meta b{color:var(--lb-txt);font-weight:800}
.rcf-btn{position:relative;flex:0 0 auto;display:inline-flex;align-items:center;gap:5px;height:30px;padding:0 10px;
  border-radius:8px;border:1px solid var(--lb-stroke);background:transparent;color:var(--lb-txt);
  font-family:inherit;font-size:12px;font-weight:700;cursor:pointer;transition:border-color .15s,background .15s}
.rcf-btn:hover{border-color:var(--lb-cy);background:color-mix(in srgb,var(--lb-cy) 8%,transparent)}
.rcf-btn:focus-visible{outline:2px solid var(--lb-cy);outline-offset:2px}
/* alvo de toque: 28 de padding box + 2×9 = 46 (com −8 dava 44 exato, e o
   subpixel derrubava três cantos no teste de toque) */
.rcf-btn::after{content:'';position:absolute;inset:-9px}
.rc-ft.rc-ft2{margin-top:10px;padding-top:9px}
.rc.am{--c:var(--lb-am);--ct:#8f6106}
[data-theme="dark"] .rc.am{--ct:#fcd34d}
.rc-par-n{font-weight:600}
.rc-ft b.neg{color:#b91c1c}
[data-theme="dark"] .rc-ft b.neg{color:#fca5a5}
.rc-tend{display:inline-flex;align-items:center;gap:3px;font-weight:700}
.rc-tend.up{color:#0b7a4e}.rc-tend.down{color:#b91c1c}
[data-theme="dark"] .rc-tend.up{color:#4ade80}[data-theme="dark"] .rc-tend.down{color:#fca5a5}
.rc-eds{display:inline-flex;align-items:center;gap:4px;margin-top:5px;background:var(--lb-tile);
  border:1px solid var(--lb-stroke);border-radius:8px;padding:4px 9px;min-height:28px;
  font:inherit;font-size:11px;font-weight:800;color:var(--lb-txt);cursor:pointer}
.rc-eds:hover{border-color:var(--az)}
.rc-eds:focus-visible{outline:2px solid var(--az);outline-offset:2px}
.rc-edl{list-style:none;margin:10px 0 0;padding:10px 0 0;border-top:1px solid var(--lb-stroke)}
.rc-edl li{display:flex;align-items:center;gap:8px;padding:5px 0;font-size:11px;color:var(--lb-muted);min-width:0}
.rc-edl button{flex:1 1 auto;min-width:0;text-align:left;background:none;border:0;padding:0;cursor:pointer;
  font:inherit;font-size:11px;font-weight:600;color:var(--lb-txt);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rc-edl button:hover{text-decoration:underline}
.rc-edl span{flex:0 0 auto;font-weight:600}
.rc-edl b{color:var(--lb-txt);font-weight:800}

@media(max-width:880px){
  .rc-cards{grid-template-columns:1fr}
  .rc-kpis{margin-left:0;gap:14px}
  .rc-sec-h{align-items:flex-start}
  .rc-par-b{min-height:40px}
}

/* ===== Roteiro de visitas (leads.js — vRoteiro) — 24/08/2026 =====
   Lista de rua: a pergunta é "já visitamos?". Mesma família do bloco Diretor
   (.eq-cc + tokens --lb-*), mas mobile-first: é usada na porta do órgão. */
.rv{--rv-p1:#b45309;--rv-p2:#0369a1;--rv-p3:#6d28d9;--rv-p4:#475569}
[data-theme="dark"] .rv{--rv-p1:#f5b544;--rv-p2:#38bdf8;--rv-p3:#a78bfa;--rv-p4:#94a3b8}
.rv-prog{display:grid;grid-template-columns:1.4fr 1fr;gap:12px;margin-bottom:12px}
.rv-pg{background:var(--lb-panel-bg);border:1px solid var(--lb-panel-bd);border-radius:14px;padding:14px 16px;box-shadow:var(--lb-panel-shadow)}
.rv-pg-t{display:flex;align-items:baseline;gap:9px}
/* --lb-gn (#12a05f) dá 3,38:1 no claro — tom próprio para o número e o selo. */
.rv-pg-t b{font-size:30px;font-weight:800;letter-spacing:-1.2px;line-height:1;color:#0b7a4e;font-variant-numeric:tabular-nums}
[data-theme="dark"] .rv-pg-t b{color:var(--lb-gn)}
.rv-pg-t span{font-size:12.5px;color:var(--lb-muted);font-weight:600}
.rv-pg-t i{margin-left:auto;font-style:normal;font-size:14px;font-weight:800;color:var(--lb-txt);font-variant-numeric:tabular-nums}
.rv-bar{height:9px;border-radius:5px;background:var(--lb-tile);border:1px solid var(--lb-stroke);overflow:hidden;margin-top:10px}
.rv-bar i{display:block;height:100%;background:var(--lb-gn)}
.rv-pri{display:grid;grid-template-columns:repeat(auto-fit,minmax(0,1fr));gap:8px}
.rv-pc{--c:var(--rv-p1);position:relative;background:var(--lb-panel-bg);border:1px solid var(--lb-panel-bd);border-radius:12px;
  padding:10px 6px;text-align:center;cursor:pointer;font:inherit;color:inherit;overflow:hidden;min-height:44px;
  box-shadow:var(--lb-panel-shadow);transition:border-color .15s}
.rv-pc::before{content:'';position:absolute;inset:0 0 auto 0;height:3px;background:var(--c)}
.rv-pc:hover{border-color:var(--c)}
.rv-pc.on{border-color:var(--c);box-shadow:0 0 0 1px var(--c),var(--lb-panel-shadow)}
.rv-pc:focus-visible{outline:2px solid var(--az);outline-offset:2px}
.rv-pc b{display:block;font-size:17px;font-weight:800;color:var(--lb-txt);font-variant-numeric:tabular-nums;line-height:1.1}
.rv-pc b s{text-decoration:none;font-size:13px;color:var(--lb-muted);font-weight:700}
.rv-pc span{display:block;font-size:10.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--c);font-weight:800;margin-top:2px}
.rv-filtros{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.rv-tab{background:var(--lb-tile);border:1px solid var(--lb-panel-bd);color:var(--lb-txt);border-radius:999px;
  padding:8px 14px;font:inherit;font-size:12.5px;font-weight:700;cursor:pointer;min-height:38px}
.rv-tab.on{background:var(--az);color:#fff;border-color:var(--az)}
/* No escuro --az é azul CLARO (#60a5fa): branco em cima dá 2,54:1. */
[data-theme="dark"] .rv-tab.on{color:#0b1220}
.rv-tab:focus-visible{outline:2px solid var(--az);outline-offset:2px}
.rv-q{flex:1 1 240px;min-width:0;padding:9px 12px;font:inherit;font-size:13px;border:1px solid var(--bd);
  border-radius:9px;background:var(--bf);color:var(--tx);min-height:38px}
.rv-q:focus{outline:2px solid var(--az);outline-offset:1px}
[data-theme="dark"] .rv-q{background:#1e293b;border-color:#334155;color:#e2e8f0}
.rv-cont{font-size:12px;color:var(--lb-muted);font-weight:700;margin-left:auto}
.rv-l{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.rv-i{--c:var(--rv-p4);position:relative;background:var(--lb-panel-bg);border:1px solid var(--lb-panel-bd);
  border-left:4px solid var(--c);border-radius:12px;padding:13px 15px;box-shadow:var(--lb-panel-shadow)}
.rv-i.ok{opacity:.72}
.rv-h{display:flex;align-items:baseline;gap:9px;flex-wrap:wrap}
/* No escuro as cores de prioridade são CLARAS: texto branco em cima dá 1,81:1. */
.rv-p{flex:0 0 auto;font-size:11px;font-weight:800;letter-spacing:.05em;color:#fff;background:var(--c);border-radius:6px;padding:2px 7px}
[data-theme="dark"] .rv-p{color:#0b1220}
.rv-o{font-size:14px;font-weight:800;color:var(--lb-txt);line-height:1.3;min-width:0}
.rv-i.ok .rv-o{text-decoration:line-through}
.rv-pa{font-size:10.5px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--c)}
.rv-cd{margin-left:auto;font-size:11.5px;font-weight:700;color:var(--lb-muted);white-space:nowrap}
.rv-s{font-size:12px;color:var(--lb-muted);font-weight:600;margin:4px 0 0}
.rv-ob{font-size:12px;color:var(--lb-muted);line-height:1.5;margin:6px 0 0}
.rv-a{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:10px}
.rv-btn{background:#15803d;color:#fff;display:inline-flex;align-items:center;gap:6px}
[data-theme="dark"] .rv-btn{background:var(--vd);color:#052e16}
.rv-ok{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:700;color:#0b7a4e}
[data-theme="dark"] .rv-ok{color:var(--lb-gn)}
.rv-nota{font-size:11.5px;color:var(--lb-muted)}
@media(max-width:880px){
  .rv-prog{grid-template-columns:1fr}
  .rv-cont{margin-left:0;width:100%}
  .rv-tab,.rv-q{min-height:44px}
  .rv-a .b{min-height:44px}
  .rv-cd{margin-left:0}
}

/* ===== Alcance por Estado (financeiro.js — vUfs) =====
   Reaproveita o casco do Resultado por Produto (.eq-cc/.prod-*) de propósito:
   é a mesma família de leitura do bloco Diretor. Só o que é próprio da tela
   mora aqui, sempre em tokens --lb-* (--bf/--bd/--tx não têm variante escura). */
.uf-cov{display:flex;align-items:center;gap:14px;flex-wrap:wrap;background:var(--lb-tile);border:1px solid var(--lb-stroke);border-left:3px solid var(--lb-cy);border-radius:0 10px 10px 0;padding:12px 16px;margin:0 0 18px}
.uf-cov.lj{border-left-color:var(--lb-am)}
.uf-cov-t{flex:1 1 260px;min-width:0;font-size:12.5px;line-height:1.5;color:var(--lb-muted)}
.uf-cov-t b{color:var(--lb-txt);font-weight:700}
.uf-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;background:var(--lb-panel-bg);border:1px solid var(--lb-panel-bd);border-radius:16px;padding:16px 20px;box-shadow:var(--lb-panel-shadow);backdrop-filter:var(--lb-blur);-webkit-backdrop-filter:var(--lb-blur);margin-bottom:18px}
.uf-kpis .prod-st b small{font-size:12px;font-weight:700;color:var(--lb-muted);letter-spacing:0}
.uf-i{padding-bottom:2px}
.uf-b .prod-top-n{align-items:center;gap:10px;white-space:normal}
.uf-sig{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;min-width:34px;height:24px;padding:0 6px;border-radius:7px;background:var(--lb-tile);border:1px solid var(--lb-stroke);color:var(--lb-txt);font-size:12px;font-weight:800;letter-spacing:.5px}
.uf-nm{display:flex;flex-direction:column;min-width:0;gap:1px}
.uf-sub{font-size:11px;font-weight:600;color:var(--lb-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.uf-b .prod-top-v{display:flex;flex-direction:column;align-items:flex-end;gap:1px}
.uf-share{font-size:11px;font-weight:700;color:var(--lb-muted)}
.uf-orgs{list-style:none;margin:10px 0 2px;padding:10px 0 0 44px;border-top:1px solid var(--lb-stroke);display:flex;flex-direction:column;gap:7px}
.uf-org{display:flex;flex-direction:column;gap:2px;font-size:12px;color:var(--lb-txt);min-width:0}
.uf-org-h{display:flex;justify-content:space-between;align-items:baseline;gap:12px;min-width:0}
.uf-org-n{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
.uf-org-v{flex:0 0 auto;color:var(--lb-muted);font-weight:600;font-variant-numeric:tabular-nums}
.uf-org-c{font-size:11.5px;line-height:1.45;color:var(--lb-muted);font-weight:600}
.uf-org-c i{font-style:normal;font-weight:600;opacity:.85}
.uf-org-cl{color:var(--lb-txt);font-weight:700}
.uf-org-mais{color:var(--lb-muted);font-weight:600}
.uf-faltam{line-height:1.6}
.uf-faltam b{color:var(--lb-txt)}

/* Correção da UF na própria lista de pendência (modal). Vive fora do `.eq-cc`,
   então usa os tokens do chrome (--bf/--tx/--bd), não os --lb-*. */
.uf-pdl{display:flex;flex-direction:column;gap:8px}
.uf-pd{background:var(--azs);border-radius:10px;padding:10px 12px;display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px}
.uf-pd-t{flex:1 1 240px;min-width:0;font-size:13px;line-height:1.35}
.uf-pd-t b{display:block;font-weight:700}
.uf-pd-t span{font-size:11.5px;color:var(--sb)}
.uf-pd-a{display:flex;align-items:center;gap:6px;flex:0 0 auto}
.uf-pd-l{font-size:11px;font-weight:700;color:var(--sb);text-transform:uppercase;letter-spacing:.04em}
.uf-pd-in{width:56px;min-height:38px;padding:7px 6px;text-align:center;text-transform:uppercase;font-weight:800;font-size:14px;letter-spacing:1px;border:1px solid var(--bd);border-radius:8px;background:var(--bf);color:var(--tx)}
.uf-pd-in:focus{outline:2px solid var(--az);outline-offset:1px}
/* Verde escurecido de propósito: `--vd` (#16a34a) com texto branco dá 3,3:1 e
   reprova em AA a 13px. #15803d dá 4,75:1 com o mesmo verde de significado. */
.uf-pd-sv{background:#15803d;color:#fff;white-space:nowrap}
.uf-pd-sv:disabled{opacity:.6;cursor:default}
.uf-pd-h{flex:1 1 100%;font-size:11.5px;color:var(--sb);margin-top:-2px}
[data-theme="dark"] .uf-pd-in{background:#1e293b;border-color:#334155;color:#e2e8f0}
/* No escuro `--vd` é verde CLARO (#4ade80): texto branco em cima dá 1,74:1.
   E `--sb` sobre o `--azs` escuro fica em 4,49:1, um fio abaixo de AA. */
[data-theme="dark"] .uf-pd-sv{background:var(--vd);color:#052e16}
[data-theme="dark"] .uf-pd-t span,[data-theme="dark"] .uf-pd-l,[data-theme="dark"] .uf-pd-h{color:#b6c4d6}
@media(max-width:640px){
  .uf-pd-a{flex:1 1 100%}
  .uf-pd-a .b{flex:1 1 auto;min-height:44px}
  .uf-pd-in{min-height:44px;flex:0 0 62px}
}
@media(max-width:880px){
  .uf-kpis{grid-template-columns:1fr 1fr;gap:14px;padding:16px}
  .uf-orgs{padding-left:0}
  .uf-org-h{flex-direction:column;gap:2px}
  .uf-org-n{white-space:normal}
  .uf-sub{white-space:normal}
}
@media(max-width:430px){
  .uf-kpis{grid-template-columns:1fr}
  /* .prod-st:last-child ganha borda de topo na grade de 3 do Resultado por
     Produto; em coluna única aqui isso vira um risco solto. */
  .uf-kpis .prod-st:last-child{border-top:0;padding-top:0}
  /* Em coluna, `flex-basis` vira ALTURA: o `flex:1 1 260px` do texto abria um
     vão de 260px entre a frase e o botão. */
  .uf-cov{flex-direction:column;align-items:stretch}
  .uf-cov-t{flex:0 0 auto}
  .uf-cov .b{width:100%}
}

/* ===== Quais Cursos Repetir (financeiro.js — vRepetir) =====
   Matriz margem × lucro. Mesmos tokens --lb-* do Resultado por Produto (a
   família --bf/--tx não tem variante escura — ver CLAUDE.md). */
.rep-corte{font-size:12.5px;line-height:1.55;color:var(--lb-muted);margin:2px 0 16px}
.rep-corte b{color:var(--lb-txt);font-weight:700}
.rep-matrix{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.rep-q{--qc:var(--lb-gn);--qct:#0b7a4e;position:relative;background:var(--lb-panel-bg);border:1px solid var(--lb-panel-bd);border-radius:16px;padding:16px 18px 14px;box-shadow:var(--lb-panel-shadow);backdrop-filter:var(--lb-blur);-webkit-backdrop-filter:var(--lb-blur);overflow:hidden;min-width:0}
.rep-q::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:var(--qc)}
.rep-q.gn{--qc:var(--lb-gn);--qct:#0b7a4e}.rep-q.cy{--qc:var(--lb-cy);--qct:#0369a1}
.rep-q.am{--qc:var(--lb-am);--qct:#8a5a00}.rep-q.vm{--qc:var(--lb-vm);--qct:#b91c1c}
[data-theme="dark"] .rep-q.gn{--qct:#34d399}[data-theme="dark"] .rep-q.cy{--qct:#7dd3fc}
[data-theme="dark"] .rep-q.am{--qct:#f5b544}[data-theme="dark"] .rep-q.vm{--qct:#fca5a5}
.rep-q-h{display:flex;align-items:flex-start;gap:10px;margin-bottom:12px}
.rep-q-t{font-size:15px;font-weight:800;color:var(--lb-txt);margin:0;letter-spacing:-.2px}
.rep-q-c{font-size:11.5px;color:var(--lb-muted);font-weight:600;margin:3px 0 0;line-height:1.35}
.rep-q-n{margin-left:auto;flex:0 0 auto;font-size:15px;font-weight:800;color:var(--qct);background:var(--lb-tile);border:1px solid var(--lb-stroke);border-radius:8px;padding:3px 10px;font-variant-numeric:tabular-nums}
.rep-l{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.rep-i{border-top:1px solid var(--lb-stroke)}
.rep-i:first-child{border-top:0}
.rep-b{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;background:none;border:0;padding:9px 2px;margin:0;cursor:pointer;font:inherit;text-align:left;border-radius:6px;transition:opacity var(--transition)}
.rep-b:hover{opacity:.65}
.rep-n{flex:0 1 auto;min-width:96px;font-size:13px;font-weight:600;color:var(--lb-txt);line-height:1.35;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2}
.rep-v{flex:0 0 auto;margin-left:auto;display:flex;align-items:baseline;gap:10px;font-variant-numeric:tabular-nums}
.rep-v b{font-size:13.5px;font-weight:800;color:var(--qct)}
.rep-v i{font-style:normal;font-size:12.5px;font-weight:600;color:var(--lb-muted)}
/* Custo incompleto: o número existe mas não é real. Cinza + tag em vez da cor
   do quadrante, para não competir com os eventos de fato medidos. */
.rep-tag{flex:0 0 auto;display:inline-block;margin-left:7px;font-size:9.5px;font-weight:800;text-transform:uppercase;letter-spacing:.4px;color:#8a5a00;background:rgba(200,138,16,.14);border:1px solid rgba(200,138,16,.3);border-radius:5px;padding:2px 6px;vertical-align:middle;white-space:nowrap}
[data-theme="dark"] .rep-tag{color:#f5b544;background:rgba(245,181,68,.12);border-color:rgba(245,181,68,.3)}
.rep-v b.sus,.rep-v i.sus{color:var(--lb-muted);font-weight:600}
.rep-v b.neg,.rep-v i.neg{color:#b91c1c}
[data-theme="dark"] .rep-v b.neg,[data-theme="dark"] .rep-v i.neg{color:#fca5a5}
.rep-q-s{font-size:11.5px;font-weight:700;color:var(--lb-muted);margin:10px 0 0;padding-top:10px;border-top:1px solid var(--lb-stroke)}
.rep-q-vazio,.rep-mais{font-size:11.5px;color:var(--lb-muted);margin:6px 0 0;font-weight:600}
/* "Ver os outros N": com muitos eventos sem custo medido o corte em 5 escondia
   metade da base, e o CSV não serve para conferir de relance. */
.rep-mais-b{margin:8px 0 0;padding:7px 10px;min-height:32px;width:100%;background:var(--lb-tile);border:1px solid var(--lb-stroke);border-radius:8px;color:var(--qct);font:800 11.5px/1 inherit;cursor:pointer;transition:background var(--transition),border-color var(--transition)}
.rep-mais-b:hover{background:var(--lb-panel-bg);border-color:var(--qc)}

.rep-falta{margin-top:18px;background:var(--lb-tile);border:1px solid var(--lb-ambd,var(--lb-stroke));border-left:3px solid var(--lb-am);border-radius:0 14px 14px 0;padding:16px 18px 14px}
.rep-falta-t{display:flex;align-items:center;gap:8px;font-size:13.5px;font-weight:800;color:var(--lb-txt);margin:0 0 8px}
.rep-falta-t svg{color:var(--lb-am);flex:0 0 auto}
.rep-falta-s{font-size:12.5px;line-height:1.55;color:var(--lb-muted);margin:0 0 10px}
.rep-falta-s b{color:var(--lb-txt);font-weight:700}
.rep-falta .rep-v i{color:var(--lb-muted)}

@media(max-width:880px){
  .rep-matrix{grid-template-columns:1fr;gap:12px}
  .rep-q{padding:15px 16px 13px}
  /* alvo de toque >=44px: no desktop 39px basta pro mouse, no dedo não */
  .rep-b{padding:12px 2px;min-height:44px}
  /* Com a tag "custo incompleto" não sobra largura pro nome no celular — ele
     virava uma letra só. Nessas linhas o nome fica sozinho em cima e a tag
     desce junto com os valores. Só nelas: as demais continuam em uma linha. */
  /* No celular o nome divide a largura com os valores e corta cedo — e os nomes
     reais são longos e em caixa alta ("SISTEMA DE REGISTRO DE PREÇOS (SRP) E
     CREDENCIAMENTO – …"). Aqui o nome fica sozinho em cima e tag + valores
     descem. Vale para TODAS as linhas: alternar altura conforme o nome é pior
     de ler que a linha um pouco mais alta. */
  .rep-b{flex-wrap:wrap;row-gap:5px;align-items:baseline}
  .rep-n{flex:1 1 100%;min-width:0;-webkit-line-clamp:3;line-clamp:3}
  .rep-tag{margin-left:0}
  .rep-mais-b{min-height:44px}
}

/* Botão "custo ok" na linha da matriz. O <li> vira o container flex porque
   botão dentro de botão é HTML inválido — os dois são irmãos. */
.rep-i{display:flex;align-items:center;gap:6px}
.rep-i .rep-b{flex:1 1 auto;min-width:0}
.rep-ok{flex:0 0 auto;display:inline-flex;align-items:center;gap:5px;padding:6px 9px;min-height:32px;background:var(--lb-tile);border:1px solid var(--lb-stroke);border-radius:8px;color:var(--lb-muted);font:800 10.5px/1 inherit;text-transform:uppercase;letter-spacing:.3px;cursor:pointer;white-space:nowrap;transition:background var(--transition),border-color var(--transition),color var(--transition)}
.rep-ok svg{width:12px;height:12px;flex:0 0 auto}
.rep-ok:hover{background:var(--lb-gnbg);border-color:var(--lb-gnbd);color:var(--lb-gn)}
.rep-ok.on{background:var(--lb-gnbg);border-color:var(--lb-gnbd);color:#0b7a4e}
[data-theme="dark"] .rep-ok.on{color:#34d399}
.rep-ok.on:hover{background:var(--lb-vmbg);border-color:var(--lb-vm);color:#b91c1c}
[data-theme="dark"] .rep-ok.on:hover{color:#fca5a5}
/* Linha com ação (tag e/ou botão) disputa espaço com o nome: em meia largura
   sobrava quase nada para o nome. Aqui o nome ocupa a linha inteira e tag +
   valores descem — o botão fica ao lado, centrado nas duas linhas. */
.rep-i.acao .rep-b{flex-wrap:wrap;row-gap:4px}
.rep-i.acao .rep-n{flex:1 1 100%;min-width:0}
.rep-i.acao .rep-tag{margin-left:0}
@media(max-width:880px){
  /* no celular o botão também desce, em vez de espremer a linha de valores */
  .rep-i{flex-wrap:wrap;gap:0}
  .rep-i .rep-b{flex:1 1 100%}
  .rep-ok{margin:0 0 10px auto;min-height:44px;padding:8px 14px}
}

/* Subtítulo de grupo dentro de um quadrante (Revisar custo separa "margem
   apertada, já medido" de "falta lançar custo" — sem isso quem já revisou o
   evento acha que ele não saiu da pendência). */
.rep-sub{display:flex;align-items:center;gap:8px;padding:12px 2px 6px;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.6px;color:var(--lb-muted);border-top:1px solid var(--lb-stroke)}
.rep-sub:first-child{border-top:0;padding-top:2px}
.rep-sub span{font-size:10px;font-weight:800;color:var(--qct);background:var(--lb-tile);border:1px solid var(--lb-stroke);border-radius:5px;padding:1px 6px;font-variant-numeric:tabular-nums}
.rep-sub+.rep-i{border-top:0}

/* Campo somente-leitura calculado (Total, Prévia das parcelas).
   ATENÇÃO à especificidade: `[data-theme="dark"] .fg input:not([type=checkbox]):not([type=radio])`
   vale (0,4,1) E usa !important — uma classe simples como `.fg input.fg-calc`
   (0,2,1) perde para ela mesmo com !important, e foi o que apagou o destaque
   azul no escuro. Por isso a variante escura repete os dois :not(). */
.fg input.fg-calc{background:var(--azs)!important;border-color:var(--az)!important;color:var(--az)!important;font-weight:800;cursor:default}
[data-theme="dark"] .fg input.fg-calc:not([type=checkbox]):not([type=radio]){background:var(--azs)!important;border-color:var(--az)!important;color:#93c5fd!important}

/* O UA stylesheet define [hidden]{display:none}, mas qualquer regra de autor com
   display (flex/grid/block) VENCE — o elemento fica escondido só na semântica e
   continua ocupando a linha. Foi o que segurou a altura do modal de custo. */
[hidden]{display:none!important}

/* ===== Linha de formulário compacta: rótulo à ESQUERDA, controles ao lado =====
   Usada no rodapé do modal de custo (vínculo e parcelamento). O padrão .fg
   empilha rótulo em cima do campo — correto para o corpo do form, desperdício
   numa linha com trilho + um select. Aqui o rótulo vira coluna fixa. */
.fg-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.fg-row-l{flex:0 0 auto;width:104px;font-size:12px;font-weight:600;color:var(--sb);line-height:1.3}
.fg-row .sg{flex:0 0 auto;margin:0}
.fg-row-c{flex:1 1 170px;min-width:0;display:flex}
.fg-row select{width:100%;height:32px;padding:0 10px;border:1px solid var(--bd);border-radius:6px;font:13px/1 inherit;background:var(--wh);color:var(--tx);cursor:pointer}
.fg-row select:focus{outline:0;border-color:var(--az);box-shadow:0 0 0 3px var(--azs)}
.fg-row select.fg-row-fix{flex:0 0 auto;width:132px}
[data-theme="dark"] .fg-row select{background:#1e293b;border-color:#2a3f5a;color:var(--tx)}
[data-theme="dark"] .fg-row select:focus{border-color:var(--az);box-shadow:0 0 0 3px rgba(96,165,250,.18)}
/* alinha o checkbox filho com a coluna dos controles, não com a margem */
.fg-check.fg-sub,.fg .fg-check.fg-sub{margin:0 0 12px 114px;min-height:26px;font-size:12.5px;color:var(--sb)}
.ct-parcv{font-size:12.5px;color:var(--sb);font-variant-numeric:tabular-nums}
.fg-sep{border-top:1px solid var(--bd);margin:14px 0 12px}
[data-theme="dark"] .fg-sep{border-top-color:rgba(255,255,255,.09)}
/* trilho compacto: o padrão (8x14, raio 12) é generoso demais numa linha de form */
.sg-sm{padding:3px;border-radius:9px}
.sg button.sg-sm{padding:5px 11px;font-size:12px;border-radius:6px;gap:5px}
.sg button.sg-sm svg{width:14px;height:14px}

@media(max-width:880px){
  /* no dedo a densidade alta não serve: rótulo volta pra cima, controles a 44px */
  .fg-row{gap:8px;margin-bottom:14px}
  .fg-row-l{flex:1 1 100%;width:auto}
  .fg-row .sg,.fg-row-c,.fg-row-fix{flex:1 1 100%;width:auto}
  .fg-row select{height:44px;font-size:16px}
  /* flex:1 1 auto deixava "Professor" sozinho numa 2ª linha. Com base 0 os três
     dividem a largura igualmente e cabem numa linha só a 390px. */
  .sg.sg-sm{flex-wrap:nowrap}
  .sg button.sg-sm{flex:1 1 0;min-width:0;padding:10px 6px;font-size:12.5px;gap:5px;justify-content:center;white-space:nowrap}
  .fg-check.fg-sub,.fg .fg-check.fg-sub{margin-left:0;min-height:44px;font-size:14px}
  .ct-parcv{flex:1 1 100%}
}

/* ===== Famílias e cursos agrupados (Quais Cursos Repetir) ===== */
.rep-fam{margin-bottom:22px}
.rep-fam-h{display:flex;align-items:flex-start;gap:14px;margin-bottom:6px}
.rep-fam-t{font-size:16px;font-weight:800;color:var(--lb-txt);margin:0;letter-spacing:-.2px}
.rep-fam-s{font-size:11.5px;color:var(--lb-muted);font-weight:600;margin:3px 0 0}
.rep-fam-n{margin-left:auto;text-align:right;flex:0 0 auto}
.rep-fam-n b{display:block;font-size:17px;font-weight:800;color:var(--lb-txt);font-variant-numeric:tabular-nums;letter-spacing:-.4px}
.rep-fam-n span{font-size:11px;color:var(--lb-muted);font-weight:600}
.rep-fam-c{font-size:12px;color:var(--lb-muted);margin:0 0 12px;padding-bottom:10px;border-bottom:1px solid var(--lb-stroke)}
.rep-fam-c b{color:var(--lb-txt);font-weight:700}
/* Motor de caixa atravessa a grade: é o quadrante que sustenta a operação */
.rep-q-wide{grid-column:1/-1}
.rep-q-t{font-size:15px;font-weight:800;color:var(--lb-txt);margin:0;letter-spacing:-.2px}

/* Linha de CURSO (edições somadas) */
.rep-ci{flex-direction:column;align-items:stretch;gap:0}
.rep-bc{width:100%}
.rep-chv{display:inline-flex;align-items:center;color:var(--lb-muted);flex:0 0 auto;margin-right:2px}
.rep-eds{flex:0 0 auto;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.4px;color:var(--lb-muted);background:var(--lb-tile);border:1px solid var(--lb-stroke);border-radius:5px;padding:2px 6px;margin-left:7px;white-space:nowrap}
.rep-meta{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:0 2px 9px 21px;font-size:11px;color:var(--lb-muted);font-weight:600;font-variant-numeric:tabular-nums}
.rep-meta span{white-space:nowrap}
.rep-tend{display:inline-flex;align-items:center;gap:4px}
/* --lb-gn (#12a05f) dá 3,38:1 sobre branco: reprova em texto pequeno. Tom de
   TEXTO mais escuro no claro, mais claro no escuro — mesma divisão dos quadrantes. */
.rep-tend.up{color:#0b7a4e}
.rep-tend.down{color:#b91c1c}
[data-theme="dark"] .rep-tend.up{color:#34d399}
[data-theme="dark"] .rep-tend.down{color:#fca5a5}
.rep-eds-l{margin:0 0 8px;padding-left:21px;border-left:2px solid var(--lb-stroke)}
.rep-eds-l .rep-i{border-top:1px solid var(--lb-stroke)}
.rep-eds-l .rep-n{font-weight:500;font-size:12.5px}
.rep-tag.am{color:#8a5a00;background:rgba(200,138,16,.14);border-color:rgba(200,138,16,.3)}
.rep-tag.vm{color:#b91c1c;background:rgba(220,38,38,.12);border-color:rgba(220,38,38,.3)}
[data-theme="dark"] .rep-tag.am{color:#f5b544;background:rgba(245,181,68,.12);border-color:rgba(245,181,68,.3)}
[data-theme="dark"] .rep-tag.vm{color:#fca5a5;background:rgba(248,113,113,.12);border-color:rgba(248,113,113,.3)}

@media(max-width:880px){
  .rep-fam-h{flex-wrap:wrap}
  .rep-fam-n{margin-left:0;text-align:left;flex:1 1 100%}
  .rep-meta{padding-left:0;gap:10px}
  .rep-eds-l{padding-left:10px}
}

/* ===== Lista por AÇÃO (Quais Cursos Repetir) — a leitura principal da tela ===== */
.rep-alerta{display:flex;align-items:center;gap:10px;padding:11px 14px;border-radius:10px;background:var(--lb-amtile);border:1px solid var(--lb-ambd);margin-bottom:20px;font-size:12.5px;color:var(--lb-txt);flex-wrap:wrap}
.rep-alerta svg{color:var(--lb-am);flex:0 0 auto}
.rep-alerta span{flex:1 1 auto;min-width:0}
.rep-alerta a{flex:0 0 auto;color:var(--lb-am);font-weight:700;text-decoration:underline}
.rep-ac{margin-bottom:20px}
.rep-ac-h{display:flex;align-items:center;gap:8px;padding:0 2px 7px;font-size:13px;color:var(--lb-muted)}
.rep-ac-h b{font-size:13.5px;font-weight:800;letter-spacing:-.1px}
.rep-ac-h span{font-size:11.5px;font-weight:600}
.rep-ac-h svg{flex:0 0 auto}
.rep-ac-h.gn,.rep-ac-h.gn b{color:#0b7a4e}
.rep-ac-h.cy,.rep-ac-h.cy b{color:#0369a1}
.rep-ac-h.am,.rep-ac-h.am b{color:#8a5a00}
.rep-ac-h.vm,.rep-ac-h.vm b{color:#b91c1c}
[data-theme="dark"] .rep-ac-h.gn,[data-theme="dark"] .rep-ac-h.gn b{color:#34d399}
[data-theme="dark"] .rep-ac-h.cy,[data-theme="dark"] .rep-ac-h.cy b{color:#7dd3fc}
[data-theme="dark"] .rep-ac-h.am,[data-theme="dark"] .rep-ac-h.am b{color:#f5b544}
[data-theme="dark"] .rep-ac-h.vm,[data-theme="dark"] .rep-ac-h.vm b{color:#fca5a5}
.rep-ac-h span{color:var(--lb-muted)}

.rep-lt{width:100%;table-layout:fixed;border-collapse:collapse;font-size:13px}
.rep-lr>td{padding:10px 8px;border-top:1px solid var(--lb-stroke);vertical-align:middle;color:var(--lb-txt);background:none}
.rep-lc-n{width:auto;min-width:0}
.rep-lc-m{width:82px;text-align:right;font-weight:800;font-variant-numeric:tabular-nums;color:var(--lb-muted)}
.rep-lc-l{width:132px;text-align:right;font-weight:800;font-variant-numeric:tabular-nums}
.rep-lc-d{width:170px;text-align:right;font-size:11.5px;color:var(--lb-muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.rep-lc-x{width:190px;text-align:right;font-size:12px;color:var(--lb-muted);font-variant-numeric:tabular-nums}
.rep-lc-a{width:134px;text-align:right}
/* o botão "custo ok" tem ícone + texto + padding; sem o cap ele empurra a
   tabela de largura fixa e cria 5px de rolagem horizontal */
.rep-lt .rep-ok{max-width:100%;white-space:nowrap}
.rep-lc-m.neg,.rep-lc-l.neg{color:#b91c1c}
[data-theme="dark"] .rep-lc-m.neg,[data-theme="dark"] .rep-lc-l.neg{color:#fca5a5}
.rep-lc-m.sus,.rep-lc-l.sus{color:var(--lb-muted);font-weight:600}
.rep-lb{background:none;border:0;padding:0;margin:0;font:inherit;font-weight:600;color:var(--lb-txt);cursor:pointer;text-align:left;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}
.rep-lb:hover{text-decoration:underline}
/* --lb-faint dá 3,24:1 sobre branco e reprova em texto pequeno — sempre --lb-muted */
.rep-lm{display:block;font-size:11px;font-weight:600;color:var(--lb-muted);margin-top:2px;padding-left:21px}
.rep-lm .av{color:var(--lb-am);font-weight:800}
.rep-chvb{width:19px;height:19px;padding:0;margin:0 2px 0 0;border:0;background:none;color:var(--lb-muted);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;border-radius:4px}
.rep-chvb:hover{background:var(--lb-tile);color:var(--lb-txt)}
.rep-chvb.vazio{cursor:default;pointer-events:none}
.rep-lr-ed>td{background:var(--lb-tile)}
.rep-lr-ed .rep-lb{font-weight:500;font-size:12.5px;color:var(--lb-muted)}
.rep-lr-medir .rep-lb{color:var(--lb-muted)}

.rep-mais-links{display:flex;gap:20px;flex-wrap:wrap;margin-top:8px;padding-top:14px;border-top:1px solid var(--lb-stroke)}
.rep-link{display:inline-flex;align-items:center;gap:6px;background:none;border:0;padding:4px 2px;font:600 12.5px/1 inherit;color:var(--lb-muted);cursor:pointer;border-radius:6px}
.rep-link:hover{color:var(--lb-txt)}
.rep-dobra{margin-top:16px}
.rep-fam-mini{font-size:12.5px;color:var(--lb-muted);margin:0 0 14px;padding:11px 14px;background:var(--lb-tile);border:1px solid var(--lb-stroke);border-radius:10px}
.rep-fam-mini b{color:var(--lb-txt)}

@media(max-width:880px){
  /* Tabela não sobrevive a 390px com nome de curso de 60 caracteres: cada linha
     vira um bloco — nome (com o chevron ao lado), meta, e os números embaixo. */
  .rep-lt,.rep-lt tbody,.rep-lr,.rep-lr>td{display:block;width:auto}
  .rep-lr{padding:8px 2px 12px;border-top:1px solid var(--lb-stroke)}
  .rep-lr>td{border:0;padding:0}
  /* ESPECIFICIDADE: `.rep-lr>td` vale (0,1,1) e vence `.rep-lc-m` (0,1,0) —
     sem repetir o `>td` aqui, nem o display:none nem o inline-block pegam. */
  .rep-lr>td.rep-lc-x{display:none}
  .rep-lr>td.rep-lc-n{display:flex;align-items:center;flex-wrap:wrap;gap:0}
  .rep-lb{white-space:normal;overflow:visible;text-overflow:clip;flex:1 1 auto;min-width:0;font-size:13.5px;line-height:1.35}
  .rep-lm{flex:1 1 100%;padding-left:0;margin-top:3px}
  .rep-lr>td.rep-lc-m,.rep-lr>td.rep-lc-l,.rep-lr>td.rep-lc-d{display:inline-block;width:auto;text-align:left;margin:7px 14px 0 0;vertical-align:baseline}
  .rep-lr>td.rep-lc-m,.rep-lr>td.rep-lc-l{font-size:14px}
  .rep-lr>td.rep-lc-d{font-size:11.5px}
  .rep-lr>td.rep-lc-a{width:auto;text-align:left;margin-top:8px}
  /* alvos de toque >=44px: no desktop o mouse acerta 19-32px, o dedo não */
  .rep-chvb{width:44px;height:44px;margin:0 4px 0 -8px;flex:0 0 auto}
  .rep-chvb.vazio{display:none}
  .rep-lr-ed{padding-left:14px;border-left:2px solid var(--lb-stroke)}
  .rep-lt .rep-ok{min-height:44px;margin:0;padding:8px 12px}
  .rep-link{min-height:44px;padding:10px 2px}
  .rep-alerta{font-size:13px}
  .rep-alerta a{min-height:44px;display:inline-flex;align-items:center}
}

/* ===== Barras proporcionais (Quais Cursos Repetir) =====
   A barra diz duas coisas ao mesmo tempo: a LARGURA é o tamanho do curso
   (receita ÷ maior receita da tela) e a DIVISÃO interna é quanto sobrou. */
.rep-legenda{display:flex;align-items:center;gap:18px;flex-wrap:wrap;margin:0 0 18px;font-size:11.5px;color:var(--lb-muted);font-weight:600}
.rep-legenda span{display:inline-flex;align-items:center;gap:6px}
.rep-legenda i{width:13px;height:13px;border-radius:3px;flex:0 0 auto}
.rep-legenda i.sobra{background:#0b7a4e}
.rep-legenda i.custo{background:repeating-linear-gradient(135deg,rgba(100,116,139,.30) 0 3px,rgba(100,116,139,.13) 3px 6px);border:1px solid var(--lb-stroke)}
.rep-legenda-x{color:var(--lb-faint);font-weight:500}
[data-theme="dark"] .rep-legenda i.sobra{background:#34d399}
[data-theme="dark"] .rep-legenda i.custo{background:repeating-linear-gradient(135deg,rgba(226,232,240,.20) 0 3px,rgba(226,232,240,.07) 3px 6px)}

.rep-lista{list-style:none;margin:0;padding:0}
.rep-ci{padding:0 0 20px}
.rep-cab{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin-bottom:7px}
.rep-nome{background:none;border:0;padding:0;margin:0;font:600 14px/1.35 inherit;color:var(--lb-txt);cursor:pointer;text-align:left;min-width:0}
.rep-nome:hover{text-decoration:underline}
.rep-meta2{font-size:11px;color:var(--lb-muted);font-weight:600;flex:0 0 auto}
.rep-meta2 .av{color:var(--lb-am);font-weight:800}

/* Verde e cinza de luminância parecida dão 1,7:1 ENTRE SI — ninguém vê onde uma
   parte acaba. O "custou" usa TEXTURA (listras), não só cor: distingue por
   padrão, funciona para daltônico e sobrevive a tela ruim. */
.rep-bar{display:flex;height:26px;border-radius:7px;overflow:hidden;background:var(--lb-tile);border:1px solid var(--lb-stroke);min-width:60px}
.rep-bar i{display:block;height:100%;transform-origin:left center;animation:repGrow .45s cubic-bezier(.2,.75,.2,1) both}
/* Metáfora de barra de progresso: PREENCHIDO = sobrou, VAZIO = custou. A
   separação é por preenchimento, não por matiz — some a dependência de
   distinguir dois tons de luminância parecida, e funciona para daltônico.
   As listras marcam a área "gasta" sem competir com o verde. */
.rep-bar i.sobra{background:#0b7a4e;border-right:2px solid var(--lb-panel-bg)}
.rep-bar i.custo{background:repeating-linear-gradient(135deg,rgba(100,116,139,.30) 0 5px,rgba(100,116,139,.13) 5px 10px)}
.rep-bar.neg i{background:#c0392f;border-right:0}
[data-theme="dark"] .rep-bar i.sobra{background:#34d399}
[data-theme="dark"] .rep-bar i.custo{background:repeating-linear-gradient(135deg,rgba(226,232,240,.20) 0 5px,rgba(226,232,240,.07) 5px 10px)}
[data-theme="dark"] .rep-bar.neg i{background:#f87171}
@keyframes repGrow{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@media(prefers-reduced-motion:reduce){.rep-bar i{animation:none}}

.rep-frase{font-size:13px;line-height:1.55;color:var(--lb-muted);margin:8px 0 0}
.rep-frase b{color:var(--lb-txt);font-weight:700;font-variant-numeric:tabular-nums}
.rep-frase b.pos{color:#0b7a4e}
.rep-frase b.neg,.rep-frase b.av{color:#b91c1c}
.rep-frase b.av{color:#8a5a00}
[data-theme="dark"] .rep-frase b.pos{color:#34d399}
[data-theme="dark"] .rep-frase b.neg{color:#fca5a5}
[data-theme="dark"] .rep-frase b.av{color:#f5b544}
.rep-ci.medir .rep-nome{color:var(--lb-muted)}
.rep-ci.medir .rep-ok{margin-top:10px}

.rep-eds-l{list-style:none;margin:10px 0 0;padding:0 0 0 14px;border-left:2px solid var(--lb-stroke)}
.rep-ed{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:7px 0;flex-wrap:wrap}
.rep-ed .rep-nome{font-weight:500;font-size:12.5px;color:var(--lb-muted)}
.rep-ed-v{font-size:12.5px;color:var(--lb-muted);font-variant-numeric:tabular-nums;flex:0 0 auto}
.rep-ed-v b{color:var(--lb-txt);font-weight:700}

@media(max-width:880px){
  /* o nome é o alvo de toque principal da linha: padding vertical leva a área
     a 44px sem inflar o espaçamento visual (o texto continua no mesmo lugar) */
  .rep-nome{font-size:14.5px;padding:6px 0;min-height:44px;display:inline-flex;align-items:center}
  .rep-cab{margin-bottom:2px}
  .rep-frase{font-size:13.5px}
  .rep-bar{height:30px}
  .rep-chvb{width:44px;height:44px;margin:0 2px 0 -10px}
  .rep-ed{gap:4px}
  .rep-ed-v{flex:1 1 100%}
  .rep-legenda{gap:14px}
}

/* ===================== RELATÓRIO DO MÊS (vRelMes) =====================
   Folha de fechamento para a reunião de entrega de resultado. Tokens --lb-*
   porque é a única família com bloco [data-theme="dark"] completo (a armadilha
   do --bf, já documentada no CLAUDE.md). A impressão usa @media print +
   "Salvar como PDF" do navegador: o texto sai selecionável, sem html2canvas. */
.rel{display:flex;flex-direction:column;gap:14px}
.rel-ctrl{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:var(--wh);
  border:1px solid var(--lnbd);border-radius:12px;padding:12px 14px}
.rel-ctrl-t{font-weight:700;font-size:15px;color:var(--tx);margin-right:auto}
.rel-ctrl .b{min-height:40px}
.rel-ctrl input[type=month],.rel-ctrl select{background:var(--wh);border:1px solid var(--lnbd);
  color:var(--tx);border-radius:8px;padding:8px 10px;font-size:13px;min-height:40px}
.rel-sheet{background:var(--wh);border:1px solid var(--lnbd);border-radius:14px;padding:24px 26px;
  display:flex;flex-direction:column;gap:0}
.rel-hd{display:flex;align-items:flex-start;gap:16px;padding-bottom:14px;
  border-bottom:2px solid var(--tx);flex-wrap:wrap}
.rel-eyebrow{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--az);font-weight:700}
.rel-h1{font-size:26px;font-weight:800;color:var(--tx);line-height:1.15;margin-top:4px}
.rel-hd-v{margin-left:auto;text-align:right}
.rel-hd-n{font-size:24px;font-weight:800;color:var(--tx);white-space:nowrap}
.rel-hd-n span{font-size:14px;font-weight:600;color:var(--sb)}
.rel-hd-l{font-size:11.5px;color:var(--sb);margin-top:2px}
.rel-vd{font-size:16px;font-weight:600;color:var(--tx);line-height:1.5;
  background:var(--bg);border-left:4px solid var(--az);border-radius:0 8px 8px 0;padding:14px 16px;margin-top:16px}
.rel-sec{font-size:11px;letter-spacing:.13em;text-transform:uppercase;color:var(--sb);
  font-weight:700;margin:22px 0 10px;display:flex;align-items:center;gap:8px}
.rel-cnt{background:var(--az);color:#fff;border-radius:99px;padding:1px 7px;font-size:10.5px;letter-spacing:0}
.rel-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}
.rel-kpi{background:var(--bg);border:1px solid var(--lnbd);border-radius:10px;padding:12px 14px}
.rel-kpi-l{font-size:11px;color:var(--sb);font-weight:600;text-transform:uppercase;letter-spacing:.06em}
.rel-kpi-v{font-size:21px;font-weight:800;color:var(--tx);margin-top:3px;font-variant-numeric:tabular-nums}
.rel-kpi-c{font-size:11px;font-weight:600;margin-top:3px;color:var(--sb)}
.rel-kpi-c.up{color:#15803d} .rel-kpi-c.down{color:#b3261e}
.rel-kpi-m{font-size:10.5px;color:var(--sb);margin-top:1px}
.rel-funil{display:flex;align-items:stretch;gap:8px;flex-wrap:wrap}
.rel-et{flex:1 1 130px;background:var(--bg);border:1px solid var(--lnbd);border-radius:10px;
  padding:12px 14px;min-width:0}
.rel-et-n{font-size:24px;font-weight:800;color:var(--tx);font-variant-numeric:tabular-nums}
.rel-et-l{font-size:11.5px;color:var(--tx);font-weight:600;margin-top:1px}
.rel-et-s{font-size:10.5px;color:var(--sb);margin-top:1px}
.rel-seta{flex:0 0 auto;align-self:center;text-align:center;font-size:13px;font-weight:800;color:var(--az);
  padding:0 4px}
.rel-seta span{display:block;font-size:10px;font-weight:600;color:var(--sb);max-width:92px;line-height:1.3}
.rel-tbl{width:100%;border-collapse:collapse;font-size:13px}
.rel-tbl th{text-align:left;padding:9px 10px;background:var(--bg);color:var(--sb);font-size:10.5px;
  letter-spacing:.08em;text-transform:uppercase;font-weight:700;border-bottom:1px solid var(--lnbd);white-space:nowrap}
.rel-tbl td{padding:9px 10px;border-bottom:1px solid var(--lnbd);color:var(--tx)}
.rel-tbl tr:last-child td{border-bottom:0}
.rel-tbl .rel-n{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.rel-tbl td.rel-n.up{color:#15803d;font-weight:700} .rel-tbl td.rel-n.down{color:#b3261e;font-weight:700}
/* Cabeçalho dos participantes: era um <div> block com os botões inline e os
   separadores "·" como texto solto — quebrava no meio da frase e deixava um
   botão órfão numa linha só. Flex com gap em qualquer largura; o separador
   saiu do cpBtnLista(). */
#ct .cdx-parts-h{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.rel-pos{font-weight:800;color:var(--sb);width:1%;white-space:nowrap}
.rel-mot td:first-child{width:100%} .rel-mot i{color:var(--sb)}
.rel-pend td:first-child{font-weight:600}
.rel-dest{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px}
.rel-d{background:var(--bg);border:1px solid var(--lnbd);border-radius:10px;padding:12px 14px}
.rel-d-t{font-size:11px;color:var(--sb);font-weight:700;text-transform:uppercase;letter-spacing:.06em}
.rel-d-b{margin-top:4px;font-size:14px;color:var(--tx);font-weight:700;display:flex;flex-direction:column}
.rel-d-b span{font-size:12px;font-weight:600;color:var(--az)}
.rel-vazio{font-size:12px;color:var(--sb);font-weight:500}
.rel-ok{font-size:13px;color:#15803d;font-weight:600;background:var(--bg);border-radius:8px;padding:10px 12px}
.rel-pat{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.rel-pat-b{display:inline-flex;align-items:center;gap:9px;background:var(--bg);border:1px solid var(--lnbd);
  border-radius:8px;padding:8px 14px;font-weight:800;font-size:15px;color:var(--tx)}
.rel-pat-b::before{content:'';width:11px;height:11px;border-radius:3px;background:var(--pc);flex:0 0 auto}
.rel-pat-x{font-size:13px;color:var(--tx)}
.rel-pat-s{font-size:12px;color:var(--sb);margin-top:2px}
.rel-comb{display:flex;flex-direction:column;gap:16px;padding:6px 0 2px}
.rel-comb i{display:block;height:1px;background:var(--lnbd)}
.rel-nota{font-size:11px;color:var(--sb);line-height:1.5;margin-top:14px;padding-top:10px;
  border-top:1px solid var(--lnbd)}
/* --az no escuro é um azul CLARO: branco em cima dá 2,54:1 (medido). Mesma
   correção do chip do Roteiro de visitas — texto escuro sobre o azul claro. */
[data-theme="dark"] .rel-cnt{background:var(--az);color:#0b1220}
[data-theme="dark"] .rel-kpi-c.up,[data-theme="dark"] .rel-tbl td.rel-n.up,[data-theme="dark"] .rel-ok{color:var(--vd)}
[data-theme="dark"] .rel-kpi-c.down,[data-theme="dark"] .rel-tbl td.rel-n.down{color:var(--vm)}
@media(max-width:640px){
  /* alvo de toque: medido em 430px o botão saía com 30px de altura */
  .rel-ctrl .b,.rel-ctrl input[type=month],.rel-ctrl select{min-height:44px}
  .rel-ctrl-t{flex:1 1 100%}
  .rel-sheet{padding:18px 16px}
  .rel-hd-v{margin-left:0;text-align:left}
  .rel-seta{width:100%;text-align:left}
  .rel-seta span{max-width:none}
}
/* — impressão: a folha ocupa a página, o resto do app some — */
@media print{
  @page{size:A4;margin:12mm}
  header,#nv,#navbk,#errbar,#dbfbar,#toastWrap,.rel-noprint,.rel-ctrl{display:none!important}
  html,body{background:#fff!important}
  #ctw{display:block!important;padding:0!important;margin:0!important}
  #ct{padding:0!important;margin:0!important}
  .rel{gap:0}
  .rel-sheet{border:0;border-radius:0;padding:0;box-shadow:none;background:#fff}
  .rel-sheet + .rel-sheet{break-before:page}
  .rel-sec,.rel-kpis,.rel-funil,.rel-dest,.rel-pat,.rel-tbl tr{break-inside:avoid}
  .rel-kpi,.rel-et,.rel-d,.rel-vd,.rel-ok{background:#fff;border-color:#c9d2de}
  .rel-tbl th{background:#f2f5f8}
}
/* atalhos para o Relatório — na barra do Métricas e no perfil do Meu Desempenho */
.met-hdr .rel-btn{flex:0 0 auto;min-height:38px;white-space:nowrap}
.gm-relbtns{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0 4px}
.gm-relbtns .b{min-height:38px}
@media(max-width:640px){.gm-relbtns .b,.met-hdr .rel-btn{min-height:44px}}
/* patente = ranqueada: extrato de pontos e as linhas negativas */
.gm-pilar.neg b{color:var(--vm)}
.gm-extrato{margin:10px 0 12px;border:1px solid var(--lb-stroke);border-radius:10px;overflow:hidden}
.gm-extrato-t{font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;font-weight:700;
  color:var(--lb-muted);padding:8px 12px;background:var(--lb-tile);border-bottom:1px solid var(--lb-stroke)}
.gm-ex-l{display:flex;align-items:baseline;gap:10px;padding:7px 12px;font-size:12.5px;
  color:var(--lb-txt);border-bottom:1px solid var(--lb-stroke)}
.gm-ex-l:last-child{border-bottom:0}
.gm-ex-l span{flex:1;min-width:0}
.gm-ex-l i{font-style:normal;font-size:11px;color:var(--lb-muted);white-space:nowrap}
.gm-ex-l b{font-variant-numeric:tabular-nums;white-space:nowrap;min-width:42px;text-align:right;color:#15803d}
.gm-ex-l.neg b{color:var(--vm)}
.gm-ex-l.tot{background:var(--lb-tile);font-weight:700}
.gm-ex-l.tot b{color:var(--lb-txt);font-size:14px}
.gm-ex-piso{font-size:11px;color:var(--vm);padding:7px 12px;border-top:1px solid var(--lb-stroke)}
[data-theme="dark"] .gm-ex-l b{color:var(--vd)}
/* meses anteriores à 1ª temporada da patente: presentes, mas sem nota */
.gm-hist-item.pre{opacity:.55}
.gm-hist-item.pre .gm-hist-badge{background:var(--lb-tile);color:var(--lb-muted)}
.gm-hist-item.pre .gm-hist-pat{color:var(--lb-muted);font-size:9.5px}

/* ===== Mídias por curso no celular: nome de LISTA, não de título =====
   MEDIDO em 375px: o nome do curso não tem font-size próprio — herdava os
   15px/24px do body, ou seja, 1,6 de entrelinha num nome em CAIXA ALTA que já
   quebra em quatro linhas. Cada cabeçalho gastava 116px de altura só para
   dizer "CAPTAÇÃO DE RECURSOS DE EMENDAS PARLAMENTARES · 2 arquivos", e a tela
   inteira cabia cinco cursos.

   Aqui o nome é rótulo de item de lista, não título de seção: 13px com
   entrelinha de 1,35. O bloco todo é montado com style inline no
   `comercial.js` (`midRender`), mas o font-size do nome NÃO é inline — por
   isso esta regra pega sem precisar de !important nem de mexer no JS. */
/* Estas seis regras só transportam para o CSS o `style` inline que o
   `midRender` escrevia — o desktop continua idêntico ao que era. Existem para
   que o bloco de celular abaixo tenha o que mirar: sem classe, a única mira
   possível era `span[style*="text-overflow"]`, que morre na primeira edição
   do JS e sem avisar. */
.md-sec{margin-bottom:12px}
.md-grp{display:flex;align-items:center;gap:6px;margin-bottom:6px}
.md-grp-t{font-size:13px}
.md-vazio{color:var(--sb);font-size:13px;padding:4px 0}
.md-arq{display:flex;align-items:center;gap:8px;padding:4px 0;font-size:13px}
.md-arq-n{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.md-env{font-size:12px}
.md-bt{display:inline}

@media(max-width:640px){
  #ct .md-hdr{font-size:13px;line-height:1.35}

  /* ===== O curso aberto: um peso primário, não quatro =====
     MEDIDO em 375px com o curso expandido. Três defeitos, nesta ordem:

     1. QUATRO CTAs primários na mesma tela. O "Enviar" é um bloco de gradiente
        azul de 70x36 SEM borda, repetido uma vez por tipo de material. Quando
        tudo é primário, nada é — e o azul chapado era o elemento mais pesado do
        cartão, acima do nome do curso e do nome do arquivo.
     2. Os quatro começavam em quatro posições X diferentes, porque cada um
        vinha colado ao fim do título do grupo ("Boas-vindas" x "Modelos de
        Nota Fiscal").
     3. Os controles da linha tomavam 160px e o nome do arquivo ficava com
        169px, truncado em "Boas Vindas _ Excelênc…". O que se lê sumia para
        caber o que se clica.

     A correção é de HIERARQUIA, não de pixels: Enviar vira contorno (ação
     recorrente, não CTA), as ações da linha viram ícone puro (o rótulo
     "Baixar" repetido em toda linha é ruído — o ícone de download é
     universal), e o nome do arquivo recebe o espaço que sobra. */

  /* Um sistema só para os controles desta lista. Os três números são
     amarrados — alvo = padding box + 2x inset, e gap >= 2x inset, senão as
     áreas de dois botões vizinhos se sobrepõem:

       visual 32 -> padding box 30 -> inset 7 -> gap mínimo 14   <- aqui

     Vale na horizontal E na vertical: por isso o .md-grp e o .md-arq abaixo
     somam 15px e 14px entre botões de linhas diferentes. Uma tentativa
     anterior (30px, inset -8, gap 8) foi MEDIDA com elementFromPoint e a área
     do "Baixar" invadia a do "×" — com o × sendo destrutivo, mirar a borda de
     um e acertar o outro não é detalhe. */
  #ct .md-curso .b.bsm{min-height:32px;font-size:11.5px;border:1px solid transparent;
    border-radius:8px;padding:6px 10px}
  #ct .md-curso .b.bsm::after{inset:-7px}
  /* `.b.bsm.md-ac`, não `.md-ac`: a regra de escala acima é `.b.bsm` (três
     classes) e vence `.md-ac` (duas) mesmo vindo antes no arquivo. MEDIDO: o
     `border-color` ficava transparente e o padding de 10px continuava valendo.
     Quinta vez que esta armadilha aparece no repo — ver `.fg input`,
     `[hidden]`, `.rep-lr>td` e `.pgen-shell .pgen-bar`. */
  #ct .md-curso .b.bsm.md-ac{width:32px;min-width:32px;padding:0;flex:0 0 auto}
  #ct .md-curso .md-bt{display:none}
  /* o ícone é montado com 12px no JS e o flex ainda o espremia para 10x12 —
     num botão de 32px, sem rótulo ao lado, ele fica perdido. 15px quadrados,
     travados contra o flex. */
  #ct .md-curso .b.bsm.md-ac svg{width:15px;height:15px;flex:0 0 auto}
  /* Os dois ícones da linha precisam ser da MESMA família visual. O .bs vinha
     com a borda transparente da regra acima: o "Baixar" ficava sem contorno ao
     lado de um "×" contornado de vermelho, como se fossem componentes
     diferentes.

     `currentColor` resolve os dois de uma vez: a borda herda a cor do próprio
     ícone, então ciano no baixar e vermelho no remover — a cor diferencia a
     AÇÃO, não o componente, e nenhuma borda pode ficar mais fraca que o ícone
     que ela contorna. A primeira tentativa usou `--lnbd` e a borda deu
     1,96:1 (invisível, o botão voltava a parecer um borrão); com currentColor
     são 8,33:1 e 6,45:1. */
  #ct .md-curso .b.bsm.md-ac{border-color:currentColor}
  #ct .md-curso .md-arq{gap:14px;padding:7px 0}
  #ct .md-curso .md-grp{margin-bottom:8px}

  /* 1. O título do grupo é RÓTULO, não concorrente do nome do curso — que
        também está em 13px. O font-size era inline no JS, daí o !important. */
  #ct .md-curso .md-grp-t{font-size:10.5px!important;font-weight:800;
    letter-spacing:.06em;text-transform:uppercase;color:var(--sb)}

  /* 2. Os quatro "Enviar" na MESMA coluna à direita. */
  #ct .md-curso .md-grp .b.bsm{margin-left:auto}

  /* 3. Enviar perde o gradiente: ação repetida quatro vezes é recorrente, não
        primária. O contorno mantém o azul como affordance sem virar o peso
        visual da tela. */
  #ct .md-curso .b.bsm.bp{background:transparent;background-image:none;
    box-shadow:none;border-color:var(--az);color:var(--az);font-weight:600}

  /* 4. Excluir é destrutivo E secundário: contorno, nunca bloco vermelho ao
        lado do nome do arquivo. */
  #ct .md-curso .b.bsm.bd{background:transparent;border-color:var(--vm);color:var(--vm)}

  /* 5. O nome do arquivo é o DADO da linha: com os rótulos fora, ele ganha
        ~90px e quase sempre cabe em uma linha. O clamp de 2 é a rede de
        segurança para os nomes longos — solto ele chegava a quatro linhas e a
        linha do arquivo ficava mais alta que o grupo inteiro. */
  #ct .md-curso .md-arq-n{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
    white-space:normal;overflow:hidden;overflow-wrap:anywhere;min-width:0;line-height:1.35}
}

/* ===== Métricas do time no celular: a tela inteira, e proporção =====
   MEDIDO em 375px, antes: 30px de calha de cada lado (.ct 14 + .met 16), o
   cabeçalho em TRÊS linhas (158px), cada peça de KPI com 110px de altura para
   mostrar um número, e as grades de 3 colunas deixando buracos — "Presencial"
   sozinho com dois terços da linha vazios. */
@media(max-width:640px){
  /* 1. De ponta a ponta. A margem negativa cancela o padding lateral do .ct e
        o padding devolve 12px + o env() do notch, que é preservado: o cartão
        encosta na borda SEGURA, não na física.
        `max-width:none` é obrigatório — sem ele o `#ct>*{max-width:100%}` da
        linha 1328 trava a casca na largura do pai e a margem não alarga nada. */
  #ct .met{margin-left:calc(-14px - env(safe-area-inset-left,0px));
    margin-right:calc(-14px - env(safe-area-inset-right,0px));
    max-width:none;
    padding:16px calc(12px + env(safe-area-inset-right,0px)) 24px calc(12px + env(safe-area-inset-left,0px))}

  /* 2. Cabeçalho em duas linhas: título em cima, trilho e botão dividindo a
        segunda. Eram três linhas porque os três filhos do flex quebravam um a
        um. */
  #ct .met-hdr{margin-bottom:14px;gap:10px}
  #ct .met-hdr>div:first-child{flex:1 1 100%}
  #ct .met-pills{flex:1 1 auto}
  #ct .met-hdr .rel-btn{flex:0 0 auto;margin-left:auto}

  /* 3. A peça de KPI deixa de ser pilha centralizada e vira cartão de número:
        ícone e rótulo na primeira linha, valor ocupando a largura inteira na
        segunda.

        > O layout horizontal (ícone à esquerda, número à direita) foi medido e
        > DESCARTADO: sobravam 109px para o valor e "R$ 103.580,00" a 18px pede
        > ~118. Com o valor em linha própria ele tem os 147px do cartão. */
  #ct .met-hero{gap:8px}
  #ct .met-hero .met-g{display:grid;grid-template-columns:auto 1fr;
    column-gap:7px;row-gap:3px;align-items:center;text-align:left;padding:12px}
  #ct .met-hero .met-ico{grid-area:1/1;margin:0;width:24px;height:24px;border-radius:7px}
  #ct .met-hero .met-ico svg{width:13px;height:13px}
  #ct .met-hero .met-lbl{grid-area:1/2;margin:0}
  #ct .met-hero .met-val{grid-area:2/1/3/3}

  /* 4. Duas colunas, não três. Com `auto-fit` o funil (5 peças) saía 3+2 e o
        primeiro contato (4) saía 3+1 — buracos de um terço e de dois terços da
        linha. Em duas colunas as duas grades fecham certo, e a peça ímpar
        sobrando ocupa a linha toda em vez de deixar vão. */
  #ct .met-tiles{grid-template-columns:1fr 1fr;gap:8px}
  #ct .met-tiles>:last-child:nth-child(odd){grid-column:1/-1}
  #ct .met-g{padding:14px}

  /* 5. O cartão de cada consultor tinha QUINZE linhas de rótulo/valor e 457px
        de altura — cinco consultores davam 2.285px de rolagem. Os números
        curtos passam a dividir a linha em dois; identificação (#, Vendedor) e
        dinheiro (Vendas, Faturamento, Ticket) ficam na largura inteira, porque
        "R$ 103.580,00" não cabe em meia linha com o rótulo ao lado. */
  #ct .met-tbl .sx.cardize tbody tr{display:grid;grid-template-columns:1fr 1fr;column-gap:14px}
  #ct .met-tbl .sx.cardize tbody td:nth-child(-n+2),
  #ct .met-tbl .sx.cardize tbody td:nth-child(n+13){grid-column:1/-1}
  /* O rótulo do cartão é limitado a 40% da célula pela regra global (linha
     2048) — regra escrita para a célula de LARGURA INTEIRA. Em meia largura os
     40% viram 56px e "Propostas", "Conversão", "WhatsApp" e "Presencial"
     quebravam em duas linhas ("Proposta / s"), levando a linha de 29 para 45px
     e devolvendo a altura que a grade de duas colunas tinha economizado.
     Aqui o rótulo não quebra e ocupa o que precisar; quem cede é o valor, que
     tem dois caracteres na maioria das colunas. */
  #ct .met-tbl .sx.cardize tbody td{gap:8px}
  #ct .met-tbl .sx.cardize tbody td[data-label]::before{flex:0 1 auto;max-width:none;
    white-space:nowrap;font-size:11px}
}

/* A pílula ativa de Hoje/Semana/Mês reprovava em AA no tema escuro, e não é
   defeito do celular: no dark `--az` é um azul CLARO (#60a5fa) e branco em
   cima dá 2,54:1 — o controle principal da tela. Texto escuro resolve (7,44:1)
   sem mexer na cor de fundo, que é o que identifica o período selecionado.

   > Mesmo número, mesma correção já registrada para os chips do Roteiro de
   > visitas: "texto branco na aba ativa (--az claro) dá 2,54:1, o dark usa
   > texto escuro #0b1220". Vale no desktop também, por isso está FORA do
   > media query. */
[data-theme="dark"] .met-pills button.on{color:#0b1220}

/* ===== Relatórios: os controles ganham NOME =====
   Os quatro controles do topo não tinham rótulo nenhum: um trilho, um
   `input[type=month]` cru, um `select` cujo texto padrão ("Capa do time") era
   ao mesmo tempo o rótulo e uma opção, e um botão. Cada um com uma largura
   diferente (149 / 192 / 175 / 139px), empilhados e alinhados à esquerda — daí
   a leitura de "informação jogada na tela". O rótulo é o conserto principal;
   o alinhamento vem junto no bloco de celular. */
.rel-f{display:flex;flex-direction:column;gap:4px;min-width:0}
.rel-f-l{font-size:11px;font-weight:600;color:var(--sb);
  text-transform:uppercase;letter-spacing:.06em;line-height:1.2}

/* A borda do cartão era INVISÍVEL no tema escuro: `--bd` e `--wh` são a MESMA
   cor (#1e293b), então `border:1px solid var(--bd)` sobre `background:var(--wh)`
   desenha a borda em cima dela mesma. Sem aresta, cinco consultores viram um
   bloco contínuo e não se sabe onde um termina. `--lnbd` (#2d4a6b) é o token
   de linha que existe justamente para isto. Vale para TODA tabela que vira
   cartão no celular, não só a de Relatórios. */
[data-theme="dark"] .sx.cardize tr{border-color:var(--lnbd)}

@media(max-width:640px){
  /* 1. De ponta a ponta, como as outras telas. `max-width:none` é obrigatório:
        sem ele o `#ct>*{max-width:100%}` trava a casca e a margem negativa não
        alarga nada. */
  #ct .rel{margin-left:calc(-14px - env(safe-area-inset-left,0px));
    margin-right:calc(-14px - env(safe-area-inset-right,0px));
    max-width:none;padding:0 calc(12px + env(safe-area-inset-left,0px))}
  #ct .rel-sheet{padding:16px 14px;line-height:1.4}

  /* ===== Escala de tipo da folha no celular =====
     A causa da tela "grande" não era o tamanho de cada peça isolada, e sim a
     ENTRELINHA herdada: a folha não define `line-height`, então recebia os
     24px do `body` (1,6 sobre 15px). Num bloco de 21px isso vira 33,6px de
     altura de linha — 12px de ar por número, multiplicados por cinco peças de
     KPI, quatro destaques e cinco cartões de consultor.

     `line-height:1.4` na folha resolve a maior parte; o resto é a escala
     abaixo, calibrada para 375px. Os tamanhos do desktop ficam intactos — lá
     a folha é um documento A4 em tela cheia, e 26px de título é o certo. */
  #ct .rel-h1{font-size:19px;line-height:1.2}
  #ct .rel-eyebrow{font-size:10px}
  /* o faturamento continua sendo o maior número da tela: ele é a resposta */
  #ct .rel-hd-n{font-size:21px;line-height:1.15}
  #ct .rel-hd-n span{font-size:12px}
  #ct .rel-hd-l{font-size:11px}
  #ct .rel-hd{padding-bottom:10px}
  #ct .rel-kpi{padding:9px 11px}
  #ct .rel-kpi-l{min-height:24px}
  #ct .rel-kpi-v{font-size:17px;line-height:1.15;margin-top:2px}
  #ct .rel-d{padding:9px 11px}
  #ct .rel-d-t{font-size:10px}
  #ct .rel-d-b{font-size:13px;line-height:1.25}
  #ct .rel-d-b span{font-size:11.5px}
  #ct .rel-nota{font-size:10.5px;line-height:1.45;margin-top:10px}

  /* 2. Painel de controle: grade de duas colunas em vez de quatro larguras
        soltas. Período e o seletor de data dividem a linha; "Relatório de" e o
        botão ocupam a largura inteira. `minmax(0,1fr)` e não `1fr` — o
        `input[type=month]` tem largura mínima própria (o ícone do calendário)
        e com `1fr` não encolhe abaixo do min-content, estourando a grade.
        Armadilha já registrada no cadastro de curso. */
  /* `align-items:start` e não `end`: o trilho tem 50px de altura e o campo de
     data 44, então alinhar por baixo deixava os dois RÓTULOS em alturas
     diferentes (363px e 379px) — é o rótulo que o olho usa para varrer a
     linha, não a base do controle. */
  #ct .rel-ctrl{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);
    gap:10px;align-items:start}
  #ct .rel-ctrl-t{grid-column:1/-1;margin-right:0}
  #ct .rel-ctrl .rel-f-quem,#ct .rel-ctrl .rel-print{grid-column:1/-1}
  #ct .rel-f>.sg,#ct .rel-f>input,#ct .rel-f>select{width:100%;min-width:0}
  #ct .rel-f>.sg button{flex:1 1 0;min-width:0}

  /* 3. A faixa de KPI vinha com alturas 80 / 80 / 98 / 98 / 80: "Negociações
        abertas" quebrava em duas linhas e arrastava o vizinho, então uma faixa
        de cinco peças tinha três alturas. A 10px o rótulo cabe em uma linha, e
        o `min-height` mantém a peça igual mesmo se algum rótulo quebrar.
        A quinta peça, órfã, passa a ocupar a linha inteira em vez de deixar
        metade da linha vazia. */
  #ct .rel-kpis{grid-template-columns:1fr 1fr;gap:8px}
  /* A peça órfã ocupa a linha inteira — mas deitada, rótulo e valor na MESMA
     linha. Em pé ela virava uma caixa de 351x68 para dizer "53 · 68": resolver
     o buraco da grade criando um bloco desproporcional é trocar um defeito por
     outro. Deitada tem 40px e fecha o bloco como uma linha de resumo. */
  #ct .rel-kpis>:last-child:nth-child(odd){grid-column:1/-1;display:flex;
    align-items:baseline;justify-content:space-between;gap:10px}
  #ct .rel-kpis>:last-child:nth-child(odd) .rel-kpi-l{min-height:0}
  #ct .rel-kpis>:last-child:nth-child(odd) .rel-kpi-v{margin-top:0}
  #ct .rel-kpi-l{font-size:10px;line-height:1.3;min-height:26px;
    display:flex;align-items:flex-start}

  /* 4. Destaques em 2x2. Com `minmax(170px,1fr)` dois cartões pediam 350px e
        só cabiam 313 — caíam para uma coluna e os quatro fatos curtos gastavam
        387px de altura. */
  #ct .rel-dest{grid-template-columns:1fr 1fr;gap:8px}

  /* 5. "Linha a linha": o cartão do consultor tinha ONZE linhas de rótulo e
        valor. Identificação (#, Consultor) e dinheiro (Faturamento, variação,
        Ticket) ficam na largura inteira; as seis contagens dividem a linha em
        duas. Só nesta tabela — `rel-mot` e `rel-pend` têm outras colunas e a
        contagem por posição não valeria para elas. */
  #ct .cardize .rel-time tbody tr{display:grid;grid-template-columns:1fr 1fr;column-gap:14px}
  #ct .cardize .rel-time tbody td:nth-child(-n+4),
  #ct .cardize .rel-time tbody td:nth-child(n+11){grid-column:1/-1}
  #ct .cardize .rel-time tbody td{gap:8px}
  /* o rótulo é limitado a 40% da célula pela regra global — escrita para a
     célula de largura inteira. Em meia largura vira 56px e "Propostas" quebra
     em duas linhas, devolvendo a altura que as duas colunas economizaram. */
  #ct .cardize .rel-time tbody td[data-label]::before{flex:0 1 auto;max-width:none;
    white-space:nowrap;font-size:11px}
}

/* =====================================================================
   VARREDURA DAS 28 TELAS (04/09/2026) — o que estava fora do padrão
   que as telas de Produto, Métricas e Relatórios já usavam.
   Medido a 375px, tela por tela, com o app logado como admin.
   Estouro horizontal: ZERO nas 28. O que divergia era sangria e alvo.
   ===================================================================== */
@media(max-width:640px){

  /* ── 1. Sangria: era exceção, vira padrão ──────────────────────────
     Só 7 telas ocupavam a largura toda; as outras 21 mantinham 14px de
     calha do `.ct` MAIS o padding da própria casca — no `.eq-cc` isso dá
     38px de cada lado, 20% da tela de um iPhone.

     As quatro cascas de view do app recebem o mesmo tratamento que
     `.met`, `.rel` e `.prod-scope` já tinham. As regras específicas
     (`:has(.cd-title)`, `:has(.cg .ccb)`, `.prod-scope`) continuam
     vencendo por especificidade e mantêm os valores já calibrados.

     `.pgen-shell` fica DE FORA: o gerador de propostas virou cartão com
     borda por decisão de 01/09 — sangrar ali desfaria o que foi pedido.

     A borda lateral sai junto: encostada na borda da tela ela vira um
     fio de 1px no limite do vidro, que lê como defeito de renderização. */
  #ct>.p,#ct>.eq-cc,#ct>.lb-cc,#ct>.ld-cc{
    margin-left:calc(-14px - env(safe-area-inset-left,0px));
    margin-right:calc(-14px - env(safe-area-inset-right,0px));
    max-width:none;border-radius:0;border-left:0;border-right:0;
    padding-left:calc(12px + env(safe-area-inset-left,0px));
    padding-right:calc(12px + env(safe-area-inset-right,0px));
  }

  /* ── 2. `select` nunca teve altura mínima ──────────────────────────
     MEDIDO: 38px em Atividades (44 ocorrências), 35 em Municípios, 33 em
     Produto / Repetir / UFs / Leads / Roteiro / Recebimentos, e 19px em
     Comissões, Custos Fixos e Recebimentos. O `#ct select` da linha 1853
     só cuidava de largura. */
  #ct select{min-height:44px}

  /* ── 3. Caixas de seleção com o tamanho padrão do navegador ────────
     Permissões tem 145 checkboxes de 13x13; a tela inteira é feita deles.
     24x24 é o mínimo do WCAG 2.2 AA (2.5.8).

     > NÃO dá para usar hitSlop aqui: `input` é elemento substituído e não
     > renderiza ::before/::after. Chegar aos 44px exigiria envolver cada
     > um num <label>, o que é mudança de HTML em várias telas — fica
     > registrado como o passo seguinte, não improvisado agora. */
  #ct input[type=checkbox]{width:24px;height:24px}

  /* ── 4. O hitSlop dos chips entregava 42px, não 44 ─────────────────
     Mesma armadilha do `.fli-add` e do `.md-ac`: o inset de um absoluto
     conta do PADDING BOX. Com `min-height:40px` e borda de 1px, o padding
     box é 38 e `inset:-2px` dá 42 — reprovava por 2px em todo chip do
     app. -3px fecha os 44 e ainda cabe no gap de 8px sem sobrepor. */
  #ct .b::after,#ct .sg button::after,#ct .lts button::after,
  #ct .met-pills button::after,#ct .rc-par-b::after{inset:-3px}

  /* ── 5. Dashboard: as ações dos cards tinham 23 e 26px ─────────────
     "+ novo aviso", "editar", "×", "gerenciar", "+ nova". São os únicos
     controles do mural. */
  /* min-WIDTH junto: o "×" tinha 29px de largura e, mesmo com o hitSlop,
     fechava em 41 — altura resolvida, largura não. */
  #ct .dx-card-action,#ct .dx-btn-sm{min-height:32px;min-width:32px;position:relative;
    display:inline-flex;align-items:center;justify-content:center}
  #ct .dx-card-action::after,#ct .dx-btn-sm::after{content:'';position:absolute;inset:-7px}

  /* ── 6b. Chips que já tinham hitSlop e mesmo assim davam 42px ──────
     `.b.bsm` e `.ld-pag-btn` têm 36px de altura, borda de 1px e
     `inset:-4px`: padding box 34 + 8 = 42. Reprovavam por 2px.

     A correção NÃO é aumentar o inset. O comentário da reforma do evento
     está certo: "o inset de -4 casa com o gap de 8, as áreas encostam e
     nunca se sobrepõem" — subir para -5 faria dois vizinhos disputarem
     2px. Quem sobe é o VISUAL: 38px de altura dá padding box 36, e
     36 + 2x4 = 44 com o mesmo gap de 8. */
  #ct .b.bsm,#ct .bs.bsm,#ct .rc-eds{min-height:38px;min-width:38px}
  #ct .ld-pag-btn{width:38px;height:38px}

  /* ── 6c. Diagnóstico de Funil: o seletor de mês tinha 26px ─────────
     `.lb-mbtn` é a navegação principal da tela — dez chips, todos abaixo
     do alvo. Sem borda, então 36px de altura já dão 36 + 2x4 = 44. */
  #ct .lb-mbtn{min-height:36px;position:relative}
  #ct .lb-mbtn::after{content:'';position:absolute;inset:-4px}
  #ct .lb-months{gap:8px}

  /* ── 6d. Campos de texto também não tinham altura mínima ───────────
     MEDIDO: a busca de Leads e de Recebimentos vinha com 16px de altura,
     a de Municípios com 39 e a do Diagnóstico com 30. Checkbox e radio
     ficam de fora — eles têm tamanho próprio (item 3). */
  #ct input[type=text],#ct input[type=search],#ct input[type=number],
  #ct input[type=email],#ct input[type=tel],#ct input[type=password],
  #ct input[type=date],#ct input[type=month],#ct input[type=time],
  /* `input` SEM atributo type é text por padrão, mas `[type=text]` não o
     alcança — a busca do Diagnóstico de Funil é assim e continuava em 30px
     depois da primeira correção. */
  #ct input:not([type]){min-height:44px}

  /* ── 6e. "+ Adicionar município" tinha 25px ────────────────────────*/
  #ct .lb-refresh{min-height:40px;position:relative}
  #ct .lb-refresh::after{content:'';position:absolute;inset:-3px}

  /* ── 6. Municípios: 124 botões de remover cidade a 18x18 ───────────
     Ficam lado a lado dentro do cartão, então o hitSlop faria as áreas de
     dois vizinhos se sobreporem — e o botão APAGA uma cidade. 24x24 reais,
     sem inset, é o alvo do WCAG 2.2 AA sem risco de acertar o vizinho. */
  #ct .mp-mun-card button{min-width:24px;min-height:24px}
}

/* O lápis de "editar sala" (aba Eventos do curso) tem 26x26 escritos no
   `style` inline do `eventos.js` — inline vence classe, então a correção é
   o hitSlop, que o inline não alcança. 26 sem borda... com 1px de borda o
   padding box é 24, e 24 + 2x10 = 44. São vinte deles, um por oficina. */
@media(max-width:640px){
  #ct .of-sala-b{position:relative}
  #ct .of-sala-b::after{content:'';position:absolute;inset:-10px}
}

/* O seletor de ordenação do financeiro do evento JÁ pedia 44px na linha 2427,
   e perdia: `.evf-sel` (0,1,0) contra `#ct .b{min-height:40px}` (1,1,0). A
   intenção estava no arquivo, a especificidade é que não deixava valer. */
@media(max-width:640px){
  #ct .evf-sel{min-height:44px}
}

/* ===================== VIAGENS E DESPESAS DE VIAGEM (04/09/2026) =====================
   Tela nascida a 375px: quem usa está na rua, no telefone. Os tokens usados aqui
   (--wh, --lnbd, --tx, --sb) são os que TÊM variante escura — `--bf` não tem, e
   um cartão com ela fica branco com texto claro no tema escuro. */
.vg-avi{display:flex;gap:8px;align-items:center;background:var(--amb);color:#854d0e;
  border:1px solid rgba(133,77,14,.25);border-radius:8px;padding:10px 12px;margin-bottom:14px;
  font-size:13px;line-height:1.35}
.vg-avi svg{flex:0 0 auto;stroke:currentColor}

.vg-lista{display:grid;gap:10px}
.vg-card{display:block;width:100%;text-align:left;background:var(--wh);border:1px solid var(--lnbd);
  border-radius:10px;padding:12px 14px;cursor:pointer;color:var(--tx);font:inherit;line-height:1.35}
.vg-card:hover{border-color:var(--az)}
.vg-card-t{display:flex;align-items:center;gap:8px;justify-content:space-between}
.vg-dest{font-size:15px;font-weight:700;min-width:0;overflow-wrap:anywhere}
.vg-dest i{font-style:normal;font-weight:600;color:var(--sb);font-size:13px}
.vg-card-s{font-size:12px;color:var(--sb);margin-top:3px;line-height:1.35}
.vg-card-n{display:flex;flex-wrap:wrap;gap:4px 12px;margin-top:8px;font-size:13px;line-height:1.35}
.vg-re{color:#9a3412;font-weight:600}
.vg-pend{color:#854d0e;font-weight:600}

/* O link de saída da tela. `--az2` é o azul ESCURO: ótimo no tema claro, mas no
   escuro ele dá 3,98:1 sobre o painel — medido. No dark quem serve é `--az`,
   que lá é o azul claro. Mesma correção já feita no `.cd-bk` do evento. */
.vg-bk{background:none;border:0;color:var(--az2);cursor:pointer;font:inherit;font-size:13px;
  padding:6px 0;margin-bottom:6px}
[data-theme="dark"] .vg-bk{color:var(--az)}
.vg-sub{font-size:12px;color:var(--sb);margin-top:2px;line-height:1.35}

.vg-tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:14px 0}
.vg-tile{background:var(--wh);border:1px solid var(--lnbd);border-radius:10px;padding:10px 12px;line-height:1.25}
.vg-tile span{display:block;font-size:11px;color:var(--sb);text-transform:uppercase;letter-spacing:.03em}
.vg-tile b{display:block;font-size:17px;margin-top:3px}
.vg-tile.re b{color:#9a3412}

.vg-acoes{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}
/* O verde do app é CLARO no tema escuro: branco em cima dá 1,74:1. Cada tema
   tem o seu par próprio, medido — mesma correção já feita no Alcance por Estado. */
.vg-send,.vg-ok{background:#15803d;color:#fff}
.vg-send:hover,.vg-ok:hover{background:#166534}
/* "Recusar" é a exceção, não o par simétrico do "Aprovar": contorno, não
   preenchido. E precisa de classe própria porque `.b{background:linear-gradient}`
   (linha 1548) vem DEPOIS de `.bd{background:var(--vm)}` (linha 32) e vence por
   ordem — `class="b bd"` sai AZUL. */
/* Botão secundário. Não dá para usar `.bg2` aqui: MEDIDO no app real, em tema
   CLARO `class="b bg2"` computa o gradiente azul de `.b` (linha 1548, posterior
   ao `.bg2` da linha 33) com o texto cinza do `.bg2` -> 1,12:1, ilegível. Vale
   para todo `b bg2`/`b bd` do app; corrigir na origem repinta dezenas de telas
   e é decisão do Rafael, então aqui a classe é própria e explícita. */
.vg-sec{background:transparent;background-image:none;color:var(--sb);
  border:1px solid var(--lnbd);box-shadow:none}
.vg-sec:hover{background:var(--bg);background-image:none;box-shadow:none}
.vg-no{background:transparent;background-image:none;border:1px solid #b91c1c;color:#b91c1c;box-shadow:none}
.vg-no:hover{background:rgba(185,28,28,.08);background-image:none;box-shadow:none}

/* "Enviar ao financeiro" é a ação que fecha a viagem, mas acontece UMA vez —
   ao lado do "+ Lançar nota" ela virava um segundo primário competindo na
   mesma linha. Numa faixa própria ela ganha o contexto (quantas, quanto, o
   aviso de que trava a edição) sem disputar peso com a ação do dia a dia. */
.vg-envio{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;
  background:var(--vdb);border:1px solid rgba(21,128,61,.28);border-radius:10px;
  padding:11px 13px;margin-bottom:14px;line-height:1.35}
.vg-envio b{display:block;font-size:13px;color:#14532d}
.vg-envio span{display:block;font-size:12px;color:#166534;margin-top:2px}
[data-theme="dark"] .vg-envio{border-color:rgba(74,222,128,.3)}
[data-theme="dark"] .vg-envio b{color:#bbf7d0}
[data-theme="dark"] .vg-envio span{color:#86efac}

.vg-notas{display:grid;gap:8px}
.vg-nota{background:var(--wh);border:1px solid var(--lnbd);border-radius:10px;padding:11px 13px;line-height:1.35}
.vg-nt{display:flex;align-items:center;justify-content:space-between;gap:10px}
.vg-tp{display:inline-flex;align-items:center;gap:6px;font-size:14px;font-weight:600;min-width:0}
.vg-tp svg{flex:0 0 auto;stroke:currentColor;color:var(--sb)}
.vg-vl{font-size:15px;font-weight:700;white-space:nowrap}
.vg-ns{font-size:12px;color:var(--sb);margin-top:3px;overflow-wrap:anywhere}
.vg-rec{display:flex;gap:6px;align-items:flex-start;margin-top:7px;background:var(--vmb);color:#b91c1c;
  border-radius:6px;padding:6px 8px;font-size:12px;line-height:1.35}
.vg-rec svg{flex:0 0 auto;stroke:currentColor;margin-top:1px}
.vg-nr{display:flex;align-items:center;gap:8px;margin-top:9px;flex-wrap:wrap}
.vg-ib{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;
  border:1px solid currentColor;border-radius:8px;background:transparent;color:var(--az2);
  cursor:pointer;padding:0;position:relative}
.vg-ib svg{stroke:currentColor}
.vg-ib.de{color:var(--vm)}
.vg-semf{font-size:12px;color:#854d0e;font-weight:600}

/* As pílulas de status (.b-y/.b-r/.b-o) reprovam em AA no TEMA CLARO, e a dívida
   é antiga e da família toda: MEDIDO aqui, `--am` sobre `#fef9c3` dá 2,74:1,
   `--vm` sobre `#fee2e2` dá 3,95 e `--lj` sobre `#ffedd5` dá 3,3. Repintar
   `.b-y`/`.b-r`/`.b-o` mexeria em pílula de meia dezena de telas, então o tom
   próprio vive numa classe desta tela e SÓ no claro — mesma solução do `.ct-stw`.
   `.vg-st.b-y` (0,2,0) vence `.b-y` (0,1,0). No escuro as originais já passam. */
:root:not([data-theme="dark"]) .vg-st.b-y{color:#854d0e}
:root:not([data-theme="dark"]) .vg-st.b-r{color:#991b1b}
:root:not([data-theme="dark"]) .vg-st.b-o{color:#9a3412}
:root:not([data-theme="dark"]) .vg-st.b-g{color:#15803d}

/* Lançamento da nota — a foto é o primeiro passo, e o alvo tem de ser grande. */
.vg-foto{margin-bottom:14px}
.vg-fbtn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;
  width:100%;min-height:112px;border:2px dashed var(--lnbd);border-radius:12px;background:var(--wh2);
  color:var(--az2);cursor:pointer;font:inherit;padding:14px;line-height:1.3}
.vg-fbtn:hover{border-color:var(--az)}
.vg-fbtn svg{stroke:currentColor}
.vg-fbtn span{font-size:15px;font-weight:600}
.vg-fbtn i{font-style:normal;font-size:12px;color:var(--sb);text-align:center}
.vg-fprev{display:block;width:100%;max-height:220px;object-fit:contain;border:1px solid var(--lnbd);
  border-radius:10px;background:var(--wh2)}
.vg-fac{display:flex;gap:8px;margin-top:8px}
.vg-ftem{display:flex;align-items:center;gap:7px;background:var(--wh2);border:1px solid var(--lnbd);
  border-radius:10px;padding:12px;font-size:13px;color:var(--sb);line-height:1.35}
.vg-ftem svg{stroke:currentColor;flex:0 0 auto}

/* Chip ATIVO do trilho no tema escuro: `--az` lá é um azul CLARO (#60a5fa) e o
   branco em cima dá 2,54:1 — e aqui o trilho é o controle principal da tela
   ("o que é" e "quem pagou"). Texto escuro resolve, exatamente como a reforma
   das pílulas de Métricas em 04/09. Escopado nos dois trilhos desta tela: a
   regra `.sg button.on` é do app inteiro e mexer nela é decisão do Rafael. */
[data-theme="dark"] #vg_tipo button.on,
[data-theme="dark"] #vg_pago button.on{color:#0b1220}

/* Os 7 tipos em duas colunas alinhadas: com o wrap do flex a largura de cada
   chip seguia o texto e a lista saía irregular, difícil de varrer com o polegar.
   O ímpar ("Outro") ocupa a linha inteira — grade sem órfão. */
#vg_tipo{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px}
#vg_tipo button{justify-content:flex-start}

/* Portal do financeiro.
   `.cv.y` do cartão de KPI é `--am` sobre branco: 2,94:1, e o mínimo para texto
   grande é 3. É a mesma dívida antiga da família (vale para Despesas Diversas,
   Recebimentos...), então o tom próprio fica escopado nesta tela e só no claro. */
:root:not([data-theme="dark"]) .vg-kpis .cv.y{color:#854d0e}

/* Portal do financeiro */
.vg-fl{margin:14px 0}
.vg-reemb{background:var(--wh);border:1px solid var(--lnbd);border-radius:10px;padding:12px 14px;
  margin-bottom:16px;line-height:1.35}
.vg-reemb-t{font-size:13px;font-weight:700;margin-bottom:8px}
/* auto-FIT, não auto-fill: com uma pessoa só na lista o auto-fill deixaria o
   cartão em meia largura, com meia tela vazia ao lado (grade com órfão). */
.vg-reemb-l{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px}
.vg-reemb-i{background:var(--wh2);border:1px solid var(--lnbd);border-radius:8px;padding:8px 10px;line-height:1.25}
.vg-reemb-i span{display:block;font-size:12px;color:var(--sb);overflow-wrap:anywhere}
.vg-reemb-i b{display:block;font-size:16px;color:#9a3412}
.vg-reemb-i i{font-style:normal;font-size:11px;color:var(--sb)}
.vg-reemb-f{font-size:12px;color:var(--sb);margin-top:9px}

.vg-blk{background:var(--wh);border:1px solid var(--lnbd);border-radius:10px;padding:12px 14px;margin-bottom:12px}
.vg-blk-h{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}
.vg-blk-t{font-size:14px;font-weight:700;line-height:1.3}
.vg-blk-t span{font-weight:500;color:var(--sb)}
.vg-blk-s{font-size:12px;color:var(--sb);margin-top:2px;line-height:1.35}
.vg-blk-n{text-align:right;line-height:1.25}
.vg-blk-n b{display:block;font-size:16px}
.vg-blk-n span{font-size:11px;color:var(--sb)}
.vg-blk-a{margin:10px 0 2px}
.vg-td-s{font-size:12px;color:var(--sb);margin-top:2px;line-height:1.35;font-weight:400}

[data-theme="dark"] .vg-avi{background:var(--amb);color:#fcd34d;border-color:rgba(252,211,77,.3)}
[data-theme="dark"] .vg-re,[data-theme="dark"] .vg-tile.re b,[data-theme="dark"] .vg-reemb-i b{color:var(--lj)}
[data-theme="dark"] .vg-pend,[data-theme="dark"] .vg-semf{color:var(--am)}
[data-theme="dark"] .vg-rec{color:#fca5a5}
/* No escuro o --vd é verde CLARO: aqui o texto é que precisa ser escuro. */
[data-theme="dark"] .vg-no{border-color:var(--vm);color:var(--vm)}
[data-theme="dark"] .vg-no:hover{background:rgba(248,113,113,.12)}
[data-theme="dark"] .vg-send,[data-theme="dark"] .vg-ok{background:var(--vd);color:#052e16}
[data-theme="dark"] .vg-send:hover,[data-theme="dark"] .vg-ok:hover{background:#22c55e}

@media(max-width:640px){
  /* Alvo de toque: alvo = padding box + 2 × inset, e o inset conta do PADDING
     box — com borda de 1px, 36px de visual dão 34 + 2×5 = 44. O gap de 10px
     garante que dois vizinhos não disputem a mesma área. */
  .vg-nr{gap:10px}
  .vg-ib{width:36px;height:36px}
  .vg-ib::after{content:"";position:absolute;inset:-5px}
  /* `#ct .b` fixa 40px para TODO botão e vence `.vg-acoes .b` por ter id
     (1,1,0 contra 0,2,0) — a mesma armadilha do `.evf-sel`. Aqui o id é
     repetido de propósito: "Lançar nota" é A ação desta tela e vale os 44
     visuais, não só os 44 de área com o hitSlop. */
  #ct .vg-acoes .b{min-height:44px}
  .vg-envio{flex-direction:column;align-items:stretch}
  #ct .vg-envio .b{min-height:44px;width:100%}
  .vg-add{flex:1 1 100%}
  /* No celular a grade é fixa em 2 colunas e o ímpar ocupa a linha inteira —
     com auto-fit a 375px sobrariam chips de larguras diferentes na última linha. */
  #vg_tipo{grid-template-columns:1fr 1fr}
  #vg_tipo button:last-child{grid-column:1/-1}
  .vg-tiles{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
  .vg-tile{padding:9px 8px}
  .vg-tile b{font-size:15px}
  .vg-tile span{font-size:10px;letter-spacing:0}
  .vg-reemb-l{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}
  .vg-blk-h{flex-direction:column;gap:6px}
  .vg-blk-n{text-align:left;display:flex;align-items:baseline;gap:8px}
  .vg-blk-n span{font-size:12px}
  .vg-bk{min-height:44px;display:inline-flex;align-items:center}
  .vg-fbtn{min-height:132px}
}

/* ===== Roteiro: agenda e responsável (04/09/2026) =====
   Dois eixos independentes no mesmo cartão: o responsável à esquerda, o estado
   da visita à direita. Usa os tokens --lb-*, que são os únicos com variante
   escura completa — a superfície aqui é o .eq-cc, cujo fundo é GRADIENTE. */
.rv-agenda{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:12px}
.rv-ag{--c:var(--lb-cy);position:relative;background:var(--lb-panel-bg);border:1px solid var(--lb-panel-bd);
  border-radius:12px;padding:10px 12px;text-align:left;cursor:pointer;font:inherit;line-height:1.2;
  color:var(--lb-txt);overflow:hidden}
.rv-ag::before{content:"";position:absolute;inset:0 0 auto 0;height:3px;background:var(--c)}
.rv-ag:hover{border-color:var(--c)}
.rv-ag.on{border-color:var(--c);box-shadow:0 0 0 1px var(--c)}
.rv-ag:focus-visible{outline:2px solid var(--az);outline-offset:2px}
.rv-ag b{display:block;font-size:21px;font-weight:800;font-variant-numeric:tabular-nums;line-height:1.05}
.rv-ag span{display:block;font-size:10px;letter-spacing:.09em;text-transform:uppercase;
  font-weight:800;color:var(--c);margin-top:3px}

/* pílula do estado da visita */
.rv-est{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:600;
  padding:5px 10px;border-radius:8px;border:1px solid transparent;line-height:1.3}
.rv-est .rv-dot{width:7px;height:7px;border-radius:50%;background:currentColor;flex:0 0 auto}
.rv-est.ag{background:var(--lb-cybg,rgba(56,189,248,.12));border-color:var(--lb-cy);color:var(--lb-ct-cy,var(--lb-cy))}
.rv-est.atr{background:var(--lb-vmbg,rgba(248,113,113,.13));border-color:var(--lb-vm);color:var(--lb-vm)}
:root:not([data-theme="dark"]) .rv-est.ag{background:#e0f2fe;border-color:#0b77a8;color:#075a80}
:root:not([data-theme="dark"]) .rv-est.atr{background:#fee2e2;border-color:#b91c1c;color:#991b1b}
/* fio esquerdo do cartão em vermelho quando a data passou: o cartão inteiro
   avisa, não só a pílula */
.rv-i.atr{--c:var(--lb-vm)!important}

/* chip do responsável */
.rv-resp{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;font-weight:600;
  padding:4px 11px 4px 4px;border-radius:999px;background:var(--lb-tile);
  border:1px solid var(--lb-panel-bd);color:var(--lb-txt);line-height:1.3}
.rv-av{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;flex:0 0 auto;
  font-size:9.5px;font-weight:800;font-style:normal;background:var(--lb-pp);color:#0b1220}
.rv-resp.meu{border-color:var(--lb-gnbd,var(--lb-gn))}
.rv-resp.meu .rv-av{background:var(--lb-gn)}
/* No claro o verde do token reprova como fundo de texto escuro pequeno: o chip
   do "Você" usa o tom próprio, medido, como o .ct-stw já faz. */
/* MEDIDO: no tema claro o --lb-pp é roxo claro e as iniciais (9,5px/800) dão
   3,29:1 em cima dele — reprova AA. Par próprio, como o .ct-stw já faz. */
:root:not([data-theme="dark"]) .rv-av{background:#6d28d9;color:#fff}
:root:not([data-theme="dark"]) .rv-resp.meu{background:#dcfce7;border-color:#15803d;color:#14532d}
:root:not([data-theme="dark"]) .rv-resp.meu .rv-av{background:#15803d;color:#fff}

/* O espaço do template entre o ícone e o rótulo some quando o botão é flex —
   por isso o gap vem do CSS, não de um &nbsp; no JS. */
.rv-a > .b{display:inline-flex;align-items:center;justify-content:center;gap:6px}
.b.rv-assumir{background:transparent;border:1px solid var(--lb-gn);color:var(--lb-gn)}
.b.rv-assumir:hover{background:var(--lb-gnbg,rgba(52,211,153,.1))}
:root:not([data-theme="dark"]) .b.rv-assumir{border-color:#15803d;color:#15803d}
.rv-fim{margin-left:auto}
.rv-agnota{font-size:11.5px;color:var(--lb-muted);margin:7px 0 0;display:flex;gap:6px;
  align-items:flex-start;line-height:1.35}
.rv-agnota svg{flex:0 0 auto;margin-top:2px;stroke:currentColor}

/* balão de agendar */
.rv-msub{font-size:12.5px;color:var(--sb);margin:-6px 0 14px}
.rv-chips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px}
.rv-chip{background:var(--wh);border:1px solid var(--lnbd);color:var(--tx);border-radius:999px;
  padding:8px 14px;font:inherit;font-size:12.5px;font-weight:600;cursor:pointer;min-height:36px}
.rv-chip:hover{border-color:var(--az);color:var(--az)}
.rv-avmodal{display:flex;gap:8px;align-items:flex-start;background:var(--amb);color:#854d0e;
  border-left:3px solid var(--am);border-radius:0 6px 6px 0;padding:9px 11px;font-size:12.5px;
  line-height:1.35;margin-top:2px}
.rv-avmodal svg{flex:0 0 auto;margin-top:1px;stroke:currentColor}
[data-theme="dark"] .rv-avmodal{color:#fcd34d}

@media(max-width:640px){
  /* Alvo de toque: alvo = padding box + 2 × inset, e o inset conta do PADDING
     box — com a borda de 1px, 36px de visual dão 34 + 2×5 = 44. */
  /* Os chips de filtro estavam em 33px — e agora são CINCO, porque Agendados e
     Meus órgãos entraram. 38px de visual com borda de 1px dão padding box 36, e
     36 + 2×4 = 44 de alvo real. O inset de 4 casa com o gap de 8px do
     .rv-filtros: dois vizinhos não disputam a mesma área. */
  .rv-tab{min-height:38px;position:relative;display:inline-flex;align-items:center}
  .rv-tab::after{content:"";position:absolute;inset:-4px}
  .rv-agenda{gap:6px}
  .rv-ag{padding:9px 9px;min-height:56px}
  .rv-ag b{font-size:19px}
  .rv-ag span{font-size:9px;letter-spacing:.04em}
  .rv-chip{min-height:38px;position:relative}
  .rv-chip::after{content:"";position:absolute;inset:-4px}
  /* MEDIDO: empilhar TUDO deixou o cartão com 5 blocos de largura inteira —
     "Liberar" e "Remarcar" são ações secundárias e não merecem esse peso.
     Só "Assumir responsabilidade" não cabe em meia largura a 375px (abreviar o
     rótulo anularia a palavra que o Rafael pediu), então só ele quebra a linha.
     O resto continua em fila, com wrap. */
  .rv-a{flex-wrap:wrap;gap:8px;align-items:center}
  .rv-a > .b{min-height:44px}
  .rv-a > .b.rv-assumir{width:100%;justify-content:center}
  .rv-a > .b.rv-btn{flex:1 1 auto;justify-content:center}
  .rv-fim{margin-left:auto}
}
.rv-agenda-t{display:flex;align-items:center;gap:6px;font-size:11px;font-weight:800;
  letter-spacing:.09em;text-transform:uppercase;color:var(--lb-muted);margin:2px 0 7px}
.rv-agenda-t svg{stroke:currentColor;flex:0 0 auto}
/* Campos do balão de agendar: 44px de alvo e a nota sem o uppercase que o
   `.fg input` aplica por padrão — nota é texto livre, não nome de órgão. */
#rv_data,#rv_hora,#rv_nota{min-height:44px}
#rv_nota{text-transform:none}
.rv-avmodal>span{min-width:0}
@media(max-width:640px){ .ma > .b{min-height:44px} }

/* ===== Balão "Salas das oficinas" (mOficinas, eventos.js) =====
   NÃO usa `.fg`: a regra `.fg input` (linha ~258) escreve em CAIXA ALTA por
   CSS, e o valor gravado é o digitado — o que se vê e o que se grava
   divergiriam (mesma armadilha já registrada na razão social). */
.of-md-sub{font-size:13px;color:var(--sb);line-height:1.45;margin:-8px 0 16px}
.of-md-g{font-size:12px;font-weight:700;color:var(--sb);letter-spacing:.5px;margin:14px 0 4px}
.of-md-g:first-of-type{margin-top:0}
.of-md-l{display:grid;grid-template-columns:96px 1fr 118px 40px;gap:10px;align-items:center;
  min-height:44px;padding:3px 0;border-top:1px solid var(--lnbd)}
/* `:last-of-type` conta por TIPO (div) entre irmãos e o último div do balão é o
   `.ma` dos botões — um `.of-md-l:last-of-type` não casaria com nada. O fio vai
   no TOPO e sai da primeira linha de cada grupo: separa dentro do grupo, sem
   risco antes do título nem antes dos botões. */
.of-md-g + .of-md-l{border-top:0}
.of-md-let{font-size:13px;font-weight:600;color:var(--tx);line-height:1.3}
.of-md-inp{width:100%;box-sizing:border-box;min-height:36px;padding:7px 10px;font-size:14px;
  font-family:inherit;color:var(--tx);background:var(--wh);border:1px solid var(--lnbd);border-radius:8px}
.of-md-inp:focus{outline:0;border-color:var(--az);box-shadow:var(--focus-ring)}
.of-md-n{font-size:12px;color:var(--sb);text-align:right;line-height:1.3}
.of-md-lot{color:var(--vm);font-weight:800;letter-spacing:.4px}
/* Excluir é ação recorrente (uma por linha), então é ícone puro com aria-label,
   não um botão rotulado — um por linha em 10 linhas viraria a tela inteira.
   40x40 de caixa com hitSlop de 2 dá 42; no celular sobe para 44 real. */
.of-md-x{width:40px;height:40px;border-radius:9px;display:flex;align-items:center;justify-content:center;
  background:none;border:1px solid transparent;color:var(--sb);cursor:pointer;padding:0;position:relative}
.of-md-x::after{content:'';position:absolute;inset:-2px}
.of-md-x:hover{border-color:var(--vm);color:var(--vm)}
.of-md-vazio{font-size:12.5px;font-style:italic;color:var(--sb);padding:8px 0 4px}
/* A borda é o único contorno deste botão (ele não tem preenchimento), então ela
   É o componente e precisa de 3:1 — com `--lnbd` dava 1,25:1. `currentColor`
   amarra borda e texto, o mesmo remédio já usado nos ícones de Mídias. */
.of-md-add{margin:8px 0 2px;min-height:38px;padding:8px 14px;border-radius:9px;position:relative;
  background:none;border:1px dashed currentColor;color:var(--az2);font:inherit;font-size:12.5px;font-weight:600;cursor:pointer}
.of-md-add::after{content:'';position:absolute;inset:-3px}
.of-md-add:hover{border-style:solid}
/* No escuro `--az2` é o azul ESCURO e reprova como texto; lá quem serve é
   `--az` (mesma correção já feita no .cd-bk do evento e no .vg-bk das viagens). */
[data-theme="dark"] .of-md-add{color:var(--az)}
/* ---- Nome da oficina (21/09/2026): a linha ganha a coluna "Nome que aparece"
   entre a chave e a sala (`.n5`), e um cabeçalho — dois inputs lado a lado sem
   rótulo não se distinguem. A chave fica visível e só leitura: é ela que está
   gravada nos participantes, e o nome é o rótulo dela. ---- */
.m.m-of{max-width:760px} /* o balão das oficinas: 5 colunas cabem em 760 e a sala não vira um campo de 640px */
.of-md-h{display:grid;grid-template-columns:64px 150px 1fr 118px 40px;gap:10px;font-size:11px;font-weight:700;
  color:var(--sb);letter-spacing:.5px;text-transform:uppercase;padding:0 0 6px}
.of-md-h-n{text-align:right}
.of-md-l.n5{grid-template-columns:64px 150px 1fr 118px 40px}
.of-md-nome{font-weight:700}
.of-md-nome::placeholder{font-weight:400}
@media(max-width:640px){
  /* Duas linhas: letra + contagem em cima, campo largo embaixo. Em três
     colunas o campo ficava com ~120px, que não é onde se digita um nome. */
  /* ÁREAS NOMEADAS, não `order` + `grid-row`: item com linha explícita é
     colocado ANTES dos automáticos, e o × ia parar na frente do nome. Aqui a
     posição de cada peça está escrita, sem depender do algoritmo de encaixe. */
  .of-md-l{grid-template-columns:auto minmax(0,1fr) 44px;grid-template-areas:"let n x" "inp inp inp";
    gap:4px 8px;padding:8px 0}
  .of-md-let{grid-area:let}
  /* A contagem leva o 1fr: com `auto` ela ficava em 57px e "0 inscritos ·
     LOTADA" quebrava em três linhas. */
  .of-md-n{grid-area:n}
  .of-md-x{grid-area:x;width:44px;height:44px}
  .of-md-inp{grid-area:inp;min-height:44px;font-size:16px} /* 16px: abaixo disso o Safari dá zoom ao focar */
  .of-md-add{min-height:44px;width:100%}
  /* Com nome: chave + inscritos + × em cima; nome (96px) e sala lado a lado
     embaixo. Empilhados, os dois inputs sem rótulo eram indistinguíveis. */
  .of-md-h{display:none}
  .of-md-l.n5{grid-template-columns:96px minmax(0,1fr) 44px;grid-template-areas:"let n x" "nome inp inp"}
  .of-md-l.n5 .of-md-nome{grid-area:nome;text-align:center}
}
/* ===== QR da avaliação (07/09/2026) ===== */
.avq-nome{font-weight:700;font-size:14px;line-height:1.35;margin-bottom:10px}
.avq-box{display:flex;justify-content:center;padding:14px;background:#fff;border:1px solid var(--lnbd);border-radius:12px;margin-bottom:14px}
.avq-img{width:220px;height:220px;display:block}
.avq-l{display:block;font-size:12px;font-weight:600;color:var(--sb);margin-bottom:5px}
.avq-lk{display:flex;gap:8px;align-items:center;margin-bottom:12px}
.avq-lk input{flex:1;min-width:0;padding:9px 11px;border:1px solid var(--lnbd);border-radius:8px;font-size:13px;background:var(--wh);color:var(--tx)}
/* Resultado do teste do endereço (09/09/2026). Aparece SEMPRE, inclusive quando
   dá certo: um aviso que só surge no erro não se distingue de "não testei". */
.avq-tst{display:flex;align-items:flex-start;gap:6px;font-size:12px;line-height:1.45;
 margin:-6px 0 12px;padding:7px 10px;border-radius:8px;border:1px solid transparent}
.avq-tst svg{width:12px;height:12px;flex:0 0 auto;margin-top:2px}
.avq-tst-w{color:var(--sb);background:var(--bg2,#f1f5f9)}
/* `--vd` no claro é #16a34a e reprova como texto; o tom escuro da própria
   paleta passa. No escuro os dois invertem — mesma regra do `.pgm-ok`. */
.avq-tst-ok{color:#15803d;background:#dcfce7;border-color:#86efac}
.avq-tst-err{color:#991b1b;background:#fee2e2;border-color:#fca5a5}
[data-theme="dark"] .avq-tst-w{background:rgba(255,255,255,.05)}
[data-theme="dark"] .avq-tst-ok{color:#86efac;background:rgba(22,163,74,.16);border-color:rgba(134,239,172,.32)}
[data-theme="dark"] .avq-tst-err{color:#fca5a5;background:rgba(220,38,38,.16);border-color:rgba(252,165,165,.32)}
.avq-cfg{border-top:1px solid var(--lnbd);padding-top:12px;margin-top:2px}
@media(max-width:640px){
  .avq-img{width:100%;max-width:250px;height:auto}
  .avq-lk{flex-wrap:wrap}
  .avq-lk input{min-height:44px;font-size:16px}
  .avq-lk .b{min-height:44px}
}
/* ===== Card "Quem ensina" no cadastro do evento (07/09/2026) ===== */
.mc-av{border:1px solid var(--lnbd);border-radius:12px;padding:14px;margin:2px 0 12px;background:var(--wh)}
/* O contador de professores mora no cabeçalho do card (10/09/2026): título à
   esquerda, stepper + atalhos à direita, e vale para os três formatos. O
   subtítulo em texto corrido virou o `?` do título (regra 2 dos balões). */
.mc-av-h{display:flex;align-items:center;gap:9px 14px;margin-bottom:10px;flex-wrap:wrap}
.mc-av-h .mc-av-t{flex:1 1 auto;display:flex;align-items:center;gap:6px}
.mc-av-h .mc-stp-w{flex:0 0 auto;margin-left:auto}
.mc-av-ic{width:26px;height:26px;border-radius:7px;background:var(--azs);color:var(--az2);display:grid;place-items:center;flex:0 0 auto}
.mc-av-t{font-weight:800;font-size:14px}
.mc-req{color:var(--vm);font-weight:800}
.mc-av-s{font-size:12.5px;line-height:1.45;color:var(--sb);margin:0 0 12px 35px}
.mc-av .mc-profs{margin-bottom:2px}
.mc-prof-r{display:flex;gap:8px;align-items:center}
.mc-prof-r select{flex:1;min-width:0}
.mc-prof.comdia .f-prof-dia{flex:0 0 132px;max-width:132px}
.mc-av-tur{font-size:10.5px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--sb);margin:12px 0 7px}
.mc-av-ofl{display:flex;flex-direction:column;gap:8px}
.mc-av-of{display:grid;grid-template-columns:auto minmax(0,1fr);gap:9px;align-items:center}
.mc-av-of select{width:100%;padding:9px 12px;border:1px solid var(--lnbd);border-radius:8px;
  font-family:inherit;font-size:14px;background:var(--wh);color:var(--tx)}
.mc-av-l{height:36px;min-width:44px;max-width:140px;padding:0 10px;box-sizing:border-box;border-radius:8px;background:var(--az2);color:#fff;font-weight:800;font-size:14px;
  display:grid;place-items:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} /* o NOME da oficina (ofNome) — "C" ou "Licitações"; a letra vai no title */
/* No escuro `--az2` com branco dá 3,68 e reprova. `--az` é o azul CLARO lá, e a
   saída da casa é texto ESCURO em cima — mesma correção dos chips do Roteiro e
   das pílulas de Métricas. */
[data-theme="dark"] .mc-av-l{background:var(--az);color:#0b1220}
.mc-av-av{display:flex;gap:8px;align-items:flex-start;background:var(--amb);border:1px solid var(--am);
  border-radius:9px;padding:10px 12px;margin-top:12px;font-size:12.5px;line-height:1.45;color:#854d0e}
.mc-av-av b{display:block}
.mc-av-av svg{flex:0 0 auto;margin-top:1px;color:#854d0e}
/* O `#854d0e` do aviso é o âmbar de TEXTO do tema claro; no escuro o `--amb` do
   fundo também é escuro e os dois se anulam (2,19 medido). Cor clara lá. */
[data-theme="dark"] .mc-av-av,[data-theme="dark"] .mc-av-av svg{color:#fcd34d}
.mc-av-cx{display:flex;align-items:center;gap:8px;margin-top:12px;font-size:13px;font-weight:600;cursor:pointer}
.mc-av-cx input{width:20px;height:20px;flex:0 0 auto;accent-color:var(--az2);cursor:pointer}
.mc-av-sql{margin-top:11px;font-size:12px;line-height:1.45;color:var(--sb)}
/* Criar professor sem sair do balão. A borda é `currentColor`: com `--lnbd` um
   botão sem preenchimento dá 1,25:1 e some — quarta vez que este remédio aparece
   no repo (ver o "+ Adicionar" das oficinas e os ícones de Mídias). */
.mc-av-nv{margin-top:2px}
.mc-av-add{background:none;border:1px dashed currentColor;border-radius:8px;padding:7px 12px;
  color:var(--az2);font:inherit;font-size:12.5px;font-weight:700;cursor:pointer}
/* No escuro `--az2` é o azul ESCURO e reprova como texto (3,98). Lá quem serve
   é `--az`, o claro — mesma correção já feita no `.cd-bk` e no `.vg-bk`. */
[data-theme="dark"] .mc-av-add{color:var(--az)}
.mc-av-add:hover{background:var(--azs)}
.mc-av-nvf{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:9px}
.mc-av-nvf input{flex:1 1 240px;min-width:0;padding:9px 12px;border:1px solid var(--lnbd);
  border-radius:8px;font-family:inherit;font-size:14px;background:var(--wh);color:var(--tx)}
.mc-av-nv .mc-hint{margin-top:7px}
/* Rodapé do card numa linha só: "cadastrar agora" e o interruptor da avaliação
   eram dois blocos empilhados com um hint de duas linhas no meio. */
.mc-av-ft{display:flex;align-items:center;justify-content:space-between;gap:8px 14px;flex-wrap:wrap}
.mc-av-ft .mc-av-cx{margin-top:0}
/* Título de seção com fio no balão do In-Company (10/09/2026): o mesmo desenho
   do .pgm-sec do balão de Pagamento, no lugar das faixas azuis .fxh (41px → 23). */
.ic-sec{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--az);border-bottom:1px solid var(--lnbd);padding-bottom:3px;margin:10px 0 8px}
.ic-sec small{font-weight:500;text-transform:none;letter-spacing:0;color:var(--sb)}
[data-theme="dark"] .ic-sec{color:var(--az)}
/* Seis campos curtos numa fileira (datas, mês, carga, quantidade) — a regra 1
   dos balões. A 1100px cada um fica com ~165px, o que um input de data pede. */
/* Pesos desiguais de propósito: o input de mês escreve "novembro de 2026" e
   cortava em 165px; carga e quantidade são 2–3 dígitos. */
.ic-6{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1.35fr) minmax(0,1fr) minmax(0,.8fr) minmax(0,.85fr);gap:12px}
.ic-6 input{min-width:0}
@media(max-width:640px){.ic-6{grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 10px}}
@media(max-width:640px){
  .mc-av-h .mc-stp-w{margin-left:0;flex:1 1 100%}
  .mc-av-ft .mc-av-cx{flex:1 1 100%}
  .mc-av-add{min-height:44px;width:100%}
  .mc-av-nvf input{flex:1 1 100%;min-height:44px;font-size:16px} /* 16px: abaixo disso o Safari dá zoom ao focar */
  .mc-av-nvf .b{flex:1 1 auto;min-height:44px}
}
@media(max-width:640px){
  .mc-prof-r{flex-wrap:wrap}
  .mc-prof.comdia .f-prof-dia{flex:1 1 100%;max-width:none}
  .mc-av-cx{min-height:44px}
  .mc-av-cx input{width:24px;height:24px}
  .mc-av-of select{min-height:44px;font-size:16px}
}
.avq-pre{font-size:12px;color:var(--sb);white-space:nowrap;flex:0 0 auto}
@media(max-width:640px){.avq-pre{flex:1 1 100%;margin-bottom:-4px}}
.avq-h{font-size:11.5px;line-height:1.4;color:var(--sb);margin:-6px 0 12px}
/* Materiais do cliente (aba Avaliação do evento, 30/09/2026) */
.qr-sg{display:flex;margin-bottom:8px}
.qr-box{padding:10px;margin-bottom:12px}
.qr-box .avq-img{width:190px;height:190px}
.qr-sg button{flex:1}
@media(max-width:640px){.qr-sg button{min-height:44px}}
.mat-l{display:flex;flex-direction:column;gap:6px;margin-bottom:10px}
.mat-it{display:flex;align-items:center;gap:10px;padding:6px 6px 6px 12px;border:1px solid var(--lnbd);border-radius:10px;background:var(--wh);min-width:0}
.mat-ic{flex:0 0 auto;display:flex;color:var(--sb)}
.mat-n{flex:1;min-width:0;font-size:13px;line-height:1.35;font-weight:600;color:var(--tx);overflow-wrap:anywhere}
.mat-n small{display:block;font-size:11.5px;line-height:1.3;font-weight:400;color:var(--sb)}
.mat-x{flex:0 0 auto;width:44px;height:44px;display:flex;align-items:center;justify-content:center;border:0;border-radius:8px;background:transparent;color:var(--sb);cursor:pointer}
.mat-x:hover{color:#dc2626;background:rgba(220,38,38,.08)}
.mat-up{display:inline-flex;align-items:center;gap:6px;cursor:pointer}
.mat-ac{display:flex;gap:8px;flex-wrap:wrap}
.mat-fg{margin:0 0 10px}
.mat-fg summary{cursor:pointer;font-size:13px;line-height:1.4;font-weight:600;color:var(--az);padding:10px 0;list-style-position:inside}
.mat-gr{display:grid;grid-template-columns:repeat(auto-fill,minmax(72px,1fr));gap:6px;padding-top:4px}
.mat-th{display:block;aspect-ratio:1;border:0;padding:0;border-radius:8px;overflow:hidden;background:var(--lnbd);cursor:pointer}
.mat-th img{width:100%;height:100%;object-fit:cover;display:block}
button.mat-th:hover img{opacity:.75}
button.mat-th:focus-visible{outline:3px solid var(--az);outline-offset:2px}
@media(max-width:640px){.mat-up,.mat-fg summary,.mat-p .ph .b{min-height:44px}}

[data-theme="dark"] .eq-cc .av-seg.ol{background:#a3c93a}

/* ===== O QUE CADA ACESSO FAZ (10/09/2026) — cartões na tela de Equipe =====
   Fundo em --wh e borda em --lnbd, NÃO --bf/--bd: --bf é #fff nos dois temas
   (o dark redefine os inputs um a um, não o token) e --bd é a MESMA cor de --wh
   no escuro, o que desenha a borda em cima dela mesma. As duas armadilhas já
   estão registradas no CLAUDE.md. */
.acs-g{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:12px;align-items:start}
.acs-c{border:1px solid var(--lnbd);border-radius:10px;background:var(--wh);padding:14px 16px}
.acs-c.eu{border-color:var(--az)}
.acs-h{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin-bottom:6px;line-height:1.25}
.acs-t{font-size:15px;font-weight:800;color:var(--tx)}
.acs-k{font-size:11px;font-weight:700;color:var(--sb);letter-spacing:.04em;text-transform:uppercase}
.acs-eu{font-size:10.5px;font-weight:800;color:var(--az);border:1px solid currentColor;border-radius:999px;padding:1px 7px;line-height:1.5}
.acs-r{font-size:12.5px;color:var(--sb);line-height:1.45;margin-bottom:10px}
.acs-sub{font-size:10.5px;font-weight:700;color:var(--sb);text-transform:uppercase;letter-spacing:.05em;line-height:1.3;margin-bottom:3px}
.acs-l{list-style:none;margin:0 0 9px;padding:0}
.acs-l li{font-size:12.5px;color:var(--tx);line-height:1.45;padding:2px 0 2px 15px;position:relative}
.acs-l li::before{content:"\2022";position:absolute;left:2px;top:2px;color:var(--az);font-weight:700}
.acs-l.no li{color:var(--sb)}
.acs-l.no li::before{content:"\00d7";color:var(--vm)}
.acs-f{border-top:1px solid var(--lnbd);margin-top:2px;padding-top:9px;font-size:11.5px;color:var(--sb);line-height:1.55}
.acs-f b{color:var(--tx);font-weight:700}
@media(max-width:640px){.acs-g{grid-template-columns:1fr}.acs-c{padding:12px 13px}}

/* `data-caps="off"` marca o campo que NÃO é caixa alta (endereço, link). O
   listener do `core.js` já respeita o atributo; esta regra faz a parte visual,
   senão o que se vê e o que se grava divergiriam — a armadilha da razão social. */
input[data-caps="off"]{text-transform:none}

/* ===== Minhas atividades (perfil eventos · vAtividades, eventos.js) — 25/09/2026 =====
   Lista do dia + roteiro do evento no balão + calendário do mês. Tokens --lb-*
   (valem no :root, então servem também dentro do balão). Alvo de toque: a
   caixa de marcar é um botão de 44px com o quadrado de 24 dentro. */
.at-alt{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 14px;border-radius:10px;border:1px solid currentColor;background:transparent;color:var(--lb-cy);font-family:inherit;font-size:13px;font-weight:700;line-height:1.2;cursor:pointer}
.at-alt:hover{background:var(--lb-tile)}
.at-aviso{font-size:12.5px;line-height:1.5;color:var(--lb-txt);background:var(--lb-amtile);border:1px solid var(--lb-ambd);border-radius:12px;padding:10px 14px;margin-bottom:14px}
.at-prog{margin:2px 0 14px}
.at-prog-t{display:flex;justify-content:space-between;gap:10px;font-size:12px;line-height:1.4;color:var(--lb-muted);margin-bottom:6px}
.at-prog-t b{color:var(--lb-txt)}
.at-track{height:8px;border-radius:99px;background:var(--lb-stroke);overflow:hidden}
.at-fill{height:100%;background:var(--lb-gn);border-radius:99px}
.at-list{background:var(--lb-panel-bg);border:1px solid var(--lb-panel-bd);border-radius:16px;overflow:hidden}
.at-row{display:flex;gap:10px;align-items:center;padding:8px 14px 8px 6px;border-top:1px solid var(--lb-stroke);line-height:1.35}
.at-row:first-child{border-top:0}
.at-list-min .at-row{padding:8px 14px}
.at-ck{flex:none;width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:none;border:0;padding:0;cursor:pointer}
.at-ck i{width:24px;height:24px;border-radius:7px;border:2px solid var(--lb-muted);display:flex;align-items:center;justify-content:center;font-style:normal;font-size:15px;font-weight:900;line-height:1;color:#fff}
.at-ck[disabled]{cursor:default}
.at-ck[disabled] i{border-style:dashed}
.at-ck-n{cursor:default}
.at-ck-n i{width:10px;height:10px;border:0;border-radius:50%}
.at-row.ok .at-ck i{background:var(--lb-gn);border-color:var(--lb-gn)}
.at-row.ok .at-tt{text-decoration:line-through;color:var(--lb-muted)}
.at-mid{flex:1;min-width:0}
.at-mid[role="button"]{cursor:pointer}
.at-mid[role="button"]:hover .at-tt{text-decoration:underline}
.at-tt{font-size:14px;font-weight:700;color:var(--lb-txt);overflow-wrap:anywhere}
.at-sub{font-size:12px;color:var(--lb-muted);margin-top:2px}
.at-why{flex:none;font-size:11.5px;line-height:1.3;color:var(--lb-muted);text-align:right}
.at-tag{display:inline-block;font-size:10px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;line-height:1.4;padding:1px 7px;border-radius:6px;margin-bottom:2px}
.at-tag.mon{background:rgba(217,119,6,.14);color:#92400e}
.at-tag.org{background:rgba(124,58,237,.12);color:#5b21b6}
.at-tag.ev{background:rgba(22,163,74,.13);color:#166534}
.at-tag.reu{background:rgba(14,165,233,.14);color:#075985}
.at-tag.tar,.at-tag.fx{background:rgba(100,116,139,.14);color:#334155}
.at-tag.atr{background:var(--lb-vmbg);color:#991b1b}
[data-theme="dark"] .at-tag.mon{color:#fbbf24}
[data-theme="dark"] .at-tag.org{color:#c4b5fd}
[data-theme="dark"] .at-tag.ev{color:#86efac}
[data-theme="dark"] .at-tag.reu{color:#7dd3fc}
[data-theme="dark"] .at-tag.tar,[data-theme="dark"] .at-tag.fx{color:#cbd5e1}
[data-theme="dark"] .at-tag.atr{color:#fca5a5}
.at-sec{font-size:10.5px;font-weight:800;letter-spacing:1.1px;text-transform:uppercase;line-height:1.4;color:var(--lb-muted);margin:18px 0 8px}
.at-prog+.at-sec,.eq-tabs+.at-sec{margin-top:4px}
.at-sec-atr{color:var(--lb-vm)}
.at-empty{padding:20px 16px;text-align:center;font-size:13px;line-height:1.55;color:var(--lb-muted)}
.at-empty b{color:var(--lb-txt)}
.at-add{display:flex;align-items:center;width:100%;min-height:48px;padding:0 16px;border:0;border-top:1px solid var(--lb-stroke);background:none;color:var(--lb-cy);font-family:inherit;font-size:13px;font-weight:700;cursor:pointer}
.at-add:hover{background:var(--lb-tile)}
.at-det{margin-top:18px}
.at-det>summary{font-size:10.5px;font-weight:800;letter-spacing:1.1px;text-transform:uppercase;line-height:1.4;color:var(--lb-muted);cursor:pointer;min-height:32px;display:flex;align-items:center}
.at-det>.at-list{margin-top:6px}
.at-cal{background:var(--lb-panel-bg);border:1px solid var(--lb-panel-bd);border-radius:16px;padding:12px}
.at-cal-h{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}
.at-cal-h b{font-size:15px;line-height:1.3;color:var(--lb-txt);text-transform:capitalize}
.at-cal-h button{width:44px;height:44px;display:flex;align-items:center;justify-content:center;border-radius:10px;border:1px solid var(--lb-stroke);background:none;color:var(--lb-txt);cursor:pointer}
.at-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px}
.at-dw{font-size:10px;font-weight:800;line-height:1.4;text-align:center;color:var(--lb-muted);padding:4px 0}
.at-dd{min-height:54px;border-radius:10px;border:1px solid transparent;background:none;color:var(--lb-txt);font-family:inherit;font-size:13px;font-weight:700;line-height:1.2;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:5px;padding:7px 0 4px}
.at-dd:hover{background:var(--lb-tile)}
.at-dd.fora{color:var(--lb-faint);font-weight:500}
.at-dd.hj{border-color:var(--lb-cy)}
.at-dd.sel{background:var(--lb-cy);color:#fff}
.at-dots{display:flex;gap:3px;min-height:6px}
.at-dots i{width:6px;height:6px;border-radius:50%}
.at-dd.sel .at-dots i{box-shadow:0 0 0 1.5px #fff}
.at-leg{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:11.5px;line-height:1.4;color:var(--lb-muted);margin-top:8px}
.at-leg i{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px}
.at-cal+.at-prog,.at-cal+.at-sec{margin-top:16px}
.m.at-m{max-width:560px}
.at-rt-d{font-size:13px;line-height:1.5;color:var(--lb-muted);margin:-4px 0 10px}
.at-rt-d b{color:var(--lb-txt)}
.at-seg{display:flex;gap:4px;margin:0 0 6px}
.at-seg i{flex:1;height:6px;border-radius:99px;background:var(--lb-stroke)}
.at-seg i.on{background:var(--lb-gn)}
.at-rt{margin-top:4px}
.at-rt-ed{margin-top:8px}
.at-lnk{background:none;border:0;padding:0;min-height:44px;color:var(--lb-cy);font-family:inherit;font-size:13px;font-weight:700;cursor:pointer}
@media(max-width:640px){
  .at-why{display:none}
  /* Topo compacto: ícone do calendário + "Nova tarefa" do tamanho do texto, 36px
     visíveis; o ::after completa o toque. O inset conta do padding box: com borda
     de 1px, 34 + 2×5 = 44. Gap 10 = 2×5. `#ct` na frente: a regra de celular do
     `.b` (min-height 44) vencia a classe simples. */
  #ct .at-cc .eq-actions{display:flex;gap:10px;flex:none}
  #ct .at-cc .eq-actions>*{position:relative;min-height:36px;height:36px;padding:0 12px;font-size:13px;line-height:1.2;border-radius:9px}
  #ct .at-cc .eq-actions>*::after{content:'';position:absolute;inset:-5px}
  #ct .at-cc .at-alt{width:38px;height:38px;min-height:38px;padding:0;justify-content:center}
  .at-alt-t{display:none}
  .at-cal{padding:8px}
  .at-grid{gap:2px}
  .at-dd{min-height:48px;font-size:12.5px}
}

/* Barra "Saúde · Eventos" no topo de toda tela do perfil eventos (evSaudeBar, core.js). */
.ev-saude{margin-bottom:14px}
.ev-sd{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:6px 12px;width:100%;
  padding:9px 14px 10px;border-radius:12px;background:var(--lb-panel-bg);border:1px solid var(--lb-panel-bd);
  color:var(--lb-txt);font-family:inherit;font-size:12.5px;line-height:1.3;text-align:left}
button.ev-sd{cursor:pointer;min-height:44px}
button.ev-sd:hover{border-color:var(--lb-cy)}
.ev-sd{--sd:var(--lb-gn);--sdbg:var(--lb-gnbg)}
.ev-sd.warn{--sd:var(--lb-am);--sdbg:var(--lb-attbg)}
.ev-sd.bad{--sd:var(--lb-vm);--sdbg:var(--lb-vmbg)}
.ev-sd-l{display:flex;align-items:center;gap:7px;font-weight:700;white-space:nowrap}
.ev-sd-l i{width:3px;height:14px;border-radius:2px;background:var(--sd);flex:none}
.ev-sd-l b{color:var(--sd);font-weight:900;font-size:14px}
.ev-sd-g{justify-self:end;max-width:100%;overflow:hidden;text-overflow:ellipsis;font-size:10.5px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--sd);background:var(--sdbg);border-radius:6px;padding:3px 8px;white-space:nowrap}
.ev-sd-t{grid-column:1/-1;height:4px;border-radius:99px;background:var(--lb-stroke);overflow:hidden}
.ev-sd-t i{display:block;height:100%;background:var(--sd);border-radius:99px}
@media(max-width:640px){.ev-saude{margin-bottom:10px}.ev-sd-g{font-size:11px;letter-spacing:0;text-transform:none;padding:3px 7px}}

/* Check-in rápido no cabeçalho (scAbrirHoje, eventos.js) e o balão de escolha
   quando há dois eventos no dia. */
.hdr-qr{display:inline-flex;align-items:center;gap:6px}
.hdr-qr svg{flex:none}
/* sem evento hoje: continua no lugar (Rafael, 28/09), contorno tracejado e sem destaque */
header .hdr-qr.off{border-style:dashed;background:transparent;color:#b9c7dc}
.sc-hoje{display:flex;flex-direction:column;gap:8px}
.sc-hoje-b{display:flex;flex-direction:column;align-items:flex-start;gap:3px;width:100%;min-height:56px;padding:10px 14px;
  border:1px solid var(--lnbd);border-radius:12px;background:var(--wh);color:var(--tx);font-family:inherit;text-align:left;cursor:pointer}
.sc-hoje-b:hover{border-color:var(--az2)}
.sc-hoje-b b{font-size:14px;font-weight:700;line-height:1.3}
.sc-hoje-b span{font-size:12.5px;line-height:1.3;color:var(--sb)}
@media(max-width:430px){.hdr-qr-t{display:none}.hdr-qr{width:38px;justify-content:center;padding:0!important}}

/* ===== Aba Eventos do evento — layout compacto (evContent, 25/09/2026) =====
   Rafael: "diminua o tamanho das caixas e harmonize". Escopo `#ct .evc` para
   vencer o `.b` (gradiente) e o `.cds` global sem mexer neles. Escala única:
   controles 40px (toque 44 pelo ::after), fichas 12/14px de respiro, 8px de gap. */
#ct .evc-head{display:flex;align-items:center;gap:10px;margin-bottom:12px}
#ct .evc-head .pt{margin:0}
.evc-live{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:700;line-height:1.2;color:#15803d}
.evc-live i{width:7px;height:7px;border-radius:50%;background:currentColor;box-shadow:0 0 0 3px rgba(22,163,74,.18)}
#ct .evc-bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
#ct .evc .evc-main{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 18px;font-size:14px;font-weight:700;border-radius:10px}
#ct .evc-acts{display:flex;flex-wrap:wrap;gap:8px}
#ct .evc .evc-acts .b{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:7px;height:40px;min-height:40px;padding:0 14px;
  background:var(--wh);background-image:none;color:var(--tx);border:1px solid var(--lnbd);border-radius:10px;font-size:13px;font-weight:600;line-height:1.2;box-shadow:none;white-space:nowrap}
#ct .evc .evc-acts .b:hover{border-color:var(--az2);background:var(--azs)}
#ct .evc .evc-acts .b svg{flex:none;opacity:.85}
#ct .evc .evc-acts .b::after{content:'';position:absolute;inset:-3px}
#ct .evc-reset{margin-left:auto;min-height:44px;padding:0 6px;background:none;border:0;color:var(--vm);font-family:inherit;font-size:13px;font-weight:600;cursor:pointer;text-decoration:underline;text-underline-offset:3px}
/* números */
#ct .evc-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-bottom:8px}
.evc-k{position:relative;display:flex;flex-direction:column;gap:2px;padding:12px 14px;background:var(--wh);border:1px solid var(--lnbd);border-radius:12px;line-height:1.25;overflow:hidden}
.evc-k::before{content:'';position:absolute;left:0;top:10px;bottom:10px;width:3px;border-radius:0 3px 3px 0;background:var(--az2)}
.evc-k.ok::before{background:var(--vd)}
.evc-k.at::before{background:var(--am)}
.evc-kl{font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--sb)}
.evc-kv{font-size:22px;font-weight:800;color:var(--tx);font-variant-numeric:tabular-nums}
.evc-ks{font-size:11.5px;color:var(--sb)}
#ct .evc-turnos{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px;margin-bottom:16px}
.evc-t{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:4px 8px;padding:9px 12px;background:var(--wh);border:1px solid var(--lnbd);border-radius:10px;line-height:1.2}
.evc-tl{font-size:11.5px;font-weight:700;color:var(--sb);white-space:nowrap}
.evc-t b{font-size:15px;font-weight:800;color:var(--tx);font-variant-numeric:tabular-nums}
.evc-t i{grid-column:1/-1;height:4px;border-radius:99px;background:var(--lnbd);overflow:hidden}
.evc-t i u{display:block;height:100%;background:var(--vd);border-radius:99px}
/* lista: botões de ícone no computador */
.evc-acd{display:inline-flex;align-items:center;gap:6px;flex-wrap:nowrap}
.evc-ib{position:relative;width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;border-radius:8px;border:1px solid var(--lnbd);background:var(--wh);color:var(--tx);cursor:pointer}
.evc-ib:hover{border-color:var(--az2);color:var(--az2)}
.evc-mais{display:none}
.evc-org{display:none}
/* selos de presença e ações da linha com a mesma escala nos dois tamanhos */
#ct .evc-tab .evc-pres .bd1{min-width:0;width:auto;margin:2px 4px 2px 0;padding:3px 9px;font-size:11px}
#ct .evc-tab .evc-acd .cdx-acts{display:inline-flex;gap:6px;margin:0}
#ct .evc-tab .evc-acd .cdx-ab{width:34px;height:34px;min-width:34px;display:inline-flex;align-items:center;justify-content:center;border-radius:8px;border:1px solid var(--lnbd);background:var(--wh);color:var(--tx);padding:0}
#ct .evc-tab .evc-acd .cdx-ab svg{width:16px;height:16px}
#ct .evc-tab .evc-acd .cdx-ab[style*="--vm"]{color:var(--vm)}
[data-theme="dark"] #ct .evc-tab .evc-acd .cdx-ab{background:var(--wh3);border-color:#2d4a6b;color:var(--tx)}
[data-theme="dark"] #ct .evc-tab .evc-acd .cdx-ab[style*="--vm"]{color:#f87171}
/* menu ⋯ */
.evc-menu{display:flex;flex-direction:column;gap:6px}
.evc-mi{display:flex;align-items:center;gap:12px;width:100%;min-height:48px;padding:0 14px;border:1px solid var(--lnbd);border-radius:10px;background:var(--wh);color:var(--tx);font-family:inherit;font-size:14px;font-weight:600;text-align:left;cursor:pointer}
.evc-mi.dg{color:var(--vm)}
[data-theme="dark"] .evc-k,[data-theme="dark"] .evc-t{background:var(--wh3);border-color:#2d4a6b}
[data-theme="dark"] #ct .evc .evc-acts .b,[data-theme="dark"] .evc-ib,[data-theme="dark"] .evc-mi{background:var(--wh3);border-color:#2d4a6b;color:var(--tx)}
[data-theme="dark"] #ct .evc .evc-acts .b:hover,[data-theme="dark"] .evc-ib:hover{border-color:#7fb3f4;background:var(--wh3);color:#7fb3f4}
[data-theme="dark"] #ct .evc-reset,[data-theme="dark"] .evc-mi.dg{color:#f87171}
[data-theme="dark"] .evc-live{color:#4ade80}
@media(max-width:880px){#ct .evc-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){
  #ct .evc .evc-main{width:100%}
  #ct .evc-acts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%;gap:8px}
  #ct .evc .evc-acts .b{width:100%;padding:0 10px;font-size:12.5px}
  #ct .evc-acts>*:last-child:nth-child(odd){grid-column:1/-1}
  #ct .evc-reset{margin:0 auto}
  .evc-k{padding:10px 12px}.evc-kv{font-size:20px}
  #ct .evc-turnos{grid-template-columns:repeat(2,minmax(0,1fr))}
  /* linha compacta: nome + órgão em cima, presenças embaixo, ⋯ à direita */
  #ct .evc-tab thead{display:none}
  #ct .evc-tab,#ct .evc-tab tbody{display:block;width:100%}
  #ct .evc-tab tr{display:grid;grid-template-columns:minmax(0,1fr) 44px;grid-template-areas:"nome mais" "pres mais";gap:6px 10px;align-items:center;padding:8px 2px;border-bottom:1px solid var(--lnbd)}
  #ct .evc-tab td{display:block;padding:0;border:0;min-width:0}
  #ct .evc-tab td.evc-nome{grid-area:nome;font-size:13.5px;line-height:1.3}
  #ct .evc-tab td.evc-pres{grid-area:pres;line-height:1}
  #ct .evc-tab td.evc-ac{grid-area:mais;align-self:center}
  .evc-org{display:block;font-size:12px;color:var(--sb);margin-top:1px}
  /* selos de presença: sem o min-width de 84px do selo genérico, 4 numa linha;
     28px visíveis + ::after até 44 de toque (marcam/desmarcam presença) */
  #ct .evc-tab .evc-pres{display:flex;flex-wrap:wrap;gap:6px}
  #ct .evc-tab .evc-pres .bd1{position:relative;min-width:0;width:auto;height:28px;margin:0;padding:0 10px;display:inline-flex;align-items:center;font-size:11px;letter-spacing:.02em}
  #ct .evc-tab .evc-pres .bd1::after{content:'';position:absolute;inset:-9px -3px}
  #ct .evc-tab.evc-1org .evc-org{display:none}
  .evc-mais{position:relative}
  .evc-mais::after{content:'';position:absolute;inset:-3px}
  #ct .evc-tab .evc-acd{display:none}
  .evc-mais{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:10px;border:1px solid var(--lnbd);background:var(--wh);color:var(--tx);font-size:20px;font-weight:700;line-height:1;cursor:pointer}
  [data-theme="dark"] .evc-mais{background:var(--wh3);border-color:#2d4a6b}
}

/* ===== Lista agrupada por órgão (evTabHTML → evg, 25/09/2026) =====
   Seções sempre abertas; cabeçalho = nome · contagem · Relatório; barra de
   presença embaixo. Dentro do grupo a coluna/linha de órgão sai (o cabeçalho já diz). */
.evg-sum{font-size:12.5px;line-height:1.4;color:var(--sb);margin:0 0 10px}
.evg-sum b{color:var(--tx)}
.evg{border:1px solid var(--lnbd);border-radius:12px;background:var(--wh);margin-bottom:12px;overflow:hidden}
.evg-h{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px 12px;padding:12px 14px 10px;border-bottom:1px solid var(--lnbd)}
.evg-t{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 12px;min-width:0;line-height:1.3}
.evg-t>b{font-size:13.5px;font-weight:800;color:var(--tx);overflow-wrap:anywhere}
.evg-t>span{font-size:12px;font-weight:600;color:var(--sb);white-space:nowrap;font-variant-numeric:tabular-nums}
.evg-t>span b{color:var(--tx)}
.evg-rel{position:relative;display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 12px;border-radius:9px;border:1px solid var(--lnbd);background:var(--wh);color:var(--tx);font-family:inherit;font-size:12.5px;font-weight:600;line-height:1.2;cursor:pointer;white-space:nowrap}
.evg-rel::after{content:'';position:absolute;inset:-5px}
.evg-rel:hover{border-color:var(--az2);color:var(--az2)}
.evg-bar{grid-column:1/-1;height:4px;border-radius:99px;background:var(--lnbd);overflow:hidden}
.evg-bar i{display:block;height:100%;background:var(--vd);border-radius:99px}
.evg .sx{margin:0;padding:0 12px 4px}
#ct .evg .evc-tab.evc-grp thead{display:none}
#ct .evg .evc-tab.evc-grp th:nth-child(3),#ct .evg .evc-tab.evc-grp td:nth-child(3){display:none}
[data-theme="dark"] .evg{background:var(--wh3);border-color:#2d4a6b}
[data-theme="dark"] .evg-h{border-color:#2d4a6b}
[data-theme="dark"] .evg-rel{background:var(--wh3);border-color:#2d4a6b;color:var(--tx)}
[data-theme="dark"] .evg-rel:hover{border-color:#7fb3f4;color:#7fb3f4}
@media(max-width:640px){
  .evg-h{padding:10px 12px 9px}
  .evg-t{flex-direction:column;align-items:flex-start;gap:2px}
  .evg-rel{padding:0 10px}
  .evg-rel span{display:none}
  .evg-rel{width:38px;height:38px;justify-content:center;padding:0}
  .evg .sx{padding:0 10px 2px}
}

/* Troféu do ganhador do sorteio na lista da aba Eventos (evTabLista). */
.evc-trofeu{display:inline-flex;align-items:center;gap:4px;margin-left:8px;padding:2px 8px 2px 6px;border-radius:99px;
  background:#fef3c7;color:#92400e;font-size:11px;font-weight:800;line-height:1.3;letter-spacing:.02em;vertical-align:1px;white-space:nowrap}
.evc-trofeu svg{flex:none}
#ct .evc-tab tr.evc-win>td:first-child,#ct .evc-tab tr.evc-win>td.evc-nome{box-shadow:inset 3px 0 0 #d97706}
[data-theme="dark"] .evc-trofeu{background:rgba(251,191,36,.16);color:#fbbf24}
@media(max-width:640px){.evc-trofeu{margin:3px 0 0;}#ct .evc-tab tr.evc-win{box-shadow:inset 3px 0 0 #d97706;padding-left:10px}#ct .evc-tab tr.evc-win>td.evc-nome{box-shadow:none}}

/* Cursos & Eventos do perfil eventos: 3 fichas (sem Vendas) — sem buraco na 4ª
   coluna e, no celular, as três lado a lado em vez de uma órfã. Classe dobrada
   (1,4,0) para empatar com `#ct .eq-cc:has(.cg .ccb) .eq-bento` e vencer pela ordem. */
#ct .eq-cc .eq-bento.eq-b3.eq-b3{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(max-width:640px){
  #ct .eq-cc .eq-bento.eq-b3.eq-b3{gap:8px}
  #ct .eq-cc .eq-bento.eq-b3.eq-b3 .eq-tile{padding:10px 10px 11px;min-width:0}
  #ct .eq-cc .eq-bento.eq-b3.eq-b3 .eq-tile-ico{display:none}
  #ct .eq-cc .eq-bento.eq-b3.eq-b3 .eq-tile-lbl{font-size:10px}
  #ct .eq-cc .eq-bento.eq-b3.eq-b3 .eq-tile-sub{font-size:10.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
}


/* Estoque: grupo de itens (vEstoque, 25/09/2026) — mesmo molde da venda no curso:
   a linha do grupo abre UMA linha `.px` com "MODELOS (n)" e uma tabela interna.
   Sem seta, sem recuo. */
.est-grp{cursor:pointer}
.est-grp .cad-nome{font-weight:800}
.est-grp.ab>td{border-bottom-color:transparent}
#ct .est-px>td{background:var(--lb-tile);padding:10px 16px 14px}
.est-px-h{font-size:12px;font-weight:700;letter-spacing:.04em;color:var(--lb-cy);margin-bottom:8px}
.est-px-t{width:100%;background:var(--lb-panel-bg);border:1px solid var(--lb-panel-bd);border-radius:8px;overflow:hidden}
.est-px-t tbody tr{cursor:pointer}
.est-px-t tbody tr:hover>td{background:var(--lb-tile)}
/* Estoque: lápis no lugar de + / − / lixeira; ações movidas para o balão do item. */
#ct .est-ac{width:1%;white-space:nowrap;text-align:right}
.est-ed{position:relative;width:38px;height:38px;display:inline-flex;align-items:center;justify-content:center;border-radius:9px;border:1px solid var(--lb-stroke);background:var(--lb-panel-bg);color:var(--lb-txt);cursor:pointer}
.est-ed::after{content:'';position:absolute;inset:-5px}
.est-ed:hover{border-color:var(--lb-cy);color:var(--lb-cy)}
.est-px-h{display:flex;align-items:center;justify-content:space-between;gap:10px}
.est-px-add{min-height:36px;padding:0 10px;border-radius:8px;border:1px solid var(--lb-stroke);background:var(--lb-panel-bg);color:var(--lb-cy);font-family:inherit;font-size:12.5px;font-weight:700;letter-spacing:0;cursor:pointer}
.est-mi-acts{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0 4px;padding-top:12px;border-top:1px solid var(--lnbd)}
.est-mi-b{min-height:40px;padding:0 14px;border-radius:9px;border:1px solid var(--lnbd);background:var(--wh);color:var(--tx);font-family:inherit;font-size:13px;font-weight:600;cursor:pointer}
.est-mi-b:hover{border-color:var(--az2)}
.est-mi-b.dg{color:var(--vm);margin-left:auto}
.est-gp-h{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--sb);margin:6px 0 6px}
.est-gp-l{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}
.est-gp-it{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:6px 6px 6px 12px;border:1px solid var(--lnbd);border-radius:10px;font-size:13.5px;line-height:1.3}
.est-gp-it i{font-style:normal;color:var(--sb);font-size:12px;margin-left:4px}
[data-theme="dark"] .est-mi-b{background:var(--wh3);border-color:#2d4a6b;color:var(--tx)}
[data-theme="dark"] .est-mi-b.dg{color:#f87171}
[data-theme="dark"] .est-gp-it{border-color:#2d4a6b}
/* Estoque · aba Consumidos (25/09/2026): baixas somadas por item, período em pílulas. */
.ecs-per{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 12px}
.ecs-per button{min-height:40px;padding:0 14px;border-radius:99px;border:1px solid var(--lb-stroke);background:var(--lb-panel-bg);color:var(--lb-muted);font-family:inherit;font-size:13px;font-weight:600;line-height:1.2;cursor:pointer;position:relative}
.ecs-per button::after{content:'';position:absolute;inset:-3px}
.ecs-per button.on{border-color:var(--lb-cy);color:var(--lb-cy);background:var(--lb-tile)}
.ecs-n{font-weight:700;color:var(--lb-muted);letter-spacing:0}
.ecs-aviso{font-size:12.5px;line-height:1.4;color:var(--lb-am);background:var(--lb-amtile);border:1px solid var(--lb-ambd);border-radius:10px;padding:8px 12px;margin:0 0 10px}
.ecs-lista{display:flex;flex-direction:column;gap:8px}
.ecs-it{border:1px solid var(--lb-panel-bd);background:var(--lb-panel-bg);border-radius:12px;overflow:hidden}
.ecs-it>summary{list-style:none;display:grid;grid-template-columns:minmax(0,1fr) auto minmax(84px,auto) auto;align-items:center;gap:12px;padding:10px 14px;min-height:52px;cursor:pointer;line-height:1.3}
.ecs-it>summary::-webkit-details-marker{display:none}
.ecs-it[open]>summary{border-bottom:1px solid var(--lb-stroke)}
.ecs-nm{display:flex;flex-direction:column;min-width:0}
.ecs-nm b{font-size:14px;color:var(--lb-txt);overflow-wrap:anywhere}
.ecs-nm small{font-size:12px;color:var(--lb-muted)}
.ecs-q{font-size:13px;font-weight:600;color:var(--lb-muted);white-space:nowrap;font-variant-numeric:tabular-nums;text-align:right}
.ecs-v{font-size:14px;font-weight:800;color:var(--lb-txt);white-space:nowrap;font-variant-numeric:tabular-nums;text-align:right}
.ecs-sv{font-size:12px;font-weight:700;color:var(--lb-am)}
.ecs-mov{padding:4px 8px 6px 14px;background:var(--lb-tile)}
.ecs-r{display:grid;grid-template-columns:80px minmax(0,1fr) auto minmax(72px,auto) 44px;align-items:center;gap:10px;padding:4px 0;font-size:13px;line-height:1.3;color:var(--lb-txt);border-bottom:1px solid var(--lb-stroke)}
.ecs-r:last-child{border-bottom:0}
.ecs-d{color:var(--lb-muted);font-variant-numeric:tabular-nums}
.ecs-o{min-width:0;overflow-wrap:anywhere}
.ecs-o small{display:block;font-size:12px;color:var(--lb-muted)}
.ecs-r .ecs-v{font-size:13px;font-weight:700}
.ecs-auto{font-size:11px;font-weight:700;color:var(--lb-cy);margin-left:4px}
.ecs-x{width:44px;height:44px;display:inline-flex;align-items:center;justify-content:center;border:0;background:none;color:var(--lb-muted);border-radius:9px;cursor:pointer;padding:0}
.ecs-x svg{width:16px;height:16px}
button.ecs-x:hover{color:var(--lb-vm);background:var(--lb-vmbg)}
/* Item em embalagem (bombom: pacote de 50, 1 por pessoa) — 2 campos lado a lado. */
.est-pac{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:0 0 10px}
.est-pac .fg{margin:0;display:flex;flex-direction:column;justify-content:flex-end}
/* "Pós-curso" (só admin): liga a cobrança de baixa na Saúde depois de cada curso. */
.est-pos{position:relative;min-height:30px;padding:0 10px;margin-right:8px;border-radius:99px;border:1px dashed var(--lb-stroke);background:transparent;color:var(--lb-muted);font-family:inherit;font-size:11.5px;font-weight:700;line-height:1;vertical-align:middle;cursor:pointer;white-space:nowrap}
.est-pos::after{content:'';position:absolute;inset:-9px -2px}
.est-pos:hover{border-color:var(--lb-cy);color:var(--lb-cy)}
.est-pos.on{border-style:solid;border-color:var(--lb-cy);color:var(--lb-cy);background:var(--lb-tile)}
.est-pos.on::before{content:'';display:inline-block;width:6px;height:6px;border-radius:50%;background:currentColor;margin-right:5px;vertical-align:1px}
.ecs-it>summary .est-pos{margin-right:0}
/* celular: a lista do estoque é apertada — vira um círculo (vazio = desligado,
   cheio = ligado); o nome fica no aria-label. 40 de largura + 2×4 de inset = 46. */
@media(max-width:640px){
  #ct .est-ac .est-pos{width:40px;padding:0;display:inline-flex;align-items:center;justify-content:center}
  #ct .est-ac .est-pos::after{inset:-9px -4px}
  #ct .est-ac .est-pos-t{display:none}
  #ct .est-ac .est-pos::before{content:'';display:block;width:10px;height:10px;border-radius:50%;border:2px solid currentColor;background:transparent;margin:0}
  #ct .est-ac .est-pos.on::before{background:currentColor}
}
.ebc-c{display:flex;flex-direction:column;gap:2px;font-size:14px;line-height:1.3;margin:0 0 12px}
.ebc-c span{font-size:12.5px;color:var(--sb)}
.ebc-l{display:flex;flex-direction:column;gap:6px}
.ebc-it{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:6px 6px 6px 12px;border:1px solid var(--lnbd);border-radius:10px;cursor:text}
.ebc-n{display:flex;flex-direction:column;min-width:0;font-size:13.5px;line-height:1.3}
.ebc-n small{font-size:12px;color:var(--sb)}
.ebc-it input{width:96px;flex:none;min-height:40px;text-align:right}
.ebc-h{font-size:12.5px;line-height:1.4;color:var(--sb);margin:10px 0 0}
[data-theme="dark"] .ebc-it{border-color:#2d4a6b}
@media(max-width:640px){.ebc-it input{font-size:16px}}
@media(max-width:640px){
  .ecs-it>summary{grid-template-columns:minmax(0,1fr) auto auto;gap:2px 10px}
  .ecs-it>summary .est-pos{grid-column:3;grid-row:1/3}
  .ecs-it>summary .ecs-q{grid-column:1;grid-row:2;text-align:left;font-size:12px}
  .ecs-it>summary .ecs-v{grid-column:2;grid-row:1/3}
  .ecs-r{grid-template-columns:minmax(0,1fr) auto 44px;gap:2px 8px}
  .ecs-r .ecs-d{grid-column:1;grid-row:1;font-size:12px}
  .ecs-r .ecs-o{grid-column:1;grid-row:2}
  .ecs-r .ecs-q{grid-column:2;grid-row:1}
  .ecs-r .ecs-v{grid-column:2;grid-row:2}
  .ecs-r .ecs-x{grid-column:3;grid-row:1/3}
}
@media(max-width:640px){.est-mi-b.dg{margin-left:0}.est-mi-b{flex:1 1 calc(50% - 8px)}}
@media(max-width:640px){#ct .est-ac{padding-right:10px!important;padding-left:6px!important}}
/* Balão do item de estoque enxuto (mItem, 25/09/2026). */
.m.m-item{max-width:520px}
.est-mt-c{font-weight:500;color:var(--sb);font-size:.85em}
.est-mi-g{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.m-item .fg{margin-bottom:10px}
.m-item .fg-sep{margin:8px 0 10px}
.m-item .est-mi-acts{margin:10px 0 0;padding-top:10px;gap:6px}
.m-item .est-mi-b{min-height:40px;padding:0 12px;font-size:12.5px}
@media(max-width:640px){.est-mi-g{grid-template-columns:repeat(2,minmax(0,1fr))}.m-item .est-mi-b{flex:1 1 calc(50% - 6px)}}

/* ===== Controle de notas (viagens.js, 28/09/2026) =====
   "+ Nota" no cabeçalho de todo papel (menos tv), "Minhas notas" e a tela do
   financeiro. Nasceu medido a 375px; a tabela do financeiro é própria
   (`data-proprio`) e some abaixo de 880px, onde entram os cartões `.nt-cel`. */
header .b.hdr-nota{position:relative;background:#15803d;background-image:none;border:1px solid #15803d;color:#fff;
  display:inline-flex;align-items:center;gap:5px;font-weight:700;box-shadow:none}
header .b.hdr-nota:hover{background:#166534;background-image:none}
header .b.hdr-nota svg{flex:none}
/* alvo de 44: o botão tem 38 no celular, o ::after estende 3px para cada lado */
header .b.hdr-nota::after{content:"";position:absolute;inset:-3px}
.m.m-nota{max-width:520px}
.m.m-nota .vg-rec{margin:0 0 12px}

.nt-mk{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:14px}
.nt-mk-i{background:var(--wh);border:1px solid var(--lnbd);border-radius:10px;padding:10px 12px;line-height:1.25}
.nt-mk-i span{display:block;font-size:11px;font-weight:600;color:var(--sb);text-transform:uppercase;letter-spacing:.03em}
.nt-mk-i b{display:block;font-size:18px;margin-top:3px}
.nt-mk-i i{display:block;font-style:normal;font-size:12px;color:var(--sb);margin-top:1px}
.nt-mk-i.y b{color:#854d0e}.nt-mk-i.g b{color:#15803d}
[data-theme="dark"] .nt-mk-i.y b{color:var(--am)}
[data-theme="dark"] .nt-mk-i.g b{color:var(--vd)}

.nt-cards{display:grid;gap:8px}
.nt-cd{background:var(--wh);border:1px solid var(--lnbd);border-radius:10px;padding:11px 13px;line-height:1.35;min-width:0}
.nt-cd-t{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:14px;line-height:1.3}
.nt-cd-t b{min-width:0;overflow-wrap:anywhere}
.nt-cd-a{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:8px}
.nt-cd-b{display:flex;gap:8px;margin-top:10px}
.nt-cd-b .b{flex:1 1 0;min-height:44px;font-size:14px}
/* `.b` tem height fixo em alguma regra do celular: min-height sozinho perdia (medido 40) */
.nt-cc .nt-cd-b .b{height:44px;min-height:44px;font-weight:700}
.nt-sp{flex:1 1 auto}
.nt-comp{display:inline-flex;align-items:center;gap:6px}
/* centro de custo da nota: etiqueta discreta no tom do trilho */
.nt-cc-tag{display:inline-flex;align-items:center;gap:5px;max-width:100%;margin-top:5px;padding:3px 8px;border-radius:7px;
  font-size:12px;font-weight:600;line-height:1.3;color:var(--lb-cy);background:rgba(14,165,233,.10);border:1px solid rgba(14,165,233,.25);overflow-wrap:anywhere}
.nt-cc-tag svg{flex:none;stroke:currentColor}
.nt-chips{display:flex;flex-wrap:wrap;align-items:center;gap:6px;flex:1 1 auto;min-width:0}
.nt-acts{display:flex;gap:6px;flex:none;margin-left:auto}
.nt-ib{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;flex:none;
  border:1px solid var(--lnbd);border-radius:8px;background:transparent;color:var(--sb);cursor:pointer;padding:0}
.nt-ib:hover{background:var(--bg)}
.nt-ib svg{stroke:currentColor}
.nt-ib.de{color:var(--vm)}
.nt-cdia{font-size:11px;font-weight:700;color:var(--sb);text-transform:uppercase;letter-spacing:.05em;line-height:1.3;margin:8px 0 0}
.nt-lk{background:none;border:0;color:var(--az2);font-family:inherit;font-weight:600;font-size:13px;line-height:1.2;
  cursor:pointer;padding:0 6px;min-height:44px}
[data-theme="dark"] .nt-lk{color:var(--az)}

.nt-flt{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:14px 0 10px}
.nt-flt label{display:block;font-size:11px;font-weight:600;color:var(--sb);text-transform:uppercase;letter-spacing:.04em;line-height:1.2;margin-bottom:4px}
.nt-flt select{width:100%;height:40px;font-size:14px;line-height:1.2}
.nt-pls{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-bottom:12px}
.nt-pl{height:36px;padding:0 12px;border-radius:999px;border:1px solid var(--lnbd);background:transparent;color:var(--tx);
  font-family:inherit;font-size:13px;font-weight:600;line-height:1;cursor:pointer}
.nt-pl i{font-style:normal;opacity:.8}
.nt-pl.on{background:var(--az2);border-color:var(--az2);color:#fff}
[data-theme="dark"] .nt-pl.on{background:#1e5fc1;border-color:#1e5fc1}
.nt-chk{display:inline-flex;align-items:center;gap:8px;margin-left:auto;min-height:44px;font-size:13px;line-height:1.2;cursor:pointer}
.nt-chk input{width:20px;height:20px;margin:0}
.nt-lote{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:var(--azs);color:#1e3a8a;border-radius:10px;
  padding:6px 12px;margin-bottom:10px;font-size:13px;line-height:1.3}
.nt-lote b{font-size:14px}
[data-theme="dark"] .nt-lote{color:#bfdbfe}
.nt-tab .nt-dia td{background:var(--bg);font-size:11px;font-weight:700;color:var(--sb);text-transform:uppercase;letter-spacing:.05em;padding:6px 10px}
.nt-tab .nt-ck{width:44px;padding-left:4px;padding-right:0}
.nt-ckl{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;cursor:pointer}
.nt-ckl input{width:20px;height:20px;margin:0}
.nt-tab .nt-vl{font-weight:700;white-space:nowrap}
.nt-tab td.ac{white-space:nowrap}
.nt-tab td.ac .b+.b{margin-left:6px}
.nt-cel{display:none}
.nt-mais-b{display:none}
@media(max-width:880px){
  .nt-tab{display:none}
  .nt-cel{display:grid}
  .nt-flt{grid-template-columns:repeat(2,minmax(0,1fr))}
  .nt-flt select{height:44px;font-size:16px}
  .nt-pl{height:44px}
  .nt-chk{margin-left:0}
  .nt-fxh{display:none}
  .nt-lote{display:none}
  .nt-flt>.nt-fx,.nt-pls>.nt-fx{display:none}
  .nt-flt.mais>.nt-fx{display:block}
  .nt-pls.mais>.nt-fx{display:inline-flex}
  .nt-mais-b{display:block;grid-column:1/-1;justify-self:start;padding:0}
  .nt-pls{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:2px}
  .nt-pls.mais{flex-wrap:wrap}
  .nt-pl{flex:none}
}
/* No celular os 3 totais empilhados empurravam a 1ª nota para a 2ª tela:
   dois lado a lado, o do mês embaixo, sem o ícone. */
@media(max-width:640px){
  #ct .cds.vg-kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  #ct .cds.vg-kpis .cd{padding:10px 12px}
  #ct .cds.vg-kpis .cd:last-child{grid-column:1/-1}
  #ct .cds.vg-kpis .cdi{display:none}
  #ct .cds.vg-kpis .cv{font-size:18px;line-height:1.2}
  #ct .cds.vg-kpis .cl{font-size:11px;line-height:1.2}
}

/* ===== Controle de notas no visual da casa (vidro, relevo) — 28/09/2026 =====
   As telas moram em `.lb-cc` (painel translúcido, título em degradê, entrada
   animada). Aqui só o que é delas, e só com tokens `--lb-*`: no claro o painel
   é branco sólido (--lb-blur:none), no escuro é vidro com blur, como o resto. */
/* números em degradê, cada total com a sua cor (o .lb-cc pinta tudo de azul) */
.nt-cc .cds .cd .cv.y{background-image:linear-gradient(180deg,var(--lb-numam-a),var(--lb-numam-b))}
.nt-cc .cds .cd .cv.o{background-image:linear-gradient(180deg,var(--lb-numau-a),var(--lb-numau-b))}
.nt-cc .cds .cd .cv.g{background-image:linear-gradient(180deg,var(--lb-numgn-a),var(--lb-numgn-b))}
.nt-cc .cds .cd .cl,.nt-cc .cds .cd .cs{color:var(--lb-muted)}
.nt-cc .cds .cd{position:relative;overflow:hidden}
/* brilho de vidro no canto do cartão */
.nt-cc .cds .cd::before,.nt-cc .nt-mk-i::before{content:"";position:absolute;inset:0 0 auto auto;width:140px;height:140px;
  background:radial-gradient(circle at 100% 0,rgba(56,189,248,.14),transparent 65%);pointer-events:none}

/* filtros num painel de vidro */
.nt-cc .nt-flt{background:var(--lb-panel-bg);border:1px solid var(--lb-panel-bd);border-radius:16px;padding:12px 14px;
  box-shadow:var(--lb-panel-shadow);backdrop-filter:var(--lb-blur);-webkit-backdrop-filter:var(--lb-blur)}
.nt-cc .nt-flt label{color:var(--lb-muted)}
.nt-cc .nt-flt select{background:var(--lb-tile);border:1px solid var(--lb-tile-bd);color:var(--lb-txt);border-radius:10px;padding:0 10px;
  transition:border-color .15s,box-shadow .15s}
.nt-cc .nt-flt select:hover{border-color:var(--lb-cy)}
.nt-cc .nt-flt select:focus-visible{outline:none;border-color:var(--lb-cy);box-shadow:0 0 0 3px rgba(14,165,233,.25)}
.nt-cc .nt-mais-b,.nt-cc .nt-lk{color:var(--lb-cy)}

/* situação = trilho segmentado, igual às abas das outras telas */
.nt-cc .nt-pls{background:var(--lb-panel-bg);border:1px solid var(--lb-panel-bd);border-radius:14px;padding:4px;gap:3px;
  box-shadow:var(--lb-panel-shadow);backdrop-filter:var(--lb-blur);-webkit-backdrop-filter:var(--lb-blur)}
.nt-cc .nt-pl{border:0;border-radius:10px;color:var(--lb-muted);transition:background .18s,color .18s,box-shadow .18s}
.nt-cc .nt-pl:hover:not(.on){background:var(--lb-tile);color:var(--lb-txt)}
.nt-cc .nt-pl.on,[data-theme="dark"] .nt-cc .nt-pl.on{background:linear-gradient(135deg,#38bdf8,#0ea5e9);color:#04121f;font-weight:800;
  box-shadow:0 2px 10px -2px rgba(14,165,233,.45),inset 0 1px 0 rgba(255,255,255,.35)}
.nt-cc .nt-chk{color:var(--lb-muted);padding:0 8px}

/* faixa do lote: vidro azulado */
.nt-cc .nt-lote{background:rgba(14,165,233,.10);border:1px solid rgba(14,165,233,.32);color:var(--lb-txt);border-radius:12px;
  backdrop-filter:var(--lb-blur);-webkit-backdrop-filter:var(--lb-blur)}
[data-theme="dark"] .nt-cc .nt-lote{color:var(--lb-txt)}

/* tabela: a faixa do dia no tom do trilho */
.nt-cc .nt-tab .nt-dia td{background:var(--lb-tile);color:var(--lb-muted);border-bottom:1px solid var(--lb-stroke)}
.nt-cc .nt-tab .vg-td-s{color:var(--lb-muted)}

/* botões de ação com relevo: degradê de cima para baixo, brilho na borda de
   cima e sombra embaixo; ao tocar, "afunda" 1px. Verde e vermelho mantêm o
   contraste medido (texto branco em #15803d = 5,0:1). */
.nt-cc .b.vg-ok{background:linear-gradient(180deg,#16873f,#136b33);border:0;color:#fff;
  box-shadow:0 1px 0 rgba(255,255,255,.18) inset,0 4px 12px -4px rgba(21,128,61,.55);transition:transform .15s,box-shadow .15s,filter .15s}
.nt-cc .b.vg-ok:hover{filter:brightness(1.06);transform:translateY(-1px);box-shadow:0 1px 0 rgba(255,255,255,.18) inset,0 8px 18px -6px rgba(21,128,61,.6)}
.nt-cc .b.vg-no{border-radius:9px;transition:transform .15s,background .15s}
.nt-cc .b.vg-sec{background:var(--lb-tile);border:1px solid var(--lb-tile-bd);color:var(--lb-txt);border-radius:9px}
.nt-cc .b.vg-sec:hover{border-color:var(--lb-cy);background:var(--lb-tile)}
.nt-cc .b:active,.nt-cc .nt-ib:active,header .b.hdr-nota:active{transform:translateY(1px)}

/* cartões (Minhas notas e financeiro no celular): vidro que sobe no hover */
.nt-cc .nt-cd,.nt-cc .nt-mk-i{position:relative;overflow:hidden;background:var(--lb-panel-bg);border:1px solid var(--lb-panel-bd);border-radius:16px;
  box-shadow:var(--lb-panel-shadow);backdrop-filter:var(--lb-blur);-webkit-backdrop-filter:var(--lb-blur);color:var(--lb-txt);
  transition:transform .22s cubic-bezier(.2,.75,.2,1),border-color .22s,box-shadow .22s}
.nt-cc .nt-cd:hover{transform:translateY(-3px);border-color:var(--lb-cy);box-shadow:0 14px 32px -14px rgba(14,165,233,.4)}
.nt-cc .nt-cd .vg-ns{color:var(--lb-muted)}
.nt-cc .nt-mk-i span,.nt-cc .nt-mk-i i{color:var(--lb-muted)}
.nt-cc .nt-mk-i b{font-weight:900;letter-spacing:-.4px;-webkit-background-clip:text;background-clip:text;color:transparent}
.nt-cc .nt-mk-i.y b,[data-theme="dark"] .nt-cc .nt-mk-i.y b{background-image:linear-gradient(180deg,var(--lb-numam-a),var(--lb-numam-b));color:transparent}
.nt-cc .nt-mk-i.g b,[data-theme="dark"] .nt-cc .nt-mk-i.g b{background-image:linear-gradient(180deg,var(--lb-numgn-a),var(--lb-numgn-b));color:transparent}
.nt-cc .nt-cdia{color:var(--lb-muted);display:flex;align-items:center;gap:10px}
.nt-cc .nt-cdia::after{content:"";flex:1;height:1px;background:var(--lb-stroke)}
.nt-cc .nt-ib{background:var(--lb-tile);border-color:var(--lb-tile-bd);color:var(--lb-muted);border-radius:10px;transition:border-color .15s,color .15s,transform .15s}
.nt-cc .nt-ib:hover{border-color:var(--lb-cy);color:var(--lb-txt);background:var(--lb-tile)}
.nt-cc .nt-ib.de{color:var(--lb-vm)}
.nt-cc .vg-reemb{background:var(--lb-panel-bg);border:1px solid var(--lb-panel-bd);border-radius:16px;box-shadow:var(--lb-panel-shadow);
  backdrop-filter:var(--lb-blur);-webkit-backdrop-filter:var(--lb-blur)}
.nt-cc .vg-reemb-t{cursor:pointer;color:var(--lb-txt)}
.nt-cc .vg-reemb-i{background:var(--lb-tile);border-color:var(--lb-tile-bd)}
/* entrada em cascata dos cartões — só para quem não pediu menos movimento */
@media(prefers-reduced-motion:no-preference){
  .nt-cc .nt-cd{animation:lbFadeUp .45s cubic-bezier(.2,.75,.2,1) both}
  .nt-cc .nt-cd:nth-child(2){animation-delay:.04s}.nt-cc .nt-cd:nth-child(3){animation-delay:.08s}
  .nt-cc .nt-cd:nth-child(4){animation-delay:.12s}.nt-cc .nt-cd:nth-child(n+5){animation-delay:.16s}
}
@media(prefers-reduced-motion:reduce){.nt-cc .nt-cd,.nt-cc .b,.nt-cc .nt-ib{transition:none}.nt-cc .nt-cd:hover{transform:none}}

/* "+ Nota" do cabeçalho com relevo: é a ação do dia a dia de todo o time */
header .b.hdr-nota{background:linear-gradient(180deg,#16873f,#136b33);border:1px solid rgba(255,255,255,.14);
  box-shadow:0 1px 0 rgba(255,255,255,.22) inset,0 6px 16px -6px rgba(22,163,74,.7);transition:transform .15s,box-shadow .15s,filter .15s}
header .b.hdr-nota:hover{background:linear-gradient(180deg,#16873f,#136b33);filter:brightness(1.08);transform:translateY(-1px);
  box-shadow:0 1px 0 rgba(255,255,255,.22) inset,0 10px 22px -8px rgba(22,163,74,.8)}

/* balão da nota: a área da foto ganha o brilho azul das outras telas */
.m.m-nota .vg-fbtn{background:linear-gradient(160deg,rgba(14,165,233,.08),transparent 60%),var(--wh2);transition:border-color .18s,transform .18s,box-shadow .18s}
.m.m-nota .vg-fbtn:hover{transform:translateY(-2px);box-shadow:0 12px 26px -14px rgba(14,165,233,.5)}

/* Linha de custo que veio de uma nota (ctEhNota, financeiro.js): no lugar de
   editar/excluir, uma etiqueta — a despesa só muda pela nota. */
.ct-nota-tag{display:inline-flex;align-items:center;min-height:28px;padding:0 10px;border-radius:7px;font-size:11px;font-weight:800;
  letter-spacing:.04em;text-transform:uppercase;line-height:1;color:#0b5f86;background:rgba(14,165,233,.12);border:1px solid rgba(14,165,233,.32);cursor:help;white-space:nowrap}
[data-theme="dark"] .ct-nota-tag{color:#7dd3fc}

/* Critério do prêmio DO TIME: fixo, é o índice do mês (28/09/2026). Parece campo
   para ficar no lugar dele no balão, mas é texto — tracejado diz "não editável". */
.pm-cri-fixo{min-height:44px;display:flex;align-items:center;gap:8px;font-size:14px;line-height:1.3;font-weight:600;color:var(--tx);padding:8px 12px;border:1px dashed var(--lnbd);border-radius:8px;background:var(--bg)}
/* Índice do mês no Meu Desempenho (gmIndiceMesHTML): a régua do prêmio ao lado da
   patente. Dourado só para quem lidera, como na TV. */
.gm-ix{display:flex;align-items:center;gap:14px;padding:12px 14px;margin:0 0 6px;border-radius:12px;background:var(--lb-tile);border:1px solid var(--lb-tile-bd)}
.gm-ix.lider{border-color:var(--lb-aubd)}
.gm-ix-n{display:flex;flex-direction:column;align-items:center;min-width:48px;line-height:1.1}
.gm-ix-n b{font-size:24px;font-weight:800;color:var(--lb-txt)}
.gm-ix.lider .gm-ix-n b{color:var(--lb-au)}
.gm-ix-n span{font-size:11px;color:var(--lb-muted)}
.gm-ix-t{min-width:0;display:flex;flex-direction:column;gap:3px}
.gm-ix-h{font-size:13px;line-height:1.3;font-weight:600;color:var(--lb-txt);display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.gm-ix-s{font-size:12px;line-height:1.4;color:var(--lb-muted)}
/* Sugestão do campeão do índice no balão da Excelência do mês (cmSugestao) */
.cm-sug{margin-top:6px;font-size:13px;line-height:1.4;color:var(--sb)}
.cm-sug b{color:var(--tx)}
