:root{
  --paper:#E9EDEC; --surface:#FBFCFC; --surface-2:#EFF3F2; --surface-3:#E1E7E6;
  --ink:#111819; --ink-2:#41504F; --ink-3:#6B7B7A;
  --rule:#C7D1D0; --rule-soft:#DFE6E5;
  --accent:#0B6C77; --accent-soft:#DCECEE;
  --teal:#00909F; --red:#BE3F2B; --amber:#A8790F; --violet:#7A5AA8; --grey:#7C8886;
  --red-bg:#F7E2DD; --amber-bg:#F5EBD6; --violet-bg:#EAE3F3; --teal-bg:#D9EEF0; --grey-bg:#E6EAE9;
  --shadow:0 1px 1px rgba(17,24,25,.04),0 6px 18px -14px rgba(17,24,25,.34);
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --paper:#0D1214; --surface:#141B1D; --surface-2:#1A2325; --surface-3:#232E30;
  --ink:#E4EAEA; --ink-2:#AFBCBC; --ink-3:#849392;
  --rule:#2A3537; --rule-soft:#202A2C;
  --accent:#4FB8C6; --accent-soft:#15333A;
  --teal:#22A3B2; --red:#D0604C; --amber:#D7A93F; --violet:#A98BD4; --grey:#8A9694;
  --red-bg:#331A15; --amber-bg:#302713; --violet-bg:#241D33; --teal-bg:#0F2E33; --grey-bg:#212A29;
  --shadow:0 1px 1px rgba(0,0,0,.4),0 6px 18px -14px rgba(0,0,0,.9);
}}
*{box-sizing:border-box}
body{margin:0;background:var(--paper);color:var(--ink);
  font-family:Archivo,"Helvetica Neue",Arial,sans-serif;font-size:14px;line-height:1.5;
  -webkit-font-smoothing:antialiased}
.mono,.eyebrow{font-family:"IBM Plex Mono",ui-monospace,Menlo,monospace}
a{color:var(--accent)}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:3px}
h1,h2,h3{margin:0;letter-spacing:-.015em;text-wrap:balance}
.wrap{max-width:none;margin:0;padding:0 28px 72px}

/* topo */
.top{border-bottom:1px solid var(--rule);background:var(--surface);position:sticky;top:0;z-index:30}
.top-in{max-width:none;margin:0;padding:13px 28px;display:flex;gap:18px;align-items:center;flex-wrap:wrap}
.brandmark{width:26px;height:26px;flex:none;border-radius:3px;background:var(--accent);
  display:grid;place-items:center;color:var(--surface);font-weight:700;font-size:11px}
.top h1{font-size:15.5px;font-weight:600;line-height:1.2}
.top .sub{font-size:10.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-3);
  font-family:"IBM Plex Mono",monospace;margin-top:2px}
.spacer{flex:1}
.stamp{font-family:"IBM Plex Mono",monospace;font-size:11px;color:var(--ink-3);text-align:right;line-height:1.5}
.stamp b{color:var(--ink-2);font-weight:500}
nav.abas{border-bottom:1px solid var(--rule);background:var(--surface-2)}
nav.abas ul{max-width:none;margin:0;padding:0 28px;display:flex;gap:2px;list-style:none;flex-wrap:wrap}
nav.abas a{display:block;padding:10px 14px;font-size:13px;font-weight:500;color:var(--ink-2);
  text-decoration:none;border-bottom:2px solid transparent}
nav.abas a:hover{color:var(--ink);background:var(--surface)}
nav.abas a.on{color:var(--accent);border-bottom-color:var(--accent);background:var(--surface)}

/* filtros */
.filters{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end;padding:20px 0 4px}
.fgroup{display:flex;flex-direction:column;gap:5px}
.fgroup label{font-family:"IBM Plex Mono",monospace;font-size:10px;letter-spacing:.1em;
  text-transform:uppercase;color:var(--ink-3)}
select,input[type=search],input[type=text],input[type=number]{
  font-family:Archivo,sans-serif;font-size:13.5px;color:var(--ink);background:var(--surface);
  border:1px solid var(--rule);border-radius:3px;padding:7px 9px;min-width:150px}
