:root{
  --slate-50:#f8fafc;--slate-100:#f1f5f9;--slate-200:#e2e8f0;--slate-300:#cbd5e1;
  --slate-400:#94a3b8;--slate-500:#64748b;--slate-600:#475569;--slate-700:#334155;
  --slate-800:#1e293b;--slate-900:#0f172a;
  --blue:#3b82f6;--violet:#8b5cf6;--amber:#f59e0b;--cyan:#06b6d4;--emerald:#10b981;
  --indigo:#6366f1;--rose:#f43f5e;--teal:#14b8a6;--red:#ef4444;--orange:#f97316;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  font-family:ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  background:var(--slate-50);color:var(--slate-800);
  -webkit-font-smoothing:antialiased;
}
.container{max-width:1280px;margin:0 auto;padding:0 20px;}
.tabular{font-variant-numeric:tabular-nums}

/* ---- Header / Nav ---- */
header.topbar{
  position:sticky;top:0;z-index:40;background:rgba(255,255,255,.92);
  backdrop-filter:blur(8px);border-bottom:1px solid var(--slate-200);
}
.topbar-inner{display:flex;align-items:center;justify-content:space-between;padding:14px 0;gap:16px;flex-wrap:wrap}
.brand{display:flex;flex-direction:column;gap:2px}
.brand h1{font-size:18px;font-weight:700;margin:0;color:var(--slate-900)}
.brand .badge-preview{
  display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;
  color:#b45309;background:#fffbeb;border:1px solid #fde68a;padding:2px 8px;border-radius:999px;width:fit-content;
}
.brand small{color:var(--slate-500);font-size:12px}

