/* ============================================================================
   Ultra Transparência — Santa Rita do Sapucaí/MG
   Identidade: "instrumento cívico / Vale da Eletrônica".
   Archivo (texto) + Spline Sans Mono (números/leituras). Sistema de tokens em
   três estados (claro / escuro via prefers-color-scheme / escuro forçado).
   ============================================================================ */

/* ---------- tokens: claro (padrão) ---------- */
:root{
  --paper:#f5f6f2;
  --card:#fdfdfb;
  --card2:#eef0ea;
  --ink:#15201b;
  --ink2:#4b584f;
  --muted:#75817a;
  --line:#e2e5dc;
  --line2:#c9cec3;
  --brand:#24458a;
  --brand-soft:rgba(36,69,138,.08);
  --brand-line:rgba(36,69,138,.28);
  --on-brand:#ffffff;
  --s1:#2a78d6; --s1w:rgba(42,120,214,.10);
  --s2:#eb6834; --s2w:rgba(235,104,52,.12);
  --s3:#1baf7a;
  --gray-series:#a9b0a8;
  --o1:#86b6ef; --o2:#2a78d6; --o3:#104281;
  --ring:rgba(36,69,138,.45);
  --shadow:0 1px 2px rgba(21,32,27,.05), 0 6px 24px -12px rgba(21,32,27,.10);
  --tip-bg:#1c2622; --tip-ink:#f2f4ef;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --paper:#0e1210;
    --card:#161b18;
    --card2:#1d2320;
    --ink:#e9ede8;
    --ink2:#aab6ae;
    --muted:#7f8b84;
    --line:#252b27;
    --line2:#39413c;
    --brand:#6f9ce8;
    --brand-soft:rgba(111,156,232,.10);
    --brand-line:rgba(111,156,232,.35);
    --on-brand:#0a1730;
    --s1:#3987e5; --s1w:rgba(57,135,229,.14);
    --s2:#d95926; --s2w:rgba(217,89,38,.16);
    --s3:#199e70;
    --gray-series:#5a635c;
    --o1:#184f95; --o2:#3987e5; --o3:#86b6ef;
    --ring:rgba(111,156,232,.5);
    --shadow:0 1px 2px rgba(0,0,0,.3), 0 8px 28px -14px rgba(0,0,0,.5);
    --tip-bg:#f2f4ef; --tip-ink:#15201b;
  }
}
:root[data-theme="dark"]{
  --paper:#0e1210;
  --card:#161b18;
  --card2:#1d2320;
  --ink:#e9ede8;
  --ink2:#aab6ae;
  --muted:#7f8b84;
  --line:#252b27;
  --line2:#39413c;
  --brand:#6f9ce8;
  --brand-soft:rgba(111,156,232,.10);
  --brand-line:rgba(111,156,232,.35);
  --on-brand:#0a1730;
  --s1:#3987e5; --s1w:rgba(57,135,229,.14);
  --s2:#d95926; --s2w:rgba(217,89,38,.16);
  --s3:#199e70;
  --gray-series:#5a635c;
  --o1:#184f95; --o2:#3987e5; --o3:#86b6ef;
  --ring:rgba(111,156,232,.5);
  --shadow:0 1px 2px rgba(0,0,0,.3), 0 8px 28px -14px rgba(0,0,0,.5);
  --tip-bg:#f2f4ef; --tip-ink:#15201b;
}

/* ---------- base ---------- */
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0; background:var(--paper); color:var(--ink);
  font-family:"Archivo",system-ui,-apple-system,"Segoe UI",sans-serif;
  font-size:14.5px; line-height:1.55;
  -webkit-font-smoothing:antialiased;
}
a{color:var(--brand); text-decoration:none}
a:hover{text-decoration:underline}
button{font:inherit; color:inherit; background:none; border:0; cursor:pointer}
:is(button,a,input,summary):focus-visible{outline:2px solid var(--ring); outline-offset:2px; border-radius:6px}
.mono{font-family:"Spline Sans Mono",ui-monospace,SFMono-Regular,Menlo,monospace}
.num{font-family:"Spline Sans Mono",ui-monospace,SFMono-Regular,Menlo,monospace; font-variant-numeric:tabular-nums}

