
:root{
  --cr:#E1E2E5;--cr2:#F8F8F8;--cr3:#D6D6DA;
  --dk:#111214;--br:#3F4047;--tn:#55565F;
  --bd:#BBBCC2;--bl:#D6D7DB;
  --gd:#BE8A05;--gd2:#E0B63C;--gp:#F7E9C0;
  --gn:#3D7A52;--gb:#E8F5ED;
  --or:#8C9098;--ob:#EDEEF2;
  --rd:#993333;--rb:#FFEEEE;
  --bu:#2B5F8A;--bb:#E8F0FA;
  --pu:#6B3FA0;--pb:#EEE8FF;
  --sw:252px;--r:12px;--rs:8px;
  --s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:20px;--s6:24px;--s7:28px;--s8:32px;
  --sh:0 2px 12px rgba(17,18,20,.07);
  --sh2:0 6px 20px rgba(17,18,20,.12);
  --shm:0 24px 60px rgba(17,18,20,.28);
  --ft:var(--dk);
}
/* ── DARK MODE ── */
body.dark{
  --cr:#111113;--cr2:#18181A;--cr3:#1E1E21;
  --dk:#E1E2E5;--br:#E0B63C;--tn:#9A9AA4;
  --bd:#292A2E;--bl:#212124;--ft:#E1E2E5;
  --sh:0 2px 12px rgba(0,0,0,.25);
  --sh2:0 6px 20px rgba(0,0,0,.4);
  --shm:0 24px 60px rgba(0,0,0,.55);
}
body.dark .sb{background:#09090A}
body.dark input,body.dark select,body.dark textarea{background:var(--cr3);color:var(--dk);border-color:var(--bd)}
body.dark .modal,body.dark .card{background:var(--cr2)}
body.dark .topbar{background:var(--cr2)}
body.dark .abc{background:var(--cr2)}
body.dark .env-card{background:var(--cr2)}
body.dark .env-item-card{background:var(--cr3)}
body.dark tbody tr:hover td{background:rgba(224,182,60,.06)}
body.dark th{background:var(--cr3)}
body.dark .kpi{background:var(--cr2)}
body.dark .pill{color:var(--dk)}
body.dark .pill:hover:not(.active){background:rgba(224,182,60,.12)}
body.dark .banner{background:var(--cr3);color:var(--dk)}
/* v1.8 — o quadro de projeção do cadastro: o --gb (verde claro) não muda no escuro, e o texto (--ft) vira claro — sumia */
#ab-proj{background:var(--gb)}
body.dark #ab-proj{background:var(--cr3)}
body.dark .clc{background:var(--cr2)}
body.dark .clc:hover{background:var(--cr3)}
body.dark .wpp-bg{background:#0E1A14}
body.dark .wpp-bbl{background:#1F2C23;color:#E8EDE9}
body.dark hr{border-color:var(--bd)}
body.dark .est-row:hover{background:rgba(224,182,60,.1)}
body.dark .est-row.sel-on{background:rgba(140,144,152,.18)}
body.dark .tab.active{color:var(--gd2);border-bottom-color:var(--gd2)}
body.dark .b-ab{background:rgba(43,95,138,.25)}body.dark .b-fc{background:rgba(140,144,152,.25)}
body.dark .b-ok{background:rgba(61,122,82,.25)}body.dark .b-no{background:rgba(140,144,152,.25)}
body.dark .b-env{background:rgba(61,122,82,.25)}body.dark .b-tres{background:rgba(190,138,5,.25)}
body.dark .b-av{background:rgba(107,63,160,.25)}
.sb-dk-btn{width:100%;padding:7px 10px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);border-radius:var(--rs);color:rgba(225,226,229,.7);font-family:'DM Sans',sans-serif;font-size:11.5px;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:6px;transition:all .14s;margin-top:5px}
.sb-dk-btn:hover{background:rgba(255,255,255,.12)}
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
body{font-family:'DM Sans',sans-serif;background:var(--cr);color:var(--dk);min-height:100vh;overflow-x:hidden;font-size:14px;line-height:1.5}
/* v1.9.3: ícone Lucide via <svg class="ic"><use href="#i-..."></use></svg> — dimensiona por 1em, herda a cor do texto */
.ic{width:1em;height:1em;display:inline-block;vertical-align:-.125em;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}
/* v1.9.3 (cor): COR dos ícones — dão "vida" sem virar enfeite (regra color-not-decorative-only). Sidebar=marca, KPI=status, utilitárias=semântica. Botões de fundo colorido (.bg/.brd) mantêm ícone branco; botões ghost (.bo) coloram o ícone por ação via --ac; títulos/filtros/editar ficam neutros (currentColor). */
.sb-ico .ic{stroke:var(--gd2)}
/* v4.4.3: .ic-gd removida (zero usos) */
.ic-gn{stroke:var(--gn)}.ic-rd{stroke:var(--rd)}.ic-or{stroke:var(--or)}
/* a11y (v1.9.1): foco visível p/ teclado + respeito a prefers-reduced-motion */
.btn:focus-visible,.pill:focus-visible,.bk:focus-visible,.sb-item:focus-visible,.mx:focus-visible,.sb-dk-btn:focus-visible,.clc:focus-visible,.est-row:focus-visible,a:focus-visible{outline:2px solid var(--gd);outline-offset:2px}
/* v1.4: barra de atividade — o app está falando com o banco (ver _ioInstalar) */
#io-bar{position:fixed;top:0;left:0;right:0;height:2px;z-index:9999;pointer-events:none;opacity:0;transition:opacity .2s;background:linear-gradient(90deg,transparent,var(--gd),transparent);background-size:40% 100%;background-repeat:no-repeat}
#io-bar.on{opacity:1;animation:io-corre 1s linear infinite}
@keyframes io-corre{from{background-position:-40% 0}to{background-position:140% 0}}
/* v1.4: enquanto o login está na frente, a barra lateral e o Dashboard atrás dele não são montados na tela —
   eram ~2 mil elementos e centenas de ms de estilo+layout já no login, quase tudo invisível atrás do cartão.
   O bootApp tira a classe na primeira linha. */
body.pre-login .sb,body.pre-login .sb-ov,body.pre-login .main{display:none}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
/* v1.9.3.2: transição suave claro↔escuro. (1) ícone do botão gira+fade ao trocar; (2) View Transitions faz o cross-fade da UI inteira (Chrome/Edge); (3) .theme-anim = fallback CSS p/ navegador sem VT. Tudo respeita o guard de reduced-motion acima. */
@keyframes dk-spin{from{transform:rotate(-180deg) scale(.5);opacity:0}to{transform:rotate(0) scale(1);opacity:1}}
.dk-spin{animation:dk-spin .45s cubic-bezier(.34,1.25,.5,1)}
body.theme-anim,body.theme-anim *{transition:background-color .35s ease,color .35s ease,border-color .35s ease,fill .35s ease,stroke .35s ease!important}
::view-transition-old(root),::view-transition-new(root){animation-duration:.4s}
.sb{position:fixed;top:0;left:0;bottom:0;width:var(--sw);background:var(--dk);display:flex;flex-direction:column;z-index:200}
.sb-brand{padding:22px 16px 18px;border-bottom:1px solid rgba(255,255,255,.08)}
.sb-logo{display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center}
.sb-name{font-family:'Playfair Display',serif;font-size:19px;font-weight:700;color:var(--gd2);letter-spacing:.06em;text-transform:uppercase;line-height:1.1}
.sb-sub{font-size:9px;color:rgba(225,226,229,.3);letter-spacing:.2em;text-transform:uppercase;margin-top:3px}
.sb-ver{font-size:8px;background:rgba(224,182,60,.15);color:var(--gd2);padding:1px 6px;border-radius:4px;margin-top:4px;display:inline-block;cursor:pointer;border:1px solid transparent;transition:.15s}
.sb-ver:hover{border-color:var(--gd2);background:rgba(224,182,60,.28)}
/* v4.15.0 — NOVIDADES DA VERSÃO e HISTÓRICO. O popup e o histórico são a MESMA timeline: o que muda
   é quantas versões entram. Um componente só, por isso todo seletor nasce com `nv-`. */
.nv-tl{padding:15px 20px 6px;position:relative}
.nv-vg{position:relative;padding:0 0 15px 26px}
.nv-vg:last-child{padding-bottom:4px}
.nv-vg::before{content:'';position:absolute;left:7px;top:16px;bottom:0;width:1px;background:var(--bl)}
.nv-vg:last-child::before{display:none}
.nv-dot{position:absolute;left:0;top:3px;width:15px;height:15px;border-radius:50%;background:var(--cr2);border:2px solid var(--gd);box-shadow:0 0 0 3px var(--gp)}
.nv-vh{display:flex;align-items:center;gap:8px;margin-bottom:7px;flex-wrap:wrap}
.nv-vn{font:700 12px 'DM Sans',sans-serif;color:var(--br);background:var(--cr3);border-radius:99px;padding:2px 9px}
.nv-vd{font-size:11px;color:var(--tn)}
.nv-atual{font:700 10px 'DM Sans',sans-serif;letter-spacing:.08em;color:var(--gd);background:var(--gp);border:1px solid var(--gd2);border-radius:99px;padding:1px 8px}
.nv-it{display:flex;gap:9px;padding:4px 0;font-size:13px;align-items:baseline;line-height:1.45}
.nv-pt{flex:none;display:inline-block;width:8px;height:8px;border-radius:50%;transform:translateY(-1px)}
.nv-pt.novo{background:var(--gn)}.nv-pt.melhoria{background:var(--bu)}
.nv-pt.correcao{background:var(--or)}.nv-pt.seguranca{background:var(--tn)}
.nv-in{font-weight:600;color:var(--dk)}
.nv-ix{color:var(--tn)}
.nv-leg{display:flex;gap:13px;font-size:11px;color:var(--tn);flex-wrap:wrap;align-items:center}
.nv-body{overflow-y:auto;max-height:min(58vh,520px);margin:0 -20px}
.nv-mes{position:sticky;top:0;z-index:3;font:700 11px 'DM Sans',sans-serif;letter-spacing:.14em;text-transform:uppercase;color:var(--tn);background:var(--cr2);padding:9px 20px 7px;border-bottom:1px solid var(--bl)}
.nv-chips{display:flex;gap:7px;flex-wrap:wrap;padding:9px 0 11px;border-bottom:1px solid var(--bl);margin-bottom:2px}
.nv-chip{font:600 11px 'DM Sans',sans-serif;color:var(--tn);background:var(--cr3);border:1px solid var(--bd);border-radius:99px;padding:3px 11px;cursor:pointer;transition:.15s}
.nv-chip:hover,.nv-chip.on{background:var(--gp);border-color:var(--gd2);color:var(--gd)}
/* v4.15.0 — a ilustração de um item do changelog. Ela não pesa no boot porque este HTML só é montado
   quando a janela abre — por isso NÃO leva `loading=lazy`: dentro de um container que nasce oculto o
   lazy não dispara, e a figura ficava em branco (medido no ar). Largura pelo container, altura automática. */
.nv-img{display:block;width:100%;max-width:360px;height:auto;margin:8px 0 2px;border:1px solid var(--bd);border-radius:10px;background:var(--cr2)}
/* v4.16.0 — DIÁLOGOS DO APP. Todo seletor nasce com `dlg-`: nomes curtos (.row, .chip, .ctx)
   colidiriam com o resto do arquivo, que é um só. */
.dlg-hd{display:flex;gap:12px;align-items:flex-start;margin-bottom:14px}
.dlg-ic{flex:none;width:36px;height:36px;border-radius:10px;display:flex;align-items:center;justify-content:center;background:var(--cr3);color:var(--tn)}
.dlg-ic .ic{width:18px;height:18px}
.dlg-ic.perigo,.dlg-ic.critico{background:var(--rb);color:var(--rd)}
.dlg-ic.atencao{background:var(--ob);color:var(--or)}
.dlg-ic.lote{background:var(--gp);color:var(--gd);font:700 15px 'Playfair Display',serif}
.dlg-ic.dinheiro{background:var(--gp);color:var(--gd);font:700 14px 'Playfair Display',serif}
.dlg-t{font:600 16px 'Playfair Display',serif;color:var(--dk);line-height:1.3}
.dlg-s{font-size:12px;color:var(--tn);margin-top:2px}
.dlg-c{font-size:13.5px;color:var(--dk);line-height:1.55;white-space:pre-wrap}
.dlg-faixa{background:var(--rb);color:var(--rd);font-weight:700;font-size:12.5px;padding:9px 12px;border-radius:var(--rs);margin-bottom:12px;line-height:1.45}
.dlg-box{background:var(--cr3);border-radius:var(--rs);padding:10px 12px;margin-bottom:12px}
.dlg-l{display:flex;justify-content:space-between;gap:10px;font-size:12.5px;padding:2px 0}
.dlg-l .k{color:var(--tn)}
.dlg-l .v{font-weight:700;color:var(--dk)}
.dlg-mo{display:flex;align-items:center;gap:8px;border:2px solid var(--gd2);border-radius:var(--rs);padding:8px 12px;background:var(--cr2)}
.dlg-mo .pre{font:700 15px 'Playfair Display',serif;color:var(--gd)}
.dlg-mo input{flex:1;border:none;background:none;outline:none;font:700 26px 'Playfair Display',serif;color:var(--dk);width:100%;text-align:right}
.dlg-fb{font-size:11.5px;color:var(--tn);margin-top:6px;min-height:15px}
.dlg-fb.ok{color:var(--gn)}.dlg-fb.err{color:var(--rd)}
.dlg-chips{display:flex;gap:7px;flex-wrap:wrap;margin-top:10px}
.dlg-chip{font:600 11.5px 'DM Sans',sans-serif;color:var(--tn);background:var(--cr3);border:1px solid var(--bd);border-radius:99px;padding:4px 11px;cursor:pointer}
.dlg-chip:hover{background:var(--gp);border-color:var(--gd2);color:var(--gd)}
.dlg-chip.sel{background:var(--gp);border-color:var(--gd2);color:var(--gd);font-weight:800}   /* v4.18.1: operação escolhida no crédito */
.dlg-inp{width:100%;padding:9px 12px;border:1px solid var(--bd);border-radius:var(--rs);background:var(--cr2);color:var(--dk);font-size:14px;font-family:'DM Sans',sans-serif}
.dlg-inp:focus{outline:none;border-color:var(--gd2)}
.btn.dlg-rd{background:var(--rd);color:#fff}
.btn.dlg-rd:hover{filter:brightness(1.08)}
.btn.dlg-rd:disabled{opacity:.45;cursor:not-allowed;filter:none}
@media(max-width:600px){
  #m-dialogo .modal{align-self:flex-end;max-width:100%;border-radius:16px 16px 0 0;animation:su .2s ease}
  .dlg-mo input{font-size:23px}
}
.sb-nav{flex:1;padding:6px 0;overflow-y:auto}
.sb-lbl{font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;color:rgba(225,226,229,.28);font-weight:700;padding:14px 18px 4px}
.sb-item{display:flex;align-items:center;gap:11px;padding:11px 18px;cursor:pointer;font-size:13.5px;color:rgba(225,226,229,.55);border-left:3px solid transparent;transition:all .14s;user-select:none;letter-spacing:.01em}
.sb-item:hover{background:rgba(255,255,255,.06);color:rgba(225,226,229,.9);border-left-color:rgba(224,182,60,.3)}
.sb-item.active{background:rgba(224,182,60,.12);color:var(--gd2);border-left-color:var(--gd2);font-weight:600}
.sb-ico{width:18px;text-align:center;flex-shrink:0;font-size:15px}
.sb-bdg{margin-left:auto;background:var(--rd);color:#fff;font-size:9px;font-weight:700;padding:2px 6px;border-radius:9px}
.sb-foot{padding:8px 16px 10px;border-top:1px solid rgba(255,255,255,.06)}
.sb-copy{font-size:8.5px;color:rgba(225,226,229,.13);margin-top:6px;text-align:center}
.main{margin-left:var(--sw);min-height:100vh}
.topbar{background:var(--cr2);border-bottom:1px solid var(--bl);padding:16px 26px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:100}
/* v4.0.5: botão hambúrguer + overlay da gaveta (só aparecem no mobile, ver @media 600px) */
.tb-hl{display:flex;align-items:center;min-width:0}
.tb-burger{display:none;align-items:center;justify-content:center;width:40px;height:40px;font-size:21px;margin-right:12px;background:none;border:1px solid var(--bd);border-radius:var(--rs);color:var(--br);cursor:pointer;flex-shrink:0}
.tb-burger:active{background:var(--cr3)}
.sb-ov{display:none}
.tb-ttl{font-family:'Playfair Display',serif;font-size:22px;font-weight:700;letter-spacing:.01em}
.tb-act{display:flex;gap:5px;align-items:center}
.page{padding:24px 28px;display:none}
.page.active{display:block}
.kg{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:18px}
.kgf{grid-template-columns:repeat(5,1fr)}
.seg{position:relative;display:inline-flex;gap:0;background:var(--cr3);padding:4px;border-radius:22px}
.seg::before{content:'';position:absolute;top:4px;left:4px;bottom:4px;width:calc(50% - 4px);background:var(--or);border-radius:20px;z-index:0;transition:transform .28s cubic-bezier(.4,0,.2,1)}
.seg.pres::before{transform:translateX(100%)}
.seg .pill{border:none;background:none!important;position:relative;z-index:1;flex:1;min-width:104px;text-align:center;white-space:nowrap;transition:color .2s}
.seg .pill.active{color:#fff;font-weight:700}
.seg .pill:hover:not(.active){background:none!important}
.kpi{background:var(--cr2);border:1px solid var(--bl);border-radius:var(--r);padding:18px 18px 16px;position:relative;overflow:hidden;box-shadow:var(--sh)}
.kpi::after{content:'';position:absolute;bottom:0;left:0;right:0;height:3px;background:var(--gd2)}
.kpi.ko::after{background:var(--or)}.kpi.kr::after{background:var(--rd)}.kpi.kg2::after{background:var(--gn)}
/* v1.9.3 (cor): ícone do KPI acompanha a cor da BORDA (status). Padrão = dourado da marca; ko=laranja, kr=vermelho, kg2=verde. */
.kpi .ic{stroke:var(--gd2)}.kpi.ko .ic{stroke:var(--or)}.kpi.kr .ic{stroke:var(--rd)}.kpi.kg2 .ic{stroke:var(--gn)}
.kpi-ico{position:absolute;top:13px;right:14px;font-size:24px;opacity:1}
.kpi-lbl{font-size:10.5px;text-transform:uppercase;letter-spacing:.1em;color:var(--tn);font-weight:700;margin-bottom:5px}
.kpi-val{font-family:'Playfair Display',serif;font-size:28px;font-weight:700;line-height:1;margin-bottom:4px;font-variant-numeric:tabular-nums}
.kpi-sub{font-size:11.5px;color:var(--tn)}
.card{background:var(--cr2);border:1px solid var(--bl);border-radius:var(--r);padding:20px 22px;box-shadow:var(--sh)}
.card-ttl{font-family:'Playfair Display',serif;font-size:15px;font-weight:600;margin-bottom:14px;display:flex;align-items:center;gap:6px;color:var(--br)}
.g2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.btn{display:inline-flex;align-items:center;gap:5px;padding:9px 17px;border-radius:var(--rs);font-family:'DM Sans',sans-serif;font-size:13px;font-weight:600;cursor:pointer;border:none;transition:all .15s;white-space:nowrap;text-decoration:none;letter-spacing:.01em}
.btn:active:not(:disabled){transform:translateY(1px)}
.btn:disabled,.btn[disabled]{opacity:.45;cursor:not-allowed;box-shadow:none!important;transform:none!important;filter:saturate(.6)}
.bg{background:var(--gd);color:#fff}.bg:hover{background:#9F7304;transform:translateY(-2px);box-shadow:0 4px 14px rgba(190,138,5,.3)}
.bg:active:not(:disabled){transform:translateY(-1px)}
.bo{background:transparent;border:1.5px solid var(--bd);color:var(--br)}.bo:hover{background:var(--cr3)}
.btn.bo .ic{color:var(--ac,currentColor)}/* ícone colorido por ação (fundo ghost) — mata os antigos verdes chapados .bwp/.bgn */
.bok{background:transparent;border:1.5px solid var(--gn);color:var(--gn)}.bok:hover{background:var(--gb)}
.brd{background:var(--rd);color:#fff}.brd:hover{background:#7A2929}
.pill{background:none;border:1.5px solid var(--br);border-radius:20px;padding:4px 13px;font-size:11.5px;cursor:pointer;color:var(--ft);font-weight:500;transition:.15s}
.pill.active{background:var(--or);border-color:var(--or);color:#fff;font-weight:700}
.pill:hover:not(.active){background:var(--gb)}
.ord-bar{display:flex;gap:5px;margin-bottom:11px;flex-wrap:wrap;align-items:center}
.ord-lbl{font-size:11.5px;color:var(--tn);font-weight:600}
.ord-pill .ic{width:.9em;height:.9em;vertical-align:-1px}
.ord-inv{display:inline-flex;align-items:center;justify-content:center;padding:4px 9px}
.ord-inv .ic{width:1.05em;height:1.05em}
.pill:active:not(:disabled){transform:translateY(1px)}
.pill:disabled,.pill[disabled]{opacity:.45;cursor:not-allowed}
.est-row{display:flex;gap:8px;align-items:center;padding:6px 8px;cursor:pointer;border-radius:5px;font-size:12px;transition:.12s}
.est-row:hover{background:var(--gb)}
.est-row.sel-on{background:#F6F6F7;border-left:3px solid var(--or);padding-left:5px}
.bsm{padding:7px 14px;font-size:12.5px}.bxs{padding:4px 10px;font-size:11.5px;border-radius:6px}
.bdg{display:inline-flex;align-items:center;padding:3px 10px;border-radius:20px;font-size:11px;font-weight:600;letter-spacing:.02em;line-height:1.4;white-space:nowrap}
.b-ab{background:var(--bb);color:var(--bu)}.b-fc{background:var(--ob);color:var(--or)}
.b-ok{background:var(--gb);color:var(--gn)}.b-no{background:var(--ob);color:var(--or)}
.b-env{background:var(--gb);color:var(--gn)}.b-tres{background:var(--gp);color:var(--gd)}
.b-av{background:var(--pb);color:var(--pu)}
.pw{background:var(--bl);border-radius:6px;height:6px;overflow:hidden}
.pb{height:100%;background:linear-gradient(90deg,var(--gd),var(--gd2));border-radius:6px;transition:width .4s}
.pb.full{background:linear-gradient(90deg,var(--gn),#5AAD78)}
/* v2.1.7: scrollbars estilizadas p/ combinar com o tema (antes ficavam brancas, principalmente no dark) */
*{scrollbar-width:thin;scrollbar-color:var(--bd) transparent}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--bd);border-radius:8px;border:2px solid transparent;background-clip:padding-box}
::-webkit-scrollbar-thumb:hover{background:var(--gd2);background-clip:padding-box}
.tw{overflow-x:auto;width:100%;display:block}
.tw table{width:100%;min-width:100%;table-layout:fixed}
table{width:100%;border-collapse:collapse;font-size:13px;font-variant-numeric:tabular-nums}
/* v2.1.6 (Fase 5): cabeçalho de tabela PREMIUM "dourado clean" — funde com o card (bg cr2), texto dourado, risco dourado 2px. Padrão único de TODA a plataforma. */
th{text-align:left;padding:var(--s2) var(--s3);font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.09em;color:var(--gd);border-bottom:2px solid var(--gd2);background:var(--cr2);white-space:nowrap}
body.dark th{color:var(--gd2)}
td{padding:var(--s3) var(--s3);border-bottom:1px solid var(--bl);vertical-align:middle}
/* v1.9.4 (Fase 4): zebra sutil p/ ler linhas em tabelas densas (antes do :hover p/ ele vencer na cascata) */
tbody tr:nth-child(even) td{background:rgba(20,20,26,.038)}
body.dark tbody tr:nth-child(even) td{background:rgba(255,255,255,.045)}
/* v1.9.4.1: números das tabelas do Financeiro — coluna CENTRALIZADA sob o cabeçalho, mas os dígitos
   ficam alinhados (vírgula sob vírgula) via bloco .n (inline-block alinhado à direita por dentro).
   table-layout:auto + colunas numéricas encolhidas ao conteúdo CORRIGEM as larguras desiguais que o
   table-layout:fixed (.tw table) causava — antes as colunas eram fatiadas em partes iguais e ficavam
   largas demais, com o número flutuando longe do cabeçalho. tnr1 = 1 col-rótulo; tnr2 = 2 (Fragrância+Casa). */
.tw .tnr1,.tw .tnr2{table-layout:auto}
.tnr1 th:not(:first-child),.tnr1 td:not(:first-child),.tnr2 th:nth-child(n+3),.tnr2 td:nth-child(n+3){text-align:center;width:1%;white-space:nowrap}
.tnr1 .n{display:inline-block;text-align:right;min-width:5.4em}
.tnr2 .n{display:inline-block;text-align:right;min-width:4.6em}
/* v1.9.4: nota de rodapé de card padronizada (antes era style inline solto) + toolbar de filtro */
.fin-nfr{font-size:10.5px;color:var(--tn);font-weight:400;white-space:nowrap}
.cnote{font-size:11px;color:var(--tn);margin-top:8px;line-height:1.55}
.f-toolbar{display:inline-flex;gap:10px;align-items:center;flex-wrap:wrap;background:var(--cr2);border:1px solid var(--bl);border-radius:var(--rs);padding:8px 12px;box-shadow:var(--sh);margin-bottom:16px}
tr:last-child td{border-bottom:none}
tbody tr:hover td{background:rgba(224,182,60,.06)}
td{transition:background .12s}
.fg{margin-bottom:10px}
label{display:block;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--tn);margin-bottom:3px}
input,select,textarea{width:100%;padding:var(--s2) var(--s3);border:1px solid var(--bd);border-radius:var(--rs);background:var(--cr2);color:var(--dk);font-family:'DM Sans',sans-serif;font-size:13px;transition:border-color .14s}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--gd);box-shadow:0 0 0 3px rgba(190,138,5,.1)}
textarea{resize:vertical;min-height:65px}
.fr{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.fr3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}
/* item 05: modal de abertura repaginado (variação 3 — faixa lateral + ícone por seção) */
#m-ab .absec{border-left:3px solid var(--gd2);padding-left:13px;margin-bottom:15px}
#m-ab .absec-h{display:flex;align-items:center;gap:8px;margin-bottom:9px}
#m-ab .absec-h .ic{color:var(--gd2);width:16px;height:16px}
#m-ab .absec-h .st{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--gd)}
#m-ab .absec.apc{background:var(--gp);border-radius:0 10px 10px 0;padding:12px 14px 13px}
body.dark #m-ab .absec.apc{background:rgba(224,182,60,.09)}
#m-ab .abnote{font-size:11px;color:var(--tn);margin-top:9px;line-height:1.45}
#m-ab .abnote b{color:var(--br)}
#m-ab .frascof{display:flex;align-items:stretch;border:1px solid var(--bd);border-radius:8px;overflow:hidden;background:var(--cr)}
#m-ab .frascof span{display:flex;align-items:center;padding:0 11px;font-weight:700;color:var(--gd);background:var(--cr3)}
#m-ab .frascof input{border:0;background:none;border-radius:0}
#m-ab .frascof input:focus{box-shadow:none}
/* v5.3.0 — volumes da lista: um "chip" editável por volume (mesmo desenho do campo do frasco) */
#m-ab .abvols{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
#m-ab .abvol{display:flex;align-items:stretch;border:1px solid var(--bd);border-radius:8px;overflow:hidden;background:var(--cr)}
#m-ab .abvol input{width:58px;border:0;background:none;border-radius:0;text-align:right;padding-right:2px}
#m-ab .abvol input:focus{box-shadow:none}
#m-ab .abvol span{display:flex;align-items:center;padding:0 6px 0 2px;font-size:12px;color:var(--tn)}
#m-ab .abvol-x{border:0;border-left:1px solid var(--bd);background:var(--cr3);color:var(--tn);padding:0 7px;cursor:pointer}
#m-ab .abvol-x:hover{color:var(--rd)}
.ov{display:none;position:fixed;inset:0;background:rgba(17,18,20,.52);z-index:500;align-items:center;justify-content:center;padding:14px;backdrop-filter:blur(3px)}
/* 🔴 v4.19.1: TODO overlay tinha z-index 500, e o `#m-dialogo` está ANTES dos outros no HTML — com
   empate, quem vem depois no DOM ganha. Resultado: a confirmação de "Marcar pago" abria ATRÁS do
   menu de cobrança e era preciso fechar o menu para conseguir responder. O diálogo é sempre a
   camada de cima (ele confirma o que os outros pediram), então ganha z-index próprio. */
#m-dialogo{z-index:700}
.ov.open{display:flex;animation:fi .18s ease}
@keyframes fi{from{opacity:0}to{opacity:1}}
@keyframes su{from{transform:translateY(12px);opacity:0}to{transform:translateY(0);opacity:1}}
.modal{background:var(--cr2);border-radius:var(--r);padding:20px;width:100%;max-width:500px;max-height:92vh;overflow-y:auto;animation:su .2s ease;box-shadow:var(--shm)}
.modal.lg{max-width:640px}
.mhd{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:16px}
.mttl{font-family:'Playfair Display',serif;font-size:16px;font-weight:600}
.msub{font-size:11px;color:var(--tn);margin-top:2px}
.mx{background:none;border:none;font-size:17px;cursor:pointer;color:var(--tn);line-height:1;padding:2px;transition:color .14s,transform .12s}
.mx:hover{color:var(--dk)}
.mft{display:flex;gap:5px;justify-content:flex-end;margin-top:16px;padding-top:12px;border-top:1px solid var(--bl)}
/* v2.1 (Fase 5): card de abertura PREMIUM — faixa dourada + imagem emoldurada + stats em chips + barra grossa */
.abc{background:var(--cr2);border:1px solid var(--bl);border-radius:var(--r);padding:15px 18px;margin-bottom:12px;cursor:pointer;transition:transform .16s,box-shadow .16s,border-color .16s;box-shadow:var(--sh);display:flex;align-items:center;gap:18px;position:relative;overflow:hidden}
.abc::before{content:'';position:absolute;left:0;top:0;bottom:0;width:4px;background:linear-gradient(180deg,var(--gd2),var(--gd));opacity:.55;transition:opacity .16s}
.abc.fc::before{background:linear-gradient(180deg,#5AAD78,var(--gn))}
.abc:hover{border-color:var(--gd2);transform:translateY(-2px);box-shadow:var(--sh2)}
.abc:hover::before{opacity:1}
.abc-img,.abc-img-ph{width:125px;height:125px;border-radius:10px;flex-shrink:0;background:var(--cr3);border:1px solid var(--bl)}
.abc-img{object-fit:cover;cursor:zoom-in}
.abc-img-ph{display:flex;align-items:center;justify-content:center;font-size:34px;color:var(--tn)}
.abc-body{flex:1;min-width:0}
.abc-top{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:10px}
.ab-cs{font-size:10.5px;color:var(--tn);letter-spacing:.14em;text-transform:uppercase;font-weight:600;margin-bottom:3px;display:flex;align-items:center;gap:7px}
.ab-cs::after{content:'';height:1px;width:22px;background:var(--gd2);opacity:.5}
.ab-nm{font-family:'Playfair Display',serif;font-size:19px;font-weight:700;line-height:1.15;display:flex;align-items:center;gap:8px;min-width:0}
.ab-nm-txt{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ab-fr{font-family:'DM Sans',sans-serif;font-size:9.5px;background:none;color:var(--gd);border:1px solid var(--gd2);padding:1px 7px;border-radius:20px;font-weight:700;letter-spacing:.04em;flex-shrink:0}
.ab-chips{display:flex;gap:12px;margin-bottom:11px}
.ab-chip{flex:1;background:var(--cr);border:1px solid var(--bl);border-radius:10px;padding:7px 12px;min-width:0}
body.dark .ab-chip{background:var(--cr3)}
.ab-chip.acc{background:linear-gradient(135deg,var(--gp),rgba(224,182,60,.18));border-color:var(--gd2)}
body.dark .ab-chip.acc{background:linear-gradient(135deg,rgba(224,182,60,.22),rgba(224,182,60,.08));border-color:var(--gd2)}
@media(max-width:768px){.ab-chips{flex-wrap:wrap}.ab-chip{flex:1 1 calc(50% - 6px)}}
.ab-cl{font-size:9px;color:var(--tn);text-transform:uppercase;letter-spacing:.08em;font-weight:600;margin-bottom:3px}
.ab-cv{font-size:16px;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ab-cv.gn{color:var(--gn)}
.ab-prog{display:flex;align-items:center;gap:14px}
.ab-pct{font-family:'Playfair Display',serif;font-size:17px;font-weight:700;color:var(--gd);font-variant-numeric:tabular-nums;min-width:46px}
.ab-pct.fc{color:var(--gn)}
.ab-track{flex:1;background:var(--bl);border-radius:20px;height:8px;overflow:hidden}
.ab-fill{height:100%;background:linear-gradient(90deg,var(--gd),var(--gd2));border-radius:20px;transition:width .5s cubic-bezier(.4,0,.2,1)}
.ab-fill.fc{background:linear-gradient(90deg,var(--gn),#5AAD78)}
.ab-rest{font-size:11px;color:var(--tn);white-space:nowrap;font-variant-numeric:tabular-nums;font-weight:500}
.sdot{width:7px;height:7px;border-radius:50%;margin-right:5px;flex-shrink:0;display:inline-block;vertical-align:middle}
.sdot.g{background:var(--gn)}.sdot.o{background:var(--or)}.sdot.b{background:#1565C0}
/* item 74: olhinho de lucro — borra os valores de lucro/margem quando ativo */
body.oculta-lucro .luc-blur,body.oculta-lucro .luc-pill{filter:blur(7px);transition:filter .15s;user-select:none;pointer-events:none}
/* v2.1 (Fase 5): densidade "meio-termo" na tabela de Pedidos (sem afetar o Financeiro) */
.tcomf td{padding:14px var(--s3)}
.tcomf tbody tr:first-child td{padding-top:15px}
/* ═══ v4.5.0 — ABA ETIQUETAS: TALÃO DE POSTAGEM ═══════════════════════════════════════════
   Era a ÚLTIMA tela fora da repaginação (uma `<table class="tetq">` crua). Virou talão:
   lombada com furos de fichário · canhoto tracejado à esquerda com transportadora e preço ·
   corpo com destinatário e rastreio (com código de barras desenhado) · carimbo do status
   inclinado à direita. Variação "Guichê" — escolhida por prévia em `preview-etiquetas-talao.html`.
   O CSS antigo da `.tetq` saiu junto: nada mais usa aquela tabela. */
.etq-tb{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:13px}
/* saldo = selo tracejado (gerar etiqueta DEBITA daqui, então ele fica sempre à vista) */
.etq-selo{margin-left:auto;border:1px dashed var(--gd2);border-radius:5px;background:var(--cr2);padding:6px 13px;text-align:center;line-height:1.3}
.etq-selo .lbl{display:block;font-size:9px;letter-spacing:.14em;color:var(--tn);font-weight:700;text-transform:uppercase}
.etq-selo .v{font-size:14px;font-weight:800;color:var(--gd)}
body.dark .etq-selo .v{color:var(--gd2)}
.etq-selo small{font-size:10px;color:var(--tn);font-weight:600}
.etq-lista{display:flex;flex-direction:column;gap:10px}
.etq-t{position:relative;display:grid;grid-template-columns:18px 142px minmax(0,1fr) auto;background:var(--cr2);border:1px solid var(--bd);border-radius:var(--r);box-shadow:var(--sh);transition:box-shadow .15s,border-color .15s}
.etq-t[onclick]{cursor:pointer}
.etq-t[onclick]:hover{box-shadow:var(--sh2);border-color:var(--gd2)}
/* lombada: furos de fichário. NEUTRA de propósito — na prévia aprovada a cor do status vive no
   carimbo e no código de barras; pintar a lombada inteira deixava o talão pesado e saturado. */
.etq-spine{border-right:1px solid var(--bl);border-radius:var(--r) 0 0 var(--r);
  background-image:radial-gradient(circle,var(--cr) 2.6px,transparent 3.2px);background-size:18px 16px;background-position:50% 9px}
/* canhoto: picote sugerido pelo tracejado + os 2 furos redondos que "picotam" a borda */
.etq-stub{position:relative;padding:12px 13px;border-right:1px dashed var(--bd);display:flex;flex-direction:column;gap:4px;justify-content:center;min-width:0}
.etq-stub::before,.etq-stub::after{content:'';position:absolute;right:-8px;width:15px;height:15px;border-radius:50%;background:var(--cr);border:1px solid var(--bd);z-index:1}
.etq-stub::before{top:-9px}
.etq-stub::after{bottom:-9px}
.etq-main{padding:12px 16px;min-width:0}
.etq-side{padding:12px 13px;display:flex;flex-direction:column;align-items:flex-end;justify-content:space-between;gap:10px}
.etq-eyeb{display:block;font-size:9px;letter-spacing:.14em;color:var(--tn);font-weight:700;text-transform:uppercase}
.etq-dest{font-size:13.5px;font-weight:800;text-transform:uppercase;letter-spacing:.02em;line-height:1.35;margin:3px 0 9px}
.etq-cod-l{display:flex;align-items:center;gap:9px;margin-top:3px;flex-wrap:wrap}
/* código de barras desenhado em CSS — herda a cor do status pelo `color` inline */
.etq-barc{height:20px;flex:0 0 84px;border-radius:2px;opacity:.8;
  background:repeating-linear-gradient(90deg,currentColor 0 1px,transparent 1px 3px,currentColor 3px 5px,transparent 5px 6px,currentColor 6px 8px,transparent 8px 11px)}
.etq-carimbo{display:inline-block;border:2px solid currentColor;border-radius:6px;padding:2px 9px;font-size:10.5px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;white-space:nowrap;transform:rotate(-5deg)}
.etq-carrier{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:600;text-transform:capitalize;min-width:0}
.etq-carrier::before{content:'';width:8px;height:8px;border-radius:2px;background:var(--cc,var(--tn));flex-shrink:0}
.etq-cod{font-family:ui-monospace,'DM Mono',monospace;font-size:11.5px;color:var(--ft);background:var(--cr3);padding:3px 8px;border-radius:6px;overflow-wrap:anywhere;line-height:1.5}
.etq-val{font-weight:700;font-size:15px;color:var(--gd)}
body.dark .etq-val{color:var(--gd2)}
.etq-acts{display:flex;gap:5px}
/* v5.7.0 — seleção para imprimir em lote. A coluna de 40px fica entre a lombada e o canhoto em TODO
   talão (vazia quando não imprime), para os talões continuarem alinhados. O quadradinho é a única área
   que marca: o resto do talão continua abrindo o rastreio. */
.etq-t{grid-template-columns:18px 40px 142px minmax(0,1fr) auto}
.etq-t.sel{border-color:var(--gd2);background:linear-gradient(90deg,var(--gp) 0,var(--cr2) 220px)}
body.dark .etq-t.sel{background:linear-gradient(90deg,rgba(184,134,11,.18) 0,var(--cr2) 220px)}
.etq-sel{display:flex;align-items:center;justify-content:center;border-right:1px solid var(--bl)}
.etq-ck{width:20px;height:20px;border-radius:6px;border:1.5px solid var(--bd);display:grid;place-items:center;color:transparent;font-size:12px;background:var(--cr2);cursor:pointer;transition:.14s;padding:0}
.etq-ck:hover{border-color:var(--gd2)}
.etq-t.sel .etq-ck{border-color:var(--gd2);background:var(--gd2);color:#fff}
.etq-ck.off{opacity:.35;cursor:not-allowed;border-style:dashed}
.etq-nao{font-size:10.5px;color:var(--tn);display:inline-flex;align-items:center;gap:4px;text-align:right}
/* a barra do lote GRUDA LOGO ABAIXO DA TOPBAR (ordem do dono: descer tudo para imprimir era um saco).
   `--tbh` é a altura real da topbar, medida no render. */
.etq-bar{position:sticky;top:var(--tbh,62px);z-index:50;margin:-4px 0 13px;background:var(--cr2);border:1px solid var(--gd2);border-radius:var(--r);box-shadow:var(--sh2);padding:10px 14px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.etq-bar[hidden]{display:none}
.etq-bar .n{font-family:'Playfair Display',serif;font-size:22px;font-weight:700;line-height:1;font-variant-numeric:tabular-nums}
.etq-bar .l{font-size:11px;color:var(--tn)}
.etq-bar .sp{flex:1}
.etq-bar .dica{font-size:11.5px;color:var(--tn);display:inline-flex;gap:5px;align-items:center}
.etq-bar .dica.warn{color:var(--or)}
@media(max-width:600px){
  /* canhoto vira a tira de cima e a lombada some — o talão empilha */
  #page-etiquetas .etq-t{grid-template-columns:minmax(0,1fr)}
  /* a seleção vira um quadradinho no canto direito da tira de cima */
  #page-etiquetas .etq-sel{position:absolute;top:9px;right:10px;border:none;z-index:2}
  #page-etiquetas .etq-stub{padding-right:44px}
  #page-etiquetas .etq-t.sel{background:var(--gp)}
  body.dark #page-etiquetas .etq-t.sel{background:rgba(184,134,11,.14)}
  .etq-bar{padding:9px 12px;gap:8px}
  .etq-bar .n{font-size:17px}
  #page-etiquetas .etq-spine{display:none}
  #page-etiquetas .etq-stub{flex-direction:row;align-items:center;justify-content:space-between;border-right:0;border-bottom:1px dashed var(--bd)}
  #page-etiquetas .etq-stub::before,#page-etiquetas .etq-stub::after{display:none}
  #page-etiquetas .etq-side{flex-direction:row;align-items:center;width:100%}
  #page-etiquetas .etq-barc{flex-basis:60px}
  #page-etiquetas .etq-selo{margin-left:0}
}
/* v2.6.2: linha do tempo do rastreio real */
.rast-tl{position:relative;padding-left:6px}
.rast-ev{position:relative;padding:0 0 16px 24px}
.rast-ev:last-child{padding-bottom:2px}
.rast-ev::before{content:"";position:absolute;left:5px;top:14px;bottom:-2px;width:2px;background:var(--bd)}
.rast-ev:last-child::before{display:none}
.rast-dot{position:absolute;left:0;top:3px;width:12px;height:12px;border-radius:50%;background:var(--bd);border:2px solid var(--cr2);box-shadow:0 0 0 1px var(--bd)}
.rast-ev.top .rast-dot{background:var(--gd2);box-shadow:0 0 0 1px var(--gd2)}
/* v2.1.2 (Fase 5): tabela de Pedidos PREMIUM (Proposta A + extras escolhidos pelo dono) */
.tw .pped{table-layout:auto}
.pped-tw{max-height:72vh}
.pped th,.pped td{text-align:center}
/* v2.1.7: colunas numéricas encolhem ao conteúdo p/ a tabela caber na largura (Cliente/Fragrância absorvem a folga) */
.pped th:nth-child(4),.pped td:nth-child(4),
.pped th:nth-child(5),.pped td:nth-child(5),
.pped th:nth-child(6),.pped td:nth-child(6){width:1%;white-space:nowrap}
.pped thead th{position:sticky;top:0;z-index:5}
.pped tbody tr.r-ab td:first-child{box-shadow:inset 3px 0 0 var(--gd2)}
.pped tbody tr.r-av td:first-child{box-shadow:inset 3px 0 0 var(--pu)}
.pped tbody tr.r-ab:hover td:first-child{box-shadow:inset 5px 0 0 var(--gd)}
.pped tbody tr.r-av:hover td:first-child{box-shadow:inset 5px 0 0 var(--pu)}
.pped .cli{font-weight:700;letter-spacing:-.01em}
/* v4.7.14 — caixa de busca do seletor de abertura. O <select> segue no DOM (escondido) como fonte da
   verdade: é dele que o onAbChange lê os data-* de preço/ml, fixo e APC. */
.cbx{position:relative}
.cbx-q{width:100%;padding-right:26px!important}
.cbx-x{position:absolute;right:8px;top:50%;transform:translateY(-50%);font-size:11px;color:var(--tn);cursor:pointer;line-height:1;padding:2px}
.cbx-x:hover{color:var(--gd)}
.cbx-lst{position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:60;max-height:238px;overflow-y:auto;
  background:var(--cr);border:1px solid var(--bd);border-radius:var(--rs);box-shadow:0 10px 26px rgba(0,0,0,.16)}
.cbx-it{padding:9px 11px;font-size:12.5px;cursor:pointer;border-bottom:1px solid var(--bd);line-height:1.35}
.cbx-it:last-child{border-bottom:0}
.cbx-it:hover,.cbx-it.at{background:var(--bl)}
.cbx-it b{font-weight:700}
.cbx-it .cbx-sub{display:block;font-size:10.5px;color:var(--tn);margin-top:1px}
.cbx-vazio{padding:10px 11px;font-size:12px;color:var(--tn)}
/* v4.7.13 — paginação da tabela de Pedidos. `:empty{display:none}` faz a barra desaparecer
   sozinha quando há uma página só, então nada muda visualmente pra quem tem pouco pedido. */
.ped-pag{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:11px 4px 3px;margin-top:2px;border-top:1px solid var(--bd)}
.ped-pag:empty{display:none}
.pginf{font-size:12px;color:var(--tn);white-space:nowrap}
.pgnav{display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.pgbtn{font:600 12px inherit;color:var(--ft);background:transparent;border:1px solid var(--bd);border-radius:8px;padding:5px 10px;cursor:pointer;transition:border-color .15s,color .15s}
.pgbtn:hover:not(:disabled){border-color:var(--gd2);color:var(--gd)}
.pgbtn.at{background:var(--gd2);border-color:var(--gd2);color:#fff}
.pgbtn:disabled{opacity:.4;cursor:default}
.pgel{color:var(--tn);font-size:12px;padding:0 1px}
@media(max-width:600px){.ped-pag{justify-content:center}.pginf{width:100%;text-align:center}}
.cli-lnk{cursor:pointer;position:relative;display:inline-block;transition:color .15s}
.cli-lnk::after{content:'';position:absolute;left:0;bottom:-2px;width:0;height:1.5px;background:var(--gd2);transition:width .22s ease}
.cli-lnk:hover{color:var(--gd2)}
.cli-lnk:hover::after{width:100%}
.cli-lnk.nolink{cursor:default}
.pped .frag{font-weight:500}
.pped .casa{font-size:10.5px;color:var(--tn);margin-top:1px}
.pped .val-preco{color:var(--gd);font-weight:700}
body.dark .pped .val-preco{color:var(--gd2)}
.pped .luc-pill{display:inline-block;padding:3px 11px;border-radius:8px;background:var(--gb);color:var(--gn);font-weight:700;font-variant-numeric:tabular-nums;font-size:12.5px}
.pped .luc-pill.neg{background:var(--rb);color:var(--rd)}
.pped .acts{display:flex;gap:5px;justify-content:center}
.pped .pst{display:inline-flex;align-items:center;gap:5px;padding:5px 12px;border-radius:20px;font-size:11px;font-weight:600;cursor:pointer;border:1px solid transparent;transition:all .14s;white-space:nowrap}
.pped .pst:active{transform:translateY(1px)}
.pped .pst.ok{background:var(--gb);color:var(--gn)}
.pped .pst.no{background:transparent;border-color:var(--bd);color:var(--br)}
.pped .pst.no:hover{border-color:var(--gd2);background:var(--cr3)}
.pped .actbtn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:8px;border:1px solid var(--bl);background:transparent;color:var(--tn);cursor:pointer;transition:all .14s}
.pped .actbtn:hover{border-color:var(--gd2);color:var(--br);background:var(--cr3)}
.pped .actbtn.del:hover{border-color:var(--rd);color:var(--rd);background:var(--rb)}
.pped tfoot td{border-top:2px solid rgba(224,182,60,.6);background:var(--cr3);font-weight:700;padding:13px var(--s3);text-align:center}
.pped tfoot .tlbl{font-size:10px;color:var(--tn);text-transform:uppercase;letter-spacing:.08em}
.pped tfoot .tval{color:var(--gd);font-weight:700;font-variant-numeric:tabular-nums}
body.dark .pped tfoot .tval{color:var(--gd2)}
.pped tfoot .tval.gn{color:var(--gn)}
/* v2.1.4 (Fase 5): DETALHE DO CLIENTE premium */
#cl-det .pcd-hero{position:relative;overflow:hidden;display:flex;align-items:center;gap:15px;background:var(--cr2);border:1px solid var(--bl);border-radius:var(--r);padding:15px 18px;margin-bottom:13px;box-shadow:var(--sh);flex-wrap:wrap}
#cl-det .pcd-hero::before{content:'';position:absolute;left:0;top:0;bottom:0;width:4px;background:linear-gradient(180deg,var(--gd2),var(--gd))}
.pcd-av{width:52px;height:52px;border-radius:50%;background:linear-gradient(135deg,var(--gp),var(--gd2));display:flex;align-items:center;justify-content:center;font-family:'Playfair Display',serif;font-size:22px;font-weight:700;color:var(--gd);flex-shrink:0;box-shadow:0 0 0 1px var(--gd2),inset 0 1px 2px rgba(255,255,255,.4)}
.pcd-id{flex:1;min-width:120px}
.pcd-eye{font-size:9.5px;color:var(--tn);text-transform:uppercase;letter-spacing:.12em;font-weight:600}
.pcd-nm{font-family:'Playfair Display',serif;font-size:21px;font-weight:700;display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.pcd-freq{display:inline-flex;align-items:center;gap:3px;padding:3px 9px;border-radius:20px;font-size:9px;font-weight:700;background:linear-gradient(135deg,var(--gp),var(--gd2));color:#715204;box-shadow:0 0 0 1px var(--gd2)}
.info-row{display:flex;align-items:flex-start;gap:10px;padding:8px 0;border-bottom:1px dashed var(--bl);font-size:12.5px}
.info-row:last-child{border-bottom:none}
.info-ico{width:30px;height:30px;border-radius:8px;background:var(--cr3);color:var(--gd);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}
.info-k{font-size:9.5px;color:var(--tn);text-transform:uppercase;letter-spacing:.06em;font-weight:600}
.info-v{font-weight:600;margin-top:1px;word-break:break-word}
.info-v a{color:var(--gn);text-decoration:none;font-weight:700}
.pcd-kpi{position:relative;overflow:hidden;background:var(--cr2);border:1px solid var(--bl);border-radius:var(--r);padding:18px;box-shadow:var(--sh);display:flex;flex-direction:column;justify-content:center}
.pcd-kpi::before{content:'';position:absolute;left:0;top:0;bottom:0;width:4px;background:linear-gradient(180deg,var(--gd2),var(--gd))}
.pcd-kpi .k-ico{position:absolute;right:16px;top:14px;font-size:24px;color:var(--gd2);opacity:.5}
.pcd-kpi .k-lbl{font-size:9.5px;color:var(--tn);text-transform:uppercase;letter-spacing:.09em;font-weight:700}
.pcd-kpi .k-val{font-family:'Playfair Display',serif;font-size:32px;font-weight:700;color:var(--gd);margin:6px 0 10px;line-height:1;font-variant-numeric:tabular-nums}
body.dark .pcd-kpi .k-val{color:var(--gd2)}
.k-pills{display:flex;gap:7px;flex-wrap:wrap}
.k-pill{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:20px;font-size:11px;font-weight:700;font-variant-numeric:tabular-nums}
/* v4.18.1: o pill de crédito é clicável. `button` zera fonte e borda por conta própria, então a
   herança precisa ser explícita — senão ele sai com a fonte do navegador no meio dos outros pills. */
.k-pill.kp-btn{border:1px dashed transparent;cursor:pointer;font-family:inherit;font-size:11px;font-weight:700;line-height:inherit;transition:.15s}
.k-pill.kp-btn:hover{border-color:currentColor;filter:brightness(1.06)}
.k-pill.ped{background:var(--cr3);color:var(--tn)}
.k-pill.pend{background:var(--ob);color:var(--or)}
.k-pill.ok{background:var(--gb);color:var(--gn)}
.b-apc-in{display:inline-flex;align-items:center;gap:3px;padding:2px 7px;border-radius:20px;font-size:8px;font-weight:700;background:var(--ob);color:var(--or);vertical-align:middle;margin-left:5px}
#cl-det .pped thead th:nth-child(2){text-align:left}
/* v2.1.5 (Fase 5): DETALHE DA ABERTURA premium */
#abs-det .pab-hero{position:relative;overflow:hidden;display:flex;align-items:center;gap:14px;background:var(--cr2);border:1px solid var(--bl);border-radius:var(--r);padding:14px 18px;margin-bottom:13px;box-shadow:var(--sh);flex-wrap:wrap}
#abs-det .pab-hero::before{content:'';position:absolute;left:0;top:0;bottom:0;width:4px;background:linear-gradient(180deg,var(--gd2),var(--gd))}
#abs-det .pab-hero.fc::before{background:linear-gradient(180deg,#4FA36B,var(--gn))}
.pab-img{width:56px;height:56px;border-radius:10px;object-fit:cover;border:1px solid var(--bl);flex-shrink:0}
.pab-id{flex:1;min-width:140px}
.pab-cs{font-size:9.5px;color:var(--tn);text-transform:uppercase;letter-spacing:.14em;font-weight:600;display:inline-flex;align-items:center;gap:7px}
.pab-cs::after{content:'';width:20px;height:1px;background:var(--gd2)}
.pab-nm{font-family:'Playfair Display',serif;font-size:20px;font-weight:700;display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-top:2px}
.pab-fr{font-family:'DM Sans',sans-serif;font-size:10px;font-weight:700;color:var(--gd);border:1px solid var(--gd2);border-radius:6px;padding:1px 7px}
.pab-acts{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}
.prog-hd{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;gap:8px;flex-wrap:wrap}
.ppml-chip{display:inline-flex;align-items:center;gap:5px;padding:4px 11px;border-radius:20px;background:rgba(224,182,60,.14);border:1px solid var(--gd2);color:var(--gd);font-weight:700;font-size:12px;font-variant-numeric:tabular-nums}
body.dark .ppml-chip{color:var(--gd2)}
.pab-prog-top{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:6px;gap:8px}
.pab-mlr{font-family:'Playfair Display',serif;font-size:16px;font-weight:700}
.pab-mlt{font-size:11px;color:var(--tn);font-family:'DM Sans',sans-serif;font-weight:400}
.pab-pctlab{font-family:'Playfair Display',serif;font-size:15px;font-weight:700;color:var(--gd)}
body.dark .pab-pctlab{color:var(--gd2)}
.pab-track{height:9px;background:var(--cr3);border-radius:20px;overflow:hidden;margin-bottom:16px}
.pab-fill{height:100%;border-radius:20px;background:linear-gradient(90deg,var(--gd2),var(--or));transition:width .4s}
.pab-fill.full{background:linear-gradient(90deg,#4FA36B,var(--gn))}
.pab-mk{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}
.mk{background:var(--cr);border:1px solid var(--bl);border-radius:10px;padding:10px 11px;position:relative;overflow:hidden}
.mk-ic{position:absolute;right:8px;top:8px;font-size:14px;color:var(--gd2);opacity:.45}
.mk-l{font-size:8.5px;color:var(--tn);text-transform:uppercase;letter-spacing:.05em;font-weight:700;line-height:1.2}
.mk-v{font-family:'Playfair Display',serif;font-size:16px;font-weight:700;margin-top:4px;font-variant-numeric:tabular-nums}
.mk.gd .mk-v{color:var(--gd)}.mk.gn .mk-v{color:var(--gn)}.mk.or .mk-v{color:var(--or)}.mk.rd .mk-v{color:var(--rd)}
body.dark .mk.gd .mk-v{color:var(--gd2)}
@media(max-width:520px){.pab-mk{grid-template-columns:repeat(2,1fr)}}
.pab-part-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;gap:8px;flex-wrap:wrap}
.pab-list{border:1px solid var(--bl);border-radius:10px;overflow:hidden;background:var(--cr)}
.prow2{position:relative;display:flex;align-items:center;gap:12px;padding:11px 13px;border-bottom:1px solid var(--bl);transition:background .14s;flex-wrap:wrap}
.prow2:last-child{border-bottom:none}
.prow2:nth-child(even){background:rgba(20,20,26,.038)}
body.dark .prow2:nth-child(even){background:rgba(255,255,255,.045)}
.prow2:hover{background:var(--cr3)}
.pnum2{width:30px;height:30px;border-radius:50%;background:linear-gradient(135deg,var(--gp),var(--gd2));color:var(--gd);display:flex;align-items:center;justify-content:center;font-family:'Playfair Display',serif;font-size:13px;font-weight:700;flex-shrink:0;box-shadow:0 0 0 1px var(--gd2)}
.p-main{flex:1;min-width:130px}
.p-nm{font-size:13.5px;font-weight:700;display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.p-pills{display:flex;gap:6px;margin-top:5px;flex-wrap:wrap}
.p-pill{display:inline-flex;align-items:center;gap:4px;padding:2px 9px;border-radius:20px;font-size:10.5px;font-weight:700;font-variant-numeric:tabular-nums;background:var(--cr3);color:var(--tn)}
.p-pill.luc{background:var(--gb);color:var(--gn)}
.p-pill.luc.neg{background:var(--rb);color:var(--rd)}
.p-st{display:flex;gap:5px;align-items:center;flex-wrap:wrap}
#abs-det .pst{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;border-radius:20px;font-size:10px;font-weight:700;cursor:pointer;border:1px solid transparent;transition:all .14s}
#abs-det .pst.ok{background:var(--gb);color:var(--gn)}
#abs-det .pst.no{background:transparent;border-color:var(--bd);color:var(--tn)}
#abs-det .pst.no:hover{border-color:var(--gd2);color:var(--br)}
/* Item 21 — Histórico do mesmo perfume (card no detalhe da abertura) */
/* v4.7.3: era repeat(3,1fr) SEM minmax e sem override mobile — o unico grid de resumo que ficou de
   fora da correcao de overflow. Com overflow-x:clip no mobile, a 3a coluna era CORTADA (nao rolava).
   E o problema recorrente do projeto: 1fr nao encolhe abaixo do min-content. */
#d-hist .hs-sum{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:16px}
@media(max-width:600px){#d-hist .hs-sum{grid-template-columns:1fr}}
#d-hist .hs-kpi{background:var(--cr3);border-radius:var(--rs);padding:12px 14px;border-left:3px solid var(--gd2)}
#d-hist .hs-kpi.gn{border-left-color:var(--gn)}
#d-hist .hs-kpi.bu{border-left-color:var(--bu)}
#d-hist .hs-kpi .kl{font-size:10.5px;color:var(--tn);text-transform:uppercase;letter-spacing:.05em;margin-bottom:5px;display:flex;align-items:center;gap:5px}
#d-hist .hs-kpi .kl .ic{width:13px;height:13px}
#d-hist .hs-kpi .kv{font-family:'Playfair Display',serif;font-size:24px;font-weight:700;line-height:1;font-variant-numeric:tabular-nums}
#d-hist .hs-kpi .kv.gn{color:var(--gn)}
#d-hist .hs-kpi small{font-size:11px;color:var(--tn);font-weight:400}
#d-hist .hst{width:100%;border-collapse:collapse;font-size:12.5px}
#d-hist .hst th{background:var(--cr3);color:var(--gd);font-weight:600;text-transform:uppercase;font-size:10px;letter-spacing:.04em;padding:9px 10px;border-bottom:2px solid var(--gd2);text-align:center;white-space:nowrap}
#d-hist .hst th:first-child{text-align:left}
#d-hist .hst td{padding:10px;border-bottom:1px solid var(--bl);text-align:center;white-space:nowrap}
#d-hist .hst td:first-child{text-align:left;font-weight:600;white-space:normal}
#d-hist .hst tr:nth-child(even) td{background:rgba(20,20,26,.03)}
body.dark #d-hist .hst tr:nth-child(even) td{background:rgba(255,255,255,.045)}
#d-hist .hst tr.cur td{background:rgba(190,138,5,.10)}
#d-hist .hst .frb{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;background:linear-gradient(135deg,var(--gp),var(--gd2));color:var(--gd);font-family:'Playfair Display',serif;font-weight:700;font-size:11px;margin-right:8px;box-shadow:0 0 0 1px var(--gd2)}
#d-hist .hst .frb.cur{background:linear-gradient(135deg,var(--gd),#916B0B);color:#fff}
#d-hist .hst .rec{font-family:'Playfair Display',serif;font-weight:700;color:var(--gd)}
#d-hist .hst .hdot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:4px;vertical-align:middle}
#d-hist .hst .hdot.g{background:var(--gn)}#d-hist .hst .hdot.o{background:var(--gd2)}
#d-hist .hst tfoot td{font-weight:700;border-top:2px solid var(--bd);border-bottom:0;padding-top:11px;background:transparent!important}
#d-hist .hst tfoot .rec{color:var(--gd)}
#d-hist .hst tbody tr[onclick]{cursor:pointer}
#d-hist .hst tbody tr[onclick]:hover td{background:rgba(190,138,5,.07)}
.actbtn.tiny{width:28px;height:28px}
/* v2.1 (Fase 5): hierarquia + respiro na lista de Clientes */
.cl-nm{font-size:14px;font-weight:700;letter-spacing:-.01em}
.cl-meta{font-size:11px;color:var(--tn);margin-top:1px}
.clc{background:var(--cr2);border:1px solid var(--bl);border-radius:var(--r);padding:13px 15px;display:flex;align-items:center;gap:12px;margin-bottom:8px;transition:border-color .14s,background .14s,box-shadow .14s,transform .14s;cursor:pointer}
.clc:hover{border-color:var(--gd2);background:var(--gb);box-shadow:var(--sh)}
.clc:active{transform:translateY(1px);background:var(--cr3)}
.clav{width:42px;height:42px;border-radius:50%;background:linear-gradient(135deg,var(--gp),var(--gd2));display:flex;align-items:center;justify-content:center;font-family:'Playfair Display',serif;font-size:16px;font-weight:700;color:var(--gd);flex-shrink:0;box-shadow:0 0 0 1px var(--gd2),inset 0 1px 1px rgba(255,255,255,.35)}
/* ===== Clientes premium (v2.1.3) — scoped em #cl-cont p/ não afetar o card de pendentes ===== */
#cl-cont .clc{position:relative;overflow:hidden;padding:14px 17px;gap:14px;margin-bottom:10px}
#cl-cont .clc::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:linear-gradient(180deg,var(--gd2),var(--gd));opacity:.6;transition:.16s}
#cl-cont .clc:hover{border-color:var(--gd2);background:var(--cr2);transform:translateY(-2px);box-shadow:var(--sh2)}
#cl-cont .clc:hover::before{opacity:1;width:4px}
#cl-cont .clc:active{transform:translateY(1px)}
#cl-cont .clc .clav{width:44px;height:44px;font-size:17px}
.cl-nm.pf{font-family:'Playfair Display',serif;font-size:16px}
.cl-meta .mi{display:inline-flex;align-items:center;gap:3px}
.cl-pills{display:flex;gap:7px;margin-top:6px;flex-wrap:wrap}
.cl-pill{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:20px;font-size:11px;font-weight:700;font-variant-numeric:tabular-nums}
.cl-pill.tot{background:var(--gb);color:var(--gn)}
.cl-pill.ped{background:var(--cr3);color:var(--tn);font-weight:600}
.cl-pill.pend{background:var(--ob);color:var(--or)}
.acts{display:flex;gap:6px;flex-shrink:0}
.actbtn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:8px;border:1px solid var(--bl);background:transparent;color:var(--tn);cursor:pointer;transition:all .14s;text-decoration:none}
.actbtn:hover{border-color:var(--gd2);color:var(--br);background:var(--cr3)}
.actbtn.wp:hover{border-color:#25D366;color:#1EA952;background:rgba(37,211,102,.08)}
.actbtn.del:hover{border-color:var(--rd);color:var(--rd);background:var(--rb)}
/* ── v2.7.3: ESTOQUE premium (Bloco B da Fase 5) — cabeçalho dourado + zebra são globais ── */
.tw .estp{table-layout:auto}
.estp td,.estp th{padding:9px 12px}                                         /* densidade compacta */
.estp thead th:not(:nth-child(2)),.estp tbody td:not(:nth-child(2)){white-space:nowrap;width:1%}  /* numéricas/badges encolhem; Fragrância absorve a folga */
.estp thead th:nth-child(2){text-align:left}
.estp thead th:not(:nth-child(2)){text-align:center}
.estp tbody td{text-align:center}
.estp tbody td:nth-child(2){text-align:left}
.estp tbody td:first-child{position:relative}
.estp tbody tr td:first-child::before{content:'';position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--catcolor,transparent)}   /* faixa lateral por categoria */
.bc-arabe{background:var(--ob);color:var(--or)}
.bc-nicho{background:var(--pb);color:var(--pu)}
.bc-designer{background:var(--gp);color:var(--gd)}
.bc-nacional{background:var(--gb);color:var(--gn)}
.bc-sem{background:transparent;border:1px dashed var(--bd);color:var(--tn);opacity:.7}
body.dark .bc-arabe{background:rgba(140,144,152,.22)}
body.dark .bc-nicho{background:rgba(107,63,160,.28)}
body.dark .bc-designer{background:rgba(190,138,5,.24)}
body.dark .bc-nacional{background:rgba(61,122,82,.26)}
.est-fr-nm{font-family:'Playfair Display',serif;font-weight:700;font-size:14.5px;line-height:1.2}
.est-fr-casa{font-size:11px;color:var(--tn);margin-top:1px}
.est-mlpill{display:inline-block;font-weight:600;font-size:12px;padding:3px 10px;border-radius:20px;background:var(--cr3)}
.est-vtot{font-family:'Playfair Display',serif;font-weight:700;color:var(--gd)}
body.dark .est-vtot{color:var(--gd2)}
.est-vml{font-weight:600;color:var(--or)}.est-vml small{color:var(--tn);font-weight:400}
.est-vcusto{color:var(--tn);font-size:12px}
.est-vmargem{font-weight:700;color:var(--gn);font-size:12.5px}
.est-resumo{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:14px}
.est-resumo .kpi{padding:14px 16px}
.est-k{border-left:3px solid var(--gd2)}
.est-k2{border-left-color:var(--gn)}.est-k2 .kpi-val{color:var(--gn)}
.est-k3{border-left-color:var(--or)}
@media(max-width:640px){.est-resumo{grid-template-columns:1fr}}
/* ── v2.7.9: LIXEIRA premium (Bloco B 3/3) ── */
.tw .lixp{table-layout:auto}
.lixp td,.lixp th{padding:8px 12px}
.lixp thead th:not(:nth-child(2)),.lixp tbody td:not(:nth-child(2)){white-space:nowrap;width:1%}
.lixp thead th:nth-child(2){text-align:left}
.lixp thead th:not(:nth-child(2)){text-align:center}
.lixp tbody td{text-align:center}
.lixp tbody td:nth-child(2){text-align:left}
.lixp .bdg{text-transform:capitalize}
.lixp tbody td:first-child{position:relative}
.lixp tbody tr td:first-child::before{content:'';position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--tc,transparent)}
.lt-pedido{background:var(--bb);color:var(--bu)}
.lt-cliente{background:var(--pb);color:var(--pu)}
.lt-envio{background:var(--gb);color:var(--gn)}
.lt-estoque{background:var(--gp);color:var(--gd)}
.lt-abertura{background:var(--ob);color:var(--or)}
.lt-outro{background:var(--cr3);color:var(--tn)}
body.dark .lt-pedido{background:rgba(43,95,138,.28)}
body.dark .lt-cliente{background:rgba(107,63,160,.28)}
body.dark .lt-envio{background:rgba(61,122,82,.26)}
body.dark .lt-estoque{background:rgba(190,138,5,.24)}
body.dark .lt-abertura{background:rgba(140,144,152,.22)}
.lix-nm{font-weight:700;font-size:13px}
.lix-sub{font-size:11px;color:var(--tn);margin-top:1px}
.lix-pr{font-weight:700;color:var(--gd)}
.lix-pill{display:inline-block;font-size:11px;font-weight:600;padding:3px 9px;border-radius:20px;background:var(--cr3);color:var(--tn)}
.lix-resumo{font-size:12px;color:var(--tn);margin-bottom:12px;padding:0 2px}
.lix-resumo b{color:var(--dk);font-weight:700}
/* v4.5.0: o bloco "ETIQUETAS premium (v2.8.0)" saiu daqui — era o CSS da `<table class="tetq">` e os
   badges pill `.etq-st`/`.s-*`. A tela virou talão (ver o bloco v4.5.0 acima) e o status agora é CARIMBO,
   que recebe a cor por `style="color:…"` inline — não precisa mais de uma classe por status. */
/* ── v2.8.1: CUSTOS premium (Bloco C) ── */
/* ═══ v4.6.0 — ABA CUSTOS OP.: "ONDE FOI O DINHEIRO" ══════════════════════════════════════
   Era uma `<table class="cusp">` (Item·Valor·Data·Notas·Ações) onde R$361 e R$17 tinham o MESMO
   peso visual. Agora: ordenado por valor, cada item com BARRA DE PARTICIPAÇÃO no total — dá pra
   ver que o alicate come ~59% do gasto, informação que a tabela nunca contou. A coluna "Notas"
   morreu (estava 0 de 7 preenchida): virou sublinha, só quando existir. Escolhida por prévia
   (`preview-custos.html`, proposta 2). */
.cus-kpis{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px;margin-bottom:12px}
.cus-kpi{background:var(--cr2);border:1px solid var(--bd);border-radius:var(--r);padding:11px 14px;box-shadow:var(--sh)}
.cus-kpi .lbl{display:block;font-size:9px;letter-spacing:.14em;text-transform:uppercase;font-weight:700;color:var(--tn)}
.cus-kpi .v{font-size:19px;font-weight:800;margin-top:2px;font-variant-numeric:tabular-nums}
.cus-kpi.gold .v{color:var(--gd)}
body.dark .cus-kpi.gold .v{color:var(--gd2)}
.cus-kpi .sub{display:block;font-size:10.5px;color:var(--tn);margin-top:1px}
.cus-card{background:var(--cr2);border:1px solid var(--bd);border-radius:var(--r);box-shadow:var(--sh);padding:6px 16px}
.cus-row{display:grid;grid-template-columns:minmax(0,1fr) auto;row-gap:6px;padding:11px 0;border-bottom:1px solid var(--bl)}
.cus-row:last-child{border-bottom:0}
.cus-l{min-width:0}
.cus-nm{font-weight:700;font-size:13px}
.cus-meta{font-size:11px;color:var(--tn);margin-left:8px;white-space:nowrap}
.cus-obs{display:block;font-size:11px;color:var(--tn);margin-top:2px;font-style:italic}
.cus-pill{font-size:9px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--gd);background:var(--gp);border-radius:5px;padding:2px 6px;margin-left:6px;white-space:nowrap}
body.dark .cus-pill{color:var(--gd2);background:rgba(224,182,60,.17)}
.cus-r{display:flex;align-items:center;gap:10px;justify-self:end}
.cus-val{font-weight:700;font-size:13px;color:var(--rd);white-space:nowrap;font-variant-numeric:tabular-nums}
body.dark .cus-val{color:#C4614E}
.cus-barrow{grid-column:1/-1;display:flex;align-items:center;gap:9px}
.cus-track{flex:1;height:8px;border-radius:4px;background:#EDD8D2;overflow:hidden}
body.dark .cus-track{background:#27282C}
/* min-width: sem isso um item de 2,9% vira fiapo invisível e a barra deixa de comunicar */
.cus-track i{display:block;height:100%;min-width:3px;background:var(--rd);border-radius:0 4px 4px 0}
body.dark .cus-track i{background:#C4614E}
.cus-pct{flex:0 0 44px;font-size:11px;font-weight:600;color:var(--tn);text-align:right;font-variant-numeric:tabular-nums}
@media(max-width:600px){
  #page-custos .cus-kpis{grid-template-columns:minmax(0,1fr)}
  #page-custos .cus-card{padding:4px 13px}
  #page-custos .cus-meta{display:block;margin:1px 0 0}
  #page-custos .cus-kpi .v{font-size:16px}
}
/* v4.6.0: as regras antigas de `.cus-nm`/`.cus-val`/`.cus-dt`/`.cus-obs` da tabela saíram daqui —
   as novas estão no bloco "ONDE FOI O DINHEIRO" acima. `.cus-dt` (pílula da data) morreu de vez: a
   data virou `.cus-meta`, texto solto ao lado do nome. ⚠️ `id="cus-dt"` segue existindo — é o INPUT
   de data do modal de custo, coisa diferente. */
/* ── v2.9.5: FRETE premium (Bloco C) ── */
input[readonly]{background:var(--cr3);color:var(--tn)}
.fr-boxgrp{background:var(--cr3);border:1px dashed var(--bd);border-radius:var(--rs);padding:12px 13px;margin-bottom:14px}
.fr-boxlbl{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--tn);margin-bottom:8px;display:flex;align-items:center;gap:6px}
.fr-boxlbl .edit{font-size:8.5px;font-weight:600;letter-spacing:0;text-transform:none;color:var(--gd);background:var(--gp);padding:1px 6px;border-radius:10px}
.fr-reshd{display:flex;align-items:baseline;justify-content:space-between;margin:6px 2px 12px}
.fr-reshd h3{font-family:'Playfair Display',serif;font-size:16px;font-weight:700}
.fr-reshd span{font-size:11.5px;color:var(--tn)}
.fr-sum{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.fr-sum .chip{font-size:11px;color:var(--tn);background:var(--cr3);border-radius:20px;padding:5px 11px;display:inline-flex;align-items:center;gap:6px}
.fr-sum .chip b{color:var(--dk);font-weight:700}
.fr-sum .chip .ic{width:12px;height:12px;color:var(--gd)}
.fr-opt{display:flex;align-items:center;gap:14px;background:var(--cr2);border:1px solid var(--bl);border-left:4px solid var(--carc,var(--tn));border-radius:var(--rs);padding:13px 16px;margin-bottom:9px;box-shadow:var(--sh);transition:transform .12s,box-shadow .15s,border-color .15s}
.fr-opt:hover{transform:translateY(-1px);box-shadow:var(--sh2)}
.fr-opt.best{border-color:var(--gd2);box-shadow:0 0 0 1px var(--gd2),var(--sh)}
.fr-dot{width:10px;height:10px;border-radius:3px;background:var(--carc,var(--tn));flex-shrink:0}
.fr-main{min-width:0}
.fr-co{font-size:14px;font-weight:700;text-transform:capitalize;white-space:nowrap}
.fr-sv{font-size:11.5px;color:var(--tn);text-transform:capitalize;font-weight:400}
.fr-tags{display:flex;gap:5px;margin-top:5px}
.fr-tag{font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:3px 8px;border-radius:20px;white-space:nowrap}
.fr-tag.cheap{background:var(--gp);color:var(--gd)}
.fr-tag.fast{background:var(--bb);color:var(--bu)}
.fr-mid{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--tn);white-space:nowrap;margin-left:auto}
.fr-mid .ic{width:13px;height:13px;color:var(--gd)}
.fr-price{font-family:'Playfair Display',serif;font-size:19px;font-weight:700;color:var(--gd);white-space:nowrap;text-align:right}
.fr-indisp-h{display:flex;align-items:center;gap:7px;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--rd);margin:20px 2px 9px}
.fr-indisp-h .ic{width:14px;height:14px}
.fr-opt.off{opacity:.72;border-left-color:var(--rd);box-shadow:none}
.fr-opt.off:hover{transform:none;box-shadow:none}
.fr-opt.off .fr-co{color:var(--rd);font-size:13px}
.fr-err{font-size:11px;color:var(--rd);margin-left:auto;text-align:right}
@media(max-width:560px){.fr-opt{flex-wrap:wrap;gap:8px}}
/* v4.0.14: modal de frete unificado — declaração/seguro editável (destaque) + fretes em cards + recotização auto */
.fr-seg-hero{display:flex;align-items:center;justify-content:space-between;gap:10px;background:linear-gradient(135deg,var(--gp),transparent);border:1px solid var(--gd2);border-radius:12px;padding:12px 15px;flex-wrap:wrap}
.fr-seg-lbl{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--tn);font-weight:700}
.fr-seg-big{font-family:'Playfair Display',serif;font-size:24px;font-weight:700;color:var(--gd);font-variant-numeric:tabular-nums;line-height:1.1;margin-top:2px}
.fr-seg-edit{font-size:11px;font-weight:700;color:var(--gd);background:var(--cr2);border:1px solid var(--gd2);border-radius:20px;padding:5px 12px;cursor:pointer;white-space:nowrap;display:inline-flex;align-items:center;gap:4px}
.fr-seg-edit:hover{background:var(--gp)}
.fr-chev{transition:transform .2s;display:inline-block}
.fr-seg-edit.open .fr-chev{transform:rotate(180deg)}
.fr-seg-items{max-height:0;overflow:hidden;transition:max-height .28s ease}
.fr-seg-items.open{max-height:440px;overflow:auto}
.fr-decl-box{background:var(--cr3);border:1px solid var(--bl);border-radius:var(--rs);padding:11px 12px;margin-top:9px}
.fr-drow{display:flex;gap:7px;align-items:center;margin-bottom:6px}
.fr-drow:last-of-type{margin-bottom:0}
.fr-drow input{font-family:inherit;font-size:12.5px;color:var(--dk);background:var(--cr2);border:1px solid var(--bd);border-radius:7px;padding:6px 9px}
.fr-dnome{flex:1;min-width:0}
.fr-dval{width:84px;text-align:right;font-variant-numeric:tabular-nums}
.fr-dcur{font-size:11.5px;color:var(--tn)}
.fr-drm{background:none;border:1px solid var(--bd);border-radius:7px;width:28px;height:29px;cursor:pointer;color:var(--rd);font-size:12px;flex:none;opacity:.7}
.fr-drm:hover{opacity:1;background:var(--cr2)}
.fr-decl-add{margin-top:8px;background:none;border:1px dashed var(--bd);border-radius:7px;padding:6px 11px;cursor:pointer;color:var(--gd);font-size:11.5px;font-weight:600}
.fr-decl-add:hover{background:var(--gp);border-style:solid}
.fr-decl-hint{font-size:10.5px;color:var(--tn);font-style:italic;margin-top:8px}
.fr-divi-t{display:flex;align-items:center;gap:10px;margin:15px 0 11px;color:var(--tn);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.09em}
.fr-divi-t::before,.fr-divi-t::after{content:"";flex:1;height:1px;background:var(--bl)}
#m-frete-opts{transition:opacity .18s}
#m-frete-opts.fr-loading{opacity:.4;pointer-events:none}
.fr-loadbox{display:flex;align-items:center;justify-content:center;gap:8px;color:var(--tn);font-size:12.5px;font-weight:600;padding:22px 10px}
.fr-spinner{width:15px;height:15px;border:2px solid var(--bl);border-top-color:var(--gd2);border-radius:50%;animation:frsp .7s linear infinite;flex:none}
@keyframes frsp{to{transform:rotate(360deg)}}
.fr-cards{display:flex;flex-direction:column;gap:9px}
.fr-card{display:flex;align-items:center;gap:12px;background:var(--cr2);border:1px solid var(--bl);border-left:4px solid var(--cc,var(--tn));border-radius:10px;padding:11px 14px;cursor:pointer;transition:transform .12s,box-shadow .15s,border-color .15s}
.fr-card:hover{transform:translateY(-1px);box-shadow:var(--sh2)}
.fr-card.best{border-color:var(--gd2);box-shadow:0 0 0 1px var(--gd2),var(--sh)}
.fr-cdot{width:9px;height:9px;border-radius:50%;background:var(--cc,var(--tn));flex:none}
.fr-cmain{flex:1;min-width:0}
.fr-ccar{font-weight:700;font-size:13px}
.fr-csv{font-weight:500;color:var(--tn);font-size:11.5px}
.fr-cmeta{font-size:11px;color:var(--tn);margin-top:2px}
.fr-cprc{font-weight:800;color:var(--gn);font-size:15px;font-variant-numeric:tabular-nums;white-space:nowrap}
.fr-indisp{margin-top:16px;padding-top:12px;border-top:2px dashed var(--bd)}
/* v4.4.3 (Onda 5): havia uma 2ª definição global de `.fr-indisp-h` aqui, com margens conflitantes — ela vencia
   por vir depois e matava o respiro superior no uso SOLTO do cabeçalho (`:6725`, sem o wrapper `.fr-indisp`),
   colando o "Indisponíveis" no elemento de cima. Agora o respiro é o padrão e só é zerado DENTRO do bloco,
   onde o `.fr-indisp` já dá margem e padding. */
.fr-indisp .fr-indisp-h{margin:0 0 6px}
.fr-indisp-row{font-size:11px;color:var(--rd);padding:4px 0;opacity:.8}
/* v4.0.15 (Bloco 1): pills (reusa .fr-tag), ajustar embalagem, lembrete de ponto, aviso de lucro */
.fr-card .fr-tags{margin-top:6px}
.fr-cright{display:flex;flex-direction:column;align-items:flex-end;gap:2px;flex:none}
.fr-clucro{display:none;font-size:9.5px;color:var(--rd);font-weight:700;white-space:nowrap}
#m-frete-sel.fr-absorve .fr-clucro{display:block}
/* v4.13.0 — as duas caixas do bloco de declaração (adicionar seguro · declaração real) */
.fr-decl-opts{display:flex;flex-direction:column;gap:7px;margin-top:10px}
.fr-decl-opts label{display:flex;align-items:flex-start;gap:7px;font-size:12.5px;color:var(--dk);cursor:pointer;line-height:1.35}
.fr-decl-opts input{accent-color:var(--or);width:15px;height:15px;margin-top:1px;flex:0 0 auto}
.fr-decl-opts span{color:var(--tn);font-size:11px}
.fr-cponto{font-size:10px;color:var(--or);margin-top:6px;display:inline-flex;align-items:center;gap:4px;font-weight:600}
.fr-cponto .ic{width:11px;height:11px}
.fr-emb-toggle{display:flex;align-items:center;gap:7px;width:100%;margin-top:10px;background:var(--cr3);border:1px solid var(--bl);border-radius:var(--rs);padding:9px 12px;cursor:pointer;font-size:12px;color:var(--br);font-weight:600}
.fr-emb-toggle .ic{color:var(--gd2)}
.fr-emb-toggle b{font-weight:700;color:var(--dk);font-variant-numeric:tabular-nums}
.fr-emb-toggle .fr-chev{margin-left:auto}
.fr-emb-toggle.open .fr-chev{transform:rotate(180deg)}
.fr-emb-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;background:var(--cr3);border:1px solid var(--bl);border-radius:var(--rs);padding:11px 12px;margin-top:7px}
.fr-emb-grid label{font-size:9px;text-transform:uppercase;letter-spacing:.04em;color:var(--tn);font-weight:700;display:flex;flex-direction:column;gap:4px}
.fr-emb-grid input{font-family:inherit;font-size:12.5px;color:var(--dk);background:var(--cr2);border:1px solid var(--bd);border-radius:7px;padding:6px 8px;width:100%;text-align:center;font-variant-numeric:tabular-nums}
@media(max-width:520px){.fr-emb-grid{grid-template-columns:repeat(2,1fr)}}
/* ── item 22: BUSCA GLOBAL no sidebar + flyout de detalhe ── */
.gs-wrap{padding:11px 12px 4px}
.gs-box{display:flex;align-items:center;gap:8px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);border-radius:9px;padding:8px 11px;transition:all .15s}
.gs-box:focus-within{border-color:var(--gd2);background:rgba(224,182,60,.09);box-shadow:0 0 0 3px rgba(224,182,60,.13)}
.gs-box .ic{width:15px;height:15px;color:rgba(225,226,229,.45);flex-shrink:0}
.gs-box:focus-within .ic{color:var(--gd2)}
.gs-inp{flex:1;min-width:0;background:none;border:none;outline:none;font-family:inherit;font-size:13px;color:#E1E2E5}
.gs-inp::placeholder{color:rgba(225,226,229,.38)}
.gs-x{background:none;border:none;color:rgba(225,226,229,.4);cursor:pointer;font-size:14px;line-height:1;padding:0 2px;display:none}
.gs-x.on{display:block}
.gs-res{flex:1;overflow-y:auto;padding:6px 8px;min-height:0}
.gs-grp{font-size:9px;letter-spacing:.13em;text-transform:uppercase;color:rgba(225,226,229,.32);font-weight:700;padding:10px 8px 4px;display:flex;gap:6px}
.gs-grp .gs-cnt{margin-left:auto;color:var(--gd2);background:rgba(224,182,60,.15);border-radius:8px;padding:0 6px;font-size:8.5px;letter-spacing:0}
.gs-row{display:flex;align-items:center;gap:10px;padding:8px 9px;border-radius:8px;cursor:pointer;transition:background .11s}
.gs-row:hover,.gs-row.sel{background:rgba(255,255,255,.08)}
.gs-row.sel{box-shadow:inset 2px 0 0 var(--gd2)}
.gs-eico{width:27px;height:27px;border-radius:7px;display:flex;align-items:center;justify-content:center;flex-shrink:0;background:var(--gs-ib)}
.gs-eico .ic{width:14px;height:14px;color:var(--gs-ic)}
.gs-e-cli{--gs-ib:rgba(107,63,160,.24);--gs-ic:#c9a3f0}
.gs-e-ped{--gs-ib:rgba(190,138,5,.24);--gs-ic:#F1C34E}
.gs-e-ab{--gs-ib:rgba(140,144,152,.24);--gs-ic:#F8CF68}
.gs-e-env{--gs-ib:rgba(43,95,138,.3);--gs-ic:#7db6e8}
.gs-tx{min-width:0;flex:1}
.gs-t1{font-size:12.5px;font-weight:600;color:#E1E2E5;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gs-t2{font-size:10.5px;color:rgba(225,226,229,.45);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}
.gs-val{font-size:11px;font-weight:700;color:var(--gd2);white-space:nowrap;flex-shrink:0}
.gs-mk{background:rgba(224,182,60,.32);color:#fff;border-radius:2px;padding:0 1px}
.gs-empty{text-align:center;color:rgba(225,226,229,.4);font-size:12px;padding:24px 10px}
.gs-empty .ic{width:26px;height:26px;opacity:.5;margin-bottom:8px}
.gs-fly{position:fixed;left:258px;width:296px;background:var(--cr2);border:1px solid var(--bl);border-radius:14px;box-shadow:var(--shm);padding:18px 18px 16px;z-index:250;opacity:0;transform:translateX(-8px);pointer-events:none;transition:opacity .16s,transform .16s,top .16s}
.gs-fly.show{opacity:1;transform:none;pointer-events:auto}
.gs-fly::before{content:'';position:absolute;left:-7px;top:26px;width:13px;height:13px;background:var(--cr2);border-left:1px solid var(--bl);border-bottom:1px solid var(--bl);transform:rotate(45deg)}
.gs-fly-ico{width:50px;height:50px;border-radius:13px;margin-bottom:11px;display:flex;align-items:center;justify-content:center;background:var(--gs-ib)}
.gs-fly-ico .ic{width:25px;height:25px;color:var(--gs-ic)}
.gs-fly-t1{font-family:'Playfair Display',serif;font-size:18px;font-weight:700;color:var(--dk)}
.gs-fly-t2{font-size:11.5px;color:var(--tn);text-transform:uppercase;letter-spacing:.05em;margin-bottom:13px}
.gs-fly-line{display:flex;justify-content:space-between;gap:12px;font-size:12.5px;padding:7px 0;border-bottom:1px solid var(--bl)}
.gs-fly-line .k{color:var(--tn)}
.gs-fly-line .v{font-weight:600;text-align:right;color:var(--dk)}
.gs-fly-go{margin-top:15px;width:100%;padding:10px;border:none;border-radius:9px;background:linear-gradient(135deg,var(--gd2),var(--gd));color:#fff;font-family:inherit;font-weight:700;font-size:13px;cursor:pointer}
@media(max-width:768px){.gs-fly{display:none}}
.bk{background:none;border:1px solid var(--bd);border-radius:var(--rs);padding:4px 9px;cursor:pointer;font-size:11.5px;color:var(--br);transition:all .13s}
.bk:hover{background:var(--cr3)}
.wpp-bg{background:#DBDCDF;border-radius:var(--rs);padding:10px;max-height:200px;overflow-y:auto}
.wpp-bbl{background:#fff;border-radius:0 8px 8px 8px;padding:7px 10px;display:inline-block;max-width:94%;white-space:pre-wrap;font-family:'Segoe UI',sans-serif;color:#111;font-size:11.5px}
.empty{text-align:center;padding:36px 14px;color:var(--tn)}
.e-ico{font-size:30px;opacity:.26;margin-bottom:6px}
.e-ttl{font-family:'Playfair Display',serif;font-size:14px;color:var(--br);margin-bottom:2px}
.e-sub{font-size:12px}
.tw-wrap{position:fixed;bottom:14px;right:14px;z-index:9999;display:flex;flex-direction:column;gap:4px}
.toast{background:var(--dk);color:var(--cr);padding:8px 12px;border-radius:var(--rs);font-size:12px;max-width:280px;display:flex;align-items:center;gap:5px;animation:su .25s ease}
.t-ok{background:var(--gn)}.t-err{background:var(--rd)}.t-warn{background:var(--or)}
.banner{background:var(--ob);border:1px solid var(--or);border-radius:var(--rs);padding:9px 12px;margin-bottom:13px;font-size:12px;color:var(--or);display:flex;align-items:flex-start;gap:6px}
.env-cancel{margin-top:11px}   /* v4.18.0: o banner vive DENTRO do card, que só traz margem embaixo */
.env-obs{font-size:11.5px;color:var(--br);background:var(--cr3);border-radius:var(--rs);padding:6px 10px;margin:8px 0 0;white-space:pre-wrap}   /* v1.4: observação do cliente levada ao envio */
.banner.info{background:var(--bb);border-color:var(--bu);color:var(--bu)}
.sw{position:relative;margin-bottom:11px}
.sw input{padding-left:30px}
.sico{position:absolute;left:9px;top:50%;transform:translateY(-50%);color:var(--tn);pointer-events:none;font-size:12px}
hr{border:none;border-top:1px solid var(--bl);margin:12px 0}
.row{display:flex;align-items:center;justify-content:space-between;gap:7px;flex-wrap:wrap;margin-bottom:11px}
.vg{color:var(--gn);font-weight:600}.vr{color:var(--rd);font-weight:600}
.tabs{display:flex;gap:0;border-bottom:1px solid var(--bd);margin-bottom:14px}
.tab{padding:7px 16px;cursor:pointer;font-size:12.5px;color:var(--tn);border-bottom:2px solid transparent;margin-bottom:-1px;transition:all .14s;font-weight:500}
.tab:hover{color:var(--br)}
.tab.active{color:var(--gd);border-bottom-color:var(--gd)}
.img-prev{width:100%;max-height:120px;object-fit:contain;border-radius:var(--rs);margin-top:6px;background:var(--cr3);border:1px solid var(--bl)}
/* v1.9.2: feedback de press universal em itens/cards/linhas clicáveis (pedido do dono) */
.sb-item:active,.sb-dk-btn:active,.bk:active,.tab:active,.est-row:active,.mx:active,.abc-img:active{transform:translateY(1px)}
.abc:active{transform:translateY(-1px)}
tbody tr[onclick]:active td{background:rgba(224,182,60,.13)}
/* v2.7.7: Envios premium (Bloco B 2/3) */
.env-card{position:relative;overflow:hidden;background:var(--cr2);border:1px solid var(--bd);border-radius:var(--r);padding:16px 18px;margin-bottom:12px;box-shadow:var(--sh);transition:box-shadow .18s}
.env-card:hover{box-shadow:var(--sh2)}
.env-card::before{content:'';position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--sc,var(--tn))}
.env-card-hd{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}
.env-cl{font-family:'Playfair Display',serif;font-size:18px;font-weight:700}
.env-meta{display:flex;flex-wrap:wrap;gap:4px 12px;font-size:11.5px;color:var(--tn);margin-top:3px}
.env-meta span{display:inline-flex;align-items:center;gap:4px;min-width:0}
.env-meta .ic{width:13px;height:13px;opacity:.75;flex-shrink:0}
.env-hd-r{display:flex;align-items:center;gap:6px;flex-shrink:0}
.env-card .bdg::before{content:'';width:7px;height:7px;border-radius:50%;background:currentColor;display:inline-block;margin-right:5px;flex-shrink:0}
.env-ghost{width:30px;height:30px;border:1px solid var(--bl);background:transparent;border-radius:8px;cursor:pointer;color:var(--tn);transition:.14s;display:inline-flex;align-items:center;justify-content:center;padding:0}
.env-ghost:hover{border-color:var(--gd2);color:var(--gd);background:var(--cr3)}
.env-ghost.rm:hover{border-color:var(--rd);color:var(--rd);background:var(--rb)}
.env-ghost .ic{width:15px;height:15px}
.env-items{padding:0;margin-bottom:13px;display:grid;grid-template-columns:1fr 1fr;gap:8px}
/* v4.19.0: envio conjunto — divisor por dono e rodapé do pacote */
.env-sep-cl{display:flex;align-items:baseline;gap:8px;margin:2px 0 7px;padding-bottom:5px;border-bottom:1px solid var(--bl)}
.env-sep-cl .dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}
.env-sep-cl .nm{font-size:11.5px;font-weight:800;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.env-sep-cl .qt{font-size:10.5px;color:var(--tn);white-space:nowrap}
.env-sep-cl .vl{margin-left:auto;font-size:11.5px;font-weight:700;color:var(--or);white-space:nowrap}
.env-pacote{display:flex;flex-wrap:wrap;gap:14px;font-size:11px;color:var(--tn);border-top:1px solid var(--bl);padding-top:9px;margin-bottom:13px}
.env-pacote b{color:var(--dk)}
.env-pacote .vl{margin-left:auto}
.env-pacote .vl b{color:var(--or)}
/* v6.10.0: janela do envio conjunto — um bloco por cliente, cada pedido com a sua caixa */
.cj-bloco{border:1px solid var(--bl);border-radius:var(--rs);margin-bottom:10px;background:var(--cr)}
.cj-hd{display:flex;align-items:center;gap:8px;padding:8px 10px;border-bottom:1px solid var(--bl);flex-wrap:wrap}
.cj-hd .dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}
.cj-hd .nm{font-size:12.5px;font-weight:800;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:60%}
.cj-hd .qt{font-size:11px;color:var(--tn);white-space:nowrap}
.cj-hd .mx{margin-left:2px}
.cj-tag{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;padding:2px 7px;border-radius:20px;background:var(--gp);color:var(--br)}
.cj-lnk{margin-left:auto;background:none;border:none;font-size:11px;font-weight:700;color:var(--bu);cursor:pointer;padding:2px 0;font-family:inherit}
.cj-lista{padding:4px 0}
.cj-ped{display:flex;align-items:center;gap:8px;padding:6px 10px;margin:0;font-size:12.5px;font-weight:400;text-transform:none;letter-spacing:normal;color:var(--dk);cursor:pointer}
.cj-ped:hover{background:var(--cr2)}
.cj-ped input{flex-shrink:0;width:16px;height:16px;margin:0;accent-color:var(--gd)}
.cj-ped .fr{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
.cj-ped .ml{color:var(--tn);white-space:nowrap}
.cj-ped .pg{font-size:10px;font-weight:700;white-space:nowrap}
.cj-ped .pg.ok{color:var(--gn)} .cj-ped .pg.no{color:var(--or)}
.cj-ped .vl{font-weight:700;white-space:nowrap;min-width:64px;text-align:right}
.cj-add{display:flex;gap:6px}
.cj-add .dlg-inp{flex:1;min-width:0}
.cj-fb{font-size:11.5px;color:var(--or);min-height:16px;margin:5px 0 8px}
.cj-resumo{margin-right:auto;align-self:center;font-size:11.5px;color:var(--tn)}
@media(max-width:560px){.env-items{grid-template-columns:1fr}}
.env-item-ml{font-size:11px;font-weight:700;color:var(--or);margin-left:4px}
.env-item-card{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 11px;background:var(--cr);border:1px solid var(--bl);border-radius:var(--rs);margin:0;box-shadow:none}
.env-acts{display:flex;gap:7px;flex-wrap:wrap;align-items:center;padding-top:12px;border-top:1px solid var(--bl)}
.env-acts .sp{flex:1}
/* botões ghost minimalistas (v2.7.8): fundo neutro, borda fina, ícone colorido por ação */
.eb{font-family:inherit;font-size:12.5px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:.15s;border-radius:9px;padding:8px 13px;line-height:1;background:var(--cr);border:1px solid var(--bd);color:var(--dk)}
.eb:hover{border-color:var(--gd2);background:var(--cr3)}
.eb:active{transform:translateY(1px)}
.eb .ic{width:15px;height:15px;color:var(--ac,var(--tn))}
.eb.prim{background:var(--gd);border-color:var(--gd);color:#fff}
.eb.prim .ic{color:#fff}
.eb.prim:hover{background:var(--gd2);border-color:var(--gd2)}
/* v4.0.19: selo "frete a receber" + painel "A receber" no card de envio */
.env-selo{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:800;padding:5px 11px;border-radius:20px;white-space:nowrap;background:var(--gp);color:var(--gd);border:1px solid var(--gd2)}
.env-selo.ok{background:var(--gb);color:var(--gn);border-color:var(--gn)}
/* v4.7.2: selo DISCRETO pro frete nao confirmado depois de postado. Existe porque o alerta de dinheiro
   estava amarrado ao status: envio que avanca (sozinho, pelo rastreio) sumia do radar levando o frete
   junto. Medido em 01/08: 20 envios, R$357,91 invisiveis. Discreto de proposito - em 19 deles o pacote
   ja foi entregue, entao provavelmente e so marcacao atrasada, nao calote. Gritar ali seria ruido. */
.env-selo.mut{background:transparent;color:var(--tn);border-color:var(--bd);font-weight:600}
.env-selo .ic{width:13px;height:13px}
.receb{background:linear-gradient(160deg,rgba(224,182,60,.10),transparent);border:1px solid var(--gd2);border-radius:12px;padding:12px 14px;margin-bottom:13px}
.receb.ok{background:linear-gradient(160deg,rgba(61,122,82,.13),transparent);border-color:var(--gn)}
.rc-h{display:flex;align-items:center;gap:6px;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.07em;color:var(--tn);margin-bottom:10px}
.rc-h .ic{width:13px;height:13px;color:var(--gd)}
.rc-line{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 0;border-bottom:1px dashed var(--bl)}
.rc-l{display:flex;align-items:center;gap:9px;font-size:13px;font-weight:600;min-width:0}
.rc-l small{color:var(--tn);font-weight:500;font-size:11px}
.rc-dt{width:9px;height:9px;border-radius:50%;flex:none}
.rc-dt.g{background:var(--gn)}.rc-dt.o{background:var(--or)}
.rc-r{display:flex;align-items:center;gap:9px;flex-shrink:0}
.rc-st{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:800;padding:3px 10px;border-radius:20px}
.rc-st.pago{background:var(--gb);color:var(--gn)}
.rc-st.rec{background:var(--ob);color:var(--or)}
.rc-st.mut{background:var(--cr3);color:var(--tn)}
.rc-st .ic{width:12px;height:12px}
.rc-mark{font-size:10.5px;font-weight:700;color:var(--gd2);background:var(--cr2);border:1px solid var(--gd2);border-radius:20px;padding:3px 9px;cursor:pointer;white-space:nowrap;margin-left:4px}
.rc-mark:hover{background:var(--gp)}
/* v4.14.0 — opções de frete congeladas no card de Envios (o cliente escolhe pagando) */
.frop-op{cursor:pointer;transition:.15s;border-radius:8px;margin:0 -6px;padding-left:6px;padding-right:6px}
.frop-op:hover{background:var(--cr3)}
.frop-ok{font-size:10.5px;font-weight:800;color:var(--gn);white-space:nowrap;margin-left:4px}
.frop-h-r{margin-left:auto;display:flex;align-items:center;gap:8px;font-size:10px;font-weight:600;letter-spacing:0;text-transform:none;color:var(--tn)}
.rc-tot{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-top:11px}
.rc-tl{font-size:12px;color:var(--tn);font-weight:600}
.rc-ok{display:flex;align-items:center;gap:6px;font-size:12.5px;font-weight:800;color:var(--gn)}
.rc-ok .ic{width:15px;height:15px}
.rc-val{font-family:'Playfair Display',serif;font-size:20px;font-weight:700;color:var(--or);font-variant-numeric:tabular-nums}
.rc-val.z{color:var(--gn)}
/* v4.0.20: desistências / sobras (seção dentro de Aberturas) */
.ds-hd{display:flex;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap}
.ds-t{font-family:'Playfair Display',serif;font-size:19px;font-weight:700;display:flex;align-items:center;gap:9px;color:var(--br)}
.ds-t .ic{width:19px;height:19px;color:var(--gd2)}
.ds-badge{background:var(--gp);color:var(--gd);border:1px solid var(--gd2);border-radius:20px;padding:2px 10px;font-size:12px;font-weight:800}
.ds-list{display:flex;flex-direction:column;gap:9px}
.ds-card{display:flex;align-items:center;gap:12px;background:var(--cr2);border:1px solid var(--bl);border-left:4px solid var(--gd2);border-radius:11px;padding:12px 14px;flex-wrap:wrap}
.ds-card .ds-chk{width:18px;height:18px;accent-color:var(--gd);flex:none;cursor:pointer}
.ds-main{flex:1;min-width:120px}
.ds-nm{font-size:13.5px;font-weight:700;display:flex;align-items:center;gap:4px}
.ds-meta{font-size:11px;color:var(--tn);margin-top:2px;display:flex;gap:9px;flex-wrap:wrap;align-items:center}
.ds-orig{display:inline-flex;align-items:center;gap:4px;background:var(--cr3);border-radius:20px;padding:2px 9px;font-size:10px;font-weight:600}
.ds-orig .ic{width:11px;height:11px}
.ds-vr{text-align:right;flex:none}
.ds-qt{font-size:12.5px;font-weight:700;color:var(--or)}
.ds-val{font-family:'Playfair Display',serif;font-size:15px;font-weight:700;color:var(--or);font-variant-numeric:tabular-nums}
.ds-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:16px;padding-top:13px;border-top:1px solid var(--bl);flex-wrap:wrap}
.ds-cnt{font-size:12px;color:var(--tn);font-weight:600}
.prow2.desist{opacity:.72}
.cli-desist{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;font-weight:700;color:var(--gd)}
.cli-desist .ic{width:13px;height:13px}
/* v4.11.0 (item 7 do Henrique): a desistência continua VISÍVEL na abertura depois de revendida —
   riscada, discreta, fora de toda soma. É só lembrete de que houve desistência ali. */
.p-hist{font-size:10.5px;color:var(--tn);margin-top:2px;display:flex;align-items:center;gap:4px;flex-wrap:wrap}
.p-hist s{opacity:.85}
.p-hist .ic{width:11px;height:11px;flex-shrink:0}
/* checkbox do popup de cobrança */
.cobenv-chk{display:flex;align-items:center;gap:10px;background:var(--cr);border:1px solid var(--bl);border-radius:var(--rs);padding:12px 14px;margin:14px 0;cursor:pointer}
.cobenv-chk input{width:18px;height:18px;accent-color:var(--gd);cursor:pointer;flex-shrink:0}
/* ── v1.8 — CENTRAL DE COBRANÇA (prefixo cob-) ── */
.cob-tabs{overflow-x:auto;scrollbar-width:none}
.cob-tabs::-webkit-scrollbar{display:none}
.cob-tabs .tab{background:none;border:0;border-bottom:2px solid transparent;font-family:inherit;white-space:nowrap;flex:none;display:inline-flex;align-items:center;gap:5px}
.cob-tabs .tab.active{border-bottom-color:var(--gd)}
body.dark .cob-tabs .tab.active{border-bottom-color:var(--gd2)}
.cob-n{font-size:9.5px;font-weight:700;background:var(--cr3);color:var(--tn);border-radius:9px;padding:1px 6px}
.cob-n:empty{display:none}
.cob-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.cob-top .sp{flex:1}
.cob-busca{position:relative;flex:0 1 240px;min-width:160px}
.cob-busca .ic{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--tn);width:14px;height:14px}
.cob-busca input{padding-left:30px}
.cob-ord{width:auto;font-size:12px}
.cob-pills{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}
.cob-fgrp{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-bottom:8px}
.cob-fgrp .ord-lbl{min-width:76px}
.cob-fgrp .pill .cob-n{margin-left:2px}
.cob-fgrp .pill.active .cob-n{background:rgba(255,255,255,.25);color:inherit}
.cob-dir{font-size:11px;color:var(--tn)}
@media(max-width:600px){.cob-fgrp .ord-lbl{min-width:0;width:100%}}
.cob-sub{font-size:11.5px;color:var(--tn);margin-bottom:10px;display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.cob-sub .sp{flex:1}
.cob-row{background:var(--cr2);border:1px solid var(--bl);border-left:3px solid var(--cor,var(--tn));border-radius:var(--r);padding:12px 14px;display:grid;grid-template-columns:42px minmax(0,1fr) auto auto auto auto;gap:12px;align-items:center;margin-bottom:8px;transition:border-color .14s,box-shadow .14s;cursor:pointer}
.cob-row:hover{border-color:var(--gd2);box-shadow:var(--sh)}
.cob-nm{font-weight:700;font-size:13px;display:flex;align-items:center;gap:6px;min-width:0;flex-wrap:wrap}
.cob-nm .t{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.cob-meta{font-size:11px;color:var(--tn);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cob-nota{font-size:11px;color:var(--br);font-style:italic;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cob-val{font-family:'Playfair Display',serif;font-size:17px;font-weight:700;color:var(--or);font-variant-numeric:tabular-nums;white-space:nowrap;text-align:right}
.cob-val small{display:block;font-family:'DM Sans',sans-serif;font-size:10px;color:var(--tn);font-weight:500}
.cob-st{display:flex;flex-direction:column;gap:4px;align-items:flex-end;font-size:10.5px;color:var(--tn);white-space:nowrap}
.cob-dias{border:1px solid var(--cor);color:var(--cor);font-weight:700;font-size:10px;padding:1px 8px;border-radius:10px;white-space:nowrap}
.cob-tel{display:inline-flex;align-items:center;gap:4px;font-size:10.5px;color:var(--tn)}
.cob-tel.no{color:var(--rd);font-weight:700}
.cob-ult{font-size:10.5px;color:var(--tn);text-align:right;white-space:nowrap}
.cob-ult b{color:var(--dk);font-weight:600}
.cob-acts{display:flex;gap:5px;align-items:center}
.cob-av{display:grid;gap:6px;margin-bottom:12px}
.cob-wa{background:#DCF8C6;color:#111;border-radius:10px 10px 10px 2px;padding:10px 12px;font-family:'Segoe UI',system-ui,sans-serif;font-size:12.5px;line-height:1.45;white-space:pre-wrap;word-break:break-word;max-height:300px;overflow-y:auto;box-shadow:0 1px 1px rgba(0,0,0,.08)}
body.dark .cob-wa{background:#005C4B;color:#E9EDEF}
.cob-wa-wrap{background:#ECE5DD;border-radius:var(--rs);padding:12px 12px 10px;margin-bottom:12px}
body.dark .cob-wa-wrap{background:#0B141A}
.cob-wa-cab{font-size:10.5px;color:var(--tn);display:flex;justify-content:space-between;margin-bottom:6px;gap:8px}
.cob-peds{border:1px solid var(--bl);border-radius:var(--rs);margin-bottom:12px;max-height:180px;overflow-y:auto}
.cob-ped{display:flex;justify-content:space-between;gap:8px;align-items:center;padding:7px 10px;border-bottom:1px solid var(--bl);font-size:12px}
.cob-ped:last-child{border-bottom:none}
.cob-ped b{font-variant-numeric:tabular-nums;white-space:nowrap}
.cob-campo{display:flex;gap:6px;align-items:center;margin-bottom:12px}
.cob-campo input{flex:1;min-width:0}
/* régua de lembrete: quem não pode ser lembrado agora vem apagado, com o motivo na frente */
.cob-rg-top{font-size:12.5px;color:var(--br);background:var(--cr3);border-radius:var(--rs);padding:9px 12px;margin:-4px 0 10px}
.cob-rg-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;padding:10px 2px;border-bottom:1px solid var(--bl)}
.cob-rg-row:last-child{border-bottom:none}
.cob-rg-info{flex:1 1 220px;min-width:0}
.cob-rg-info .nm{font-weight:600;font-size:13px;overflow-wrap:anywhere}
.cob-rg-info .det{font-size:11.5px;color:var(--tn);margin-top:2px}
.cob-rg-row.nao .cob-rg-info .nm{color:var(--tn)}
.cob-rg-row.fora{opacity:.55}
.cob-rg-mot{font-size:11px;font-weight:700;color:var(--or);text-transform:uppercase;letter-spacing:.04em;margin-bottom:2px}
.cob-rg-dec{display:flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.cob-regua-cfg{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end;margin-bottom:12px}
.cob-regua-cfg .fg{margin-bottom:0}
.cob-regua-cfg input[type=text],.cob-regua-cfg input[type=time]{width:auto;min-width:110px}
.cob-dash{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:10px}
.cob-dash .big{font-family:'Playfair Display',serif;font-size:22px;font-weight:700;color:var(--or);font-variant-numeric:tabular-nums}
@media(max-width:600px){
  .cob-row{grid-template-columns:36px minmax(0,1fr) auto;grid-template-areas:"av nm val" "av st st" "av ult acts";row-gap:6px}
  .cob-row .a-av{grid-area:av}.cob-row .a-nm{grid-area:nm}.cob-row .a-val{grid-area:val}.cob-row .a-st{grid-area:st;flex-direction:row;align-items:center;justify-content:flex-start;flex-wrap:wrap}.cob-row .a-ult{grid-area:ult;text-align:left}.cob-row .a-acts{grid-area:acts;justify-content:flex-end}
  .cob-busca{flex:1 1 100%}
}
.env-resumo{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-bottom:16px}
.env-resumo.tem-cancel{grid-template-columns:repeat(6,1fr)}   /* v4.18.0: 6ª caixa só existe quando há cancelado */
.env-fnc{margin:-6px 0 16px;padding:9px 13px;border:1px dashed var(--gd2);border-radius:9px;background:var(--gp);color:var(--gd);font-size:12.5px;display:flex;align-items:center;gap:7px}
.env-fnc .ic{width:15px;height:15px;flex-shrink:0}
.env-fnc .fnc-h{color:var(--tn);font-weight:500}
@media(max-width:600px){.env-fnc{font-size:11.5px}.env-fnc .fnc-h{display:none}}
/* v6.12.0 — alertas de prazo/saldo (mesmo desenho do frete não confirmado, no tom de atenção) e o painel do frete */
.env-alr{flex-direction:column;align-items:flex-start;gap:4px;border-color:var(--or);background:transparent;color:var(--or)}
.env-alr div{display:flex;align-items:center;gap:7px}
.env-pf{margin:-6px 0 16px;padding:14px 16px}
.env-pf-hd{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.env-pf-hd .mes{font-weight:700;min-width:120px;text-align:center}
.env-pf table td,.env-pf table th{padding:6px 8px;border-bottom:1px solid var(--bd);text-align:right}
.env-pf table td:first-child,.env-pf table th:first-child{text-align:left}
.env-pf table th{font-size:11px;color:var(--tn);font-weight:600;text-transform:uppercase;letter-spacing:.04em}
.env-pf-rod{display:flex;flex-wrap:wrap;gap:6px 18px;margin-top:10px;font-size:12.5px;color:var(--tn)}
.env-pf-rod b{color:var(--dk)}
.env-meta .pz-alto{color:var(--rd);font-weight:700}
.env-meta .pz-med{color:var(--or);font-weight:700}
.env-rk{background:var(--cr2);border:1px solid var(--bl);border-top:3px solid var(--rkc,var(--gd2));border-radius:var(--rs);padding:11px 12px;text-align:center}
.env-rk .n{font-size:21px;font-weight:700;font-family:'Playfair Display',serif}
.env-rk .l{font-size:10px;color:var(--tn);text-transform:uppercase;letter-spacing:.02em;font-weight:600;margin-top:2px}
@media(max-width:640px){.env-resumo,.env-resumo.tem-cancel{grid-template-columns:1fr 1fr 1fr}}
/* ════════ v4.15.0: MENU LATERAL REBATIVEL (desktop/tablet COM MOUSE) ════════
   A sidebar recolhe numa faixa de icones de 56px e volta aos 252px quando o mouse
   chega, POR CIMA do conteudo. Ligado pelo botao do rodape; padrao DESLIGADO.
   No celular nada muda: la ela ja e gaveta (v4.0.5), e a regra esta presa em
   @media (min-width:601px) and (hover:hover) — tablet sem mouse tambem fica de fora.
   ⚠️ A faixa e DESENHADA como faixa: icone centrado, rotulo de secao virando divisor
   e botao do rodape virando icone. Espremer a barra larga em 56px fica ruim. */
:root{--swc:56px}
@media (min-width:601px) and (hover:hover){
  body.sb-rebat .sb{width:var(--swc);transition:width .18s cubic-bezier(.4,0,.2,1),box-shadow .18s;overflow-x:hidden}
  body.sb-rebat .main{margin-left:var(--swc);transition:margin-left .18s cubic-bezier(.4,0,.2,1)}
  body.sb-rebat .sb:hover{width:var(--sw);box-shadow:10px 0 44px rgba(0,0,0,.4)}
  /* o conteudo mantem a largura CHEIA e a faixa so recorta: nada de texto amassando na animacao */
  /* 🔴 v4.19.1: era `overflow:hidden` e ESCONDIA item de menu sem dar rolagem. O `hidden` existe por
     causa do eixo X (a lista tem a largura EXPANDIDA dentro da barra colapsada, e o texto precisa
     ficar cortado), mas ele matava junto o eixo Y: em janela mais baixa os últimos itens ficavam
     INACESSÍVEIS — medido, com 780px de altura some a Lixeira; com 700px somem Etiquetas, Frete e
     Lixeira. Não dava para chegar neles de jeito nenhum, nem rolando.
     👉 Separar os eixos: X continua cortado, Y volta a rolar. A barra de rolagem fica escondida
     porque nesta faixa a lista é estreita e a barra roubaria espaço do ícone. */
  body.sb-rebat .sb-nav{width:var(--sw);overflow-x:hidden;overflow-y:auto;scrollbar-width:none}
  body.sb-rebat .sb-nav::-webkit-scrollbar{display:none}
  body.sb-rebat .sb-brand,body.sb-rebat .gs-wrap,body.sb-rebat .sb-foot{width:var(--sw);overflow:hidden}
  /* ⛔ estes tres encolhem junto: seu conteudo e CENTRADO, entao com 252px o logo, a lupa
     e os botoes ficavam centrados FORA da faixa de 56px */
  body.sb-rebat .sb:not(:hover) .sb-brand,
  body.sb-rebat .sb:not(:hover) .gs-wrap,
  body.sb-rebat .sb:not(:hover) .sb-foot{width:var(--swc)}
  /* 1. icone centrado */
  body.sb-rebat .sb:not(:hover) .sb-item{padding:10px 0;justify-content:flex-start;position:relative}
  body.sb-rebat .sb:not(:hover) .sb-ico{width:var(--swc);flex:0 0 var(--swc);display:flex;align-items:center;justify-content:center;font-size:17px}
  body.sb-rebat .sb:not(:hover) .sb-item>span:not(.sb-ico):not(.sb-bdg){opacity:0;transition:opacity .1s}
  body.sb-rebat .sb:hover .sb-item>span{opacity:1;transition:opacity .18s .05s}
  body.sb-rebat .sb:not(:hover) .sb-item.active{border-left-width:3px}
  /* 2. o rotulo de secao vira DIVISOR (senao fica um buraco de 30px) */
  body.sb-rebat .sb:not(:hover) .sb-lbl{height:1px;padding:0;margin:11px 14px;overflow:hidden;color:transparent;background:rgba(225,226,229,.13);border-radius:1px}
  body.sb-rebat .sb:hover .sb-lbl{height:auto;padding:14px 18px 4px;margin:0;background:none;color:rgba(225,226,229,.28)}
  /* 3. rodape: os botoes viram icone. ⛔ o rotulo e TEXTO SOLTO no <button>, nao um <span>:
     display:none nao pega. font-size:0 apaga o text node, e o icone (dimensionado por 1em)
     precisa de tamanho fixo de volta. */
  body.sb-rebat .sb:not(:hover) .sb-foot{padding:8px 0 10px}
  body.sb-rebat .sb:not(:hover) .sb-dk-btn{width:38px;height:34px;margin:4px auto;padding:0;gap:0;font-size:0}
  body.sb-rebat .sb:not(:hover) .sb-dk-btn .ic{width:15px;height:15px}
  body.sb-rebat .sb:not(:hover) .sb-copy{display:none}
  /* 4. busca vira so a lupa */
  body.sb-rebat .sb:not(:hover) .gs-wrap{padding:10px 0 4px}
  body.sb-rebat .sb:not(:hover) .gs-box{width:38px;margin:0 auto;padding:9px 0;justify-content:center;gap:0}
  body.sb-rebat .sb:not(:hover) .gs-inp,body.sb-rebat .sb:not(:hover) .gs-x{display:none}
  /* 5. a marca vira so o simbolo. ⛔ o <img> tem style INLINE de 80px: so !important vence */
  body.sb-rebat .sb:not(:hover) .sb-brand{padding:16px 0 14px}
  body.sb-rebat .sb:not(:hover) .sb-logo{align-items:center;gap:0}
  /* ⛔ O logo NAO e sempre um <img>: o build das instancias troca por um
     <span role="img"> com background-image (medido numa instancia: 112x78, vazando 28px
     para fora da faixa). A regra tem de cobrir os dois formatos.
     E o fator: 48 x 1,15 = 55,2px, que cabe na faixa de 56 com QUALQUER proporcao
     de marca. Com 1,25 dava 60px — passava 2px de cada lado, o que e invisivel em
     logo com margem interna e corta logo justo. */
  body.sb-rebat .sb:not(:hover) .sb-logo img,
  body.sb-rebat .sb:not(:hover) .sb-logo [role="img"]{
    width:48px!important;height:48px!important;margin:0 auto!important;
    object-fit:contain;background-size:contain;background-position:center;background-repeat:no-repeat;
    transform:scale(1.15);transition:.18s}
  body.sb-rebat .sb:not(:hover) .sb-name,
  body.sb-rebat .sb:not(:hover) .sb-sub,
  body.sb-rebat .sb:not(:hover) .sb-ver{opacity:0;height:0;overflow:hidden;margin:0}
  /* 6. pendencia vira ponto no canto do icone — o aviso NAO pode sumir com o rotulo */
  body.sb-rebat .sb:not(:hover) .sb-bdg{position:absolute;left:33px;top:6px;margin:0;min-width:9px;height:9px;padding:0;font-size:0;border-radius:50%;border:2px solid var(--dk)}
  /* 7. tooltip: sem rotulo, o icone sozinho nao diz o que e */
  body.sb-rebat .sb:not(:hover) .sb-item::after{content:attr(data-pg);position:absolute;left:calc(var(--swc) + 8px);top:50%;transform:translateY(-50%);background:#000;color:#E1E2E5;font-size:11.5px;padding:5px 9px;border-radius:6px;white-space:nowrap;text-transform:capitalize;opacity:0;pointer-events:none;transition:opacity .12s;z-index:210;box-shadow:0 4px 14px rgba(0,0,0,.5)}
  body.sb-rebat .sb:not(:hover) .sb-item:hover::after{opacity:1}
}
/* v4.0.5: MOBILE — só celular (<600px). Tablet e PC ficam INTACTOS (versão desktop).
   A sidebar vira GAVETA deslizante (aberta pelo ☰), com overlay escuro. */
@media(max-width:600px){
  .tb-burger{display:inline-flex}
  .sb{transform:translateX(-100%);transition:transform .28s cubic-bezier(.4,0,.2,1);width:min(84vw,290px)}
  body.drawer-open .sb{transform:translateX(0);box-shadow:8px 0 44px rgba(0,0,0,.5)}
  .sb-ov{display:block;position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:190;opacity:0;visibility:hidden;transition:opacity .28s}
  body.drawer-open .sb-ov{opacity:1;visibility:visible}
  .main{margin-left:0}
  .page{padding:12px 12px;min-width:0}
  .topbar{padding:12px 14px;gap:10px}
  /* v4.0.7/4.0.8: mata o overflow horizontal no mobile. Causa REAL (medida no device):
     grids `1fr` = minmax(auto,1fr), cujo mínimo é o min-content — então conteúdo largo
     que não quebra (gráfico Chart.js de largura fixa, cabeçalho do calendário, células
     com aspect-ratio) NÃO deixava a coluna encolher e empurrava a página inteira pra fora.
     Fix = minmax(0,1fr)/min-width:0 pra tudo poder encolher + gráfico max-width:100% +
     tabelas ainda-não-convertidas rolam dentro do card. */
  html,body{overflow-x:clip}
  .tb-hl{flex:1;min-width:0}
  .tb-ttl{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .tb-act{flex-shrink:0}
  /* v4.16.0: a barra de ações NÃO encolhe (regra acima) e o overflow-x é `clip` — com três
     botões escritos por extenso o terceiro sairia CORTADO e sem rolagem, não apenas apertado.
     Medido a 390px: 382px de botões contra ~352px de espaço. O rótulo do botão novo some e
     fica o ícone (título e aria-label seguem dizendo o que ele faz). */
  .rot-md{display:none}
  .card{min-width:0}
  canvas{max-width:100%}
  .tw{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .seg .pill{min-width:0}
  .kg,.kgf{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .g2{grid-template-columns:minmax(0,1fr)}
  .fr,.fr3{grid-template-columns:minmax(0,1fr)}
  /* v4.0.11 (fatia 4): tabelas de LISTA marcadas com .tcard viram CARDS no celular.
     Cada <tr> vira card; cada <td> vira linha rotulada (rótulo = cabeçalho da coluna,
     posto por JS em data-label). As tabelas analíticas do Financeiro (.tnr1/.tnr2) NÃO
     levam .tcard de propósito → seguem em rolagem horizontal (comparativo lado a lado). */
  table.tcard{display:block;width:100%}
  table.tcard thead{display:none}
  table.tcard tbody{display:block}
  table.tcard tbody tr{display:block;background:var(--cr2);border:1px solid var(--bl);border-radius:var(--r);margin-bottom:10px;padding:6px 13px;box-shadow:var(--sh)}
  table.tcard td{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:8px 0;border-bottom:1px dashed var(--bl);text-align:right;white-space:normal;width:auto}
  table.tcard td:last-child{border-bottom:none}
  table.tcard td::before{content:attr(data-label);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--tn);text-align:left;flex-shrink:0}
  table.tcard td:empty{display:none}
  table.tcard .acts{justify-content:flex-end;width:100%}
  /* v4.0.10 (fatia 3): MODAIS em TELA CHEIA no celular. A caixa (.modal) vira fullscreen;
     o cabeçalho (.mhd) gruda no topo e o rodapé de botões (.mft) gruda embaixo, com o
     corpo (campos soltos) rolando no meio. Bases .ov/.modal/.mhd/.mft vêm ANTES deste
     bloco @media no arquivo → override vence sem prefixo (lição da v4.0.9). */
  .ov{padding:0;align-items:stretch}
  .modal{max-width:none;max-height:none;width:100%;border-radius:0;padding:0 16px;display:flex;flex-direction:column}
  .modal .mhd{position:sticky;top:0;z-index:3;background:var(--cr2);margin:0 -16px 14px;padding:15px 16px;border-bottom:1px solid var(--bl);flex-shrink:0}
  .modal .mft{position:sticky;bottom:0;z-index:3;background:var(--cr2);margin:auto -16px 0;padding:12px 16px;flex-shrink:0}
  /* calendário da Agenda: grid encolhível + cabeçalho quebra linha + aperta padding.
     ⚠️ PREFIXO #page-agenda OBRIGATÓRIO: as classes .ag-* são definidas DEPOIS deste
     bloco @media no arquivo, então sem o ID a regra-base (mesma especificidade, ordem
     posterior) vence e anula o conserto. Com #page-agenda ganhamos especificidade. */
  #page-agenda .ag-days,#page-agenda .ag-dow{grid-template-columns:repeat(7,minmax(0,1fr));gap:3px}
  #page-agenda .ag-mes{min-width:0}
  #page-agenda .ag-mesx{padding:10px 6px 12px}
  #page-agenda .ag-day{padding:3px}

  /* ===== FATIA 2 — tabela de Pedidos (aba Pedidos) vira cards empilhados =====
     Escopado em #page-pedidos: a aba Pedidos usa <table class="tcomf pped">.
     A tabela de pedidos do detalhe do cliente (#cl-det) reusa a classe .pped
     mas tem 7 colunas (checkbox, sem Tipo/Lucro) — fica de fora, fatia futura. */
  #page-pedidos .pped-tw{max-height:none;overflow:visible}
  #page-pedidos table.pped{display:block;width:100%}
  #page-pedidos .pped thead{display:none}
  #page-pedidos .pped tbody,#page-pedidos .pped tfoot{display:block;width:100%}
  #page-pedidos .pped tbody tr{
    display:block;position:relative;background:var(--cr2);border:1px solid var(--bl);
    border-radius:var(--r);padding:10px 14px 4px;margin-bottom:10px;box-shadow:var(--sh);
  }
  #page-pedidos .pped tbody tr.r-ab{box-shadow:inset 4px 0 0 var(--gd2),var(--sh)}
  #page-pedidos .pped tbody tr.r-av{box-shadow:inset 4px 0 0 var(--pu),var(--sh)}
  #page-pedidos .pped tbody tr.r-ab td:first-child,#page-pedidos .pped tbody tr.r-av td:first-child,
  #page-pedidos .pped tbody tr.r-ab:hover td:first-child,#page-pedidos .pped tbody tr.r-av:hover td:first-child{box-shadow:none}
  #page-pedidos .pped tbody td{
    display:flex;justify-content:space-between;align-items:center;gap:10px;
    padding:7px 0;border-bottom:1px dashed var(--bl);text-align:right;width:100%;
  }
  #page-pedidos .pped tbody td:last-child{border-bottom:none}
  #page-pedidos .pped tbody td::before{
    content:attr(data-label);font-size:10px;font-weight:700;text-transform:uppercase;
    letter-spacing:.05em;color:var(--tn);text-align:left;flex-shrink:0;
  }
  /* col 1 = Tipo: badge no topo do card, sem rótulo, sem linha divisória */
  #page-pedidos .pped tbody td:nth-child(1){border-bottom:none;padding:2px 0 8px;justify-content:flex-start}
  #page-pedidos .pped tbody td:nth-child(1)::before{display:none}
  /* col 3 = Fragrância: rótulo em cima, frag+casa empilhados embaixo */
  #page-pedidos .pped tbody td:nth-child(3){flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:2px}
  /* col 9 = Ações: linha final, sem rótulo, botões à direita, separada por borda */
  #page-pedidos .pped tbody td:nth-child(9){border-top:1px solid var(--bl);border-bottom:none;padding-top:9px;margin-top:2px}
  #page-pedidos .pped tbody td:nth-child(9)::before{display:none}
  #page-pedidos .pped tbody td:nth-child(9) .acts{justify-content:flex-end;width:100%}
  /* Totais (tfoot) viram um card-resumo com os números lado a lado */
  #page-pedidos .pped tfoot tr{
    display:flex;justify-content:space-around;flex-wrap:wrap;gap:10px;
    background:var(--cr3);border:2px solid rgba(224,182,60,.6);border-radius:var(--rs);
    padding:12px 14px;
  }
  #page-pedidos .pped tfoot td{display:flex;flex-direction:column;align-items:center;gap:3px;border:none;padding:0;width:auto}
  #page-pedidos .pped tfoot td:empty{display:none}
  #page-pedidos .pped tfoot td::before{
    content:attr(data-label);font-size:9px;font-weight:700;text-transform:uppercase;
    letter-spacing:.06em;color:var(--tn);
  }
}
/* ════════ TELA DE LOGIN (v2.0) — Firebase Auth, layout "split" aprovado ════════ */
#login-ov{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;padding:20px;font-family:'DM Sans',sans-serif;background:radial-gradient(circle at 30% 15%,#EBEBED,#CFD0D4 80%)}
body.dark #login-ov{background:radial-gradient(circle at 30% 20%,#1A1A1D,#0A0B0C 75%)}
#login-ov *{box-sizing:border-box}
.lg-theme{position:fixed;top:18px;right:18px;width:42px;height:42px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;border:1px solid #BBBCC2;background:rgba(255,255,255,.7);backdrop-filter:blur(6px);color:#3F4047;transition:all .2s}
body.dark .lg-theme{border-color:rgba(224,182,60,.3);background:rgba(255,255,255,.08);color:var(--gd2)}
.lg-theme:hover{transform:translateY(-2px);box-shadow:0 6px 16px rgba(0,0,0,.18)}
.lg-theme:active{transform:translateY(0)}
.lg-theme .ic{width:19px;height:19px}
.lg-card{display:flex;width:100%;max-width:760px;min-height:440px;border-radius:18px;overflow:hidden;box-shadow:0 30px 70px rgba(0,0,0,.5);animation:lg-su .3s ease}
@keyframes lg-su{from{transform:translateY(14px);opacity:0}to{transform:translateY(0);opacity:1}}
.lg-brand{flex:1;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 32px;text-align:center;overflow:hidden;transition:background .4s ease;background:linear-gradient(155deg,#E3E3E5,#D2D3D7);border-right:1px solid #CCCDD1}
body.dark .lg-brand{background:linear-gradient(155deg,#1A1A1C,#0D0D0E);border-right:none}
.lg-brand::before{content:'';position:absolute;width:320px;height:320px;border-radius:50%;background:radial-gradient(circle,rgba(190,138,5,.14),transparent 65%);top:-60px;right:-80px}
body.dark .lg-brand::before{background:radial-gradient(circle,rgba(224,182,60,.16),transparent 65%)}
.lg-tronco{width:206px;aspect-ratio:720/618;margin:0 auto 16px;position:relative;z-index:1;background:url(logo-easy-claro.png) center/contain no-repeat}.sb-logo img{display:none}.sb-logo span[role="img"]{display:block;width:112px;height:78px;margin-bottom:2px;background:url(logo-easy.png) center/contain no-repeat}
body.dark .lg-tronco{background-image:url(logo-easy.png)}
.lg-name{font-family:'Playfair Display',serif;font-size:26px;font-weight:700;color:#9F7304;letter-spacing:.14em;text-transform:uppercase;line-height:1;position:relative;z-index:1}
body.dark .lg-name{color:var(--gd2)}
.lg-tag{font-size:11.5px;color:#55565F;letter-spacing:.12em;margin-top:14px;position:relative;z-index:1;max-width:200px}
body.dark .lg-tag{color:rgba(225,226,229,.55)}
.lg-line{height:1px;width:60px;background:linear-gradient(90deg,transparent,rgba(190,138,5,.55),transparent);margin:18px auto 0;position:relative;z-index:1}
.lg-form{flex:1;padding:46px 40px;display:flex;flex-direction:column;justify-content:center;transition:background .4s ease;background:#F8F8F8}
body.dark .lg-form{background:#18181A}
.lg-tt{font-family:'Playfair Display',serif;font-size:22px;font-weight:700;margin-bottom:3px;color:#111214}
body.dark .lg-tt{color:#E1E2E5}
.lg-hint{font-size:13px;color:#55565F;margin-bottom:24px}
body.dark .lg-hint{color:rgba(225,226,229,.55)}
.lg-fld{margin-bottom:15px}
.lg-form label{display:block;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:#55565F;margin-bottom:6px}
body.dark .lg-form label{color:var(--gd2)}
.lg-form input{width:100%;padding:12px 13px;border:1px solid #BBBCC2;border-radius:8px;background:#fff;color:#111214;font-family:'DM Sans',sans-serif;font-size:14px;transition:border-color .14s,box-shadow .14s,background .4s ease}
body.dark .lg-form input{background:#1E1E21;border-color:rgba(224,182,60,.25);color:#E1E2E5}
.lg-form input:focus{outline:none;border-color:var(--gd);box-shadow:0 0 0 3px rgba(224,182,60,.16)}
.lg-pw{position:relative;display:flex;align-items:center}
.lg-pw input{padding-right:44px}
.lg-eye{position:absolute;right:6px;top:50%;transform:translateY(-50%);background:none;border:none;cursor:pointer;padding:7px;color:#55565F;display:flex;align-items:center;justify-content:center;border-radius:6px;transition:color .15s}
body.dark .lg-eye{color:rgba(225,226,229,.55)}
.lg-eye:hover{color:var(--gd)}
.lg-eye:active{transform:translateY(-50%) scale(.9)}
.eye-svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.eye-iris{transform-box:fill-box;transform-origin:center;transition:transform .3s cubic-bezier(.4,0,.2,1)}
.eye-slash{stroke-dasharray:26;stroke-dashoffset:26;transition:stroke-dashoffset .32s cubic-bezier(.4,0,.2,1)}
.lg-eye.show .eye-slash{stroke-dashoffset:0}
.lg-eye.show .eye-iris{transform:scaleY(.18)}
.lg-btn{display:flex;align-items:center;justify-content:center;gap:6px;width:100%;padding:13px;border-radius:8px;font-family:'DM Sans',sans-serif;font-size:14px;font-weight:600;cursor:pointer;border:none;transition:all .15s;margin-top:10px;background:var(--gd);color:#fff;letter-spacing:.02em}
.lg-btn:hover{background:#9F7304;transform:translateY(-2px);box-shadow:0 6px 16px rgba(190,138,5,.32)}
.lg-btn:active{transform:translateY(1px);box-shadow:0 2px 6px rgba(190,138,5,.3)}
.lg-btn:disabled{opacity:.6;cursor:not-allowed;transform:none;box-shadow:none}
.lg-err{display:none;margin-top:12px;font-size:12.5px;color:#fff;background:#993333;border-radius:8px;padding:9px 12px}
.lg-foot{margin-top:16px;font-size:11px;color:#55565F;opacity:.85;display:flex;align-items:center;gap:5px}
body.dark .lg-foot{color:rgba(225,226,229,.5)}
@media(max-width:640px){.lg-card{flex-direction:column;min-height:0}.lg-brand{padding:30px 24px;border-right:none;border-bottom:1px solid #CCCDD1}.lg-tronco{width:120px}.lg-form{padding:32px 26px}}
/* ═══ AGENDA (v4.0.0) ═══ cores dos 3 tipos (dark-aware) */
/* v4.3.0: `.ag-leg` (legenda) é IRMÃ do `.ag-grid`, não filha — ficava fora do escopo destas variáveis
   e as bolinhas saíam com `background:var(--ag-a)` indefinido (transparentes). Incluída nos 2 seletores. */
/* v4.3.1: 4o tipo `f` = PRODUCAO de splits (verde so como dot/traco — micro-acento, nunca fundo de botao). */
#page-agenda,.ag-leg,.ag-grid,.ag-hoje-card,#m-agenda-ev,#m-producao{--ag-a:var(--gd2);--ag-p:#3b82c4;--ag-l:#8b5c9e;--ag-f:#3D7A52}
body.dark #page-agenda,body.dark .ag-leg,body.dark .ag-grid,body.dark .ag-hoje-card,body.dark #m-agenda-ev,body.dark #m-producao{--ag-a:var(--gd2);--ag-p:#5aa0e0;--ag-l:#b083c4;--ag-f:#5FA57A}
.ag-leg{display:flex;gap:16px;flex-wrap:wrap;margin:0 0 14px 2px}
.ag-leg span{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--tn);font-weight:600}
.ag-leg .ag-d{width:11px;height:11px;border-radius:50%}
.ag-d.a{background:var(--ag-a)}.ag-d.p{background:var(--ag-p)}.ag-d.l{background:var(--ag-l)}.ag-d.f{background:var(--ag-f)}
@media(max-width:820px){.ag-duo,.ag-duo.meio{grid-template-columns:minmax(0,1fr)}}
.ag-ph{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--bl)}
.ag-ph h2{font-family:'Playfair Display',serif;font-size:17px;margin:0}
.ag-ph small{font-size:12px;color:var(--tn)}
.ag-mes{font-family:'Playfair Display',serif;font-size:15px;font-weight:700;text-align:center}
.ag-dow{display:grid;grid-template-columns:repeat(7,1fr);margin-bottom:5px}
.ag-dow div{text-align:center;font-size:10px;font-weight:700;color:var(--tn);padding:4px 0;letter-spacing:.4px}
.ag-days{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}
.ag-day{aspect-ratio:1/.88;border-radius:9px;border:1px solid transparent;padding:5px;cursor:pointer;position:relative;transition:.12s;background:var(--cr2)}
.ag-day:hover{border-color:var(--bd);background:var(--cr3)}
.ag-day .agn{font-size:12.5px;font-weight:600}
.ag-day.out{opacity:.28;pointer-events:none}
.ag-day.today{background:var(--gp);border-color:var(--gd)}
.ag-day.today .agn{color:var(--gd2);font-weight:800}
.ag-day.sel{border-color:var(--gd);box-shadow:0 0 0 2px rgba(224,182,60,.3)}
.ag-dots{display:flex;gap:3px;flex-wrap:wrap;margin-top:5px}
.ag-dots i{width:6px;height:6px;border-radius:50%}
.ag-dots i.a{background:var(--ag-a)}.ag-dots i.p{background:var(--ag-p)}.ag-dots i.l{background:var(--ag-l)}.ag-dots i.f{background:var(--ag-f)}
.ag-ph .ag-bk{font-size:12px;font-weight:700;color:var(--gd2);background:var(--gp);border:0;border-radius:8px;padding:6px 11px;cursor:pointer;display:none}
.ag-pbody{padding:8px 8px 14px;max-height:520px;overflow-y:auto}
.ag-gl{font-size:10.5px;font-weight:800;color:var(--gd2);letter-spacing:.6px;margin:10px 12px 5px;text-transform:uppercase}
.ag-ev{display:flex;gap:11px;align-items:center;padding:10px 12px;margin:5px 8px;border-radius:11px;border:1px solid var(--bl);background:var(--cr2);position:relative;cursor:pointer;transition:.14s}
.ag-ev:hover{background:var(--cr3);transform:translateX(2px)}
.ag-ev::before{content:"";position:absolute;left:0;top:9px;bottom:9px;width:4px;border-radius:4px}
.ag-ev.a::before{background:var(--ag-a)}.ag-ev.p::before{background:var(--ag-p)}.ag-ev.l::before{background:var(--ag-l)}.ag-ev.f::before{background:var(--ag-f)}
.ag-ev .agem{width:34px;height:34px;border-radius:9px;display:grid;place-items:center;flex:none;margin-left:4px;background:var(--cr3);font-size:17px}
.ag-ev.a .agem{color:var(--ag-a)}.ag-ev.p .agem{color:var(--ag-p)}.ag-ev.l .agem{color:var(--ag-l)}.ag-ev.f .agem{color:var(--ag-f)}
.ag-ev .agtx{flex:1;min-width:0}
.ag-ev .agt1{font-weight:700;font-size:13.5px}
.ag-ev .agt2{font-size:11.5px;color:var(--tn);margin-top:1px}
.ag-ev.feito .agt1{text-decoration:line-through;opacity:.6}
/* v4.3.0: botão de concluir (círculo → ✓ dourado). Só nos compromissos; postagem tem fluxo próprio. */
.ag-ev .agok{width:21px;height:21px;flex:none;padding:0;border-radius:50%;border:2px solid var(--bd);background:transparent;cursor:pointer;display:grid;place-items:center;color:transparent;transition:.14s}
.ag-ev .agok .ic{width:12px;height:12px}
.ag-ev .agok:hover{border-color:var(--gd2);color:var(--gd2)}
.ag-ev.feito .agok{background:var(--gd2);border-color:var(--gd2);color:#fff}
.ag-ev.feito{opacity:.74}
/* selo do registro histórico (tarefa concluída / envio já postado) */
.ag-ev .agreg{font-size:10px;font-weight:800;letter-spacing:.4px;text-transform:uppercase;color:var(--tn);background:var(--cr3);border-radius:6px;padding:3px 7px;white-space:nowrap}
.ag-ev .agatr{font-size:10px;font-weight:800;letter-spacing:.4px;text-transform:uppercase;color:#BD8E16;background:rgba(242,188,51,.15);border:1px solid rgba(242,188,51,.35);border-radius:6px;padding:2px 7px;white-space:nowrap}
body.dark .ag-ev .agatr{color:#F2BC33}
.ag-ev .aghr{font-size:11.5px;font-weight:700;background:var(--cr3);border-radius:7px;padding:3px 8px;white-space:nowrap;color:var(--tn);display:inline-flex;align-items:center;gap:4px}
.ag-ev .aglanc{background:var(--gd2);color:#fff;border:0;border-radius:7px;padding:5px 9px;font-size:11px;font-weight:700;cursor:pointer;white-space:nowrap;display:inline-flex;align-items:center;gap:4px}
.ag-dv .agsh{font-size:10.5px;font-weight:800;color:var(--tn);letter-spacing:.5px;margin:12px 12px 4px;text-transform:uppercase}
.ag-dv .aghour{display:flex;gap:11px;align-items:flex-start}
.ag-dv .aghh{font-size:11px;color:var(--tn);width:46px;text-align:right;padding-top:11px;font-weight:700;flex:none}
.ag-dv .agslot{flex:1;border-top:1px solid var(--bl);padding:6px 0;min-height:20px}
.ag-empty{text-align:center;color:var(--tn);padding:44px 12px;font-size:13px}
/* ═══ v4.4.0 — AGENDA + BANCADA (proposta 17) ═══════════════════════════════════════
   UM número comanda a tela: a carga de produção do dia. Ela mora dentro da régua (a barrinha
   embaixo de cada dia), decide a ALTURA da régua e decide QUEM fica com a coluna da direita.
   Dia cheio: régua fina, bancada larga. Dia limpo: régua vira instrumento de planejamento e a
   direita passa a ser o Próximos — nunca sobra coluna ociosa. */
.ag-rcard{margin-bottom:16px}
.ag-rh{display:flex;align-items:center;gap:12px;padding:13px 16px;border-bottom:1px solid var(--bl);flex-wrap:wrap}
.ag-rh h2{font-family:'Playfair Display',serif;font-size:17px;margin:0}
.ag-rh small{font-size:12px;color:var(--tn)}
.ag-rh .ag-racts{margin-left:auto;display:flex;align-items:center;gap:6px}
.ag-rbtn{font-size:11.5px;font-weight:700;color:var(--tn);background:var(--cr2);border:1px solid var(--bd);border-radius:8px;padding:6px 10px;cursor:pointer;display:inline-flex;align-items:center;gap:5px;white-space:nowrap}
.ag-rbtn:hover{border-color:var(--gd);color:var(--ft)}
.ag-rbtn.on{color:var(--gd2);border-color:var(--gd);background:var(--gp)}
body.dark .ag-rbtn.on{background:rgba(224,182,60,.16)}
.ag-reg{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}
.ag-rd{padding:9px 3px 10px;text-align:center;cursor:pointer;transition:.12s;border-right:1px solid var(--bl);min-width:0}
.ag-rd:last-child{border-right:0}
.ag-rd:hover{background:var(--cr3)}
.ag-rd .rs{font-size:9.5px;font-weight:800;color:var(--tn);letter-spacing:.3px;text-transform:uppercase}
.ag-rd .rn{font-family:'Playfair Display',serif;font-size:17px;font-weight:700;line-height:1.15;margin-top:1px}
.ag-rd.hoje{background:var(--gp)}
.ag-rd.hoje .rn,.ag-rd.hoje .rs{color:var(--gd)}
body.dark .ag-rd.hoje{background:rgba(224,182,60,.17)}
body.dark .ag-rd.hoje .rn,body.dark .ag-rd.hoje .rs{color:var(--gd2)}
.ag-rd.sel{box-shadow:inset 0 -2.5px 0 var(--gd)}
.ag-rd.fds{opacity:.55}
.ag-rd .ag-dots{justify-content:center;margin-top:4px;min-height:6px}
/* a barrinha de carga: MESMO número que comanda o layout */
.ag-rbar{height:3px;border-radius:3px;background:var(--ag-f);margin:5px auto 0;max-width:76%;opacity:.85}
/* régua MÉDIA e LARGA: cresce quando não há trabalho — vira planejamento */
.ag-reg.media .ag-rd{padding:12px 4px 13px}
.ag-reg.media .ag-rd .rn{font-size:20px}
.ag-reg.larga .ag-rd{padding:12px 6px 11px;text-align:left;min-height:104px;vertical-align:top}
.ag-reg.larga .ag-rd .rn{font-size:21px}
.ag-reg.larga .ag-rd .ag-dots{justify-content:flex-start}
.ag-rmini{margin-top:6px;display:flex;flex-direction:column;gap:3px}
.ag-rmini span{font-size:9.5px;line-height:1.3;color:var(--tn);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;align-items:center;gap:4px}
.ag-rmini i{width:5px;height:5px;border-radius:50%;flex:none}
.ag-rmini i.a{background:var(--ag-a)}.ag-rmini i.p{background:var(--ag-p)}.ag-rmini i.l{background:var(--ag-l)}.ag-rmini i.f{background:var(--ag-f)}
/* o mês abre DENTRO do cartão da régua — nada embaixo troca de lugar */
.ag-mesx{border-top:1px solid var(--bl);padding:11px 13px 14px;background:var(--cr);display:none}
.ag-mesx.on{display:block}
.ag-mesx .ag-day{aspect-ratio:auto;height:46px;border-color:var(--bl)}
.ag-mesx .ag-day .ag-dots{margin-top:3px}
.ag-mesx .ag-day.sem{background:var(--cr3);border-color:var(--bd)}
.ag-mesx .ag-mtop{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.ag-mesx .ag-mtop .ag-mes{min-width:0}
/* as duas colunas — a proporção segue a carga */
.ag-duo{display:grid;gap:16px;align-items:start;grid-template-columns:minmax(0,1fr) minmax(0,1.75fr)}
.ag-duo.meio{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
.ag-duo.solo{grid-template-columns:minmax(0,1fr)}
/* No estado cheio a coluna da agenda é estreita: se o selo ("atrasado · era 27/07") disputar a linha
   com o título, o título quebra em 3 linhas. Garantindo 60% pro texto, o selo desce inteiro. */
.ag-pnl .ag-ev{flex-wrap:wrap}
.ag-pnl .ag-ev .agtx{min-width:60%}
/* BANCADA */
.ag-bh{display:flex;align-items:center;gap:10px;padding:13px 15px;border-bottom:1px solid var(--bl);flex-wrap:wrap}
.ag-bh .bi{width:28px;height:28px;border-radius:8px;display:grid;place-items:center;flex:none;background:rgba(61,122,82,.13);color:var(--ag-f)}
.ag-bh h2{font-family:'Playfair Display',serif;font-size:17px;margin:0}
.ag-bh small{font-size:11.5px;color:var(--tn);display:block;margin-top:1px}
.ag-bcount{margin-left:auto;font-size:11px;font-weight:800;color:var(--ag-f);background:rgba(61,122,82,.12);border-radius:20px;padding:4px 10px;white-space:nowrap}
body.dark .ag-bcount{color:#7FBF95;background:rgba(95,165,122,.15)}
.ag-chips{display:flex;gap:5px;flex-wrap:wrap;padding:9px 11px 3px}
.ag-chip{font-size:11px;font-weight:700;background:var(--cr);border:1px solid var(--bd);border-radius:7px;padding:4px 9px;white-space:nowrap}
.ag-chip b{font-family:'Playfair Display',serif;font-size:14px;color:var(--ag-f)}
body.dark .ag-chip b{color:#7FBF95}
.ag-chip.apc{opacity:.6;border-style:dashed}
.ag-blist{padding:7px;display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:5px;max-height:430px;overflow-y:auto}
.ag-blot{display:flex;align-items:center;gap:9px;padding:9px 10px;border-radius:10px;border:1px solid var(--bl);background:var(--cr2);position:relative;cursor:pointer;transition:.14s;min-width:0}
.ag-blot:hover{background:var(--cr3)}
.ag-blot::before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:3.5px;border-radius:4px;background:var(--ag-f)}
.ag-blot .bkw{padding:8px;margin:-8px 0 -8px -4px;display:grid;place-items:center;flex:none;cursor:pointer}
.ag-blot .bk{width:17px;height:17px;flex:none;border-radius:5px;border:1.5px solid var(--bd);display:grid;place-items:center;color:transparent}
.ag-blot .bkw:hover .bk{border-color:var(--gd2)}
.ag-blot .bk .ic{width:11px;height:11px}
.ag-blot.mk .bk{border-color:var(--gd2);background:var(--gd2);color:#fff}
.ag-blot .bn{flex:1;min-width:0}
.ag-blot .b1{font-weight:700;font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ag-blot .b2{font-size:10.5px;color:var(--tn);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ag-blot .b2 em{font-style:normal;opacity:.75}
.ag-blot .bq{font-size:10.5px;font-weight:800;color:var(--ag-f);background:rgba(61,122,82,.11);border:1px solid rgba(61,122,82,.26);border-radius:6px;padding:2px 7px;white-space:nowrap}
body.dark .ag-blot .bq{color:#7FBF95;background:rgba(95,165,122,.15);border-color:rgba(95,165,122,.3)}
.ag-bacts{display:flex;gap:7px;justify-content:flex-end;padding:9px 12px 12px;border-top:1px solid var(--bl)}
/* bancada limpa = faixa fina que MANTÉM o território reservado e visível */
.ag-bfaixa{display:none;align-items:center;gap:11px;padding:11px 15px;border-radius:12px;border:1px dashed var(--bd);font-size:12.5px;color:var(--tn);margin-bottom:16px;line-height:1.5}
.ag-bfaixa.on{display:flex}
.ag-bfaixa .bi{width:27px;height:27px;border-radius:8px;display:grid;place-items:center;background:rgba(61,122,82,.1);color:var(--ag-f);flex:none;opacity:.8}
.ag-bfaixa b{color:var(--ft)}
.ag-bfaixa .ag-rbtn{margin-left:auto}
@media(max-width:600px){
  .ag-duo,.ag-duo.meio{grid-template-columns:minmax(0,1fr)}
  .ag-reg{grid-template-columns:repeat(7,minmax(0,1fr))}
  .ag-rd{padding:7px 1px 8px}
  .ag-rd .rn{font-size:14px}
  .ag-rd .rs{font-size:8px}
  .ag-reg.larga .ag-rd{min-height:0;padding:9px 3px 9px;text-align:center}
  .ag-rmini{display:none}
  .ag-blist{grid-template-columns:minmax(0,1fr);max-height:none}
  .ag-rh{padding:11px 12px}
  .ag-bfaixa{flex-wrap:wrap}
}
/* card "Hoje na agenda" no dashboard */
.ag-hoje-card .agh-row{display:flex;align-items:center;gap:10px;padding:8px 0;border-top:1px dashed var(--bl);font-size:13px}
.ag-hoje-card .agh-row:first-child{border-top:0}
.ag-hoje-card .agh-row .agh-bd{width:9px;height:9px;border-radius:50%;flex:none}
.ag-hoje-card .agh-row .agh-h{margin-left:auto;font-weight:700;color:var(--tn);font-size:11.5px}
/* v4.7.15: a linha que aparece quando o dia tem mais de 6 pendências e leva pra Agenda */
.ag-hoje-card .agh-mais{margin-top:8px;padding-top:8px;border-top:1px dashed var(--bl);font-size:12px;color:var(--tn);cursor:pointer;text-align:center;letter-spacing:.04em}
.ag-hoje-card .agh-mais:hover{color:var(--gd)}
.ag-hoje-card .agh-row .aglanc{margin-left:6px}
/* v4.3.0: concluir a tarefa direto do card do Dashboard */
.ag-hoje-card .agh-row .agok{width:19px;height:19px;flex:none;padding:0;margin-left:6px;border-radius:50%;border:2px solid var(--bd);background:transparent;cursor:pointer;display:grid;place-items:center;color:transparent;transition:.14s}
.ag-hoje-card .agh-row .agok .ic{width:11px;height:11px}
.ag-hoje-card .agh-row .agok:hover{border-color:var(--gd2);color:var(--gd2)}
/* ═══ v4.3.1: lista de PRODUÇÃO (modal m-producao) ═══ */
.pl{background:var(--cr);border:1px solid var(--bl);border-radius:10px;overflow:hidden}
.pl-row{display:flex;align-items:center;gap:12px;padding:11px 14px;border-bottom:1px solid var(--bl)}
.pl-row:last-of-type{border-bottom:0}
.pl-qt{font-family:'Playfair Display',serif;font-size:20px;font-weight:700;color:var(--gd2);min-width:34px;text-align:right}
.pl-ml{font-weight:700;font-size:14.5px;flex:1;min-width:0}
.pl-nomes{font-size:11px;color:var(--tn);margin-top:1px;font-weight:500}
.pl-tag{font-size:9.5px;font-weight:800;letter-spacing:.4px;text-transform:uppercase;border-radius:5px;padding:3px 7px;white-space:nowrap}
.pl-tag.apc{color:var(--pu);background:rgba(107,63,160,.12);border:1px solid rgba(107,63,160,.3)}
body.dark .pl-tag.apc{color:#b083c4;background:rgba(176,131,196,.15);border-color:rgba(176,131,196,.32)}
.pl-tag.sobra{color:var(--or);background:rgba(140,144,152,.12);border:1px solid rgba(140,144,152,.3)}
body.dark .pl-tag.sobra{color:#F2BC33;background:rgba(242,188,51,.14);border-color:rgba(242,188,51,.32)}
.pl-tot{display:flex;justify-content:space-between;align-items:center;padding:11px 14px;background:var(--cr3);font-size:12.5px;font-weight:700;color:var(--tn)}
.pl-tot b{color:var(--ft);font-size:14px}
/* v4.3.2 — a APC não é trabalho: linha informativa, apagada, e nota quando SÓ há APC */
.pl-row.info{opacity:.62}
.pl-row.info .pl-qt{color:var(--tn)}
.pl-fica{font-size:10.5px;font-weight:700;color:var(--tn);text-transform:none}
.pl-nada{margin-top:9px;font-size:12px;color:var(--tn);line-height:1.6}

/* ══════ v4.12.0 — CELULAR / iOS SAFARI ══════════════════════════════════════
   Fica no FIM do CSS DE PROPÓSITO: mesma especificidade, ordem posterior vence
   (lição da v4.0.9). Nada aqui altera o desktop. */

/* 100vh no iOS é MAIOR que a área visível (a barra do Safari não é descontada) →
   o rodapé da página fica atrás dela. 100dvh acompanha a barra abrindo e fechando. */
@supports(height:100dvh){body{min-height:100dvh}.main{min-height:100dvh}}

@media(max-width:600px){
  /* O iOS dá ZOOM em qualquer campo com fonte <16px assim que ele recebe foco — e NÃO
     desfaz o zoom depois, o que joga o layout inteiro pra fora da tela. 16px é o mínimo
     que evita isso. Só no celular: no desktop os campos seguem em 13px.
     O 2º seletor existe porque ~15 campos trazem font-size inline (12px) — e regra de
     autor com !important vence style inline sem important. */
  input,select,textarea{font-size:16px}
  input[style*="font-size"],select[style*="font-size"],textarea[style*="font-size"]{font-size:16px!important}

  /* A barra de ferramentas do Safari cobre tudo que é fixo no rodapé: o toast aparecia
     espremido atrás dela e o rodapé de botões do modal em tela cheia (Salvar/Cancelar)
     ficava inalcançável. env(safe-area-inset-bottom) é a altura real dessa faixa. */
  .tw-wrap{bottom:calc(14px + env(safe-area-inset-bottom));left:14px;right:14px}
  .toast{max-width:none}
  .modal .mft{padding-bottom:calc(12px + env(safe-area-inset-bottom))}
}

/* No toque o :hover fica PRESO depois do clique (o dedo não tem "sair de cima"), então o
   botão continua pulado/sombreado até você tocar em outro lugar. Desliga só o movimento e
   a sombra — o realce de fundo fica, que é discreto e serve de confirmação do toque. */
@media(hover:none){
  .bg:hover,.abc:hover,.clc:hover,#cl-cont .clc:hover,.fr-opt:hover,.fr-card:hover,
  .env-card:hover,.etq-t[onclick]:hover,.lg-btn:hover,.lg-theme:hover,.ag-ev:hover,
  .pped tbody tr.r-ab:hover td:first-child,.pped tbody tr.r-av:hover td:first-child{
    transform:none;box-shadow:none}
}
