:root{
  --navy:#0F1B2D; --navy-2:#16263D;
  --brand:#3B82F6; --brand-2:#2563EB; --brand-soft:#EFF4FF;
  --accent:#F97316; --accent-2:#EA580C;
  --green:#16A34A; --red:#EF4444; --amber:#F59E0B;
  --card:#ffffff; --page:#F6F7F9;
  --ink:#0F172A; --muted:#64748B; --muted-2:#94A3B8;
  --line:#E7EAEE; --line-2:#F1F3F5;
  --radius:10px; --radius-lg:14px;
  --shadow:0 1px 2px rgba(15,23,42,.04), 0 4px 16px rgba(15,23,42,.06);
  --shadow-lg:0 8px 30px rgba(15,23,42,.12);
  --sidebar-w:250px; --sidebar-cw:74px; --topbar-h:60px;
  --sb-txt:#94A6C0; --sb-active:rgba(59,130,246,.18);
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{font-family:-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;background:var(--page);color:var(--ink);font-size:14px;-webkit-font-smoothing:antialiased;}

/* ---------- Login (split moderno) ---------- */
/* Porta de entrada do portal: mesmo "sol" da marca, agora como brilho atrás do card. */
.login-wrap{position:relative;min-height:100vh;display:grid;place-items:center;overflow:hidden;padding:20px;
  background:
    radial-gradient(700px 420px at 50% 118%, rgba(238,119,36,.30) 0%, transparent 62%),
    radial-gradient(800px 500px at 12% 8%, rgba(79,155,203,.12) 0%, transparent 55%),
    linear-gradient(170deg,#0B0F14 0%,#0D1219 100%);}
/* Arco de luz laranja abaixo do card — o mesmo horizonte do resto da identidade. */
.login-wrap::before{content:"";position:absolute;left:50%;bottom:-70%;width:min(1000px,150%);aspect-ratio:1;
  transform:translateX(-50%);border-radius:50%;pointer-events:none;
  background:radial-gradient(circle at 50% 50%,rgba(11,15,20,0) 0 46%,rgba(255,231,200,.55) 47.5%,#EE7724 50%,#D6661A 52.5%,rgba(214,102,26,0) 62%);
  animation:sunBreathe 9s ease-in-out infinite alternate;}
@keyframes sunBreathe{from{transform:translateX(-50%) translateY(10px) scale(.99);opacity:.85;}
  to{transform:translateX(-50%) translateY(-8px) scale(1.01);opacity:1;}}
@media(prefers-reduced-motion:reduce){.login-wrap::before{animation:none;}}
.login-card{position:relative;z-index:1;}
.login-card{width:100%;max-width:400px;background:var(--card);border-radius:20px;box-shadow:0 30px 80px rgba(6,20,45,.45);padding:40px 36px;border:1px solid rgba(255,255,255,.06);}
.login-card h1{font-size:22px;margin:0 0 4px;letter-spacing:-.02em;}
.login-card .sub{color:var(--muted);margin:0 0 26px;font-size:13px;}
.brand-logo{display:block;width:auto;height:52px;margin:0 auto 24px;}
.field{margin-bottom:16px;}
.field label{display:block;font-size:12px;font-weight:600;color:#334155;margin-bottom:6px;}
.input{width:100%;padding:11px 13px;border:1px solid var(--line);border-radius:10px;font-size:14px;outline:none;background:var(--card);transition:border-color .15s, box-shadow .15s;}
.input:focus{border-color:var(--brand);box-shadow:0 0 0 4px rgba(59,130,246,.15);}
.pw-row{position:relative;}
.pw-row .input{padding-right:64px;}
.pw-toggle{position:absolute;right:8px;top:50%;transform:translateY(-50%);border:none;background:transparent;color:var(--brand);font-size:12px;cursor:pointer;font-weight:600;padding:6px 8px;}
.btn{width:100%;padding:12px;border:none;border-radius:10px;background:var(--brand);color:#fff;font-weight:600;font-size:14px;cursor:pointer;transition:background .15s, transform .06s, box-shadow .15s;box-shadow:0 2px 8px rgba(59,130,246,.3);}
.btn:hover{background:var(--brand-2);box-shadow:0 4px 14px rgba(59,130,246,.4);}
.btn:active{transform:scale(.99);}
.btn:disabled{opacity:.55;cursor:default;box-shadow:none;}
.btn.secondary{background:var(--brand-soft);color:var(--brand-2);box-shadow:none;}
.btn.secondary:hover{background:#E0EAFF;}
.btn.danger{background:var(--red);box-shadow:none;}
.btn.small{width:auto;padding:8px 14px;font-size:12px;border-radius:9px;}
.alert{padding:10px 12px;border-radius:9px;font-size:13px;margin-bottom:16px;display:none;}
.alert.error{background:#FEF2F2;color:#B91C1C;border:1px solid #FECACA;display:block;}
.alert.info{background:#EFF6FF;color:#1D4ED8;border:1px solid #BFDBFE;display:block;}
.alert.warn{background:#FEFCE8;color:#A16207;border:1px solid #FDE68A;display:block;}
.alert.ok{background:#F0FDF4;color:#15803D;border:1px solid #BBF7D0;display:block;}

/* ==================== APP SHELL NOVO ==================== */
.layout{display:flex;min-height:100vh;}
.sidebar{width:var(--sidebar-w);flex-shrink:0;background:linear-gradient(180deg,#0F1B2D 0%,#132338 100%);color:#fff;display:flex;flex-direction:column;padding:16px 12px;position:sticky;top:0;height:100vh;transition:width .18s ease;z-index:40;}
.sb-top{display:flex;align-items:center;justify-content:space-between;padding:4px 6px 16px;}
/* #1 — símbolo Scalah centralizado no topo da barra lateral */
.side-logo{flex:1;display:flex;justify-content:center;align-items:center;}
.side-logo img{height:40px;width:auto;display:block;transition:opacity .15s;}
.sb-collapse{background:rgba(255,255,255,.08);border:none;color:var(--sb-txt);width:26px;height:26px;border-radius:7px;cursor:pointer;font-size:14px;line-height:1;flex-shrink:0;transition:background .12s;}
.sb-collapse:hover{background:rgba(255,255,255,.16);color:#fff;}
.sb-group{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:#5A6B84;padding:12px 12px 6px;font-weight:700;}
.side-nav{display:flex;flex-direction:column;gap:3px;flex:1;overflow-y:auto;}
.tab{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:9px;background:none;border:none;color:var(--sb-txt);font-size:13.5px;font-weight:500;cursor:pointer;text-align:left;width:100%;transition:background .12s,color .12s;white-space:nowrap;position:relative;}
.tab svg{width:19px;height:19px;flex-shrink:0;opacity:.85;}
.tab:hover{background:rgba(255,255,255,.06);color:#fff;}
.tab.active{background:var(--sb-active);color:#fff;}
.tab.active::before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:3px;border-radius:0 3px 3px 0;background:var(--brand);}
.tab.active svg{opacity:1;color:var(--brand);}
.side-user{border-top:1px solid rgba(255,255,255,.10);padding-top:14px;margin-top:10px;display:flex;flex-direction:column;gap:9px;font-size:12px;color:var(--sb-txt);}
.su-row{display:flex;align-items:center;gap:10px;}
.su-avatar{width:34px;height:34px;border-radius:9px;background:linear-gradient(135deg,var(--brand),#6366F1);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;flex-shrink:0;}
.su-avatar.sm{width:30px;height:30px;font-size:12px;}
.side-user #userName{color:#fff;font-weight:600;font-size:13px;display:block;}
.client-logo{height:32px;width:auto;max-width:170px;object-fit:contain;background:#fff;border-radius:8px;padding:4px 8px;align-self:flex-start;}
.role-tag{display:inline-block;background:rgba(59,130,246,.2);color:#93C5FD;padding:2px 8px;border-radius:999px;font-size:10px;font-weight:700;letter-spacing:.04em;margin-top:2px;}
.link-btn{background:none;border:none;color:#7E90AC;cursor:pointer;font-size:12px;padding:0;}
.link-btn:hover{color:#fff;text-decoration:underline;}
/* Sidebar recolhida */
.layout.collapsed .sidebar{width:var(--sidebar-cw);}
.layout.collapsed .tab{justify-content:center;gap:0;padding:11px 0;}
.layout.collapsed .tab span,.layout.collapsed .sb-group,.layout.collapsed .side-logo img,.layout.collapsed .side-user .su-txt,.layout.collapsed .side-user .link-row{display:none;}
.layout.collapsed .su-row{justify-content:center;}

/* Área principal + topbar */
.main{flex:1;min-width:0;display:flex;flex-direction:column;}
.topbar{height:var(--topbar-h);background:rgba(255,255,255,.85);backdrop-filter:saturate(180%) blur(8px);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:14px;padding:0 24px;position:sticky;top:0;z-index:30;}
.tb-burger{display:none;background:none;border:none;font-size:20px;cursor:pointer;color:var(--muted);}
.breadcrumb{display:flex;align-items:center;gap:7px;font-size:13px;color:var(--muted);font-weight:500;flex:1;min-width:0;overflow:hidden;white-space:nowrap;}
.breadcrumb .bc-item{color:var(--muted);cursor:pointer;} .breadcrumb .bc-item:hover{color:var(--brand);}
.breadcrumb .bc-cur{color:var(--ink);font-weight:600;} .breadcrumb .bc-sep{color:var(--muted-2);}
.tb-search{position:relative;display:flex;align-items:center;width:280px;max-width:34vw;}
.tb-search svg{position:absolute;left:11px;width:16px;height:16px;color:var(--muted-2);pointer-events:none;}
.tb-search input{width:100%;padding:8px 12px 8px 34px;border:1px solid var(--line);border-radius:9px;font-size:13px;background:var(--page);transition:border-color .15s,box-shadow .15s,background .15s;}
.tb-search input:focus{outline:none;border-color:var(--brand);background:var(--card);box-shadow:0 0 0 4px rgba(59,130,246,.12);}
.tb-actions{display:flex;align-items:center;gap:8px;}
.tb-icon{width:36px;height:36px;border-radius:9px;border:1px solid var(--line);background:var(--card);cursor:pointer;font-size:15px;display:flex;align-items:center;justify-content:center;transition:background .12s,border-color .12s;}
.tb-icon:hover{background:var(--page);border-color:var(--muted-2);}
.container{max-width:1240px;width:100%;margin:0 auto;padding:26px 28px 64px;}

h2.section{font-size:20px;font-weight:700;margin:0 0 18px;letter-spacing:-.02em;}
h2.section[data-slogan]::after{content:attr(data-slogan);display:block;font-size:12px;font-weight:400;color:var(--muted);margin-top:3px;font-style:italic;}
.muted{color:var(--muted);}

/* ---------- Sub-abas ---------- */
.subtabs{display:flex;gap:4px;margin-bottom:20px;flex-wrap:wrap;background:#EEF1F4;padding:4px;border-radius:11px;width:fit-content;}
.subtab{padding:7px 15px;border:none;background:none;border-radius:8px;cursor:pointer;font-weight:600;font-size:13px;color:var(--muted);transition:color .12s,background-color .12s,box-shadow .12s;}
.subtab:hover{color:var(--ink);}
.subtab.active{color:var(--brand-2);background:var(--card);box-shadow:0 1px 3px rgba(15,23,42,.1);}

.pane-actions{display:flex;gap:8px;justify-content:flex-end;margin-bottom:14px;}

/* Responsivo: sidebar vira off-canvas */
@media(max-width:820px){
  .sidebar{position:fixed;left:0;top:0;transform:translateX(-100%);transition:transform .2s;box-shadow:var(--shadow-lg);}
  .layout.mobile-open .sidebar{transform:translateX(0);}
  .tb-burger{display:block;} .tb-search{width:auto;flex:1;}
  .container{padding:18px 16px 48px;}
}

/* ==================== HOME PREMIUM ==================== */
.hero{position:relative;overflow:hidden;border-radius:20px;padding:30px 34px;margin-bottom:22px;color:#fff;
  background:linear-gradient(120deg,#0F1B2D 0%,#1B2F4D 55%,#243B63 100%);
  display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap;box-shadow:var(--shadow-lg);}
.hero-glow{position:absolute;width:420px;height:420px;border-radius:50%;right:-90px;top:-160px;
  background:radial-gradient(circle,rgba(59,130,246,.45) 0%,transparent 70%);pointer-events:none;}
.hero-glow::after{content:"";position:absolute;width:260px;height:260px;border-radius:50%;left:-260px;top:120px;background:radial-gradient(circle,rgba(249,115,22,.3) 0%,transparent 70%);}
.hero-content{position:relative;z-index:1;}
.hero-eyebrow{font-size:11px;text-transform:uppercase;letter-spacing:.14em;color:#8FB0E0;font-weight:700;margin-bottom:8px;}
.hero-title{font-size:28px;font-weight:800;letter-spacing:-.03em;margin:0;line-height:1.1;}
.hero-sub{margin:8px 0 0;font-size:14px;color:#B9C7DB;max-width:460px;line-height:1.5;}
.hero-stats{position:relative;z-index:1;display:flex;gap:12px;flex-wrap:wrap;}
.hstat{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.12);border-radius:14px;padding:14px 20px;min-width:96px;text-align:center;backdrop-filter:blur(4px);}
.hstat-v{font-size:26px;font-weight:800;line-height:1;font-variant-numeric:tabular-nums;}
.hstat-l{font-size:11px;color:#B9C7DB;margin-top:5px;text-transform:uppercase;letter-spacing:.05em;}
.hstat-omie .hstat-v{color:#7DD3FC;} .hstat-ca .hstat-v{color:#C4B5FD;} .hstat-brand .hstat-v{color:#93C5FD;} .hstat-bling .hstat-v{color:#4ADE80;}

.home-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:18px;}
.search-box{position:relative;display:flex;align-items:center;margin-left:auto;}
.search-box svg{position:absolute;left:11px;width:16px;height:16px;color:var(--muted-2);pointer-events:none;}
.search-box input{padding:9px 12px 9px 34px;border:1px solid var(--line);border-radius:10px;font-size:13px;width:230px;background:var(--card);transition:border-color .15s,box-shadow .15s;}
.search-box input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 4px rgba(59,130,246,.14);}
.sys-filter{display:flex;gap:6px;background:#EEF1F4;padding:4px;border-radius:11px;}
.chip{padding:7px 15px;border:none;background:none;border-radius:8px;font-size:12.5px;font-weight:600;color:var(--muted);cursor:pointer;transition:color .12s,background-color .12s,box-shadow .12s;}
.chip:hover{color:var(--ink);}
.chip.active{background:var(--card);color:var(--brand-2);box-shadow:0 1px 3px rgba(15,23,42,.1);}

.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:16px;}
.company-card{position:relative;overflow:hidden;background:var(--card);border:1px solid var(--line);border-radius:var(--radius-lg);padding:20px;cursor:pointer;transition:transform .16s cubic-bezier(.2,.7,.3,1),box-shadow .16s,border-color .16s;display:flex;flex-direction:column;}
.cc-accent{position:absolute;left:0;right:0;top:0;height:3px;background:var(--brand);opacity:.85;transform:scaleX(0);transform-origin:left;transition:transform .2s;}
.company-card.sys-CONTAAZUL .cc-accent{background:#7C3AED;}
.company-card.sys-BLING .cc-accent{background:#16A34A;}
.company-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg);border-color:transparent;}
.company-card:hover .cc-accent{transform:scaleX(1);}
.company-card:hover .cc-arrow{transform:translateX(4px);color:var(--brand);}
.company-card h3{margin:0 0 5px;font-size:15.5px;font-weight:700;letter-spacing:-.01em;line-height:1.3;}
.company-card .cnpj{font-size:12px;color:var(--muted);font-family:ui-monospace,monospace;}
.cc-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;}
.cc-avatar{width:44px;height:44px;border-radius:12px;background:linear-gradient(135deg,var(--brand),#6366F1);color:#fff;display:flex;align-items:center;justify-content:center;font-size:15px;font-weight:800;letter-spacing:.02em;box-shadow:0 4px 12px rgba(59,130,246,.3);}
.company-card.sys-CONTAAZUL .cc-avatar{background:linear-gradient(135deg,#7C3AED,#A855F7);box-shadow:0 4px 12px rgba(124,58,237,.3);}
.company-card.sys-BLING .cc-avatar{background:linear-gradient(135deg,#16A34A,#4ADE80);box-shadow:0 4px 12px rgba(22,163,74,.3);}
.cc-foot{margin-top:16px;padding-top:14px;border-top:1px solid var(--line-2);display:flex;align-items:center;justify-content:space-between;}
.cc-open{font-size:12.5px;font-weight:700;color:var(--ink);}
.cc-arrow{font-size:16px;color:var(--muted-2);transition:transform .16s,color .16s;}
.sys-pill{display:inline-block;padding:4px 11px;border-radius:999px;font-size:11px;font-weight:700;}
.company-card .sys-pill{margin-top:0;}
.sys-OMIE{background:#E0F2FE;color:#0369A1;}
.sys-CONTAAZUL{background:#F3E8FF;color:#6B21A8;}
.sys-BLING{background:#DCFCE7;color:#166534;}

/* ---------- KPIs / cards ---------- */
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px;margin-bottom:20px;}
.kpi{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-lg);padding:16px 18px;position:relative;box-shadow:var(--shadow);transition:transform .14s,box-shadow .14s;}
.kpi:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg);}
.kpi::before{content:"";position:absolute;left:18px;top:18px;bottom:18px;width:3px;border-radius:3px;background:var(--line);}
.kpi .sigla{font-size:11px;font-weight:700;letter-spacing:.08em;color:var(--muted-2);margin-bottom:2px;padding-left:12px;}
.kpi .label{font-size:12px;color:var(--muted);margin-bottom:8px;padding-left:12px;}
.kpi .value{font-size:23px;font-weight:700;font-variant-numeric:tabular-nums;padding-left:12px;letter-spacing:-.02em;}
.kpi.pagar::before{background:var(--red);} .kpi.pagar .value,.kpi.pagar .sigla{color:var(--red);}
.kpi.receber::before{background:var(--green);} .kpi.receber .value,.kpi.receber .sigla{color:var(--green);}
.kpi.sdi::before{background:var(--brand);} .kpi.sdi .value,.kpi.sdi .sigla{color:var(--brand);}
.kpi.sdf::before{background:var(--accent);} .kpi.sdf .value,.kpi.sdf .sigla{color:var(--accent);}

/* ---------- Banner do Resumo (cor da empresa) ---------- */
.resumo-banner{border-radius:20px;padding:28px 30px;color:#fff;margin-bottom:18px;position:relative;overflow:hidden;box-shadow:var(--shadow-lg);}
.resumo-banner .bg-blob{position:absolute;border-radius:50%;pointer-events:none;}
.resumo-banner .greet{font-size:15px;font-weight:500;opacity:.92;}
.resumo-banner .slogan{font-size:13px;opacity:.72;margin-top:2px;font-style:italic;}
.resumo-banner .total-lbl{font-size:12px;opacity:.72;margin-top:16px;}
.resumo-banner .total-val{font-size:34px;font-weight:800;letter-spacing:-.02em;margin-top:1px;font-variant-numeric:tabular-nums;}
.resumo-banner .b-logo{position:absolute;right:26px;top:22px;height:34px;background:rgba(255,255,255,.92);border-radius:8px;padding:4px 8px;}

/* ---------- Gráfico de rosca (saldos) ---------- */
.chart-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-lg);padding:18px 20px;margin-bottom:20px;display:flex;gap:26px;align-items:center;flex-wrap:wrap;}
.chart-card h4{margin:0 0 4px;font-size:14px;font-weight:600;}
.donut-legend{display:flex;flex-direction:column;gap:8px;flex:1;min-width:180px;}
.legend-row{display:flex;align-items:center;gap:9px;font-size:13px;}
.legend-dot{width:10px;height:10px;border-radius:3px;flex-shrink:0;}
.legend-name{flex:1;color:var(--ink);}
.legend-val{font-variant-numeric:tabular-nums;font-weight:600;color:var(--ink);}

/* ---------- Filtros (premium) ---------- */
.filters{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-lg);padding:18px 20px;margin-bottom:18px;box-shadow:var(--shadow);}
.filters .grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:14px;}
.filters label{font-size:11px;font-weight:600;color:#475467;display:block;margin-bottom:5px;text-transform:uppercase;letter-spacing:.03em;}
.filters .input,.filters select{padding:10px 12px;font-size:13px;border-radius:9px;background:var(--page);border:1px solid var(--line);transition:border-color .15s,box-shadow .15s,background .15s;}
.filters .input:focus,.filters select:focus{background:var(--card);border-color:var(--brand);box-shadow:0 0 0 4px rgba(59,130,246,.12);}
.filters .actions{margin-top:16px;padding-top:14px;border-top:1px solid var(--line-2);display:flex;gap:10px;align-items:center;flex-wrap:wrap;}

/* ---------- Tabelas ---------- */
.table-wrap{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-lg);overflow:auto;}
table{width:100%;border-collapse:collapse;font-size:13px;}

/* Redimensionar colunas arrastando a borda do cabeçalho (como no Excel) — ver
   makeResizableTable() em app.js. SEM table-layout:fixed de propósito: a tabela fica em
   layout automático (100% de largura, todas as colunas visíveis); a largura do <col> é
   só uma dica e as demais colunas se acomodam sozinhas, sem estourar a tela. */
.col-resizable th{position:relative;}
/* right:0 (não valor negativo): o manípulo fica DENTRO da caixa do <th> — encostado na
   borda direita, fácil de agarrar. */
.col-resize-handle{position:absolute;top:0;right:0;width:7px;height:100%;cursor:col-resize;z-index:6;border-right:2px solid transparent;}
.col-resize-handle:hover,.col-resizing .col-resize-handle{border-right-color:rgba(37,99,235,.65);}
.col-resizing,.col-resizing *{cursor:col-resize !important;user-select:none;}
/* Ícone de reset (desfaz todas) no 1º cabeçalho — além do duplo-clique que desfaz 1 coluna. */
.col-reset-btn{position:absolute;top:50%;transform:translateY(-50%);right:11px;font-size:12px;line-height:1;cursor:pointer;opacity:.5;padding:2px;}
.col-reset-btn:hover{opacity:1;}
thead th{background:#FAFBFD;text-align:left;padding:11px 14px;font-size:11px;text-transform:uppercase;color:#8A93A5;letter-spacing:.04em;font-weight:600;border-bottom:1px solid var(--line);white-space:nowrap;}
tbody td{padding:11px 14px;border-bottom:1px solid var(--line-2);vertical-align:top;}
tbody tr:last-child td{border-bottom:none;}
tbody tr:hover{background:#FAFBFD;}
.val{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;}
/* Recebimento parcial: linha extra abaixo do valor do título (recebido / em aberto). */
.val-parcial{display:flex;flex-direction:column;gap:1px;margin-top:3px;font-size:11px;font-weight:600;line-height:1.3;}
.val-parcial .vp-receb{color:var(--green);}
.val-parcial .vp-aberto{color:var(--red);}
.right-align{text-align:right;}

.back-link{display:inline-flex;align-items:center;gap:6px;background:var(--card);border:1px solid var(--line);color:var(--muted);cursor:pointer;font-weight:600;font-size:12.5px;padding:6px 12px;border-radius:8px;margin-bottom:16px;transition:color .12s,border-color .12s,background-color .12s;}
.back-link:hover{color:var(--brand);border-color:#C7DBFB;background:var(--brand-soft);}
#dashTitle{font-size:24px;font-weight:800;letter-spacing:-.025em;margin:0 0 4px;}

/* ---------- DRE ---------- */
.dre-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
@media (max-width:760px){.dre-grid{grid-template-columns:1fr;}}
.dre-box{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden;}
.dre-box h4{margin:0;padding:12px 14px;font-size:13px;background:#FAFBFD;border-bottom:1px solid var(--line);}
.dre-box table{width:100%;}
.dre-result{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:14px;margin-top:16px;}
.dre-result .kpi .value.pos{color:var(--green);} .dre-result .kpi .value.neg{color:var(--red);}

/* ---------- Admin (premium) ---------- */
.admin-head{margin-bottom:20px;}
.admin-head h2{font-size:22px;font-weight:800;letter-spacing:-.025em;margin:0;}
.admin-head p{margin:4px 0 0;font-size:13px;color:var(--muted);}
.admin-section{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-lg);padding:22px 24px;margin-bottom:18px;box-shadow:var(--shadow);}
.admin-section h3{margin:0 0 16px;font-size:15px;font-weight:700;letter-spacing:-.01em;display:flex;align-items:center;gap:9px;padding-bottom:12px;border-bottom:1px solid var(--line-2);}
.admin-section h3::before{content:"";width:4px;height:16px;border-radius:3px;background:var(--brand);flex-shrink:0;}
.row-actions{display:flex;gap:6px;flex-wrap:wrap;align-items:center;}
.tag-locked{background:#FEF2F2;color:#B91C1C;padding:3px 10px;border-radius:999px;font-size:11px;font-weight:700;}
.tag-active{background:#F0FDF4;color:#15803D;padding:3px 10px;border-radius:999px;font-size:11px;font-weight:700;}
.tag-off{background:#F1F3F5;color:#64748B;padding:3px 10px;border-radius:999px;font-size:11px;font-weight:700;}

/* ---------- Modal (premium) ---------- */
.modal-bg{position:fixed;inset:0;background:rgba(15,23,42,.55);display:none;place-items:center;z-index:50;padding:20px;backdrop-filter:blur(4px);}
.modal-bg.show{display:grid;animation:fadeIn .15s ease;}
.modal{background:var(--card);border-radius:18px;padding:28px;width:100%;max-width:470px;max-height:90vh;overflow:auto;box-shadow:0 30px 80px rgba(6,20,45,.4);border:1px solid rgba(255,255,255,.08);animation:modalIn .2s cubic-bezier(.2,.7,.3,1);}
.modal.modal-wide{max-width:600px;}
.modal h3{margin:0 0 18px;font-size:17px;font-weight:800;letter-spacing:-.02em;}
.modal .actions{display:flex;gap:10px;justify-content:flex-end;margin-top:20px;}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes modalIn{from{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:none}}
.checklist{max-height:200px;overflow:auto;border:1px solid var(--line);border-radius:9px;padding:8px;}
.checklist label{display:flex;align-items:center;gap:8px;padding:4px;font-weight:400;font-size:13px;}

.spinner{display:inline-block;width:16px;height:16px;border:2px solid #D6E4F7;border-top-color:var(--brand);border-radius:50%;animation:spin .7s linear infinite;vertical-align:middle;}
@keyframes spin{to{transform:rotate(360deg);}}
.center-pad{padding:40px;text-align:center;color:var(--muted);}
.hidden{display:none !important;}

@media (max-width:720px){
  .layout{flex-direction:column;}
  .sidebar{width:100%;height:auto;position:relative;flex-direction:row;align-items:center;padding:12px 16px;flex-wrap:wrap;}
  .side-logo{padding:0;margin-right:auto;}
  .side-nav{flex-direction:row;flex:none;}
  .side-user{border-top:none;padding-top:0;margin-top:0;flex-direction:row;align-items:center;gap:10px;}
  .container{padding:20px 16px 48px;}
}

/* ---------- DRE gerencial (padrão skill) ---------- */
.dre-head{display:flex;gap:16px;align-items:stretch;flex-wrap:wrap;margin-bottom:18px;}
.dre-score{display:flex;align-items:center;gap:14px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius-lg);padding:16px 20px;}
.score-ring{width:56px;height:56px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:20px;font-weight:800;color:#fff;font-variant-numeric:tabular-nums;}
.score-ring.st-green{background:var(--green);} .score-ring.st-yellow{background:var(--amber);} .score-ring.st-red{background:var(--red);}
.score-lbl{font-size:12px;color:var(--muted);}
.score-status{font-size:17px;font-weight:700;margin-top:2px;}
.score-status.pos{color:var(--green);} .score-status.neg{color:var(--red);} .score-status.warn{color:var(--amber);}
.dre-margins{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;flex:1;min-width:280px;}
.m-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-lg);padding:12px 16px;}
.m-lbl{font-size:12px;color:var(--muted);}
.m-val{font-size:20px;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.02em;margin-top:3px;}
.m-val.pos{color:var(--green);} .m-val.neg{color:var(--red);}

.dre-cascade table{width:100%;border-collapse:collapse;}
.dre-cascade .dre-label{font-size:13px;}
.dre-row.tp-section .dre-label{font-weight:700;}
.dre-row.tp-section{background:#F4F8FE;}
.dre-row.tp-sub{background:rgba(46,134,230,.05);font-weight:600;}
.dre-row.tp-sub .dre-label{font-weight:600;}
.dre-row.tp-total{background:#F1F5F9;}
.dre-row.tp-total .dre-label{font-weight:800;color:var(--ink);}
.dre-row.tp-total .val{font-weight:800;color:var(--green);} .dre-row.tp-total .val.neg{color:var(--red);}
.dre-row .val.neg{color:var(--red);}
.dre-child td{padding-top:4px;padding-bottom:4px;font-size:12px;color:var(--muted);background:var(--card);}
.dre-child .dre-label.child{padding-left:26px;}
.block-title{margin:22px 0 10px;font-size:14px;font-weight:700;color:var(--ink);}
table.semaforo td,table.semaforo th{padding:9px 12px;}
.dre-nota{margin-top:16px;background:#FFF7ED;border:1px solid #FED7AA;color:#9A3412;border-radius:12px;padding:12px 16px;font-size:13px;line-height:1.5;}
.btn-link{background:none;border:none;padding:0;color:#9A3412;font:inherit;font-weight:600;text-decoration:underline;cursor:pointer;white-space:nowrap;}
.btn-link:hover{opacity:.75;}

/* ---------- Barra-resumo A Receber / A Pagar ---------- */
.lista-summary{display:flex;gap:12px;margin-bottom:14px;flex-wrap:wrap;}
.ls-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-lg);padding:12px 18px;min-width:170px;position:relative;overflow:hidden;}
.ls-card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--muted-2);}
.ls-card.receber::before{background:var(--green);}
.ls-card.pagar::before{background:var(--red);}
.ls-lbl{font-size:12px;color:var(--muted);}
.ls-val{font-size:21px;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.02em;margin-top:2px;padding-left:8px;}
.ls-card.receber .ls-val{color:var(--green);} .ls-card.pagar .ls-val{color:var(--red);}
tr.lista-total td{border-top:2px solid var(--line);font-weight:700;background:var(--page);}
tr.lista-total td:first-child{color:var(--muted);}
/* zebra + hover nas tabelas de dados */
.table-wrap tbody tr:nth-child(even):not(.lista-total):not(.dre-row):not(.dre-child){background:#FCFDFE;}
.table-wrap tbody tr:hover:not(.lista-total){background:#F4F8FE;}

/* ---------- DFC: waterfall e composição ---------- */
.waterfall{display:flex;flex-direction:column;gap:8px;margin-bottom:8px;}
.wf-row{display:grid;grid-template-columns:150px 1fr 130px;align-items:center;gap:12px;}
.wf-lbl{font-size:13px;color:var(--ink);}
.wf-track{background:var(--line-2);border-radius:6px;height:22px;position:relative;overflow:hidden;}
.wf-bar{height:100%;border-radius:6px;}
.wf-bar.pos{background:var(--green);} .wf-bar.neg{background:var(--red);}
.wf-val{text-align:right;font-variant-numeric:tabular-nums;font-weight:600;font-size:13px;}
.wf-val.neg{color:var(--red);}
.comp-bars{display:flex;flex-direction:column;gap:9px;margin-bottom:8px;}
.cb-row{display:grid;grid-template-columns:150px 1fr 170px;align-items:center;gap:12px;}
.cb-lbl{font-size:13px;}
.cb-track{background:var(--line-2);border-radius:6px;height:16px;overflow:hidden;}
.cb-bar{height:100%;border-radius:6px;}
.cb-val{text-align:right;font-variant-numeric:tabular-nums;font-size:13px;}

/* ==================== MÓDULO FINANCEIRO NOVO ==================== */
/* Cards de dashboard */
.dash-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-bottom:16px;}
.dash-card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 14px;position:relative;overflow:hidden;}
.dash-card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--muted-2);}
.dash-card.pos::before{background:var(--green);} .dash-card.neg::before{background:var(--red);} .dash-card.brand::before{background:var(--brand);}
.dc-lbl{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.03em;}
.dc-val{font-size:18px;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.02em;margin-top:3px;}
.dash-card.pos .dc-val{color:var(--green);} .dash-card.neg .dc-val{color:var(--red);} .dash-card.brand .dc-val{color:var(--brand);}
/* faixa de indicadores */
.ind-strip{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px;}
.ind-item{display:flex;flex-direction:column;background:var(--page);border:1px solid var(--line);border-radius:9px;padding:7px 12px;min-width:110px;}
.ind-l{font-size:11px;color:var(--muted);} .ind-v{font-size:14px;font-weight:700;font-variant-numeric:tabular-nums;}
/* Tabela financeira premium */
.fin-scroll{overflow-x:auto;border:1px solid var(--line);border-radius:12px;background:var(--card);}
.fin-table{border-collapse:separate;border-spacing:0;width:100%;font-size:12.5px;min-width:760px;}
.fin-table th{background:var(--navy);color:#fff;font-weight:600;padding:10px 12px;position:sticky;top:0;z-index:3;white-space:nowrap;text-align:right;}
.fin-table th.fin-desc{text-align:left;left:0;z-index:5;min-width:120px;}
.fin-table td{padding:8px 12px;text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums;border-bottom:1px solid var(--line-2);}
/* Coluna Descrição: nome do cliente/fornecedor/categoria QUEBRA em várias linhas ao
   estreitar a coluna (em vez de empurrar/cortar os valores). Permite reduzir a largura da
   coluna sem prejudicar a leitura dos números à direita. */
.fin-table td.fin-desc{text-align:left;position:sticky;left:0;background:var(--card);z-index:2;font-weight:500;white-space:normal;overflow-wrap:anywhere;word-break:break-word;}
.fin-table th.fin-tot-col,.fin-table td.fin-tot-col{background:#F4F8FE;font-weight:700;}
.fin-table th.fin-tot-col{background:var(--navy-2);}
.fin-num.neg{color:var(--red);} .fin-num .zero{color:var(--muted-2);}
.fin-row.has-ch{cursor:pointer;}
.fin-caret{display:inline-block;width:14px;transition:transform .15s;color:var(--brand);font-size:10px;}
.fin-row.open .fin-caret{transform:rotate(90deg);}
.fin-caret-sp{display:inline-block;width:14px;}
.fin-row.tp-section td{font-weight:700;} .fin-row.tp-section td.fin-desc{background:#EEF4FC;}
.fin-row.tp-subtotal td{background:rgba(46,134,230,.06);font-weight:700;} .fin-row.tp-subtotal td.fin-desc{background:#E9F1FB;}
/* Linha de total/resultado: cor do VALOR segue o sinal (positivo verde, negativo vermelho). */
.fin-row.tp-total td{background:#F1F5F9;font-weight:800;} .fin-row.tp-total td.fin-desc{background:#E8EDF3;color:var(--ink);}
.fin-row.tp-total .fin-num{color:var(--green);} .fin-row.tp-total .fin-num.neg{color:var(--red);}
.fin-child td{font-size:12px;color:#475467;background:#FCFDFE;} .fin-child td.fin-desc.child{padding-left:34px;background:#FCFDFE;}
.fin-qtd{display:inline-block;background:var(--line);color:var(--muted);border-radius:8px;padding:0 6px;font-size:10px;margin-left:4px;}
.fin-table tbody tr:hover td{background:#F0F6FE;}
/* Rankings */
.rank-wrap{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:20px;}
@media(max-width:820px){.rank-wrap{grid-template-columns:1fr;}}
.rank-table{width:100%;} .rank-table td,.rank-table th{padding:6px 10px;font-size:12.5px;}
.rk-pos{color:var(--muted);font-weight:700;width:24px;} .rk-nome{font-weight:500;}
.rk-val{text-align:right;font-variant-numeric:tabular-nums;font-weight:600;} .rk-val.receber{color:var(--green);} .rk-val.pagar{color:var(--red);}
.rk-qtd,.rk-part{text-align:right;color:var(--muted);font-variant-numeric:tabular-nums;}
/* Skeleton */
.skeleton .sk-cards{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;margin-bottom:16px;}
.sk-card{height:56px;border-radius:12px;} .sk-row{height:30px;border-radius:6px;margin-bottom:6px;}
.sk-card,.sk-row{background:linear-gradient(90deg,#EEF1F5 25%,#F6F8FA 50%,#EEF1F5 75%);background-size:200% 100%;animation:sk 1.2s infinite;}
@keyframes sk{0%{background-position:200% 0;}100%{background-position:-200% 0;}}
/* ---------- TEMA ESCURO ---------- */
/* Tema PADRÃO do produto (ver app.html: body já nasce data-theme="dark").
   Paleta oficial Scalah (scalah-brand/scalah-theme.css): navy #16294A, azul #4F9BCB, laranja #EE7724.
   No escuro o LARANJA vira a cor de ação (é o que dá contraste sobre o fundo quase preto e o que
   as referências usam); o azul Scalah fica como cor secundária/informativa. */
body[data-theme="dark"]{
  --page:#0B0F14;--card:#141A21;--ink:#E8EDF2;--muted:#8A97A6;--muted-2:#5D6B7A;
  --line:#232B35;--line-2:#1A2128;
  --brand:#EE7724;--brand-2:#D6661A;--brand-soft:rgba(238,119,36,.12);
  --accent:#4F9BCB;--accent-2:#3D85B5;
  --navy:#0B0F14;--navy-2:#141A21;
  --green:#2B9D6E;--red:#D64545;--amber:#EE9A24;
  --sb-txt:#8A97A6;--sb-active:rgba(238,119,36,.14);
  --shadow:0 1px 2px rgba(0,0,0,.4);--shadow-lg:0 12px 32px rgba(0,0,0,.55);
}
body[data-theme="dark"] .dash-card,body[data-theme="dark"] .ind-item,body[data-theme="dark"] .fin-scroll,body[data-theme="dark"] .company-card,body[data-theme="dark"] .kpi,body[data-theme="dark"] .m-card,body[data-theme="dark"] .dre-score,body[data-theme="dark"] .ls-card,body[data-theme="dark"] .filters,body[data-theme="dark"] .modal,body[data-theme="dark"] .search-box input,body[data-theme="dark"] .chip,body[data-theme="dark"] .subtab{background:var(--card);color:var(--ink);}
body[data-theme="dark"] .fin-table td.fin-desc{background:var(--card);}
body[data-theme="dark"] .fin-table td{border-color:var(--line-2);}
body[data-theme="dark"] .fin-child td,body[data-theme="dark"] .fin-table tbody tr:hover td{background:#1B2436;}
body[data-theme="dark"] .fin-row.tp-section td.fin-desc,body[data-theme="dark"] .fin-row.tp-subtotal td.fin-desc{background:#1C2740;}
body[data-theme="dark"] table th{color:#E6EAF2;}
body[data-theme="dark"] input,body[data-theme="dark"] select{background:#0E1420;color:var(--ink);border-color:var(--line);}
.theme-toggle{background:none;border:1px solid rgba(255,255,255,.2);color:#AFC2DE;border-radius:8px;padding:5px 10px;cursor:pointer;font-size:12px;margin-top:8px;}
.theme-toggle:hover{background:rgba(255,255,255,.08);color:#fff;}

/* ==================== FILTROS MULTI-SELEÇÃO ==================== */
.multi-bar{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px;}
.ms{position:relative;}
.ms-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 13px;border:1px solid var(--line);background:var(--card);border-radius:9px;font-size:13px;font-weight:600;color:var(--ink);cursor:pointer;transition:border-color .12s,color .12s,background-color .12s;box-shadow:var(--shadow);}
.ms-btn:hover{border-color:#C7DBFB;}
.ms-btn.active{border-color:var(--brand);color:var(--brand-2);background:var(--brand-soft);}
.ms-count{color:var(--brand);font-weight:700;}
.ms-caret{color:var(--muted-2);font-size:10px;}
.ms-pop{position:absolute;z-index:50;top:calc(100% + 6px);left:0;width:280px;max-width:86vw;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-lg);padding:10px;}
.ms-pop.hidden{display:none;}
.ms-search{width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:8px;font-size:13px;margin-bottom:8px;background:var(--page);}
.ms-search:focus{outline:none;border-color:var(--brand);background:var(--card);box-shadow:0 0 0 3px rgba(59,130,246,.12);}
.ms-tools{display:flex;gap:8px;margin-bottom:8px;}
.ms-tools button{flex:1;padding:6px;border:1px solid var(--line);background:var(--card);border-radius:7px;font-size:11.5px;font-weight:600;color:var(--muted);cursor:pointer;}
.ms-tools button:hover{color:var(--brand);border-color:#C7DBFB;}
.ms-list{max-height:230px;overflow-y:auto;display:flex;flex-direction:column;gap:1px;}
.ms-opt{display:flex;align-items:center;gap:9px;padding:7px 8px;border-radius:7px;font-size:13px;cursor:pointer;}
.ms-opt:hover{background:var(--page);}
.ms-opt input{width:15px;height:15px;accent-color:var(--brand);flex-shrink:0;}
.ms-opt span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
/* chips de filtros aplicados */
.filter-chips{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:12px;align-items:center;}
.filter-chips:empty{margin:0;}
.fchip{display:inline-flex;align-items:center;gap:6px;background:var(--brand-soft);color:var(--brand-2);border:1px solid #C7DBFB;border-radius:999px;padding:4px 10px;font-size:12px;}
.fchip b{font-weight:700;}
.fchip-x{cursor:pointer;font-weight:700;opacity:.7;}
.fchip-x:hover{opacity:1;}
.fchip-clear{background:none;border:none;color:var(--muted);font-size:12px;font-weight:600;cursor:pointer;text-decoration:underline;}
.fchip-clear:hover{color:var(--red);}
body[data-theme="dark"] .ms-btn,body[data-theme="dark"] .ms-pop,body[data-theme="dark"] .ms-search,body[data-theme="dark"] .ms-tools button{background:var(--card);color:var(--ink);}

/* ==================== PAGE HEADER (dashboard) ==================== */
.page-head{display:flex;align-items:center;gap:14px;margin-bottom:20px;}
.ph-back{width:38px;height:38px;flex-shrink:0;border:1px solid var(--line);background:var(--card);border-radius:10px;cursor:pointer;color:var(--muted);display:flex;align-items:center;justify-content:center;transition:color .12s,border-color .12s,background-color .12s;box-shadow:var(--shadow);}
.ph-back svg{width:18px;height:18px;}
.ph-back:hover{color:var(--brand);border-color:#C7DBFB;background:var(--brand-soft);}
.ph-avatar{width:48px;height:48px;flex-shrink:0;border-radius:13px;background:linear-gradient(135deg,var(--brand),#6366F1);color:#fff;display:flex;align-items:center;justify-content:center;font-size:17px;font-weight:800;box-shadow:0 4px 12px rgba(59,130,246,.3);}
.ph-avatar.sys-CONTAAZUL{background:linear-gradient(135deg,#7C3AED,#A855F7);box-shadow:0 4px 12px rgba(124,58,237,.3);}
.ph-avatar.sys-BLING{background:linear-gradient(135deg,#16A34A,#4ADE80);box-shadow:0 4px 12px rgba(22,163,74,.3);}
.ph-info{flex:1;min-width:0;}
.ph-title{font-size:22px;font-weight:800;letter-spacing:-.025em;margin:0;line-height:1.15;}
.ph-meta{font-size:12.5px;color:var(--muted);display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:3px;}
.ph-meta i{font-style:italic;}
.ph-dot{color:var(--muted-2);}
.ph-sys{display:inline-block;padding:2px 9px;border-radius:999px;font-size:10.5px;font-weight:700;}
.ph-actions{margin-left:auto;display:flex;align-items:center;gap:10px;flex-shrink:0;}
.ph-updated{font-size:12px;color:var(--muted-2);}
@media(max-width:640px){.ph-actions{display:none;} .ph-title{font-size:19px;}}

/* filtros mais enxutos */
.filters{padding:16px 18px;}
.filters .actions{margin-top:14px;padding-top:12px;}

/* ==================== TOOLBAR DE FILTROS (compacta) ==================== */
.toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin-bottom:10px;box-shadow:var(--shadow);}
.tb-period{display:flex;align-items:center;gap:8px;}
.tb-plabel{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);}
.tb-date{padding:7px 9px;border:1px solid var(--line);border-radius:8px;font-size:13px;background:var(--page);color:var(--ink);transition:border-color .15s,box-shadow .15s,background .15s;}
.tb-date:focus{outline:none;border-color:var(--brand);background:var(--card);box-shadow:0 0 0 3px rgba(59,130,246,.12);}
.tb-dash{color:var(--muted-2);}
.tb-multi{display:flex;flex-wrap:wrap;gap:8px;flex:1;min-width:0;}
.tb-multi .multi-bar{margin:0;}
.tb-right{display:flex;align-items:center;gap:8px;margin-left:auto;}
.tb-iconbtn{height:34px;padding:0 12px;border:1px solid var(--line);background:var(--card);border-radius:8px;cursor:pointer;font-size:13px;font-weight:600;color:var(--muted);display:inline-flex;align-items:center;gap:5px;transition:color .12s,border-color .12s,background-color .12s;}
.tb-iconbtn:hover{color:var(--brand);border-color:#C7DBFB;background:var(--brand-soft);}
.tb-adv{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:16px 18px;margin-bottom:10px;box-shadow:var(--shadow);animation:modalIn .16s ease;}
.tb-adv .grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:14px;}
.tb-adv label{font-size:11px;font-weight:600;color:#475467;display:block;margin-bottom:5px;text-transform:uppercase;letter-spacing:.03em;}
/* the multi-bar now lives inside toolbar; neutralize its old outer margin */
#multiBar.multi-bar{margin-bottom:0;}
@media(max-width:640px){.tb-period{width:100%;} .tb-multi{width:100%;} .tb-right{width:100%;}}

/* ==================== PRESETS + FAVORITOS ==================== */
.tb-preset{padding:7px 10px;border:1px solid var(--line);border-radius:8px;font-size:13px;font-weight:600;background:var(--brand-soft);color:var(--brand-2);cursor:pointer;transition:border-color .15s;}
.tb-preset:focus{outline:none;border-color:var(--brand);}
.tb-fav{position:relative;}
.fav-pop{position:absolute;z-index:50;top:calc(100% + 6px);right:0;width:250px;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-lg);padding:10px;}
.fav-pop.hidden{display:none;}
.fav-save{display:flex;gap:6px;margin-bottom:8px;}
.fav-name{flex:1;min-width:0;padding:7px 9px;border:1px solid var(--line);border-radius:8px;font-size:12.5px;background:var(--page);}
.fav-name:focus{outline:none;border-color:var(--brand);background:var(--card);}
.fav-list{display:flex;flex-direction:column;gap:2px;max-height:240px;overflow-y:auto;}
.fav-item{display:flex;align-items:center;justify-content:space-between;padding:6px 8px;border-radius:7px;font-size:13px;}
.fav-item:hover{background:var(--page);}
.fav-apply{cursor:pointer;color:var(--ink);font-weight:500;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.fav-apply:hover{color:var(--brand);}
.fav-del{cursor:pointer;color:var(--muted-2);font-weight:700;padding:0 4px;}
.fav-del:hover{color:var(--red);}
body[data-theme="dark"] .tb-preset,body[data-theme="dark"] .tb-date,body[data-theme="dark"] .toolbar,body[data-theme="dark"] .tb-adv,body[data-theme="dark"] .fav-pop,body[data-theme="dark"] .fav-name,body[data-theme="dark"] .tb-iconbtn,body[data-theme="dark"] .admin-section,body[data-theme="dark"] table th{background:var(--card);color:var(--ink);}

/* ==================== ESTADOS VAZIOS / ERRO ==================== */
.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:56px 24px;gap:6px;}
.es-icon{width:64px;height:64px;border-radius:18px;display:flex;align-items:center;justify-content:center;margin-bottom:10px;background:var(--brand-soft);color:var(--brand);}
.es-icon svg{width:30px;height:30px;}
.es-title{font-size:16px;font-weight:700;color:var(--ink);letter-spacing:-.01em;}
.es-desc{font-size:13px;color:var(--muted);max-width:420px;line-height:1.55;}
.empty-state .btn{margin-top:14px;}
.es-error .es-icon{background:#FEF2F2;color:var(--red);}
.es-error .es-title{color:#B91C1C;}
td .empty-state{padding:40px 20px;}

/* ==================== RELATÓRIOS (automação) ==================== */
.rel-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius-lg);padding:16px 20px;box-shadow:var(--shadow);flex-wrap:wrap;}
.rel-title{font-size:15px;font-weight:700;}
.rel-badge{display:inline-block;padding:3px 10px;border-radius:999px;font-size:11px;font-weight:700;}
.b-brand{background:var(--brand-soft);color:var(--brand-2);} .b-green{background:#F0FDF4;color:#15803D;} .b-amber{background:#FFF7ED;color:#B45309;} .b-red{background:#FEF2F2;color:#B91C1C;}
.rel-files{display:flex;gap:6px;} .rel-file{display:inline-block;padding:3px 10px;border:1px solid var(--line);border-radius:7px;font-size:11.5px;font-weight:600;color:var(--brand-2);text-decoration:none;transition:background-color .12s,border-color .12s;}
.rel-file:hover{background:var(--brand-soft);border-color:#C7DBFB;}

/* ==================== DOCUMENTOS ==================== */
.doc-up{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.doc-up .input{width:auto;padding:8px 10px;}
.doc-up input[type=file]{font-size:12px;max-width:230px;}

/* ==================== CENTRAL DE ATENDIMENTO (estilo WhatsApp) ==================== */
.wpp-toggle{margin-bottom:12px;}
.wpp-sim{margin-bottom:16px;}
.wpp-wrap{display:grid;grid-template-columns:320px 1fr;gap:16px;margin-top:0;min-height:520px;height:calc(100vh - 320px);}
@media(max-width:820px){.wpp-wrap{grid-template-columns:1fr;height:auto;}}

/* -- coluna esquerda: lista de conversas -- */
.wpp-list{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow);display:flex;flex-direction:column;overflow:hidden;}
.wpp-search-bar{display:flex;align-items:center;gap:8px;padding:10px;border-bottom:1px solid var(--line-2);}
.wpp-search-bar .wpp-search{padding:0;border:0;flex:1;}
.wpp-search-bar #chatNovoContatoBtn{flex:none;white-space:nowrap;}
.wpp-search{padding:10px;border-bottom:1px solid var(--line-2);}
.wpp-search input{width:100%;}
.wpp-novo-contato{display:flex;flex-direction:column;gap:8px;padding:12px;border-bottom:1px solid var(--line-2);background:var(--page);}
.wpp-novo-contato .field label{font-size:11px;}
.wpp-nc-actions{display:flex;gap:8px;}
.wpp-nc-err{font-size:11.5px;color:var(--red);}
.wpp-items{flex:1;overflow-y:auto;}
.wpp-item{display:flex;align-items:flex-start;gap:10px;padding:11px 12px;border-bottom:1px solid var(--line-2);cursor:pointer;transition:background .12s;}
.wpp-item:hover{background:var(--page);}
.wpp-item.active{background:var(--brand-soft);}
.wpp-avatar{flex:none;width:38px;height:38px;border-radius:50%;background:var(--brand);color:#fff;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:800;letter-spacing:.02em;}
.wpp-item-main{flex:1;min-width:0;}
.wpp-item-top{display:flex;align-items:baseline;justify-content:space-between;gap:6px;}
.wpp-item-name{font-size:13.5px;font-weight:700;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.wpp-item-time{flex:none;font-size:10.5px;color:var(--muted-2);}
.wpp-item-company{font-size:11px;color:var(--muted);margin:1px 0 3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.wpp-item-bottom{display:flex;align-items:center;justify-content:space-between;gap:6px;}
.wpp-item-preview{font-size:12px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;}
.wpp-badge{flex:none;display:inline-block;padding:2px 8px;border-radius:999px;font-size:9.5px;font-weight:800;letter-spacing:.02em;text-transform:uppercase;}
.wpp-badge.urgente{background:#FEF2F2;color:#B91C1C;}
.wpp-badge.alta{background:#FFF7ED;color:#B45309;}
.wpp-badge.media{background:var(--brand-soft);color:var(--brand-2);}
.wpp-badge.baixa{background:#F0FDF4;color:#15803D;}
.wpp-badge.triagem{background:#FFF7ED;color:#B45309;border:1px solid #FDE3C4;}
.wpp-empty{padding:24px 16px;font-size:13px;}
.wpp-item-sem-conversa{opacity:.68;}
.wpp-item-sem-conversa:hover{opacity:1;}
.muted-avatar{background:var(--muted-2);}
.wpp-sem-conversa-aviso{margin:16px;padding:12px 14px;background:#FFF7ED;border:1px solid #FDE3C4;border-radius:10px;font-size:12.5px;color:#B45309;line-height:1.5;}
.wpp-vincular{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 16px 10px;padding:10px 12px;background:#FFF7ED;border:1px solid #FDE3C4;border-radius:10px;}
.wpp-vincular select{min-width:180px;}
.wpp-vincular input{min-width:160px;flex:1;}
.wpp-vincular #ctVincularErro{font-size:11.5px;color:var(--red);width:100%;}

/* -- coluna direita: conversa -- */
.wpp-thread{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-lg);display:flex;flex-direction:column;box-shadow:var(--shadow);overflow:hidden;}
.wpp-thread-head{display:flex;align-items:flex-start;gap:10px;padding:12px 16px;border-bottom:1px solid var(--line);flex-wrap:wrap;}
.wpp-thread-head .wpp-avatar{width:34px;height:34px;font-size:12px;flex:none;}
.wpp-thread-title{flex:1 1 180px;min-width:0;}
.wpp-thread-title b{font-size:14px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.wpp-thread-sub{font-size:11.5px;color:var(--muted);margin-top:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.wpp-thread-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap;flex:1 1 auto;justify-content:flex-end;min-width:0;}
.wpp-robo-badge{display:inline-block;padding:3px 9px;border-radius:999px;font-size:10.5px;font-weight:700;white-space:nowrap;flex:none;}
.wpp-robo-badge.ativo{background:#F0FDF4;color:#15803D;}
.wpp-robo-badge.pausado{background:#FFF7ED;color:#B45309;}
.wpp-robo-erro{font-size:11.5px;color:var(--red);padding:0 16px;min-height:0;}
.wpp-robo-erro:empty{display:none;}
.wpp-msgs{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:10px;background:var(--page);}
.wpp-bubble{max-width:74%;display:flex;flex-direction:column;}
.wpp-bubble.in{align-self:flex-start;}
.wpp-bubble.out{align-self:flex-end;align-items:flex-end;}
.wpp-bubble-author{font-size:10px;font-weight:700;color:var(--brand-2);margin-bottom:2px;padding:0 3px;}
.wpp-bubble-body{padding:9px 13px;border-radius:13px;font-size:13px;line-height:1.42;white-space:pre-wrap;word-break:break-word;}
.wpp-bubble.in .wpp-bubble-body{background:var(--card);border:1px solid var(--line);border-bottom-left-radius:4px;}
.wpp-bubble.out .wpp-bubble-body{background:var(--brand);color:#fff;border-bottom-right-radius:4px;}
.wpp-bubble-time{font-size:10px;color:var(--muted-2);margin-top:3px;padding:0 3px;}
.wpp-bubble.pending .wpp-bubble-body{opacity:.6;}
.wpp-bubble.pending .wpp-bubble-time::before{content:"⏱ ";}
.wpp-bubble.failed .wpp-bubble-body{background:#FEF2F2;color:#B91C1C;}
.wpp-bubble.failed .wpp-bubble-time{color:#B91C1C;}
.wpp-bubble-warn{font-size:10.5px;color:#B45309;margin-top:3px;padding:0 3px;max-width:220px;text-align:right;}
.wpp-reply-wrap{border-top:1px solid var(--line);background:var(--card);}
.wpp-reply{display:flex;gap:8px;padding:12px 14px;align-items:center;}
.wpp-reply .input{flex:1;}
.wpp-anexo-btn{flex:none;padding:6px 10px;font-size:15px;line-height:1;}
.wpp-reply-err{font-size:11.5px;color:var(--red);padding:0 14px 10px;}

/* análise IA sob demanda */
.ct-analise{margin:0 16px 10px;padding:12px 14px;background:var(--brand-soft);border:1px solid #C7DBFB;border-radius:10px;}
.ca-head{font-size:12px;font-weight:700;color:var(--brand-2);margin-bottom:6px;}
.ca-row{font-size:12.5px;margin-bottom:4px;} .ct-analise .btn{margin-top:8px;}

/* indicadores por sinal + status badges padronizados */
.ind-v.pos{color:var(--green);} .ind-v.neg{color:var(--red);}
.st-badge{display:inline-flex;align-items:center;gap:3px;padding:2px 9px;border-radius:999px;font-size:11px;font-weight:700;white-space:nowrap;}
.st-badge.b-green{background:#F0FDF4;color:#15803D;} .st-badge.b-amber{background:#FFF7ED;color:#B45309;}
.st-badge.b-red{background:#FEF2F2;color:#B91C1C;} .st-badge.b-brand{background:var(--brand-soft);color:var(--brand-2);}
.st-badge.b-gray{background:#F1F3F5;color:#64748B;}

.dc-sub{font-size:10.5px;color:var(--muted);margin-top:3px;}

/* ===== DRE drill-down: subcategoria negrito+cor, 2º nível (pessoa) leve ===== */
.fin-child td{font-size:12px;background:#FCFDFE;font-weight:600;color:var(--ink);}
.fin-child td.fin-desc.child{padding-left:30px;}
.fin-child .fin-num{color:var(--green);} .fin-child .fin-num.neg{color:var(--red);} .fin-child .fin-num.muted{color:var(--muted)!important;}
.fin-pessoa td{font-size:11.5px;background:var(--card);font-weight:400;color:#475467;}
.fin-pessoa td.fin-desc.pessoa{padding-left:48px;color:#475467;}
.fin-pessoa .fin-num{color:#475467;} .fin-pessoa .fin-num.neg{color:var(--red);} .fin-pessoa .fin-num.muted{color:var(--muted-2)!important;}

/* reforço: subcategoria em NEGRITO (vence .fin-table td.fin-desc) */
.fin-child td.fin-desc.child{font-weight:700;color:var(--ink);}
.fin-pessoa td.fin-desc.pessoa{font-weight:400;}

/* ===== Acessibilidade (WCAG 2.2) — skill accessibility ===== */
/* Skip-link: primeiro tab pula direto ao conteúdo (2.4.1 Bypass Blocks). */
.skip-link{position:absolute;left:-999px;top:0;z-index:1000;background:var(--brand);color:#fff;
  padding:10px 16px;border-radius:0 0 8px 0;font-weight:600;text-decoration:none;}
.skip-link:focus{left:0;}
/* Foco visível por teclado (2.4.7) — sem poluir o clique de mouse. */
:focus-visible{outline:2px solid var(--accent,#f59e0b);outline-offset:2px;border-radius:4px;}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,[tabindex]:focus-visible{
  outline:2px solid var(--accent,#f59e0b);outline-offset:2px;}
/* Respeita quem pede menos animação (2.3.3 / prefers-reduced-motion).
   Movimento reduzido NÃO é ausência de feedback: matamos deslocamento/escala e
   loops, mas preservamos as transições de cor/opacidade — são elas que dizem
   "seu clique foi registrado". Zerar tudo deixava a interface muda pra quem
   liga a opção, que é o oposto do que a regra pede. */
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{
    animation-duration:.001ms!important;animation-iteration-count:1!important;
    scroll-behavior:auto!important;
    /* só o que se move some; cor/opacidade/sombra continuam animando */
    transition-property:opacity,color,background-color,border-color,box-shadow,outline-color!important;
    transition-duration:.12s!important;
    transform:none!important;}
}
/* Menos transparência: material vira sólido, sem blur (custo de GPU e leitura). */
@media (prefers-reduced-transparency: reduce){
  .topbar,body[data-theme="dark"] .topbar{background:var(--card);backdrop-filter:none;}
  .modal-bg{background:rgba(15,23,42,.8);backdrop-filter:none;}
  .sync-overlay{background:var(--page);backdrop-filter:none;}
  .hstat{background:rgba(255,255,255,.16);backdrop-filter:none;}
}

/* ===== Filtro de status (chips) nas abas A Receber / A Pagar ===== */
.status-filter{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 14px;}
/* Usa as vars REAIS do tema (--line/--card/--ink). Antes apontava para --border/--text/--bg-soft,
   que não existem aqui: caía no fallback claro e o texto sumia no tema escuro. */
.stf-chip{display:inline-flex;align-items:center;gap:8px;padding:7px 14px;border-radius:999px;
  border:1px solid var(--line);background:var(--card);color:var(--ink);
  font-size:13px;font-weight:600;cursor:pointer;transition:border-color .15s ease,background-color .15s ease,color .15s ease;line-height:1;}
.stf-chip:hover{border-color:var(--brand);color:var(--brand);}
.stf-chip .stf-count{font-size:11px;font-weight:700;padding:2px 7px;border-radius:999px;
  background:var(--line-2);color:var(--muted);min-width:20px;text-align:center;}
.stf-chip.active{background:var(--brand);border-color:var(--brand);color:#fff;}
.stf-chip.active .stf-count{background:rgba(255,255,255,.22);color:#fff;}
/* dica de cor por status quando ativo */
.stf-chip.stf-liquidado.active{background:#16a34a;border-color:#16a34a;}
.stf-chip.stf-vencido.active{background:#dc2626;border-color:#dc2626;}
.stf-chip.stf-aberto.active{background:#d97706;border-color:#d97706;}
.stf-chip.stf-cancelado.active{background:#64748b;border-color:#64748b;}

/* ===== Seção Inadimplência / Aging (P5) na DFC ===== */
.inad-sec{margin-top:28px;padding-top:20px;border-top:1px solid var(--line);}
.inad-title{font-size:17px;font-weight:700;margin:0 0 14px;color:var(--ink);}
.inad-sub-h{font-size:13px;font-weight:700;color:var(--muted,#64748b);text-transform:uppercase;
  letter-spacing:.04em;margin:22px 0 10px;}
.inad-aging{display:flex;flex-direction:column;gap:10px;}
.aging-row{display:grid;grid-template-columns:140px 1fr 200px;align-items:center;gap:14px;}
.aging-faixa{font-size:13px;font-weight:600;color:var(--ink);}
.aging-bar{height:12px;border-radius:999px;background:var(--line-2);overflow:hidden;}
.aging-fill{display:block;height:100%;border-radius:999px;}
.aging-fill.b-amber{background:#d97706;}
.aging-fill.b-red{background:#dc2626;}
.aging-val{font-size:13px;font-weight:600;text-align:right;font-variant-numeric:tabular-nums;}
@media (max-width:640px){ .aging-row{grid-template-columns:96px 1fr;} .aging-val{grid-column:2;text-align:left;} }

/* ===== Regime da DRE (P9) ===== */
.regime-toggle{display:flex;align-items:center;gap:8px;margin:0 0 16px;}
.regime-toggle .rt-lbl{font-size:13px;font-weight:600;color:var(--muted,#64748b);margin-right:2px;}
.rt-opt{padding:7px 16px;border:1px solid var(--line);background:var(--card,#fff);
  color:var(--ink);font-size:13px;font-weight:600;cursor:pointer;transition:background-color .15s ease,border-color .15s ease,color .15s ease;}
.rt-opt:first-of-type{border-radius:8px 0 0 8px;}
.rt-opt:last-of-type{border-radius:0 8px 8px 0;border-left:0;}
.rt-opt.active{background:var(--brand);border-color:var(--brand);color:#fff;}
.regime-aviso{background:rgba(217,119,6,.08);border:1px solid rgba(217,119,6,.3);color:#92600a;
  border-radius:10px;padding:10px 14px;font-size:12.5px;margin:0 0 16px;line-height:1.5;}

/* ===== Chip de banco (P1) ===== */
.bank-chip{display:inline-block;font-size:10.5px;font-weight:700;line-height:1;padding:3px 7px;
  border-radius:6px;background:var(--brand);color:#fff;letter-spacing:.02em;vertical-align:middle;}

/* ===== Badge de parcela (P1) ===== */
.parc-badge{display:inline-block;font-size:12px;font-weight:700;padding:3px 9px;border-radius:6px;
  background:var(--line-2);color:var(--brand);font-variant-numeric:tabular-nums;}

/* ===== Permissões por usuário (P3) ===== */
.perm-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px 18px;margin:12px 0;}
.perm-row{display:flex;align-items:center;gap:8px;font-size:14px;cursor:pointer;}
.perm-tools{display:flex;gap:8px;margin-top:6px;}

/* ===== P8: barra de sincronização ===== */
.sync-bar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:0 0 14px;}
.sync-bar .sync-last{font-size:12.5px;color:var(--muted,#64748b);font-variant-numeric:tabular-nums;}
/* Overlay de sincronização: cobre o conteúdo (some com os dados) e mostra progresso + ETA. */
.main{position:relative;}
/* Fundo a 92% já esconde o conteúdo: o blur de 2px não era visível e custava
   uma camada de composição em tela cheia durante todo o sync. Removido. */
.sync-overlay{position:absolute;inset:0;z-index:40;background:rgba(248,250,252,.92);display:flex;align-items:flex-start;justify-content:center;padding-top:12vh;}
.sync-card{width:min(420px,86%);background:var(--card);border:1px solid #E2E8F0;border-radius:16px;box-shadow:0 10px 30px rgba(2,6,23,.10);padding:26px 26px 22px;text-align:center;}
.sync-card .sync-spin{margin-bottom:12px;}
.sync-card .sync-title{font-weight:700;font-size:15px;color:#0f172a;margin-bottom:14px;}
.sync-hint{margin-top:6px;font-size:11.5px;}
/* ===== P4: alerta de saldo não validado ===== */
.saldo-alerta{grid-column:1/-1;background:rgba(220,38,38,.07);border:1px solid rgba(220,38,38,.3);
  color:#991b1b;border-radius:10px;padding:11px 15px;font-size:13px;line-height:1.5;margin:0 0 14px;}
/* ===== P6: padronização dos cards de resultado (DRE/DFC ↔ dashboard) ===== */
.ind-strip{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;margin:4px 0 18px;}
.ind-item{background:var(--card,#fff);border:1px solid var(--line);border-radius:12px;
  padding:12px 14px;display:flex;flex-direction:column;gap:6px;min-height:64px;justify-content:center;}
.ind-item .ind-l{font-size:11.5px;font-weight:600;color:var(--muted,#64748b);text-transform:uppercase;letter-spacing:.03em;}
.ind-item .ind-v{font-size:17px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--ink);}
.ind-item .ind-v.pos{color:#16a34a;} .ind-item .ind-v.neg{color:#dc2626;}
.dash-card .dc-val{font-variant-numeric:tabular-nums;}

/* ===== F2: Identidade visual por empresa (aplicada via CSS vars no root) ===== */
[data-brandtheme] .btn{ background: var(--brand-btn, var(--brand)); box-shadow:0 2px 8px rgba(0,0,0,.15); }
[data-brandtheme] .sidebar{ background: linear-gradient(180deg, var(--brand-menu) 0%, color-mix(in srgb, var(--brand-menu) 82%, #000) 100%); }
[data-brandtheme] .tab.active::before{ background: var(--brand-accent, #fff); }
[data-brandtheme] .tab.active svg{ color: var(--brand-accent, #fff); }
[data-brandtheme] .topbar{ box-shadow: inset 0 3px 0 0 var(--brand-header, transparent); }
[data-brandtheme] .hero, [data-brandtheme] .resumo-banner{ --brand: var(--brand-primary, var(--brand)); }

/* ===== F2: formulário de identidade (paleta) ===== */
.brand-palette{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin:8px 0 4px;}
.brand-palette .cf label{display:block;font-size:11px;font-weight:600;color:var(--muted,#64748b);margin-bottom:4px;}
.cf-row{display:flex;gap:6px;align-items:center;}
.cf-row input[type=color]{width:38px;height:34px;border:1px solid var(--line,#e3e8ef);border-radius:8px;padding:2px;cursor:pointer;flex-shrink:0;}
.cf-hex{max-width:90px;font-size:12px;}
.field-row{display:flex;gap:12px;}
.field-row .field{flex:1;}
@media (max-width:560px){ .brand-palette{grid-template-columns:1fr 1fr;} .field-row{flex-direction:column;} }

/* ===== F3: Central de Automações ===== */
.autom-list{display:flex;flex-direction:column;gap:12px;margin-bottom:8px;}
.autom-card{background:var(--card,#fff);border:1px solid var(--line);border-left:4px solid var(--muted,#94a3b8);border-radius:12px;padding:14px 16px;}
.autom-card.b-green{border-left-color:#16a34a;} .autom-card.b-amber{border-left-color:#d97706;}
.autom-card.b-red{border-left-color:#dc2626;} .autom-card.b-gray{border-left-color:#94a3b8;}
.autom-top{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px;}
.autom-nome{font-weight:700;margin:0 8px;} .autom-empresa{font-size:13px;color:var(--muted,#64748b);font-weight:600;}
.autom-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px 16px;}
.autom-grid .am-l{display:block;font-size:11px;color:var(--muted,#64748b);text-transform:uppercase;letter-spacing:.03em;}
.autom-grid .am-v{font-size:14px;font-weight:600;font-variant-numeric:tabular-nums;}
.autom-erro{margin-top:10px;background:rgba(220,38,38,.07);border:1px solid rgba(220,38,38,.25);color:#991b1b;border-radius:8px;padding:8px 12px;font-size:12.5px;}
.autom-actions{margin-top:8px;} .autom-hist{margin-top:10px;}
.autom-hist-t{width:100%;font-size:12.5px;} .autom-hist-t th,.autom-hist-t td{padding:5px 8px;text-align:left;border-bottom:1px solid var(--line);}

/* ===== F5: Central de Automações v2 — sub-abas, construtor visual, biblioteca, conexões ===== */
.autom-subtabs{display:flex;gap:6px;margin-bottom:16px;flex-wrap:wrap;border-bottom:1px solid var(--line);padding-bottom:0;}
.autom-subtab-btn{background:none;border:none;border-bottom:2px solid transparent;padding:9px 4px;margin-right:14px;font-size:13.5px;font-weight:700;color:var(--muted,#64748b);cursor:pointer;}
.autom-subtab-btn.active{color:var(--brand,#2563eb);border-bottom-color:var(--brand,#2563eb);}
.autom-subtab-btn:hover{color:var(--ink);}

/* Construtor visual de fluxo */
.flow-canvas{display:flex;flex-direction:column;align-items:stretch;max-width:640px;margin:0 auto;}
.flow-node{background:var(--card,#fff);border:1.5px solid var(--line);border-radius:14px;padding:14px 16px;position:relative;transition:box-shadow .15s,border-color .15s;}
.flow-node:hover{box-shadow:0 2px 10px rgba(15,23,42,.08);}
.flow-node.dragging{opacity:.4;}
.flow-node.drag-over{border-color:var(--brand,#2563eb);border-style:dashed;}
.flow-node.n-gatilho{border-color:#2563eb;background:rgba(37,99,235,.04);}
.flow-node.n-condicao{border-color:#d97706;background:rgba(217,119,6,.04);}
.flow-node.n-ia_assist{border-color:#9333ea;background:rgba(147,51,234,.04);}
.flow-node.n-acao{border-color:#16a34a;background:rgba(22,163,74,.04);}
.flow-node-head{display:flex;align-items:center;gap:8px;}
.flow-node-icon{font-size:18px;line-height:1;}
.flow-node-title{font-weight:700;font-size:13.5px;flex:1;}
.flow-node-drag{cursor:grab;color:var(--muted,#94a3b8);font-size:14px;padding:2px 4px;}
.flow-node-summary{font-size:12px;color:var(--muted,#64748b);margin-top:4px;}
.flow-node-actions{display:flex;gap:6px;margin-top:8px;}
.flow-connector{display:flex;flex-direction:column;align-items:center;padding:4px 0;}
.flow-connector-line{width:2px;height:16px;background:var(--line);}
.flow-connector-add{width:26px;height:26px;border-radius:50%;border:1.5px dashed var(--line);background:var(--card,#fff);color:var(--muted,#64748b);font-size:15px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;}
.flow-connector-add:hover{border-color:var(--brand,#2563eb);color:var(--brand,#2563eb);}
.flow-node-editor{margin-top:10px;padding-top:10px;border-top:1px dashed var(--line);}
.flow-palette{background:var(--card,#fff);border:1px solid var(--line);border-radius:12px;padding:10px;max-height:340px;overflow:auto;}
.flow-palette-cat{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted,#64748b);margin:10px 0 4px;}
.flow-palette-cat:first-child{margin-top:0;}
.flow-palette-item{display:block;width:100%;text-align:left;background:none;border:none;border-radius:8px;padding:7px 8px;font-size:13px;cursor:pointer;}
.flow-palette-item:hover{background:var(--line-2);}
.flow-palette-item .fp-lock{font-size:11px;color:#d97706;margin-left:4px;}

/* Biblioteca de automações prontas */
.tpl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px;}
.tpl-card{background:var(--card,#fff);border:1px solid var(--line);border-radius:14px;padding:16px;display:flex;flex-direction:column;gap:8px;}
.tpl-card-icon{font-size:22px;}
.tpl-card-nome{font-weight:700;font-size:14px;}
.tpl-card-desc{font-size:12.5px;color:var(--muted,#64748b);flex:1;}

/* Conexões (Bling / Google / WhatsApp) */
.conn-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px;}
.conn-card{background:var(--card,#fff);border:1px solid var(--line);border-radius:14px;padding:16px;}
.conn-card-top{display:flex;align-items:center;gap:10px;margin-bottom:8px;}
.conn-card-icon{font-size:20px;}
.conn-card-nome{font-weight:700;font-size:14px;flex:1;}

/* ===== Home Executiva (aba Resumo) ===== */
.he-section{margin:0 0 22px;}
.he-section:last-child{margin-bottom:0;}
.kpi-var{font-size:11px;font-weight:600;margin-top:4px;}
.kpi-var.pos{color:#16a34a;} .kpi-var.neg{color:#dc2626;}
.kpi-spark-wrap{margin-top:6px;line-height:0;}
.kpi-spark{display:block;}
.quick-actions{display:flex;gap:10px;flex-wrap:wrap;}

/* ===== Bling: sincronização por módulo (modal de edição + Home Executiva) ===== */
.sync-ent-err{color:#B91C1C;font-size:12px;margin-top:4px;}
.sync-ent-compact .table-wrap{max-width:720px;}

/* #12/#14 — badge de tipo de conta (cartão / outras contas financeiras) */
.tipo-badge{display:inline-block;font-size:10px;font-weight:700;padding:1px 7px;border-radius:999px;letter-spacing:.02em;vertical-align:middle;}
.tipo-badge.cartao{background:#EEF2FF;color:#4338CA;border:1px solid #C7D2FE;}
.tipo-badge.outra{background:#F1F5F9;color:#475569;border:1px solid #E2E8F0;}
body[data-theme="dark"] .tipo-badge.cartao{background:#1E1B4B;color:#C7D2FE;border-color:#3730A3;}
body[data-theme="dark"] .tipo-badge.outra{background:#1E293B;color:#CBD5E1;border-color:#334155;}

/* fase 2 cartão — kpi clicável + modal de extrato */
.kpi-click{transition:box-shadow .12s, transform .12s;}
.kpi-click:hover{box-shadow:0 4px 16px rgba(15,27,45,.14);transform:translateY(-1px);}
.ver-extrato{font-size:11px;color:var(--brand);font-weight:600;margin-left:4px;}
.ct-kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:6px 0 4px;}
.ct-kpi{background:#F4F8FE;border:1px solid var(--line);border-radius:10px;padding:10px 12px;}
.ct-kpi .ct-l{font-size:11px;color:var(--muted);} .ct-kpi .ct-v{font-size:16px;font-weight:800;color:var(--ink);font-variant-numeric:tabular-nums;}
body[data-theme="dark"] .ct-kpi{background:#1B2436;}
@media(max-width:560px){.ct-kpis{grid-template-columns:1fr;}}

/* #16/#17 — selo de reconciliação de saldo portal×ERP */
.recon-badge{grid-column:1/-1;margin:0 0 12px;padding:12px 16px;border-radius:12px;font-size:13px;line-height:1.5;border:1px solid;}
.recon-badge.ok{background:#ECFDF3;color:#027A48;border-color:#A6F4C5;}
.recon-badge.warn{background:#FEFCE8;color:#A16207;border-color:#FDE68A;}
.recon-badge .recon-detail{margin-top:6px;font-size:12px;opacity:.85;}
body[data-theme="dark"] .recon-badge.ok{background:#0C271A;color:#6CE9A6;border-color:#12503A;}
body[data-theme="dark"] .recon-badge.warn{background:#2A2410;color:#FDE68A;border-color:#5A4A15;}

/* #3 — "Manter-me conectado" na tela de login */
.remember-row{display:flex;align-items:center;gap:8px;margin:2px 0 4px;font-size:13px;color:var(--muted,#64748b);cursor:pointer;user-select:none;}
.remember-row input{width:15px;height:15px;accent-color:var(--brand);cursor:pointer;}

/* ===== DRE/DFC: hierarquia visual reforçada (#2) — letras mais escuras,
   categorias com cor mais destacada, separação clara grupo→subtotal→total.
   Bloco no fim do arquivo para vencer no cascade sem tocar regras existentes. ===== */
.fin-table td.fin-desc{color:#0F1B2D;}                                   /* letras da descrição mais escuras */
/* Linhas principais: a LINHA INTEIRA destacada (números também), não só o nome. */
.fin-row.tp-section td{font-weight:800;color:#0F1B2D;background:#EAF2FC;}  /* GRUPO */
.fin-row.tp-section td.fin-desc{background:#DCE9FA;border-left:3px solid var(--brand);}
.fin-row.tp-subtotal td{font-weight:700;color:#0F1B2D;background:#E1EDFA;} /* SUBTOTAL */
.fin-row.tp-subtotal td.fin-desc{background:#D3E4F7;border-left:3px solid #1B4E8F;}
.fin-row.tp-total td{background:#DDE7F2;font-weight:900;}                  /* TOTAL */
.fin-row.tp-total td.fin-desc{background:#0F1B2D;color:#fff;border-left:3px solid var(--green);}
.fin-row.tp-ded td{background:#F6F9FD;}                                   /* dedução: leve realce */
/* meses de PREVISÃO (após hoje): fundo levemente diferenciado + itálico */
.fin-table th.fin-proj{background:#2C5AA0;font-style:italic;}
.fin-table td.fin-num.fin-proj{background:rgba(44,90,160,.06);font-style:italic;}
.fin-table .proj-tag{font-size:9px;font-weight:600;opacity:.85;text-transform:uppercase;letter-spacing:.3px;}
/* coluna "Em atraso" (informativa, âmbar) */
.fin-table th.fin-atraso{background:#B45309;}
.fin-table td.fin-atraso{background:#FEF3C7;color:#A16207;font-weight:700;}
body[data-theme="dark"] .fin-table td.fin-num.fin-proj{background:rgba(90,140,210,.12);}
body[data-theme="dark"] .fin-table td.fin-atraso{background:#3A2E10;color:#FCD34D;}
body[data-theme="dark"] .fin-table td.fin-desc{color:#E6EDF7;}
body[data-theme="dark"] .fin-row.tp-section td{color:#E6EDF7;background:#1B2740;}
body[data-theme="dark"] .fin-row.tp-subtotal td{color:#E6EDF7;background:#182339;}
body[data-theme="dark"] .fin-row.tp-total td{background:#141E30;}
body[data-theme="dark"] .fin-row.tp-section td.fin-desc{background:#22304A;}
body[data-theme="dark"] .fin-row.tp-subtotal td.fin-desc{background:#1D2A40;}
body[data-theme="dark"] .fin-row.tp-total td.fin-desc{background:#0A1220;color:#fff;}
body[data-theme="dark"] .fin-row.tp-ded td{background:#151d2c;}

/* ==================== SUBMENU DA EMPRESA (sidebar) ==================== */
/* Antes era uma barra horizontal (.subtabs) acima do conteúdo; virou subitem da sidebar. */
.side-sub{display:flex;flex-direction:column;gap:2px;padding-bottom:6px;}
.side-sub .subtab{display:block;width:100%;text-align:left;padding:8px 12px 8px 26px;border:none;background:none;border-radius:8px;
  color:var(--sb-txt);font-size:13px;font-weight:500;cursor:pointer;position:relative;transition:background .12s,color .12s;white-space:nowrap;}
.side-sub .subtab::before{content:"";position:absolute;left:13px;top:50%;width:4px;height:4px;border-radius:50%;background:currentColor;opacity:.45;transform:translateY(-50%);}
.side-sub .subtab:hover{background:rgba(255,255,255,.06);color:#fff;}
.side-sub .subtab.active{background:var(--sb-active);color:#fff;font-weight:600;}
.side-sub .subtab.active::before{opacity:1;background:var(--brand);}
/* Sidebar recolhida: o submenu não cabe — esconde junto com os rótulos. */
.layout.collapsed .side-sub,.layout.collapsed #sbEmpresaGroup{display:none;}

/* ==================== REPORT — total no topo + agrupamento ==================== */
.report-opts{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:10px 0 2px;}
.report-group-toggle{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:600;color:var(--muted);cursor:pointer;}
.report-group-toggle input{accent-color:var(--brand);cursor:pointer;}
.report-total-top{display:flex;align-items:center;justify-content:space-between;gap:12px;
  background:var(--brand-soft);border:1px solid #C7DBFB;border-radius:10px;padding:10px 14px;margin-bottom:8px;}
.rtt-label{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--brand-2);display:flex;align-items:center;gap:8px;}
.rtt-qtd{font-weight:600;text-transform:none;letter-spacing:0;color:var(--muted);background:var(--card);border-radius:20px;padding:1px 8px;font-size:11px;}
.rtt-value{font-size:17px;font-weight:800;color:var(--navy);font-variant-numeric:tabular-nums;}
.rtt-filtrado{font-weight:700;text-transform:uppercase;letter-spacing:.03em;font-size:10px;
  background:#FEF3C7;color:#92400E;border-radius:20px;padding:2px 8px;}
body[data-theme="dark"] .rtt-filtrado{background:rgba(146,64,14,.22);color:#F0B45E;}
/* Barra de filtros do Report: chips de escopo + busca + status. A busca cresce; o resto é fixo. */
.report-filtros{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:12px 0 2px;}
.report-filtros .stf-bar{display:flex;gap:8px;flex-wrap:wrap;}
.report-busca{flex:1 1 240px;min-width:200px;max-width:360px;}
/* Faixa de aprovação em lote — só o CLIENTE vê. Destaque sem virar alerta de erro. */
.report-aprovar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;
  margin-top:16px;padding:14px 16px;border-radius:12px;background:var(--brand-soft);border:1px solid #C7DBFB;}
.report-aprovar.ok{background:#F0FDF4;border-color:#BBF7D0;}
.report-aprovar .ra-txt{display:flex;flex-direction:column;gap:2px;font-size:13.5px;color:var(--ink);}
.report-aprovar .ra-txt .muted{font-size:12px;}
body[data-theme="dark"] .report-aprovar{background:#16263D;border-color:#243049;}
body[data-theme="dark"] .report-aprovar.ok{background:#12261C;border-color:#1F3D2C;}
.report-grp td{background:var(--line-2);font-weight:700;color:var(--navy);font-size:12.5px;}
.report-grp-qtd{margin-left:8px;font-weight:600;color:var(--muted);font-size:11px;}
.tag-parcial{display:inline-block;margin-right:6px;padding:1px 6px;border-radius:20px;font-size:10px;font-weight:700;
  text-transform:uppercase;letter-spacing:.03em;background:#FEF3C7;color:#92400E;vertical-align:middle;}
/* Agendado: autorizado E já lançado no banco. Âmbar para não confundir com Pago/Autorizado (verde). */
.tag-sched{background:#FFF7ED;color:#B45309;padding:3px 10px;border-radius:999px;font-size:11px;font-weight:700;}
body[data-theme="dark"] .tag-sched{background:rgba(180,83,9,.18);color:#F0B45E;}
body[data-theme="dark"] .report-total-top{background:#16263D;border-color:#243049;}
body[data-theme="dark"] .rtt-value{color:#E6EAF2;}
body[data-theme="dark"] .rtt-qtd{background:#0E1420;}
body[data-theme="dark"] .report-grp td{background:#1B2439;color:#E6EAF2;}

/* ==================== FILTROS EM LINHA ==================== */
/* Uma linha só; em telas estreitas volta a quebrar, senão os campos ficam ilegíveis. */
/* Filtros numa linha só. NÃO usar overflow aqui: overflow (mesmo `auto`) cria um contexto de
   recorte e os dropdowns dos multiselects (.ms-pop) seriam CORTADOS em vez de sobrepor a página.
   Em vez de rolar, os blocos comprimem (min-width:0) e a barra continua visível por inteiro. */
.toolbar{flex-wrap:nowrap;overflow:visible;}
.toolbar>*{min-width:0;}
.tb-period,.tb-right{flex-shrink:0;}
.tb-multi{flex:1 1 auto;flex-wrap:nowrap;min-width:0;}
.tb-multi .ms{min-width:0;}
.tb-multi .ms-btn{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.tb-adv .grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));}
@media(max-width:1100px){.toolbar{flex-wrap:wrap;} .tb-multi{flex-wrap:wrap;}}

/* ==================== REFINO DO TEMA ESCURO (padrão) ==================== */
/* Base quase-preta com laranja Scalah como cor de ação — segue as referências de design.
   Só o que tinha cor cravada no CSS precisa de override; o resto herda das vars. */
body[data-theme="dark"] .sidebar{background:linear-gradient(180deg,#0D1219 0%,#0A0E13 100%);border-right:1px solid var(--line);}
body[data-theme="dark"] .btn{box-shadow:0 2px 12px rgba(238,119,36,.28);}
body[data-theme="dark"] .btn.secondary{background:var(--brand-soft);color:var(--brand);}
body[data-theme="dark"] .btn.secondary:hover{background:rgba(238,119,36,.2);}
body[data-theme="dark"] .topbar{background:rgba(11,15,20,.85);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);}
body[data-theme="dark"] .toolbar,body[data-theme="dark"] .tb-adv,body[data-theme="dark"] .table-wrap,
body[data-theme="dark"] .fav-pop,body[data-theme="dark"] .tb-icon,body[data-theme="dark"] .tb-iconbtn,
body[data-theme="dark"] .input,body[data-theme="dark"] .tb-date,body[data-theme="dark"] .back-link{background:var(--card);border-color:var(--line);color:var(--ink);}
body[data-theme="dark"] .tb-iconbtn:hover{color:var(--brand);border-color:rgba(238,119,36,.4);background:var(--brand-soft);}
body[data-theme="dark"] .tb-preset{background:var(--brand-soft);color:var(--brand);border-color:rgba(238,119,36,.3);}
body[data-theme="dark"] thead th{background:var(--line-2);color:var(--muted);}
body[data-theme="dark"] tbody tr:hover td{background:rgba(255,255,255,.03);}
/* Cards ganham um respiro de luz no topo, como nas referências. */
body[data-theme="dark"] .kpi,body[data-theme="dark"] .dash-card,body[data-theme="dark"] .company-card{
  background:linear-gradient(180deg,#171E26 0%,var(--card) 60%);border-color:var(--line);}
body[data-theme="dark"] .company-card:hover{border-color:rgba(238,119,36,.45);box-shadow:0 10px 30px rgba(0,0,0,.5);}
body[data-theme="dark"] .dash-card.pos .dc-val{color:var(--green);}
body[data-theme="dark"] .dash-card.neg .dc-val{color:var(--red);}
body[data-theme="dark"] .dash-card.brand .dc-val{color:var(--brand);}

/* ==================== HERO DA LANDING (efeito "sol") ==================== */
/* Arco de luz laranja em CSS puro — sem vídeo: carrega na hora e não consome banda.
   Respeita prefers-reduced-motion (a animação para; o visual permanece). */
.sun-hero{position:relative;overflow:hidden;background:#0B0F14;isolation:isolate;}
.sun-hero .sun-arc{position:absolute;left:50%;bottom:-58%;width:min(1100px,150%);aspect-ratio:1;transform:translateX(-50%);
  border-radius:50%;background:radial-gradient(circle at 50% 50%,#FFD9A8 0%,#EE7724 26%,#D6661A 40%,rgba(214,102,26,0) 62%);
  filter:blur(2px);opacity:.92;z-index:-1;animation:sunRise 9s ease-in-out infinite alternate;}
.sun-hero .sun-arc::after{content:"";position:absolute;inset:0;border-radius:50%;
  box-shadow:0 0 120px 40px rgba(238,119,36,.35);}
.sun-hero .sun-glow{position:absolute;left:50%;bottom:-20%;width:120%;height:60%;transform:translateX(-50%);
  background:radial-gradient(ellipse at 50% 100%,rgba(238,119,36,.28) 0%,transparent 65%);z-index:-1;pointer-events:none;}
@keyframes sunRise{from{transform:translateX(-50%) translateY(14px) scale(.985);}to{transform:translateX(-50%) translateY(-10px) scale(1.015);}}
@media(prefers-reduced-motion:reduce){.sun-hero .sun-arc{animation:none;}}

/* ==================== TOPO DA EMPRESA — 1 saldo + contas recolhidas ==================== */
.contas-det{grid-column:1/-1;background:var(--card);border:1px solid var(--line);border-radius:var(--radius-lg);padding:0 16px;}
.contas-det>summary{cursor:pointer;list-style:none;padding:12px 2px;font-size:12.5px;font-weight:700;color:var(--muted);
  text-transform:uppercase;letter-spacing:.04em;display:flex;align-items:center;gap:8px;}
.contas-det>summary::-webkit-details-marker{display:none;}
.contas-det>summary::before{content:"▸";color:var(--brand);font-size:11px;transition:transform .15s;}
.contas-det[open]>summary::before{transform:rotate(90deg);}
.contas-det>summary:hover{color:var(--brand);}
.contas-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px;padding:4px 0 16px;}
.contas-grid .kpi{box-shadow:none;}

/* ==================== CARDS KPI — estilo das referências ==================== */
.dash-cards{grid-template-columns:repeat(auto-fit,minmax(178px,1fr));gap:12px;}
.dash-card{border-radius:14px;padding:16px 16px 14px;}
.dc-top{display:flex;align-items:center;gap:8px;margin-bottom:10px;}
.dc-ico{width:26px;height:26px;border-radius:8px;display:grid;place-items:center;font-size:13px;font-weight:800;flex-shrink:0;
  background:var(--brand-soft);color:var(--brand);}
.dash-card.pos .dc-ico{background:rgba(43,157,110,.14);color:var(--green);}
.dash-card.neg .dc-ico{background:rgba(214,69,69,.14);color:var(--red);}
.dash-card .dc-lbl{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:0;}
.dash-card .dc-val{font-size:20px;font-weight:800;letter-spacing:-.01em;font-variant-numeric:tabular-nums;}
.dash-card .dc-sub{font-size:11px;color:var(--muted-2);margin-top:4px;}

/* ==================== SIDEBAR — categorias mais destacadas ==================== */
.sb-group{font-size:10.5px;letter-spacing:.12em;color:var(--muted-2);padding:16px 12px 8px;}
.tab{font-size:14px;font-weight:600;padding:11px 12px;}
.tab.active::before{width:4px;background:var(--brand);box-shadow:0 0 12px var(--brand);}
.side-sub .subtab{font-size:13.5px;}
.side-sub .subtab.active{box-shadow:inset 0 0 0 1px rgba(238,119,36,.25);}
body[data-theme="dark"] .side-sub .subtab.active{color:var(--brand);}

/* ==================== NÍVEL "CHURN" — painéis, cards e tabelas ==================== */
/* Título da página: sobrelinha laranja + título grande, como na referência. */
.ph-title{font-size:30px;letter-spacing:-.03em;}
.page-head{align-items:flex-start;margin-bottom:24px;}
.ph-meta{font-size:13px;}

/* Cada seção do Resumo vira um painel fechado (borda + fundo), não texto solto na página. */
.he-section{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:20px 22px;margin:0 0 16px;}
.he-section>.inad-sub-h{font-size:15px;font-weight:700;text-transform:none;letter-spacing:-.01em;color:var(--ink);margin:0 0 16px;}
/* O painel de cards não precisa de moldura dupla: os cards já são as caixas. */
.he-section:has(>.dash-cards){background:none;border:none;padding:0;}
.he-section:has(>.dash-cards)>.inad-sub-h{padding-left:2px;}

/* KPI: valor grande, variação em pílula ao lado, sparkline ocupando a base do card. */
.dash-card{display:flex;flex-direction:column;padding:18px 18px 0;overflow:hidden;min-height:132px;}
.dash-card .dc-val{font-size:26px;font-weight:800;letter-spacing:-.03em;line-height:1.15;}
.kpi-var{display:inline-flex;align-items:center;gap:3px;margin-top:8px;padding:3px 8px;border-radius:999px;
  font-size:11px;font-weight:700;width:fit-content;font-variant-numeric:tabular-nums;}
.kpi-var.pos{color:var(--green);background:rgba(43,157,110,.14);}
.kpi-var.neg{color:var(--red);background:rgba(214,69,69,.14);}
.kpi-spark-wrap{margin:auto -18px 0;line-height:0;opacity:.9;}
.kpi-spark{display:block;width:100%;height:44px;}
.dash-card .dc-sub{margin-top:6px;}

/* Tabelas: sem grades pesadas, cabeçalho discreto, linha destacando no hover. */
.table-wrap{border-radius:16px;}
thead th{background:transparent;border-bottom:1px solid var(--line);padding:12px 16px;font-size:10.5px;letter-spacing:.06em;}
tbody td{padding:13px 16px;border-bottom:1px solid var(--line-2);vertical-align:middle;}
tbody tr:last-child td{border-bottom:none;}
td.val,th.right-align{text-align:right;font-variant-numeric:tabular-nums;}

/* Faixa de indicadores (DRE/DFC resumidos) alinhada ao mesmo cartão. */
.ind-item{border-radius:12px;}
.ph-eyebrow{display:block;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--brand);margin-bottom:5px;}

/* ==================== CORREÇÕES DO TEMA ESCURO ==================== */
/* Zebrado: no claro é quase branco; no escuro precisa ser um realce sutil, não uma faixa branca. */
body[data-theme="dark"] .table-wrap tbody tr:nth-child(even):not(.lista-total):not(.dre-row):not(.dre-child){background:rgba(255,255,255,.025);}
/* Pastilhas de status/tags: fundos claros viram tinta translúcida sobre o escuro. */
body[data-theme="dark"] .st-badge.b-green,body[data-theme="dark"] .tag-active{background:rgba(43,157,110,.16);color:#5FD3A3;}
body[data-theme="dark"] .st-badge.b-red,body[data-theme="dark"] .tag-locked{background:rgba(214,69,69,.16);color:#F08C8C;}
body[data-theme="dark"] .st-badge.b-amber{background:rgba(238,154,36,.16);color:#F0B865;}
body[data-theme="dark"] .st-badge.b-gray,body[data-theme="dark"] .tag-off{background:rgba(255,255,255,.07);color:var(--muted);}
body[data-theme="dark"] .st-badge.b-brand{background:var(--brand-soft);color:var(--brand);}
body[data-theme="dark"] .tag-parcial{background:rgba(238,154,36,.16);color:#F0B865;}
/* Seleção de texto: o azul padrão do navegador some no escuro. */
body[data-theme="dark"] ::selection{background:rgba(238,119,36,.35);color:#fff;}
/* Alertas, chips de sistema e cabeçalhos de bloco — mesmas cores, mas em tinta translúcida. */
body[data-theme="dark"] .alert.error{background:rgba(214,69,69,.12);color:#F08C8C;border-color:rgba(214,69,69,.3);}
body[data-theme="dark"] .alert.info{background:rgba(79,155,203,.12);color:#8FC6E8;border-color:rgba(79,155,203,.3);}
body[data-theme="dark"] .alert.warn{background:rgba(238,154,36,.12);color:#F0B865;border-color:rgba(238,154,36,.3);}
body[data-theme="dark"] .alert.ok{background:rgba(43,157,110,.12);color:#5FD3A3;border-color:rgba(43,157,110,.3);}
body[data-theme="dark"] .sys-filter,body[data-theme="dark"] .subtabs{background:rgba(255,255,255,.05);}
body[data-theme="dark"] .sys-OMIE{background:rgba(79,155,203,.16);color:#8FC6E8;}
body[data-theme="dark"] .sys-CONTAAZUL{background:rgba(147,112,219,.16);color:#C4A8F0;}
body[data-theme="dark"] .sys-BLING{background:rgba(43,157,110,.16);color:#5FD3A3;}
body[data-theme="dark"] tbody tr:hover{background:rgba(255,255,255,.045);}
body[data-theme="dark"] .dre-box h4{background:var(--line-2);color:var(--ink);}
body[data-theme="dark"] .dre-row.tp-section{background:rgba(255,255,255,.04);}
body[data-theme="dark"] .dre-row.tp-total{background:rgba(255,255,255,.07);}
body[data-theme="dark"] .dre-nota{background:rgba(238,154,36,.10);border-color:rgba(238,154,36,.28);color:#F0B865;}
body[data-theme="dark"] .btn.secondary:hover{background:rgba(238,119,36,.22);}
/* Saldo inicial / a pagar / a receber ficam no mesmo grid do saldo bancário, antes das contas. */
#kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;}
.kpi-resumo .label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);}
.kpi-resumo .value{font-size:22px;font-weight:800;letter-spacing:-.02em;margin-top:4px;font-variant-numeric:tabular-nums;}
.kpi-resumo.pagar .value{color:var(--red);}
.kpi-resumo.receber .value{color:var(--green);}
.kpi-resumo.sdi .value{color:var(--brand);}
/* Hover da linha: as regras claras (.table-wrap tbody tr:hover / .fin-table) têm especificidade
   maior que um simples `body[data-theme=dark] tbody tr:hover`, e venciam — pintando a linha de
   branco no tema escuro. Aqui igualamos a especificidade para elas perderem. */
body[data-theme="dark"] .table-wrap tbody tr:hover:not(.lista-total){background:rgba(255,255,255,.05);}
body[data-theme="dark"] .table-wrap tbody tr:hover:not(.lista-total) td{color:var(--ink);}
body[data-theme="dark"] .fin-table tbody tr:hover td{background:rgba(255,255,255,.05);}
/* A toolbar fica acima do conteúdo, e o dropdown acima de tudo — senão o banner do Resumo
   (que tem gradiente e blobs) aparece por cima da lista de contas/categorias. */
.toolbar{position:relative;z-index:30;}
.ms-pop,.fav-pop{z-index:120;}
/* Checkbox e itens do dropdown no tema escuro. */
body[data-theme="dark"] .ms-pop,body[data-theme="dark"] .fav-pop{background:var(--card);border-color:var(--line);}
body[data-theme="dark"] .ms-pop label{color:var(--ink);}
body[data-theme="dark"] .ms-pop input[type="checkbox"],body[data-theme="dark"] .stf-chip input{accent-color:var(--brand);}
body[data-theme="dark"] .ms-btn:hover{border-color:var(--brand);color:var(--brand);}

/* ==================== MENU LATERAL — sem coluna deslizante ==================== */
/* .side-nav tinha overflow-y:auto e criava uma barra de rolagem PRÓPRIA dentro da sidebar
   (a "coluna deslizante"). O menu agora cresce naturalmente; se o conteúdo passar da altura da
   tela, quem rola é a sidebar inteira, sem barra visível. */
.side-nav{overflow-y:visible;flex:0 0 auto;}
.sidebar{overflow-y:auto;scrollbar-width:none;}
.sidebar::-webkit-scrollbar{width:0;height:0;}
/* O bloco do usuário fica colado embaixo, ocupando o espaço que sobra. */
.side-user{margin-top:auto;}

/* ==================== REPORT — grupos recolhíveis (estilo DRE) ==================== */
.report-grp-click{cursor:pointer;user-select:none;}
.report-grp-click:hover td{filter:brightness(1.12);}
.rg-caret{display:inline-block;width:14px;color:var(--brand);font-size:10px;}
.rg-child td:first-child{padding-left:30px;}
.report-group-toggle select{margin-left:8px;}

/* ==================== HERO DA HOME — alinhado à identidade escura ==================== */
/* Era um bloco azul-royal que destoava do resto do portal (quase-preto + laranja Scalah).
   Base quase-preta, brilho laranja no lugar do azul, e os números dos stats na paleta da marca. */
body[data-theme="dark"] .hero{
  background:linear-gradient(120deg,#0B0F14 0%,#12181F 45%,#16294A 100%);
  border:1px solid var(--line);}
body[data-theme="dark"] .hero-glow{background:radial-gradient(circle,rgba(238,119,36,.30) 0%,transparent 70%);}
body[data-theme="dark"] .hero-glow::after{background:radial-gradient(circle,rgba(79,155,203,.22) 0%,transparent 70%);}
body[data-theme="dark"] .hero-eyebrow{color:var(--brand);}
body[data-theme="dark"] .hero-sub{color:var(--muted);}
body[data-theme="dark"] .hstat{background:rgba(255,255,255,.05);border-color:rgba(255,255,255,.09);}
body[data-theme="dark"] .hstat-l{color:var(--muted);}
body[data-theme="dark"] .hstat-brand .hstat-v{color:var(--brand);}   /* total */
body[data-theme="dark"] .hstat-omie .hstat-v{color:#F0B865;}
body[data-theme="dark"] .hstat-ca .hstat-v{color:var(--accent);}     /* azul Scalah */
body[data-theme="dark"] .hstat-bling .hstat-v{color:var(--green);}
/* Nome da empresa no card: laranja da marca, não o azul antigo. */
body[data-theme="dark"] .company-card .cc-name,body[data-theme="dark"] .company-card h3{color:var(--ink);}
body[data-theme="dark"] .company-card:hover .cc-name{color:var(--brand);}

/* Report — 2º nível (pessoa) dentro da categoria, espelhando a hierarquia da DRE. */
.report-sub td{background:rgba(255,255,255,.035);font-weight:600;font-size:12.5px;color:var(--ink);cursor:pointer;}
.report-sub td:first-child{padding-left:30px;}
.report-sub .rg-caret{color:var(--muted);}
.rg-neto td:first-child{padding-left:52px;}
body[data-theme="dark"] .report-sub td{background:rgba(255,255,255,.04);}

/* ===== Feedback de toque (apple-design §1: responder no pointer-down) =====
   Até aqui o retorno visual vivia quase todo em :hover — que no celular não
   existe. O controle só reagia depois do clique completo, ou nunca. Estas
   regras dão o realce no instante da pressão. Fica no fim do arquivo de
   propósito: mesma especificidade dos :hover acima, então vence pela ordem. */
.tab:active,.subtab:active,.chip:active,.tb-icon:active,.tb-iconbtn:active,
.tb-preset:active,.ms-btn:active,.back-link:active,.ph-back:active,
.rel-file:active,.chat-item:active{
  transform:scale(.97);
  transition:transform 90ms ease-out;}
/* Cartão é superfície grande: escala menor, senão o movimento vira exagero. */
.company-card:active,.kpi-click:active{
  transform:scale(.99);
  transition:transform 90ms ease-out;}
/* O tap-highlight cinza do WebKit briga com o realce acima. */
.tab,.subtab,.chip,.tb-icon,.tb-iconbtn,.tb-preset,.ms-btn,.back-link,
.ph-back,.rel-file,.chat-item,.company-card,.btn{-webkit-tap-highlight-color:transparent;}

/* ===== Barra de aging: transform em vez de width =====
   width dispara layout+paint a cada quadro; scaleX vive só no compositor.
   O JS passa a escrever --fill (0-1) no lugar de style.width — ver app.js. */
.aging-fill{width:100%;transform-origin:left center;
  transform:scaleX(var(--fill,0));
  transition:transform .3s ease;}

/* Tarefas: linha atrasada. A borda à esquerda carrega o alerta sem tingir a linha
   inteira de vermelho — a tabela continua legível quando há muitos atrasos. */
.row-atrasada td:first-child{box-shadow:inset 3px 0 0 var(--red);}
.row-atrasada td:first-child{color:var(--red);font-weight:600;}

/* Painel (modelo BI): KPIs do ano x ano anterior, gráficos SVG e DRE resumida com AV/AH. */
.painel-bar{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px;}
.painel-sub{color:var(--muted);font-size:13px;}
.painel-seg{display:flex;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--card);}
.painel-seg button{border:0;background:none;color:var(--ink);font:inherit;font-size:13px;padding:6px 12px;cursor:pointer;}
.painel-seg button.on{background:var(--brand);color:#fff;}
.painel-seg button:focus-visible{outline:2px solid var(--brand);outline-offset:-2px;}
.painel-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px;margin-bottom:14px;}
.painel-kpi{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px;min-width:0;}
.painel-kl{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);}
.painel-kv{font-size:19px;font-weight:600;margin-top:2px;font-variant-numeric:tabular-nums;overflow-wrap:anywhere;}
.painel-kd{font-size:12px;font-variant-numeric:tabular-nums;min-height:16px;}
.painel-pos{color:var(--green);} .painel-neg{color:var(--red);}
.painel-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(360px,1fr));gap:14px;margin-bottom:14px;}
.painel-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px;min-width:0;}
.painel-card h3{font-size:13px;font-weight:600;margin:0 0 6px;}
.painel-leg{display:flex;flex-wrap:wrap;gap:12px;font-size:12px;color:var(--muted);margin-bottom:4px;}
.painel-leg i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:5px;vertical-align:-1px;}
.painel-svg svg{width:100%;height:auto;display:block;}
.painel-svg text{fill:var(--muted);font-size:11px;}
.painel-scroll{overflow-x:auto;}
.painel-tbl{width:100%;border-collapse:collapse;font-size:12.5px;font-variant-numeric:tabular-nums;}
.painel-tbl th,.painel-tbl td{padding:6px 8px;text-align:right;border-bottom:1px solid var(--line-2);white-space:nowrap;}
.painel-tbl th:first-child,.painel-tbl td:first-child{text-align:left;}
.painel-tbl th{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:500;}
.painel-tot td{font-weight:600;background:var(--line-2);}
.painel-nota{font-size:12px;}
@media (max-width:480px){.painel-grid{grid-template-columns:1fr;}}
.painel-tbl .painel-filho{display:none;}
.painel-tbl.painel-detalhe .painel-filho{display:table-row;}
.painel-filho td{color:var(--muted);font-size:12px;}
.painel-filho td:first-child{padding-left:22px;white-space:pre;}
.painel-link{background:none;border:0;color:var(--brand);font:inherit;font-size:12px;cursor:pointer;padding:0 0 6px;}
.painel-ind{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px 18px;}
.painel-ind-i{border-top:1px solid var(--line-2);padding-top:8px;min-width:0;}
.painel-iv{font-size:17px;font-weight:600;font-variant-numeric:tabular-nums;overflow-wrap:anywhere;}
.painel-id{font-size:11.5px;}
.wpp-avatar{position:relative;overflow:hidden;}
.wpp-foto{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.wpp-media{display:block;max-width:320px;width:100%;max-height:380px;object-fit:contain;border-radius:9px;margin-bottom:4px;cursor:zoom-in;}
.wpp-tick{font-size:13px;font-weight:800;letter-spacing:-3px;margin-left:5px;margin-right:3px;color:var(--ink);}
.wpp-tick.lida{color:#38BDF8;}
.wpp-tick.falha{color:#EF4444;font-weight:800;letter-spacing:0;}
.wpp-abas{display:flex;gap:6px;padding:8px 10px;border-bottom:1px solid var(--line-2);}
.wpp-abas button{flex:1;padding:6px 10px;border:1px solid var(--line);border-radius:999px;background:transparent;color:var(--muted);font-size:12px;font-weight:700;cursor:pointer;}
.wpp-abas button.ativa{background:var(--brand);border-color:var(--brand);color:#fff;}
/* Central em tela cheia: so o menu e a barra do topo ficam em volta. */
body.modo-chat .container{max-width:none;}
body.modo-chat #viewChat>.admin-head,body.modo-chat #chatMetrics,body.modo-chat .wpp-toggle,body.modo-chat .wpp-sim{display:none;}
@media(min-width:821px){
  body.modo-chat .main{height:100vh;}
  body.modo-chat .container{padding:0;flex:1;min-height:0;}
  body.modo-chat #viewChat{height:100%;}
  body.modo-chat .wpp-wrap{grid-template-columns:minmax(320px,400px) 1fr;grid-template-rows:minmax(0,1fr);gap:0;min-height:0;height:100%;}
  body.modo-chat .wpp-list,body.modo-chat .wpp-thread{border-radius:0;box-shadow:none;border-width:0;}
  body.modo-chat .wpp-list{border-right:1px solid var(--line);}
}
body[data-theme="dark"] .wpp-items,body[data-theme="dark"] .wpp-msgs{scrollbar-color:#3A4660 transparent;}
.wpp-grupo-aviso{padding:14px 16px;border-top:1px solid var(--line);background:var(--card);color:var(--muted);font-size:12.5px;text-align:center;}
.wpp-doc{display:flex;align-items:center;justify-content:space-between;gap:14px;min-width:220px;max-width:340px;padding:9px 11px;border-radius:9px;background:rgba(0,0,0,.2);color:inherit;text-decoration:none;}
.wpp-doc:hover{background:rgba(0,0,0,.32);}
.wpp-doc-nome{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600;}
.wpp-doc small{flex:none;font-weight:800;text-decoration:underline;}
.wpp-abre-perfil{cursor:pointer;}
.wpp-msg-acao{align-self:inherit;margin-top:2px;padding:2px 6px;border:0;background:transparent;color:var(--brand-2);font-size:10.5px;font-weight:700;cursor:pointer;opacity:0;}
.wpp-bubble:hover .wpp-msg-acao,.wpp-msg-acao:focus-visible{opacity:1;}
@media(hover:none){.wpp-msg-acao{opacity:1;}}
.wpp-msg-tarefa{margin-top:3px;padding:2px 8px;border-radius:999px;background:var(--brand-soft);color:var(--brand-2);font-size:10.5px;font-weight:700;max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.wpp-tarefa-msg{padding:9px 11px;border:1px solid var(--line);border-radius:9px;background:var(--page);font-size:12.5px;max-height:90px;overflow:auto;}
.wpp-perfil{position:fixed;top:0;right:0;bottom:0;width:min(350px,100vw);z-index:40;background:var(--card);border-left:1px solid var(--line);box-shadow:var(--shadow);overflow-y:auto;padding:14px 16px 24px;}
.wpp-perfil h4{margin:18px 0 8px;font-size:12px;}
.wpp-perfil-topo{display:flex;align-items:center;justify-content:space-between;}
.wpp-perfil-fechar{border:0;background:transparent;color:var(--muted);font-size:24px;line-height:1;cursor:pointer;}
.wpp-perfil-foto{display:flex;flex-direction:column;align-items:center;gap:10px;margin:14px 0;text-align:center;}
.wpp-perfil-foto .wpp-avatar{width:112px;height:112px;font-size:34px;}
.wpp-perfil-foto h3{margin:0;font-size:16px;word-break:break-word;}
.wpp-perfil-dados{display:grid;grid-template-columns:auto 1fr;gap:6px 12px;margin:0;font-size:12.5px;}
.wpp-perfil-dados dt{color:var(--muted);}
.wpp-perfil-dados dd{margin:0;text-align:right;word-break:break-word;}
.wpp-perfil-tarefa{padding:8px 0;border-bottom:1px solid var(--line-2);font-size:12.5px;}
.wpp-perfil-tarefa b,.wpp-perfil-tarefa span{display:block;}
.wpp-perfil-tarefa span{margin-top:2px;color:var(--muted);font-size:11px;}
.wpp-perfil-docs{display:flex;flex-direction:column;gap:6px;font-size:12.5px;}
.wpp-perfil-docs .wpp-doc{min-width:0;max-width:none;}
.wpp-perfil-fotos{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;}
.wpp-perfil-img{display:block;width:100%;aspect-ratio:1;object-fit:cover;border-radius:6px;}
@media(min-width:1181px){
  .wpp-perfil{position:static;width:auto;z-index:auto;box-shadow:none;}
  body.modo-chat .wpp-wrap.com-perfil{grid-template-columns:minmax(300px,360px) 1fr 330px;}
}
.wpp-gravando{display:none;align-items:center;gap:10px;flex:1;font-size:13px;}
.wpp-gravando #ctGravCancelar{margin-left:auto;}
.wpp-grav-ponto{width:10px;height:10px;border-radius:50%;background:#EF4444;}
.wpp-reply.gravando>:not(.wpp-gravando){display:none;}
.wpp-reply.gravando>.wpp-gravando{display:flex;}
.wpp-audio{display:block;width:280px;max-width:100%;height:40px;}
.wpp-abas button{padding:6px 4px;white-space:nowrap;}
.wpp-aba-cont:not(:empty){display:inline-block;min-width:16px;padding:0 4px;border-radius:999px;background:#25D366;color:#06281a;font-size:10px;font-weight:800;}
.wpp-nao-lidas{flex:none;min-width:20px;padding:2px 6px;border-radius:999px;background:#25D366;color:#06281a;font-size:11px;font-weight:800;text-align:center;}
.wpp-anexo-pendente{display:flex;align-items:center;gap:8px;padding:9px 14px 0;font-size:12.5px;}
.wpp-anexo-pendente.hidden{display:none;}
.wpp-anexo-pendente b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.wpp-anexo-pendente .muted{flex:none;font-size:11px;}
.wpp-anexo-pendente button{margin-left:auto;border:0;background:transparent;color:var(--muted);font-size:20px;line-height:1;cursor:pointer;}
.wpp-perfil select{width:100%;}