/* ---------- shell ---------- */
.shell{display:grid; grid-template-columns:236px minmax(0,1fr); min-height:100vh; max-width:1560px; margin:0 auto}
.rail{
  border-right:1px solid var(--line); padding:26px 20px 22px;
  display:flex; flex-direction:column; gap:26px;
  position:sticky; top:0; height:100vh; overflow:auto;
}
.rail-brand{display:flex; align-items:center; gap:11px}
.rail-mark{
  width:38px; height:38px; border-radius:9px; background:var(--brand); color:var(--on-brand);
  display:grid; place-items:center; font-family:"Spline Sans Mono",monospace; font-weight:600; font-size:15px;
  letter-spacing:.02em; flex:none;
}
.rail-name{font-weight:700; font-size:14px; line-height:1.2; font-stretch:112%; letter-spacing:.01em}
.rail-name small{display:block; font-weight:500; color:var(--muted); font-size:10.5px; margin-top:2px; letter-spacing:.05em}
.nav{display:flex; flex-direction:column; gap:1px}
.nav-label{font-family:"Spline Sans Mono",monospace; font-size:10px; letter-spacing:.14em; text-transform:uppercase; color:var(--muted); margin:14px 10px 6px}
/* itens primários = painéis (as abas de verdade) */
.nav-view{
  display:flex; align-items:center; gap:9px; padding:8px 11px; border-radius:8px;
  color:var(--ink2); font-weight:600; font-size:13.5px;
}
.nav-view::before{content:""; width:6px; height:6px; border-radius:2px; background:var(--line2); flex:none; transition:background .15s, transform .15s}
.nav-view:hover{background:var(--brand-soft); color:var(--ink); text-decoration:none}
.nav-view[aria-current="page"]{background:var(--brand-soft); color:var(--brand)}
.nav-view[aria-current="page"]::before{background:var(--brand); transform:scale(1.18)}
.nav-soon{color:var(--muted); font-weight:500}
.nav-soon::after{content:"em breve"; margin-left:auto; font:600 8.5px/1 "Spline Sans Mono",monospace; letter-spacing:.1em; text-transform:uppercase; color:var(--muted); background:var(--line); padding:3px 5px; border-radius:4px}
/* subitens = seções da view ativa, com destaque conforme a rolagem */
.nav-sub{display:flex; flex-direction:column; margin:3px 0 7px 22px}
.nav-sub[hidden]{display:none}
.nav-sub a{
  border-left:2px solid var(--line); padding:5px 10px 5px 14px;
  color:var(--muted); font-weight:500; font-size:12.5px;
  transition:color .12s, border-color .12s;
}
.nav-sub a:hover{color:var(--ink); border-left-color:var(--line2); text-decoration:none}
.nav-sub a.spy-active{color:var(--brand); font-weight:600; border-left-color:var(--brand)}
/* ao pular para uma seção, deixa folga para a barra de exercícios fixa */
[id^="sec-"]{scroll-margin-top:70px}
.rail-foot{margin-top:auto; font-size:11px; color:var(--muted); line-height:1.5; border-top:1px solid var(--line); padding-top:14px}
.rail-foot b{color:var(--ink2); font-weight:600}

/* ---------- main ---------- */
.main{padding:26px clamp(16px,3vw,40px) 60px; min-width:0}
.proto-chip{
  display:inline-flex; align-items:center; gap:7px;
  font-family:"Spline Sans Mono",monospace; font-size:10.5px; letter-spacing:.08em; text-transform:uppercase;
  color:var(--brand); background:var(--brand-soft); border:1px solid var(--brand-line);
  padding:4px 10px; border-radius:99px;
}
.proto-chip::before{content:""; width:6px; height:6px; border-radius:50%; background:var(--brand)}
.masthead{display:flex; flex-wrap:wrap; gap:14px 24px; align-items:flex-end; justify-content:space-between; margin:14px 0 6px}
.eyebrow{font-family:"Spline Sans Mono",monospace; font-size:11px; letter-spacing:.16em; text-transform:uppercase; color:var(--muted)}
h1.wordmark{
  margin:6px 0 4px; font-size:clamp(26px,3.2vw,34px); font-weight:800; font-stretch:118%;
  letter-spacing:-.005em; line-height:1.05; text-wrap:balance;
}
.tagline{color:var(--ink2); max-width:56ch; margin:0}
.masthead-meta{text-align:right; font-size:12px; color:var(--muted); line-height:1.6}
.masthead-meta .mono{font-size:11px}