input[type=number]{min-width:120px;text-align:right;font-variant-numeric:tabular-nums}
.btn{background:var(--surface);border:1px solid var(--rule);border-radius:3px;padding:7px 13px;
  cursor:pointer;font-size:13px;font-weight:500;font-family:inherit;color:inherit;text-decoration:none;
  display:inline-block;transition:background .12s,border-color .12s}
.btn:hover{background:var(--surface-3);border-color:var(--ink-3)}
.btn.primary{background:var(--accent);color:var(--surface);border-color:var(--accent)}
.btn.primary:hover{opacity:.88;background:var(--accent)}
.active-filters{display:flex;gap:7px;flex-wrap:wrap;margin-top:12px}
.chip{display:inline-flex;align-items:center;gap:7px;background:var(--accent-soft);color:var(--accent);
  border-radius:20px;padding:3.5px 11px;font-size:12px;font-weight:500;text-decoration:none}
.chip:hover{filter:brightness(.96)}

/* kpis */
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin:20px 0 0}
.kpi{background:var(--surface);border:1px solid var(--rule-soft);border-radius:3px;
  padding:14px 15px 13px;box-shadow:var(--shadow)}
.kpi .v{font-size:29px;font-weight:700;letter-spacing:-.025em;line-height:1;font-variant-numeric:tabular-nums}
.kpi .l{font-family:"IBM Plex Mono",monospace;font-size:10px;letter-spacing:.08em;text-transform:uppercase;
  color:var(--ink-3);margin-top:9px;line-height:1.5}
.kpi.risk{border-left:3px solid var(--red)} .kpi.risk .v{color:var(--red)}
.kpi.warn{border-left:3px solid var(--amber)} .kpi.warn .v{color:var(--amber)}
.kpi.open{border-left:3px solid var(--violet)} .kpi.open .v{color:var(--violet)}
.kpi.blocked{border-left:3px dashed var(--rule)}
.kpi.blocked .v{font-size:15px;font-weight:600;color:var(--ink-3);letter-spacing:0;padding-top:7px;line-height:1.35}

/* seções e cards */
.sec{margin-top:34px}
.sec-h{display:flex;align-items:baseline;gap:12px;margin-bottom:14px;flex-wrap:wrap}
.sec-h h2{font-size:15px;font-weight:600}
.sec-h .hint{font-size:12.5px;color:var(--ink-3)}
.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:14px}
.grid-risk{display:grid;grid-template-columns:minmax(320px,26%) 1fr;gap:14px;align-items:start}
.grid-quad{display:grid;grid-template-columns:repeat(auto-fit,minmax(400px,1fr));gap:14px}
@media (max-width:760px){.grid-quad{grid-template-columns:1fr}}
@media (max-width:900px){.grid-risk{grid-template-columns:1fr}}
.card{background:var(--surface);border:1px solid var(--rule-soft);border-radius:3px;
  padding:16px 17px 14px;box-shadow:var(--shadow);min-width:0}
.card h3{font-size:13.5px;font-weight:600;margin-bottom:2px}
.card .csub{font-size:11.5px;color:var(--ink-3);margin-bottom:14px;font-family:"IBM Plex Mono",monospace}
.card .plot{overflow-x:auto}
.card svg{display:block;margin:0 auto}
.legend{display:flex;gap:16px;flex-wrap:wrap;margin-top:12px;font-family:"IBM Plex Mono",monospace;
  font-size:11px;color:var(--ink-2)}
.legend span{display:inline-flex;align-items:center;gap:6px}
.sw{width:10px;height:10px;border-radius:2px;display:inline-block;flex:none}
.axl{fill:var(--ink-3);font-family:"IBM Plex Mono",monospace;font-size:10px}
.axv{fill:var(--ink-2);font-family:"IBM Plex Mono",monospace;font-size:10.5px;font-weight:500}
.grid-l{stroke:var(--rule-soft);stroke-width:1}
.base-l{stroke:var(--rule);stroke-width:1}
.bar{transition:opacity .1s}
.plot:hover .bar{opacity:.5}
.plot .bar:hover{opacity:1}
.empty{color:var(--ink-3);font-size:13px;padding:30px 0;text-align:center;font-style:italic}