.filters-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
select.filter, input.filter{
  border:1px solid var(--slate-300);background:#fff;border-radius:8px;padding:7px 10px;
  font-size:13px;color:var(--slate-700);min-width:150px;
}
select.filter:focus, input.filter:focus{outline:2px solid #93c5fd;border-color:var(--blue)}
button.btn{
  border:1px solid var(--slate-300);background:#fff;border-radius:8px;padding:7px 12px;
  font-size:13px;font-weight:600;color:var(--slate-700);cursor:pointer;transition:.15s;
}
button.btn:hover{background:var(--slate-100)}
button.btn.primary{background:var(--slate-900);color:#fff;border-color:var(--slate-900)}
button.btn.primary:hover{background:var(--slate-700)}
button.btn:disabled{opacity:.4;cursor:not-allowed}
button.btn.sm{padding:5px 9px;font-size:12px}

nav.subnav{border-top:1px solid var(--slate-100);overflow-x:auto;white-space:nowrap;scrollbar-width:none}
nav.subnav::-webkit-scrollbar{display:none}
nav.subnav .inner{display:flex;gap:2px;padding:8px 0}
nav.subnav a{
  font-size:12.5px;font-weight:600;color:var(--slate-500);text-decoration:none;
  padding:6px 12px;border-radius:999px;transition:.15s;
}
nav.subnav a:hover{background:var(--slate-100);color:var(--slate-800)}
nav.subnav a.active{background:var(--slate-900);color:#fff}

/* ---- Layout sections ---- */
main{padding:28px 0 80px}
.section{margin-bottom:36px;scroll-margin-top:120px}
.section-title{display:flex;align-items:baseline;gap:10px;margin-bottom:14px}
.section-title h2{font-size:16px;font-weight:700;color:var(--slate-900);margin:0}
.section-title .tag{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--slate-400)}
.section-sub{font-size:12.5px;color:var(--slate-500);margin:-8px 0 14px}

.grid{display:grid;gap:16px}
.grid-2{grid-template-columns:repeat(2,1fr)}
.grid-3{grid-template-columns:repeat(3,1fr)}
.grid-4{grid-template-columns:repeat(4,1fr)}
.grid-5{grid-template-columns:repeat(5,1fr)}
@media(max-width:980px){.grid-3,.grid-4,.grid-5{grid-template-columns:repeat(2,1fr)}}
@media(max-width:640px){.grid-2,.grid-3,.grid-4,.grid-5{grid-template-columns:repeat(1,1fr)}}

/* ---- Card ---- */
.card{background:#fff;border:1px solid var(--slate-200);border-radius:14px;box-shadow:0 1px 2px rgba(15,23,42,.04)}
.card-header{padding:16px 18px 4px}
.card-header-row{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.card-title{font-size:14.5px;font-weight:700;color:var(--slate-900)}
.card-title .muted{font-weight:400;color:var(--slate-500);font-size:13px}
.card-body{padding:16px 18px 18px}
.card-body.p0{padding:0}
.link-btn{background:none;border:none;color:var(--blue);font-size:12.5px;font-weight:600;cursor:pointer;padding:0}
.link-btn:hover{text-decoration:underline}

/* ---- KPI card ---- */
.kpi{padding:18px}
.kpi-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.kpi-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--slate-500)}
.kpi-value{font-size:27px;font-weight:800;color:var(--slate-900);line-height:1;margin-top:4px}
.kpi-sub{font-size:11.5px;color:var(--slate-500);margin-top:4px}
.kpi-icon{border-radius:12px;padding:9px;flex-shrink:0;display:flex;align-items:center;justify-content:center;color:#fff}
.kpi-icon svg{width:18px;height:18px}
.kpi-bar-row{display:flex;align-items:center;gap:8px;margin-top:10px}
.kpi-bar{flex:1;height:6px;border-radius:99px;background:var(--slate-100);overflow:hidden}
.kpi-bar-fill{height:100%;border-radius:99px;transition:width .4s}
.kpi-pct{font-size:11px;font-weight:700;color:var(--slate-500);white-space:nowrap}
.kpi-pct .lbl{font-weight:400}

/* ---- Indicator (financeiro) ---- */
.indicator{display:flex;gap:12px;align-items:flex-start;padding:14px;border-radius:12px;background:var(--slate-50);border:1px solid var(--slate-100)}
.indicator-icon{border-radius:10px;padding:9px;color:#fff;flex-shrink:0;display:flex}
.indicator-icon svg{width:17px;height:17px}
.indicator-label{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--slate-400)}
.indicator-value{font-size:20px;font-weight:800;color:var(--slate-800);line-height:1;margin-top:3px}
.indicator-desc{font-size:11px;color:var(--slate-500);margin-top:4px}

/* ---- Funnel / bar rows ---- */
.frow{display:flex;align-items:center;gap:12px}
.frow .flabel{width:150px;text-align:right;font-size:12px;font-weight:600;color:var(--slate-600);flex-shrink:0}
.frow .ftrack{flex:1;position:relative;height:30px;background:var(--slate-100);border-radius:8px;overflow:hidden}
.frow .ffill{height:100%;border-radius:8px;opacity:.9}
.frow .fval{width:88px;font-size:12px;font-weight:700;color:var(--slate-700);flex-shrink:0}
.frow .fval .pct{color:var(--slate-400);font-weight:400;margin-left:3px}

.stagebar{border-radius:10px;padding:8px 10px 10px;margin-bottom:6px}
.stagebar-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}
.stagebar-name{font-size:13px;font-weight:600}
.stagebar-nums{display:flex;align-items:center;gap:10px}
.stagebar-count{font-size:13px;font-weight:700;color:var(--slate-800)}
.stagebar-pct{font-size:11px;color:var(--slate-500);width:44px;text-align:right}
.stagebar-track{height:8px;background:var(--slate-100);border-radius:99px;overflow:hidden}
.stagebar-fill{height:100%;border-radius:99px;transition:width .4s}

/* ---- Responsible bars (clickable) ---- */
.resprow{cursor:pointer;margin-bottom:10px}
.resprow-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:3px}
.resprow-name{font-size:13px;font-weight:600;width:70px;flex-shrink:0}
.resprow-track{flex:1;margin:0 12px;height:26px;border-radius:8px;background:var(--slate-100);overflow:hidden}
.resprow-fill{height:100%;border-radius:8px;display:flex;align-items:center;padding-left:8px;transition:width .4s}
.resprow-fill span{color:#fff;font-size:12px;font-weight:700}
.resprow-count{font-size:13px;font-weight:700;width:44px;text-align:right;flex-shrink:0}
.resprow-line{display:flex;align-items:center}

/* ---- Donut ---- */
.donut-wrap{display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.donut-svg-box{position:relative;width:160px;height:160px;flex-shrink:0}
.donut-center{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;pointer-events:none}
.donut-center b{font-size:18px;color:var(--slate-900)}
.donut-center small{font-size:10px;color:var(--slate-500)}
.legend{flex:1;min-width:180px}
.legend-row{margin-bottom:9px}
.legend-top{display:flex;align-items:center;justify-content:space-between;font-size:12.5px;margin-bottom:3px}
.legend-left{display:flex;align-items:center;gap:6px}
.dot{width:10px;height:10px;border-radius:99px;flex-shrink:0}
.legend-right{display:flex;align-items:center;gap:8px}
.legend-track{height:6px;border-radius:99px;background:var(--slate-100);overflow:hidden}
.legend-fill{height:100%;border-radius:99px}

/* ---- Badges ---- */
.badge{display:inline-block;font-size:11px;font-weight:600;border:1px solid;border-radius:6px;padding:2px 8px;white-space:nowrap}
.badge-blue{background:#dbeafe;color:#1d4ed8;border-color:#bfdbfe}
.badge-cyan{background:#cffafe;color:#0e7490;border-color:#a5f3fc}
.badge-amber{background:#fef3c7;color:#b45309;border-color:#fde68a}
.badge-emerald{background:#d1fae5;color:#047857;border-color:#a7f3d0}
.badge-rose{background:#ffe4e6;color:#be123c;border-color:#fecdd3}
.badge-slate{background:#f1f5f9;color:#475569;border-color:#e2e8f0}
.badge-violet{background:#ede9fe;color:#6d28d9;border-color:#ddd6fe}
.badge-indigo{background:#e0e7ff;color:#4338ca;border-color:#c7d2fe}
.badge-orange{background:#ffedd5;color:#c2410c;border-color:#fed7aa}

/* ---- Table ---- */
.tbl-wrap{overflow-x:auto}
table.tbl{width:100%;border-collapse:collapse;font-size:13px}
table.tbl thead tr{background:rgba(241,245,249,.6)}
table.tbl th{text-align:left;padding:9px 12px;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--slate-500);border-bottom:1px solid var(--slate-200);white-space:nowrap}
table.tbl th.right{text-align:right}
table.tbl th.center{text-align:center}
table.tbl td{padding:9px 12px;border-bottom:1px solid var(--slate-100);vertical-align:top;color:var(--slate-700)}
table.tbl td.right{text-align:right}
table.tbl td.center{text-align:center}
table.tbl tbody tr:hover{background:var(--slate-50)}
table.tbl tbody tr:last-child td{border-bottom:none}
.ellipsis{max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block;vertical-align:bottom}
.clamp2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.35}
.muted-cell{color:var(--slate-400)}

/* ---- Search bar ---- */
.searchbar{display:flex;align-items:center;gap:8px}
.search-input-wrap{position:relative}
.search-input-wrap input{padding-left:32px;min-width:230px}
.search-input-wrap svg{position:absolute;left:10px;top:50%;transform:translateY(-50%);width:14px;height:14px;color:var(--slate-400)}

/* ---- Pagination ---- */
.pagination{display:flex;align-items:center;justify-content:space-between;padding:12px 18px;border-top:1px solid var(--slate-100);flex-wrap:wrap;gap:10px}
.pagination .pageinfo{font-size:13px;color:var(--slate-500)}
.pagination .pagebtns{display:flex;gap:4px}
.pagebtn{width:30px;height:30px;border:1px solid var(--slate-300);background:#fff;border-radius:8px;font-size:12.5px;font-weight:600;color:var(--slate-700);cursor:pointer}
.pagebtn:hover:not(:disabled){background:var(--slate-100)}
.pagebtn.active{background:var(--slate-900);color:#fff;border-color:var(--slate-900)}
.pagebtn:disabled{opacity:.35;cursor:not-allowed}

/* ---- Metrics strip ---- */
.metric-strip{display:grid;grid-template-columns:repeat(5,1fr)}
.metric-item{text-align:center;padding:0 8px;border-left:1px solid var(--slate-200)}
.metric-item:first-child{border-left:none}
.metric-val{font-size:22px;font-weight:800}
.metric-lbl{font-size:11px;color:var(--slate-500);margin-top:2px}
@media(max-width:640px){.metric-strip{grid-template-columns:repeat(2,1fr);gap:12px}.metric-item{border-left:none;border-top:1px solid var(--slate-200);padding-top:8px}}

/* vertical bar chart (simple, no svg lib) */
.vbar-chart{display:flex;align-items:flex-end;gap:10px;height:200px;padding:6px 4px 0}
.vbar-col{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;min-width:0}
.vbar-val{font-size:11px;font-weight:700;color:var(--slate-700);margin-bottom:4px}
.vbar{width:100%;max-width:46px;border-radius:6px 6px 0 0;transition:height .4s}
.vbar-label{font-size:11px;color:var(--slate-500);margin-top:6px;text-align:center;max-width:70px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

.empty-state{padding:40px 0;text-align:center;color:var(--slate-400);font-size:13px}
.skel{background:linear-gradient(90deg,var(--slate-100) 25%,var(--slate-200) 37%,var(--slate-100) 63%);background-size:400% 100%;animation:skel 1.4s ease infinite;border-radius:6px}
@keyframes skel{0%{background-position:100% 50%}100%{background-position:0 50%}}

.footer-note{text-align:center;color:var(--slate-400);font-size:11.5px;padding:20px 0 40px}
.chip-list{display:flex;gap:6px;flex-wrap:wrap}
.chip{font-size:11px;background:var(--slate-100);color:var(--slate-600);padding:3px 9px;border-radius:999px;display:flex;align-items:center;gap:5px}
.chip button{border:none;background:none;cursor:pointer;color:var(--slate-500);font-size:13px;line-height:1;padding:0}

/* ---- Painel lateral de filtros ---- */
.filtro-toggle-btn{display:flex;align-items:center;gap:7px}
.filtro-count-badge{
  background:var(--slate-900);color:#fff;font-size:10.5px;font-weight:700;
  border-radius:99px;min-width:17px;height:17px;padding:0 5px;display:inline-flex;
  align-items:center;justify-content:center;line-height:1;
}
.filtros-overlay{
  position:fixed;inset:0;background:rgba(15,23,42,.35);z-index:60;
  opacity:0;pointer-events:none;transition:opacity .2s ease;
}
.filtros-overlay.open{opacity:1;pointer-events:auto}
.filtros-panel{
  position:fixed;top:0;right:0;height:100vh;width:340px;max-width:88vw;
  background:#fff;z-index:61;box-shadow:-8px 0 30px rgba(15,23,42,.15);
  transform:translateX(100%);transition:transform .25s ease;
  display:flex;flex-direction:column;
}
.filtros-panel.open{transform:translateX(0)}
.filtros-panel-header{
  display:flex;align-items:center;justify-content:space-between;
  padding:16px 18px;border-bottom:1px solid var(--slate-200);flex-shrink:0;
}
.filtros-panel-header h3{margin:0;font-size:15px;font-weight:700;color:var(--slate-900)}
.icon-btn{
  border:none;background:none;cursor:pointer;color:var(--slate-500);
  padding:4px;border-radius:6px;display:flex;align-items:center;justify-content:center;
}
.icon-btn:hover{background:var(--slate-100);color:var(--slate-800)}
.filtros-panel-body{padding:18px;overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:16px}
.filtro-field{display:flex;flex-direction:column;gap:6px}
.filtro-field label{font-size:12px;font-weight:700;color:var(--slate-600)}
.filtro-field label .muted{font-weight:400;color:var(--slate-400)}
select.filter.full{width:100%;min-width:0}
.filtros-panel-footer{
  display:flex;gap:10px;padding:16px 18px;border-top:1px solid var(--slate-200);flex-shrink:0;
}
.filtros-panel-footer .btn{flex:1;justify-content:center;display:flex;align-items:center}