/* filtros */
.filters{
  display:flex; flex-wrap:wrap; gap:10px 14px; align-items:center;
  border-block:1px solid var(--line); padding:12px 2px; margin:18px 0 22px;
  position:sticky; top:0; background:var(--paper); z-index:30;
}
.filters .flabel{font-family:"Spline Sans Mono",monospace; font-size:10.5px; letter-spacing:.12em; text-transform:uppercase; color:var(--muted); margin-right:2px}
.chips{display:flex; gap:6px; flex-wrap:wrap}
.chip{
  font-family:"Spline Sans Mono",monospace; font-size:12.5px; padding:6px 12px; border-radius:8px;
  border:1px solid var(--line); color:var(--ink2); background:var(--card);
}
.chip:hover{border-color:var(--line2); color:var(--ink)}
.chip[aria-pressed="true"]{background:var(--brand); border-color:var(--brand); color:var(--on-brand); font-weight:600}
.chip.ghost{color:var(--muted); background:transparent}
.filters .spacer{flex:1}
.entity{font-size:12.5px; color:var(--ink2); display:flex; gap:8px; align-items:center}
.entity b{font-weight:600; color:var(--ink)}
.partial-badge{font-family:"Spline Sans Mono",monospace; font-size:10.5px; font-weight:500; color:var(--s2); background:var(--s2w); border:1px solid currentColor; padding:3px 9px; border-radius:99px; white-space:nowrap; flex:none}
.src-badge{color:var(--muted); background:var(--card2)}

/* ---------- kpis ---------- */
.kpis{display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:12px; margin-bottom:14px}
.kpi{
  background:var(--card); border:1px solid var(--line); border-radius:14px; padding:16px 16px 14px;
  box-shadow:var(--shadow); display:flex; flex-direction:column; gap:6px; min-width:0;
}
.kpi .k-label{font-size:12px; color:var(--ink2); font-weight:500}
.kpi .k-value{font-family:"Spline Sans Mono",monospace; font-weight:600; font-size:clamp(20px,1.9vw,25px); line-height:1.1; letter-spacing:-.01em; white-space:nowrap}
.kpi .k-sub{font-size:11.5px; color:var(--muted)}
.kpi.hero{background:var(--brand); border-color:var(--brand); color:var(--on-brand)}
.kpi.hero .k-label,.kpi.hero .k-sub{color:var(--on-brand); opacity:.75}
.kpi.hero .k-value{font-size:clamp(24px,2.3vw,30px)}
.meter{height:6px; border-radius:99px; background:var(--card2); overflow:hidden; margin-top:4px}
.kpi.hero .meter{background:rgba(255,255,255,.25)}
:root[data-theme="dark"] .kpi.hero .meter,
:root:not([data-theme="light"]) .kpi.hero .meter{background:rgba(7,35,27,.3)}
.meter i{display:block; height:100%; background:var(--on-brand); border-radius:99px}

/* ---------- grade de cards ---------- */
.grid{display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); gap:12px}
.card{
  background:var(--card); border:1px solid var(--line); border-radius:14px; padding:18px 18px 16px;
  box-shadow:var(--shadow); min-width:0; display:flex; flex-direction:column; scroll-margin-top:80px;
}
.span7{grid-column:span 7}.span6{grid-column:span 6}.span5{grid-column:span 5}.span12{grid-column:span 12}
.card-head{display:flex; align-items:baseline; justify-content:space-between; gap:12px; margin-bottom:2px}
.card h2{margin:0; font-size:15.5px; font-weight:700; letter-spacing:-.005em}
.card .sub{font-size:12px; color:var(--muted); margin:2px 0 12px}
.seg{display:inline-flex; border:1px solid var(--line); border-radius:9px; padding:2px; gap:2px; background:var(--card2)}
.seg button{font-family:"Spline Sans Mono",monospace; font-size:11.5px; padding:4px 10px; border-radius:7px; color:var(--ink2)}
.seg button[aria-pressed="true"]{background:var(--card); color:var(--ink); font-weight:600; box-shadow:0 1px 2px rgba(0,0,0,.08)}
.chart{position:relative; width:100%}
.chart svg{display:block; width:100%; height:auto}
.legend{display:flex; flex-wrap:wrap; gap:6px 16px; font-size:12px; color:var(--ink2); margin-top:10px}
.legend .li{display:inline-flex; align-items:center; gap:7px}
.legend .sw{width:10px; height:10px; border-radius:3px; flex:none}
.legend .ln{width:14px; height:0; border-top:2px solid; border-radius:2px; flex:none}
.legend .count{font-family:"Spline Sans Mono",monospace; font-size:11px; color:var(--muted)}
details.tbl{margin-top:10px; border-top:1px solid var(--line); padding-top:8px}
details.tbl summary{font-size:11.5px; color:var(--muted); cursor:pointer; font-family:"Spline Sans Mono",monospace; letter-spacing:.04em}
details.tbl summary:hover{color:var(--ink2)}
details.tbl .twrap{overflow-x:auto; margin-top:8px}
details.tbl table{border-collapse:collapse; font-size:12px; min-width:340px}
details.tbl th,details.tbl td{padding:4px 12px 4px 0; text-align:right; border-bottom:1px solid var(--line)}
details.tbl th:first-child,details.tbl td:first-child{text-align:left}
details.tbl th{font-weight:600; color:var(--ink2)}