/* ledger */
.ledger{border:1px solid var(--rule-soft);border-radius:3px;overflow:hidden;background:var(--surface);
  box-shadow:var(--shadow)}
.lrow{display:grid;grid-template-columns:15px 1fr 56px 110px;gap:12px;align-items:center;
  padding:11px 15px;border-bottom:1px solid var(--rule-soft);text-decoration:none;color:inherit;
  transition:background .1s}
.lrow:last-child{border-bottom:none}
.lrow:hover{background:var(--surface-2)}
.lrow.on{background:var(--accent-soft)}
.dot{width:9px;height:9px;border-radius:50%;display:inline-block}
.lrow .nm{font-size:13.5px;font-weight:500}
.lrow .nm em{display:block;font-style:normal;font-size:11.5px;color:var(--ink-3);font-weight:400;margin-top:1px}
.lrow .ct{font-family:"IBM Plex Mono",monospace;font-size:15px;font-weight:600;text-align:right;
  font-variant-numeric:tabular-nums}
.lbar{height:7px;background:var(--surface-3);border-radius:4px;overflow:hidden}
.lbar i{display:block;height:100%;border-radius:4px}
@media (max-width:700px){.lrow{grid-template-columns:15px 1fr 52px}.lbar{display:none}}

/* tabelas */
.tbl-shell{border:1px solid var(--rule-soft);border-radius:3px;background:var(--surface);
  box-shadow:var(--shadow);overflow:hidden}
.tbl-top{display:flex;gap:12px;align-items:center;padding:12px 15px;border-bottom:1px solid var(--rule);flex-wrap:wrap}
.tbl-top .cnt{font-family:"IBM Plex Mono",monospace;font-size:11.5px;color:var(--ink-3)}
.tbl-scroll{overflow:auto;max-height:min(70vh,760px)}
table{border-collapse:collapse;width:100%;font-size:13px}
table.wide{min-width:900px}
thead th{position:sticky;top:0;background:var(--surface-2);z-index:2;
  font-family:"IBM Plex Mono",monospace;font-size:9.5px;letter-spacing:.09em;text-transform:uppercase;
  color:var(--ink-3);font-weight:600;text-align:left;padding:9px 13px;border-bottom:1px solid var(--rule);
  white-space:nowrap}
tbody td{padding:9px 13px;border-bottom:1px solid var(--rule-soft);vertical-align:top;white-space:nowrap}
tbody tr:hover{background:var(--surface-2)}
tbody tr:last-child td{border-bottom:none}
td.mn,th.mn{font-family:"IBM Plex Mono",monospace;font-size:12.5px;font-variant-numeric:tabular-nums}
td.num{text-align:right;font-variant-numeric:tabular-nums;font-family:"IBM Plex Mono",monospace}
td.wrapc{white-space:normal;min-width:200px;max-width:360px;font-size:12.5px;color:var(--ink-2);line-height:1.45}
.pill{display:inline-flex;align-items:center;gap:5px;font-family:"IBM Plex Mono",monospace;
  font-size:10px;letter-spacing:.04em;text-transform:uppercase;padding:2.5px 7px;border-radius:3px;
  font-weight:500;white-space:nowrap}
.s-vencida{background:var(--red-bg);color:var(--red)}
.s-vence_90{background:var(--amber-bg);color:var(--amber)}
.s-vigente{background:var(--teal-bg);color:var(--teal)}
.s-sem_prazo{background:var(--violet-bg);color:var(--violet)}
.s-retido_juridico,.s-sem_informacao{background:var(--grey-bg);color:var(--ink-3)}
.sev-bloqueio{background:var(--red-bg);color:var(--red)}
.sev-alerta{background:var(--amber-bg);color:var(--amber)}
.sev-normalizacao{background:var(--teal-bg);color:var(--teal)}

/* banner e avisos */
.banner{display:flex;gap:14px;align-items:flex-start;background:var(--red-bg);
  border-left:3px solid var(--red);border-radius:3px;padding:14px 18px;margin-top:20px}