/* fluxo de estágios */
.stages{display:flex; flex-direction:column; gap:0; margin-top:4px}
.stage{display:grid; grid-template-columns:104px 1fr 118px; gap:12px; align-items:center; padding:10px 0}
.stage .s-info b{display:block; font-size:13px; font-weight:600}
.stage .s-info span{font-size:11px; color:var(--muted); line-height:1.4; display:block; margin-top:1px}
.stage .s-bar{position:relative; height:22px; background:var(--card2); border-radius:6px; overflow:hidden}
.stage .s-bar i{position:absolute; inset:0 auto 0 0; border-radius:6px 4px 4px 6px}
.stage .s-val{font-family:"Spline Sans Mono",monospace; font-size:11.5px; color:var(--ink2); text-align:right; white-space:nowrap}
.stage .s-val b{display:block; font-weight:600; color:var(--ink); font-size:12.5px}
.trace{height:16px; margin-left:116px; position:relative}
.trace::before{content:""; position:absolute; left:26px; top:0; bottom:0; width:1px; background:var(--line2)}
.trace::after{content:""; position:absolute; left:23.5px; top:50%; width:6px; height:6px; border-radius:50%; border:1px solid var(--line2); background:var(--card); transform:translateY(-50%)}
.stage-note{font-size:11.5px; color:var(--muted); border-top:1px solid var(--line); margin-top:10px; padding-top:10px}
.stage-note b{color:var(--ink2)}

/* barras horizontais (função/secretaria) */
.hrows{display:flex; flex-direction:column; gap:9px; margin-top:6px}
.hrow{display:grid; grid-template-columns:minmax(96px,150px) 1fr auto; gap:10px; align-items:center; font-size:12.5px}
.hrow .h-name{color:var(--ink2); white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.hrow .h-track{height:14px; background:var(--card2); border-radius:4px; position:relative; overflow:hidden}
.hrow .h-track i{position:absolute; inset:0 auto 0 0; background:var(--s1); border-radius:4px; min-width:2px}
.hrow .h-val{font-family:"Spline Sans Mono",monospace; font-size:11.5px; color:var(--ink2); white-space:nowrap}
.hrow .h-val small{color:var(--muted); margin-left:6px}
.hrow.other .h-track i{background:var(--gray-series)}
.hrow.other .h-name{color:var(--muted)}

/* mini gráfico de barras mensais (diárias) */
.mbars{display:flex; align-items:flex-end; gap:6px; height:132px; margin-top:8px}
.mbars .mb{flex:1; display:flex; flex-direction:column; align-items:center; gap:6px; height:100%; justify-content:flex-end; cursor:default}
.mbars .mb .col{width:100%; max-width:24px; background:var(--brand); border-radius:4px 4px 0 0; min-height:3px; transition:opacity .15s}
.mbars .mb:hover .col{opacity:.72}
.mbars .mb .ml{font-family:"Spline Sans Mono",monospace; font-size:10px; color:var(--muted)}
.mcap{display:flex; justify-content:space-between; font-size:11.5px; color:var(--muted); margin-top:10px}
/* explorador de diárias: motivo em no máx. 2 linhas */
.di-motivo{color:var(--ink2); display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; max-width:60ch}
/* drill-down do servidor: lista de viagens */
.di-list{max-height:46vh; overflow:auto; margin-top:2px}
.di-trip{padding:10px 2px; border-bottom:1px solid var(--line)}
.di-trip:last-child{border-bottom:0}
.di-th{display:flex; justify-content:space-between; gap:12px; align-items:baseline}
.di-dt{font-family:"Spline Sans Mono",monospace; font-size:12px; color:var(--muted)}
.di-dv{font-family:"Spline Sans Mono",monospace; font-variant-numeric:tabular-nums; font-weight:600; font-size:13px; white-space:nowrap}
.di-dd{font-size:13px; color:var(--ink2); margin-top:3px; line-height:1.5}

/* favorecidos */
.fList{display:flex; flex-direction:column; margin-top:4px}
.fRow{display:grid; grid-template-columns:18px minmax(0,1.55fr) minmax(70px,.9fr) auto; gap:10px; align-items:center; padding:7.5px 0; border-bottom:1px solid var(--line); font-size:12.5px}
.fRow:last-child{border-bottom:0}
.fRow-click{cursor:pointer; border-radius:7px; transition:background .12s}
.fRow-click:hover{background:var(--brand-soft)}
.forn-all{display:block; width:100%; margin-top:10px; padding:9px; text-align:center; font-family:"Spline Sans Mono",monospace; font-size:11.5px; letter-spacing:.02em; color:var(--brand); border:1px dashed var(--brand-line); border-radius:9px; background:var(--brand-soft)}
.forn-all:hover{background:var(--brand); color:var(--on-brand); border-style:solid}
.forn-dlg-row{cursor:pointer}
.forn-dlg-row:hover td{background:var(--brand-soft)}
.fRow .f-i{font-family:"Spline Sans Mono",monospace; font-size:10.5px; color:var(--muted)}
.fRow .f-n{white-space:nowrap; overflow:hidden; text-overflow:ellipsis; font-weight:500}
.fRow .f-n small{display:block; font-family:"Spline Sans Mono",monospace; font-size:10px; color:var(--muted); font-weight:400; letter-spacing:.02em}
.fRow .f-track{height:8px; background:var(--card2); border-radius:4px; overflow:hidden}
.fRow .f-track i{display:block; height:100%; background:var(--s1); border-radius:4px; min-width:2px}
.fRow .f-v{font-family:"Spline Sans Mono",monospace; font-size:11.5px; white-space:nowrap}
.note-chip{font-size:11px; color:var(--muted); background:var(--card2); border-radius:7px; padding:6px 10px; margin-top:10px; line-height:1.45}

/* licitações */
.stackbar{display:flex; height:22px; border-radius:6px; overflow:hidden; gap:2px; background:var(--paper); margin-top:8px}
.stackbar i{height:100%}
.lic-foot{display:flex; gap:18px; flex-wrap:wrap; border-top:1px solid var(--line); margin-top:14px; padding-top:12px; font-size:12px; color:var(--ink2)}
.lic-foot .num{font-size:13px; font-weight:600; display:block; color:var(--ink)}

/* explorador */
.exp-controls{display:flex; flex-wrap:wrap; gap:8px 10px; align-items:center; margin:4px 0 12px}
.search{
  display:flex; align-items:center; gap:8px; flex:1; min-width:200px; max-width:380px;
  border:1px solid var(--line); background:var(--card2); border-radius:9px; padding:7px 12px;
}
.search svg{flex:none; opacity:.55}
.search input{border:0; background:none; outline:none; font:inherit; color:var(--ink); width:100%; font-size:13px}
.search input::placeholder{color:var(--muted)}
.twrap{overflow-x:auto; border:1px solid var(--line); border-radius:10px}
table.exp{border-collapse:collapse; width:100%; min-width:820px; font-size:12.5px}
table.exp th{
  text-align:left; font-family:"Spline Sans Mono",monospace; font-size:10px; letter-spacing:.1em; text-transform:uppercase;
  color:var(--muted); font-weight:500; padding:10px 14px; border-bottom:1px solid var(--line); background:var(--card2);
  white-space:nowrap; position:sticky; top:0;
}
table.exp th.r,table.exp td.r{text-align:right}
table.exp th button{display:inline-flex; align-items:center; gap:5px; font:inherit; letter-spacing:inherit; text-transform:inherit; color:inherit; padding:0}
table.exp th button:hover{color:var(--ink)}
table.exp th .arr{font-size:9px; opacity:0; transition:opacity .15s}
table.exp th[aria-sort] .arr{opacity:1}
table.exp td{padding:9px 14px; border-bottom:1px solid var(--line); vertical-align:middle}
table.exp tbody tr:last-child td{border-bottom:0}
table.exp tbody tr:hover{background:var(--brand-soft)}
table.exp tfoot .exp-total td{position:sticky; bottom:0; z-index:5; background:var(--card2); border-top:2px solid var(--line2); padding:12px 14px}
table.exp tfoot .et-label{text-align:right; color:var(--ink2); font-family:"Spline Sans Mono",monospace; font-size:10.5px; letter-spacing:.08em; text-transform:uppercase}
table.exp tfoot .et-v{color:var(--ink); font-size:13.5px; font-weight:700}
.cnpj{display:block; font-family:"Spline Sans Mono",monospace; font-size:10px; color:var(--muted); font-weight:400; margin-top:1px}
table.exp th.c-info,table.exp td.c-info{width:32px; padding-left:12px; padding-right:0; text-align:center}
.info-ic{color:var(--muted); font-size:14px; cursor:pointer; line-height:1}
table.exp tbody tr:hover .info-ic{color:var(--brand)}
#expFornChip .forn-active{background:var(--brand); border-color:var(--brand); color:var(--on-brand)}
#expFornChip .forn-active b{font-weight:700; margin-left:2px}
.cnpj-link{color:inherit; text-decoration:underline dotted; text-decoration-color:var(--line2); text-underline-offset:2px}
.cnpj-link:hover{color:var(--ink2); text-decoration:underline solid; text-decoration-color:var(--brand)}
.fun-tag{font-size:11px; color:var(--ink2); background:var(--card2); padding:2.5px 8px; border-radius:99px; white-space:nowrap}
/* indicador de rescisão/desligamento — o total inclui verbas, não é salário */
.dmark{color:var(--s2); font-weight:600}
.resc-tag{font-family:"Spline Sans Mono",monospace; font-size:10px; color:var(--s2); background:var(--s2w); border:1px solid currentColor; padding:1.5px 7px; border-radius:99px; white-space:nowrap; letter-spacing:.02em}
.ed-warn{background:var(--s2w); border:1px solid var(--s2); border-radius:10px; padding:11px 13px; margin:12px 0 2px; font-size:12.5px; color:var(--ink2); line-height:1.5}
.ed-warn b{color:var(--ink); font-weight:600}
.ed-table tr.resc-row td{background:var(--s2w)}
.ed-table tr.resc-row td:first-child{color:var(--ink); font-weight:500}
.st-pill{display:inline-flex; align-items:center; gap:6px; font-size:11.5px; color:var(--ink2); white-space:nowrap}
.st-pill i{width:8px; height:8px; border-radius:50%; flex:none}
.exp-foot{display:flex; justify-content:space-between; gap:12px; flex-wrap:wrap; font-size:12px; color:var(--muted); margin-top:10px}

/* linha do explorador clicável (drill-down) */
table.exp tbody tr.exp-row{cursor:pointer}
table.exp td .drill{display:inline-flex; align-items:center; gap:4px; color:var(--muted); font-size:11px}
table.exp tbody tr:hover td .drill{color:var(--brand)}

/* dialog de detalhe do empenho */
.emp-dialog{
  border:0; border-radius:16px; padding:0; width:min(92vw,660px); max-height:88vh;
  background:var(--card); color:var(--ink); box-shadow:0 24px 70px -20px rgba(0,0,0,.5);
}
.emp-dialog::backdrop{background:rgba(10,14,12,.55); backdrop-filter:blur(2px)}
.emp-dialog-inner{padding:22px 22px 20px; overflow:auto; max-height:88vh}
.ed-close{position:absolute; top:12px; right:12px; width:32px; height:32px; border-radius:8px; display:grid; place-items:center; color:var(--ink2); font-size:18px; line-height:1}
.ed-close:hover{background:var(--card2); color:var(--ink)}
.ed-eyebrow{font-family:"Spline Sans Mono",monospace; font-size:10.5px; letter-spacing:.12em; text-transform:uppercase; color:var(--muted)}
.ed-title{margin:4px 0 2px; font-size:18px; font-weight:700; line-height:1.25; padding-right:34px; text-wrap:balance}
.ed-title small{display:block; font-family:"Spline Sans Mono",monospace; font-size:11px; color:var(--muted); font-weight:400; margin-top:3px}
.ed-nums{display:flex; flex-wrap:wrap; gap:14px 22px; margin:14px 0; padding:12px 0; border-block:1px solid var(--line)}
.ed-nums .n{display:flex; flex-direction:column; gap:2px}
.ed-nums .n span{font-size:11px; color:var(--muted)}
.ed-nums .n b{font-family:"Spline Sans Mono",monospace; font-size:15px; font-weight:600}
.ed-hist{background:var(--card2); border-radius:10px; padding:12px 14px; font-size:13px; line-height:1.55; color:var(--ink); margin:12px 0}
.ed-hist .ed-h{font-family:"Spline Sans Mono",monospace; font-size:10px; letter-spacing:.12em; text-transform:uppercase; color:var(--muted); display:block; margin-bottom:5px}
.ed-grid{display:grid; grid-template-columns:1fr 1fr; gap:9px 18px; margin:14px 0; font-size:12.5px}
.ed-grid .g{min-width:0}
.ed-grid dt{font-family:"Spline Sans Mono",monospace; font-size:9.5px; letter-spacing:.1em; text-transform:uppercase; color:var(--muted); margin-bottom:1px}
.ed-grid dd{margin:0; color:var(--ink2); line-height:1.4}
.ed-sec-h{font-size:12px; font-weight:700; margin:16px 0 6px; color:var(--ink); display:flex; align-items:baseline; gap:8px}
.ed-sec-h .count{font-family:"Spline Sans Mono",monospace; font-size:11px; font-weight:400; color:var(--muted)}
.ed-table{width:100%; border-collapse:collapse; font-size:12px}
.ed-table th{text-align:left; font-family:"Spline Sans Mono",monospace; font-size:9.5px; letter-spacing:.08em; text-transform:uppercase; color:var(--muted); font-weight:500; padding:5px 10px 5px 0; border-bottom:1px solid var(--line)}
.ed-table td{padding:6px 10px 6px 0; border-bottom:1px solid var(--line); color:var(--ink2); vertical-align:top}
.ed-table th.r,.ed-table td.r{text-align:right; font-family:"Spline Sans Mono",monospace; white-space:nowrap}
.ed-table tr:last-child td{border-bottom:0}
.ed-note{background:var(--card2); border-radius:10px; padding:14px; font-size:13px; color:var(--ink2); line-height:1.5; margin:8px 0}
.ed-note b{color:var(--ink)}
.ed-foot{margin-top:16px; padding-top:12px; border-top:1px solid var(--line); font-size:11.5px; color:var(--muted)}
@media (max-width:520px){ .ed-grid{grid-template-columns:1fr} }

/* fontes */
.sources{grid-column:span 12; background:transparent; border:1px solid var(--line); border-radius:14px; padding:20px; scroll-margin-top:80px}
.sources h2{margin:0 0 12px; font-size:14px; font-weight:700}
.src-grid{display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:20px; font-size:12.5px; color:var(--ink2); line-height:1.6}
.src-grid h3{margin:0 0 6px; font-family:"Spline Sans Mono",monospace; font-size:10.5px; letter-spacing:.13em; text-transform:uppercase; color:var(--muted); font-weight:500}
.src-grid p{margin:0 0 6px}
.src-grid a{word-break:break-word}

/* tooltip & toast */
.tip{
  position:fixed; z-index:99; pointer-events:none; opacity:0; transition:opacity .12s;
  background:var(--tip-bg); color:var(--tip-ink); border-radius:9px; padding:8px 11px;
  font-size:12px; line-height:1.5; box-shadow:0 6px 20px -6px rgba(0,0,0,.35); max-width:260px;
}
.tip b{font-family:"Spline Sans Mono",monospace; font-weight:600; font-size:12px}
.tip .t-h{font-family:"Spline Sans Mono",monospace; font-size:10px; letter-spacing:.1em; text-transform:uppercase; opacity:.65; margin-bottom:2px}
.toast{
  position:fixed; left:50%; bottom:26px; transform:translate(-50%,16px); z-index:100; opacity:0;
  background:var(--tip-bg); color:var(--tip-ink); padding:10px 16px; border-radius:10px; font-size:13px;
  transition:.22s; pointer-events:none; box-shadow:0 8px 30px -8px rgba(0,0,0,.4); max-width:min(90vw,480px); text-align:center;
}
.toast.on{opacity:1; transform:translate(-50%,0)}

/* estados de carregamento / erro */
.is-loading{opacity:.55; transition:opacity .2s}
.skeleton{position:relative; overflow:hidden; background:var(--card2); border-radius:8px; min-height:14px}
.skeleton::after{content:""; position:absolute; inset:0; transform:translateX(-100%);
  background:linear-gradient(90deg,transparent,rgba(127,139,132,.18),transparent)}
@media (prefers-reduced-motion:no-preference){ .skeleton::after{animation:shimmer 1.3s infinite} }
@keyframes shimmer{100%{transform:translateX(100%)}}
.errbox{
  grid-column:span 12; border:1px solid var(--s2); background:rgba(235,104,52,.06);
  border-radius:14px; padding:18px 20px; color:var(--ink); font-size:13.5px; line-height:1.55;
}
.errbox b{font-weight:700}
.folha-msg{grid-column:1/-1; background:var(--card2); border:1px solid var(--line); border-radius:14px; padding:24px; text-align:center; color:var(--ink2); font-size:14px; line-height:1.5}
.loadingbar{position:fixed; top:0; left:0; height:2px; width:0; background:var(--brand); z-index:200; transition:width .3s ease, opacity .3s}
.loadingbar.on{width:70%}
.loadingbar.done{width:100%; opacity:0}

/* menu "baixar dados" */
.dl-wrap{position:relative}
.dl-menu{
  position:absolute; right:0; top:calc(100% + 6px); z-index:40; min-width:230px;
  background:var(--card); border:1px solid var(--line); border-radius:10px; box-shadow:var(--shadow);
  padding:6px; display:none;
}
.dl-menu.on{display:block}
.dl-menu a{display:block; padding:8px 10px; border-radius:7px; color:var(--ink2); font-size:12.5px}
.dl-menu a:hover{background:var(--brand-soft); color:var(--ink); text-decoration:none}
.dl-menu a small{display:block; color:var(--muted); font-size:10.5px; font-family:"Spline Sans Mono",monospace}

/* movimento */
@media (prefers-reduced-motion:no-preference){
  .hrow .h-track i,.fRow .f-track i,.stage .s-bar i,.meter i{transition:width .5s cubic-bezier(.2,.8,.2,1)}
  .card,.kpi{animation:rise .4s cubic-bezier(.2,.8,.2,1) both}
  @keyframes rise{from{opacity:0; transform:translateY(6px)}to{opacity:1; transform:none}}
}

/* responsivo */
@media (max-width:1120px){
  .shell{grid-template-columns:1fr}
  /* barra de navegação fixa no topo ao rolar, com os chips de exercício logo abaixo */
  .rail{position:sticky; top:0; z-index:45; height:auto; flex-direction:row; align-items:center; border-right:0; border-bottom:1px solid var(--line); padding:12px 18px; gap:16px; overflow-x:auto; background:var(--paper)}
  /* chips de exercício numa única linha rolável, logo abaixo da navegação */
  .filters{top:var(--rail-h, 62px); flex-wrap:nowrap; overflow-x:auto; gap:8px; padding:10px 2px}
  .filters #yearChips{flex-wrap:nowrap}
  .filters .entity,.filters .spacer{display:none}
  /* no topo em telas estreitas só aparecem as abas (painéis); as seções somem */
  .nav{flex-direction:row; gap:4px; align-items:center}
  .nav-label,.rail-foot,.nav-sub{display:none}
  .nav-view{padding:7px 13px; white-space:nowrap; font-size:13px}
  .nav-view::before{display:none}
  .nav-soon::after{display:none}
  .kpis{grid-template-columns:repeat(2,1fr)}
  .kpi.hero{grid-column:span 2}
  .span7,.span6,.span5{grid-column:span 12}
  .masthead-meta{text-align:left}
  .src-grid{grid-template-columns:1fr}
}
@media (max-width:560px){
  .kpis{grid-template-columns:1fr}
  .kpi.hero{grid-column:span 1}
  .stage{grid-template-columns:1fr; gap:6px}
  .stage .s-val{text-align:left}
  .trace{display:none}
}