.banner .bi{font-size:15px;font-weight:700;color:var(--red);font-family:"IBM Plex Mono",monospace;flex:none;padding-top:1px}
.banner p{margin:0;font-size:13.5px;line-height:1.55;color:var(--ink-2)}
.banner b{color:var(--ink);font-weight:600}
.aviso{background:var(--accent-soft);border-left:3px solid var(--accent);border-radius:3px;
  padding:14px 18px;margin-top:18px;font-size:13.5px;line-height:1.55;color:var(--ink-2)}
.aviso,.banner p{max-width:none}
.aviso b{color:var(--ink)}
.aviso b{color:var(--ink)}
.msg{padding:11px 16px;border-radius:3px;margin-top:16px;font-size:13.5px}
.msg.success{background:var(--teal-bg);color:var(--teal)}
.msg.error{background:var(--red-bg);color:var(--red)}

/* cartões de lacuna */
.pend{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px}
.pcard{background:var(--surface);border:1px dashed var(--rule);border-radius:3px;padding:16px 17px}
.pcard .pt{font-family:"IBM Plex Mono",monospace;font-size:10px;letter-spacing:.11em;
  text-transform:uppercase;color:var(--ink-3)}
.pcard h3{font-size:15px;font-weight:600;margin:5px 0 7px}
.pcard p{margin:0 0 10px;font-size:13px;color:var(--ink-2);line-height:1.5}
.pcard .need{font-size:12px;color:var(--ink-3);border-top:1px solid var(--rule-soft);padding-top:9px;line-height:1.5}
.pcard .need b{color:var(--accent);font-weight:600;display:block;font-size:10px;letter-spacing:.09em;
  text-transform:uppercase;font-family:"IBM Plex Mono",monospace;margin-bottom:3px}
.pcard .mdl{font-family:"IBM Plex Mono",monospace;font-size:11px;color:var(--ink-3);margin-top:8px}

.foot{margin-top:34px;border-top:1px solid var(--rule);padding-top:16px;font-size:12.5px;
  color:var(--ink-3);line-height:1.6;max-width:none}
.foot b{color:var(--ink-2);font-weight:600}
#tip{position:fixed;pointer-events:none;z-index:99;background:var(--ink);color:var(--paper);
  font-family:"IBM Plex Mono",monospace;font-size:11px;padding:6px 9px;border-radius:3px;
  opacity:0;transition:opacity .1s;white-space:nowrap}
#tip.on{opacity:1}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}

/* Rampa sequencial: usada onde a categoria tem ordem natural de grandeza
   (rosca, treemap, barra de proporção). Quatro matizes categóricas não passam
   no teste de daltonismo dentro da faixa de luminosidade do tema escuro, então
   a variação é de intensidade, não de cor. */
:root{
  --r1:#8FD2DA; --r2:#5BBAC6; --r3:#2E9CAA; --r4:#0B7B89; --r5:#065E69; --r6:#04454E;
  --r1-tinta:#0A2225; --r2-tinta:#0A2225; --r3-tinta:#FFFFFF;
  --r4-tinta:#FFFFFF; --r5-tinta:#FFFFFF; --r6-tinta:#FFFFFF;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --r1:#0F5560; --r2:#146F7B; --r3:#1A8C99; --r4:#22A3B2; --r5:#4FBECA; --r6:#86D6DF;
  --r1-tinta:#DCEEF1; --r2-tinta:#DCEEF1; --r3-tinta:#EAF6F8;
  --r4-tinta:#06272C; --r5-tinta:#06272C; --r6-tinta:#06272C;
}}
:root[data-theme="dark"]{
  --r1:#0F5560; --r2:#146F7B; --r3:#1A8C99; --r4:#22A3B2; --r5:#4FBECA; --r6:#86D6DF;
  --r1-tinta:#DCEEF1; --r2-tinta:#DCEEF1; --r3-tinta:#EAF6F8;
  --r4-tinta:#06272C; --r5-tinta:#06272C; --r6-tinta:#06272C;
}
.legend-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:6px 16px;margin-top:14px}
.legend-grid span{display:inline-flex;align-items:center;gap:7px;font-family:"IBM Plex Mono",monospace;
  font-size:11px;color:var(--ink-2);min-width:0}
.legend-grid span b{color:var(--ink);font-weight:600;margin-left:auto;padding-left:8px;font-variant-numeric:tabular-nums}
.legend-grid span i.sw{flex:none}
.legend-grid span em{font-style:normal;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
