/* ==================================================================
   As publicações.
   Todo o desenho das publicações vive aqui, carregado só em
   single-publicacao. Antes ele estava espalhado por site.css e
   paginas.css, escrito por cima do desenho das páginas claras — e cada
   regra nova precisava de uma classe a mais para vencer a cascata:
   texto sumiu, cartão saiu branco e link ficou ilegível, todos pela
   mesma causa.

   Ordem interna: primeiro a estrutura que veio das páginas antigas
   (grades, linhas do tempo, quadros — os `body.partido`/`report`),
   depois a área de leitura escura, que dá a palavra final nas cores.
   ================================================================== */

/* --- estrutura do conteúdo, herdada das páginas antigas --- */

body.partido nav.menu a.on{color:var(--ink)}
body.partido .back{font-weight:800;font-size:13px;color:var(--red-ink)}
body.partido .project-tag .sq{width:12px;height:12px;border-radius:3px;background:var(--red)}
body.partido .herobar{display:flex;gap:12px;flex-wrap:wrap;margin-top:28px;align-items:center}
body.partido .jump{display:flex;gap:20px;flex-wrap:wrap;margin-left:6px}
body.partido .jump a{font-weight:800;font-size:14px;color:var(--ink-soft);border-bottom:2px solid transparent;padding-bottom:2px}
body.partido .jump a:hover{color:var(--ink);border-color:var(--red)}
body.partido .inside{padding:56px 0 20px}
body.partido .kern{font-size:12px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--red-ink);text-align:center;margin-bottom:26px}
body.partido .stats{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
body.partido .stat{border:1px solid var(--line);border-radius:20px;padding:30px 26px;background:var(--wash);position:relative;overflow:hidden;transition:.2s}
body.partido .stat:hover{transform:translateY(-4px);box-shadow:var(--shadow)}
body.partido .stat::before{content:"";position:absolute;left:0;top:0;right:0;height:6px}
body.partido .stat.s1::before{background:var(--green)}
body.partido .stat.s2::before{background:var(--yellow)}
body.partido .stat.s3::before{background:var(--green)}
body.partido .stat .lab{font-size:11px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft)}
body.partido .stat .big{font-size:clamp(40px,5vw,58px);font-weight:900;letter-spacing:-.03em;line-height:1;margin:12px 0 10px}
body.partido .stat.s1 .big{color:var(--green-ink)}
body.partido .stat.s2 .big{color:var(--yellow-ink)}
body.partido .stat.s3 .big{color:var(--green-ink)}
body.partido .stat p{font-size:15px;color:var(--ink-soft)}
body.partido .acts{display:grid;gap:0;border-top:1px solid var(--line)}
body.partido .act{display:grid;grid-template-columns:120px 1fr;gap:24px;padding:26px 4px;border-bottom:1px solid var(--line);align-items:start}
body.partido .act .num{font-size:44px;font-weight:900;letter-spacing:-.03em;line-height:1;color:var(--line)}
body.partido .act:hover .num{color:var(--red)}
body.partido .act h3{font-size:22px;font-weight:800;letter-spacing:-.01em;margin-bottom:8px}
body.partido .act p{color:var(--ink-soft);font-size:16px;max-width:760px}
body.partido .tl-wash{background:var(--wash);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
body.partido .phase-tag{display:inline-flex;align-items:center;gap:8px;font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;padding:6px 13px;border-radius:999px;margin-bottom:16px}
body.partido .phase-tag.up{background:rgba(14,156,87,.13);color:var(--green-ink)}
body.partido .phase-tag.down{background:rgba(226,58,46,.12);color:var(--red-ink)}
body.partido .tl{display:grid;grid-template-columns:repeat(4,1fr);gap:0;margin-bottom:34px}
body.partido .tl .node{padding:0 16px;position:relative}
body.partido .tl .node::before{content:"";position:absolute;top:9px;left:0;right:0;height:3px}
body.partido .tl.up .node::before{background:linear-gradient(90deg,var(--green),rgba(14,156,87,.35))}
body.partido .tl.down .node::before{background:linear-gradient(90deg,var(--red),rgba(226,58,46,.35))}
body.partido .tl .node .dot{width:20px;height:20px;border-radius:50%;background:#fff;border:4px solid var(--green);position:relative;z-index:2}
body.partido .tl.down .node .dot{border-color:var(--red)}
body.partido .tl .node .yr{font-weight:900;font-size:19px;margin:14px 0 4px;letter-spacing:-.01em}
body.partido .tl .node .txt{font-size:14.5px;color:var(--ink-soft)}
body.partido .ledger{display:grid;grid-template-columns:1fr 1fr;gap:22px}
body.partido .col.good .badge{background:var(--green)}
body.partido .col.bad .badge{background:var(--red)}
body.partido .col.good li::before{content:"✓";color:var(--green-ink)}
body.partido .col.bad li::before{content:"✕";color:var(--red-ink)}
body.partido .reset{background:var(--ink);color:#fff}
body.partido .reset .head h2{color:#fff}
body.partido .reset .head p{color:#cfcbc3}
body.partido .commits{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:8px}
body.partido .commit{display:grid;grid-template-columns:52px 1fr;gap:16px;padding:22px;border:1px solid rgba(255,255,255,.14);border-radius:16px;background:rgba(255,255,255,.03)}
body.partido .commit .n{font-size:26px;font-weight:900;line-height:1;
    background:linear-gradient(120deg,#6ee6a6,#ffd873 70%,#8ff0b6);-webkit-background-clip:text;background-clip:text;color:transparent}
body.partido .commit b{font-size:16.5px;font-weight:800;display:block;margin-bottom:5px}
body.partido .commit span{color:#cfcbc3;font-size:14.5px}
body.partido .pull{position:relative;overflow:hidden;padding:70px 0}
body.partido .pull::before{content:"";position:absolute;left:0;top:0;right:0;height:6px;background:linear-gradient(90deg,var(--green) 0 45%,var(--yellow) 45% 82%,var(--red) 82%)}
body.partido .pull blockquote{font-size:clamp(24px,3.2vw,36px);font-weight:800;letter-spacing:-.02em;line-height:1.28;max-width:940px}
body.partido .pull blockquote em{font-style:italic;background:linear-gradient(95deg,var(--green-ink),var(--yellow-ink) 60%,var(--green));-webkit-background-clip:text;background-clip:text;color:transparent}
body.partido .pull .who{margin-top:20px;font-weight:800;color:var(--ink-soft)}
body.partido .voices{background:var(--wash);border-top:1px solid var(--line)}
body.partido .vgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px}
body.partido .voice{background:#fff;border:1px solid var(--line);border-radius:18px;padding:26px}
body.partido .voice p{font-size:16.5px;font-weight:600;line-height:1.4}
body.partido .voice .attr{margin-top:16px;display:flex;align-items:center;gap:12px}
body.partido .voice .av{width:38px;height:38px;border-radius:50%;flex:none}
body.partido .voice .attr b{font-size:14px;display:block}
body.partido .voice .attr span{font-size:13px;color:var(--ink-soft)}
body.partido .note{margin-top:22px;font-size:13.5px;font-style:italic;color:var(--ink-soft)}
body.partido .ctabox{border:1px solid var(--line);border-radius:26px;padding:44px;background:
    radial-gradient(60% 120% at 100% 0%,rgba(14,156,87,.10),transparent 60%),
    radial-gradient(60% 120% at 0% 100%,rgba(246,182,13,.13),transparent 60%),#fff;text-align:center}
body.partido .ctabox h2{font-size:clamp(24px,3vw,34px);font-weight:900;letter-spacing:-.02em}
body.partido .ctabox p{color:var(--ink-soft);font-size:16.5px;margin-top:10px}
body.partido .form{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:24px}
body.partido .form input{border:1.5px solid var(--line);border-radius:999px;padding:13px 20px;font-size:15px;min-width:280px;font-family:inherit}
body.partido .form input:focus{outline:none;border-color:var(--ink)}
body.partido .stats{grid-template-columns:1fr}
body.partido .act{grid-template-columns:60px 1fr;gap:14px}
body.partido .act .num{font-size:32px}
body.partido .tl{grid-template-columns:1fr 1fr}
body.partido .ledger,body.partido .commits,body.partido .vgrid{grid-template-columns:1fr}
body.partido .tl{grid-template-columns:1fr}
body.partido header .back{display:none}
body.partido .herobar{align-items:stretch}
body.partido .herobar .btn{justify-content:center;min-height:48px}
body.partido .jump{display:flex;flex-wrap:wrap;gap:12px}
body.partido .stats,body.partido .ledger,body.partido .commits,body.partido .vgrid{grid-template-columns:1fr}
body.partido .act{grid-template-columns:42px 1fr;gap:12px}
body.partido .act .num{font-size:28px}
body.partido .tl{grid-template-columns:1fr}
body.partido .form{display:flex;flex-direction:column}
body.partido .form input{min-width:0;width:100%}
body.report .report{--night:#101612;--gold:#f6b60d;background:var(--night);color:#f8f7f2;min-height:100vh}
body.report .report .site-menu{background:#101612f2!important;border-color:#ffffff1f}
body.report .report .site-menu .brand,body.report .report .site-menu nav a{color:#f8f7f2}
body.report .report .wrap{max-width:1120px}
body.report .report-hero{padding:92px 0 72px;border-bottom:1px solid #ffffff1a;background:radial-gradient(circle at 82% 12%,#0e9c5740,transparent 32%),linear-gradient(135deg,#101612,#1b251d)}
body.report .report-kicker{color:var(--gold);font-size:11px;font-weight:850;letter-spacing:.18em;text-transform:uppercase}
body.report .report h1{max-width:850px;color:#fff;font-size:clamp(44px,7vw,86px);line-height:.94;margin:14px 0 22px}
body.report .report-hero p{max-width:700px;color:#d8ddd5;font-size:20px}
body.report .report-nav{display:flex;flex-wrap:wrap;gap:10px;margin-top:28px}
body.report .report-nav a{color:#fff;border:1px solid #ffffff45;border-radius:999px;padding:9px 14px;font-weight:750}
body.report .report-main{padding:64px 0}
body.report .chapter{padding:66px 0;border-bottom:1px solid #ffffff1a;scroll-margin-top:88px}
body.report .chapter:first-child{padding-top:0}
body.report .chapter h2{max-width:760px;color:#fff;font-size:clamp(30px,4vw,52px);margin:10px 0 16px}
body.report .chapter>p{max-width:760px;color:#cbd2c8;font-size:18px}
body.report .chapter-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:28px}
body.report .chapter-card{padding:22px;border:1px solid #ffffff1c;background:#ffffff08;border-radius:16px}
body.report .chapter-card h3{color:#fff;margin:0 0 8px}
body.report .chapter-card p{color:#c5cdc2;margin:0;font-size:15px}
body.report .report-note{margin-top:34px;border-left:3px solid var(--gold);padding:2px 0 2px 20px;color:#dce2d9}
body.report .report-note strong{color:#fff}
body.report .report-source{padding-top:50px;color:#aab5a8;font-size:13px}
body.report .report-source a{color:#f6c536;text-decoration:underline}
body.report .report-hero{padding:66px 0 54px}
body.report .report-hero p{font-size:18px}
body.report .chapter-grid{grid-template-columns:1fr}
body.report .chapter{padding:48px 0}
body.doc h2 .bar{display:inline-block;width:16px;height:16px;border-radius:4px;background:var(--red);vertical-align:-2px;margin-right:8px}
body.doc .tricolor{height:5px;border-radius:3px;background:linear-gradient(90deg,var(--green) 0 45%,var(--yellow) 45% 82%,var(--red) 82%)}
body.doc .cover{height:calc(297mm - 29mm);display:flex;flex-direction:column;break-after:page}
body.doc .cover .brand{margin-bottom:auto}
body.doc .cover .tricolor{width:70px;margin:0 0 7mm}
body.doc .cover h1{font-size:52pt}
body.doc .cover .sub{font-size:14pt;font-weight:600;color:var(--ink);max-width:150mm;margin-top:6mm}
body.doc .cover .meta{margin-top:auto;padding-top:8mm;border-top:1px solid var(--line);font-size:9.5pt;color:var(--ink-soft);display:flex;justify-content:space-between}
body.doc .funcs{display:grid;grid-template-columns:repeat(4,1fr);gap:4mm}
body.doc .func{border:1px solid var(--line);border-radius:10px;padding:4mm;text-align:center}
body.doc .func .ic{width:9mm;height:9mm;border-radius:7px;margin:0 auto 3mm;color:#fff;font-weight:900;font-size:13pt;display:flex;align-items:center;justify-content:center}
body.doc .func.f1 .ic{background:var(--red)}
body.doc .func.f2 .ic{background:var(--green)}
body.doc .func.f3 .ic{background:var(--yellow)}
body.doc .func.f4 .ic{background:var(--ink)}
body.doc .func b{display:block;font-size:7.5pt;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft)}
body.doc .func .to{color:var(--red-ink);font-weight:900}
body.doc .func span{font-weight:800;font-size:10.5pt;display:block;margin-top:1mm}
body.doc .org{text-align:center;margin:2mm 0}
body.doc .node{display:inline-block;border:1px solid var(--line);border-top:3px solid var(--ink);border-radius:9px;padding:2.6mm 5mm;font-weight:800;font-size:10pt;background:#fff}
body.doc .node small{display:block;font-weight:600;color:var(--ink-soft);font-size:8pt;margin-top:.6mm}
body.doc .node.g{border-top-color:var(--green)}
body.doc .node.y{border-top-color:var(--yellow)}
body.doc .node.r{border-top-color:var(--red)}
body.doc .vl{width:2px;height:5mm;background:var(--line);margin:0 auto}
body.doc .branch{display:grid;grid-template-columns:repeat(3,1fr);gap:5mm;position:relative;padding-top:5mm;margin-top:0}
body.doc .branch::before{content:"";position:absolute;top:0;left:16.6%;right:16.6%;height:2px;background:var(--line)}
body.doc .branch .c{position:relative;padding-top:5mm}
body.doc .branch .c::before{content:"";position:absolute;top:0;left:50%;width:2px;height:5mm;background:var(--line)}
body.doc .layers{display:grid;grid-template-columns:1fr 1fr;gap:4mm}
body.doc .layer{border:1px solid var(--line);border-left:4px solid var(--ink);border-radius:8px;padding:4mm}
body.doc .layer.g{border-left-color:var(--green)}
body.doc .layer.y{border-left-color:var(--yellow)}
body.doc .layer.r{border-left-color:var(--red)}
body.doc .layer.k{border-left-color:var(--ink)}
body.doc .layer .rl{font-size:7.5pt;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft)}
body.doc .layer p{font-size:9.3pt;margin:1.5mm 0 2.5mm}
body.doc .layer .d,body.doc .layer .x{font-size:9pt;display:block;margin-top:1mm}
body.doc .layer .d::before{content:"✔  ";color:var(--green-ink);font-weight:900}
body.doc .layer .x::before{content:"✕  ";color:var(--red-ink);font-weight:900}
body.doc .band{background:var(--ink);color:#fff;border-radius:12px;padding:6mm;break-inside:avoid}
body.doc .band h2{color:#fff}
body.doc .band h2 .bar{background:var(--red)}
body.doc .band p{color:#d9d5cd}
body.doc .stats{display:grid;grid-template-columns:repeat(3,1fr);gap:4mm;margin:4mm 0}
body.doc .stat{border:1px solid rgba(255,255,255,.16);border-radius:9px;padding:4mm}
body.doc .stat .big{font-size:22pt;font-weight:900;letter-spacing:-.02em;line-height:1;
    background:linear-gradient(120deg,#6ee6a6,#ffd873);-webkit-background-clip:text;background-clip:text;color:transparent}
body.doc .stat .l{font-size:8.6pt;color:#cfcbc3;margin-top:2mm}
body.doc .band table th,body.doc .band table td{padding:2.4mm 3mm;border-bottom:1px solid rgba(255,255,255,.16);text-align:left}
body.doc .band table th{font-size:7.6pt;letter-spacing:.06em;text-transform:uppercase;color:#cfcbc3}
body.doc td.num{text-align:right;font-weight:800}
body.doc .op{margin-top:4mm;padding:3.5mm 4mm;border-left:3px solid var(--red);background:rgba(226,58,46,.16);border-radius:0 8px 8px 0;font-size:9.3pt;color:#efeae2}
body.doc .improve{display:grid;grid-template-columns:1fr 1fr;gap:3.5mm}
body.doc .imp{display:grid;grid-template-columns:8mm 1fr;gap:3mm;border:1px solid var(--line);border-radius:8px;padding:3.5mm}
body.doc .imp .n{font-size:15pt;font-weight:900;color:var(--green-ink)}
body.doc .imp b{font-size:10pt}
body.doc .imp span{display:block;font-size:9pt;color:var(--ink-soft);margin-top:.6mm}
body.doc .guards{columns:2;column-gap:5mm}
body.doc .guard{break-inside:avoid;display:flex;gap:3mm;padding:2.4mm 0;font-size:9.6pt;font-weight:600;color:var(--ink)}
body.doc .guard::before{content:"▲";color:var(--red);font-weight:900}
body.doc .cmp{border:1px solid var(--line);border-radius:8px;overflow:hidden}
body.doc .cmp th,body.doc .cmp td{padding:2.6mm 4mm;border-bottom:1px solid var(--line);font-size:9.6pt}
body.doc .cmp thead th{background:var(--wash);font-size:7.6pt;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft)}
body.doc .cmp thead th:last-child{color:var(--red-ink)}
body.doc .cmp tr td:first-child{color:var(--ink-soft)}
body.doc .cmp tr td:last-child{font-weight:700}
body.doc .comp{display:grid;grid-template-columns:repeat(3,1fr);gap:4mm;margin-bottom:4mm}
body.doc .cblock{border:1px solid var(--line);border-radius:8px;padding:4mm}
body.doc .cblock h3{font-size:10pt;font-weight:800;margin-bottom:1mm;display:flex;align-items:center;gap:6px}
body.doc .cblock h3::before{content:"";width:10px;height:10px;border-radius:3px}
body.doc .cblock.b1 h3::before{background:var(--green)}
body.doc .cblock.b2 h3::before{background:var(--yellow)}
body.doc .cblock.b3 h3::before{background:var(--red)}
body.doc .cblock .seats{font-size:7.6pt;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:2.5mm}
body.doc .cblock ul{list-style:none;font-size:9pt;color:var(--ink-soft)}
body.doc .cblock li{padding-left:3.5mm;position:relative;margin-bottom:1.4mm;line-height:1.4}
body.doc .cblock li::before{content:"–";position:absolute;left:0;color:var(--ink)}
body.doc .consultivo{border:1px solid var(--line);border-left:4px solid var(--red);border-radius:8px;padding:4mm;background:var(--wash);break-inside:avoid}
body.doc .consultivo h3{font-size:10.5pt;font-weight:800}
body.doc .consultivo .sub{font-size:9pt;color:var(--ink-soft);margin:1mm 0 3mm}
body.doc .chips{display:grid;grid-template-columns:1fr 1fr;gap:2mm 6mm}
body.doc .names{display:grid;grid-template-columns:1fr 1fr;gap:4mm}
body.doc .person{border:1px solid var(--line);border-radius:8px;padding:4mm;break-inside:avoid}
body.doc .person .top{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}
body.doc .person h3{font-size:11.5pt;font-weight:800;letter-spacing:-.01em}
body.doc .person .seat{font-size:6.6pt;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:#fff;padding:1.4mm 2mm;border-radius:5px;white-space:nowrap;margin-top:.5mm}
body.doc .person .seat.delib{background:var(--green-ink)}
body.doc .person .seat.cons{background:var(--ink)}
body.doc .person .seat.tec{background:var(--yellow-ink)}
body.doc .person .role{font-size:8.2pt;font-weight:700;color:var(--red-ink);text-transform:uppercase;letter-spacing:.03em;margin:.6mm 0 2.4mm}
body.doc .person p{font-size:9pt;color:var(--ink-soft);line-height:1.42}
body.doc .sources{font-size:8.2pt;color:#8a857c;line-height:1.55;border-top:1px solid var(--line);padding-top:4mm;margin-top:8mm}
body.doc .running{position:running(head)}
body.doc .doc-nav{padding:14px 18px;background:#fff;border-bottom:1px solid var(--line);font-size:9pt;font-weight:800}
body.doc .doc-nav a{color:var(--red-ink);text-decoration:none}
body.doc .cover{height:auto;min-height:70vh;padding:48px 0}
body.doc .cover{min-height:auto;padding:32px 0}
body.doc .cover h1{font-size:clamp(30px,10vw,44px)}
body.doc .cover .sub{font-size:15px}
body.doc .cover .meta{flex-direction:column;gap:6px;font-size:12px}
body.doc .doc-nav{display:none}
body.doc .cover,body.doc .table-wrap,body.doc .cmp{max-width:100%;box-sizing:border-box}
body.doc .table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
body.doc .table-wrap{margin-right:-18px;padding-right:18px}
body.report .entry-conteudo{--night:#101612;--gold:#f6b60d;background:var(--night);color:#f8f7f2}
body.partido section.cta,body.estrela section.cta,body.report section.cta,body.doc section.cta{
  display:block;width:100%;margin:0;padding:64px 0;background:transparent;color:inherit;
  border-radius:0;font-weight:inherit}
body.partido .pull blockquote em{
  background:linear-gradient(95deg,var(--red-ink),var(--red) 62%,var(--yellow-ink));
  -webkit-background-clip:text;background-clip:text;color:transparent}
body.doc .post-navegacao,body.partido .post-navegacao{
  position:relative;color:#f8f7f2;margin-top:0;
  padding-top:26px;padding-bottom:32px;
  background:var(--night,#101612);
  box-shadow:0 0 0 100vmax var(--night,#101612);
  clip-path:inset(0 -100vmax)}
body.doc .post-navegacao a,body.partido .post-navegacao a{color:#ff9d92}
body.partido .voice-fonte{display:block;margin-top:6px;font-size:11.5px;
  font-weight:750;letter-spacing:.01em;color:var(--red-ink);
  border-bottom:1px solid transparent;width:fit-content}
body.partido .voice-fonte:hover{border-bottom-color:var(--red)}
body.partido .voice-nota{margin:26px 0 0;max-width:760px;font-size:13px;
  line-height:1.5;color:var(--ink-soft)}
body.partido .voice img.av{width:38px;height:38px;border-radius:50%;flex:none;object-fit:cover;display:block}
body.partido .voice .attr>div{min-width:0}

/* --- a área de leitura escura --- */

/* A capa impressa existe só no PDF; na tela ela já está no painel ao lado. */
.pub-capa-impressa{display:none}

/* ------------------------------------------------------------------ *
 * A revista.
 *
 * A área de leitura é escura em toda publicação. Antes só algumas seções
 * eram, e o resultado era um mosaico de painéis de larguras diferentes
 * separados por vãos brancos. Fundo único, seções separadas por uma linha
 * fina e tipografia serifada clara: o que organiza a leitura é a seção, não
 * a moldura de cada uma.
 * ------------------------------------------------------------------ */
.pub-principal .revista{
  margin-top:30px;font-family:var(--serifa);
  background:var(--ink);color:#f3f1ec;border-radius:6px;
  padding:8px 34px;
  print-color-adjust:exact;-webkit-print-color-adjust:exact}

/* Toda seção que não esteja dentro de outra é uma seção da revista: há
   publicação que as põe como filhas diretas e há a que as embrulha numa
   div, e um seletor de filho direto passava por estas sem ver. */
.pub-principal .revista section:not(section section){
  position:relative;background:none;margin:0;padding:52px 0;
  border-top:1px solid rgba(255,255,255,.14)}
.pub-principal .revista section:not(section section):first-child{border-top:0}

/* Ancorado em `.pub-grade` de propósito: as regras antigas de corpo de texto
   têm três classes e venciam por especificidade — o parágrafo saía escuro
   sobre o fundo escuro e a seção aparecia vazia, só com a capitular. */
.pub-grade .pub-principal .revista :is(h2,h3,h4,strong,b,.big,.kern){color:#fff}
.pub-grade .pub-principal .revista :is(p,li,dd,figcaption,blockquote,.artigo p,
  .stat p,.card p,.stance p,.txt,.sub){color:#ddd8cf}
.pub-grade .pub-principal .revista :is(.lab,.eyebrow,[class*="kicker"]){
  color:rgba(255,255,255,.62)}

/* Corpo fixo: a escala em cqw existia para o texto crescer junto com a
   folha, e não há mais folha para crescer. */
.pub-principal .revista section p,
.pub-principal .revista section .artigo p{font-size:19px;line-height:1.65}
.pub-principal .revista section h2{font-size:clamp(30px,3.4vw,42px);line-height:1.08;
  letter-spacing:-.02em;font-family:var(--sans,inherit)}
.pub-principal .revista section h3{font-size:21px;line-height:1.25}
.pub-principal .revista section .card p,
.pub-principal .revista section .stance p,
.pub-principal .revista section [class*="-card"] p{font-size:16px;line-height:1.5}
.pub-principal .revista section .citacao{font-size:26px;line-height:1.3}

/* Os quadros do conteúdo foram desenhados para tela clara — `body.partido`
   pinta `.stat`, `.voice` e companhia de branco. Sobre o fundo escuro eles
   viravam retângulos brancos com texto claro dentro, ilegíveis. Aqui todos
   passam para o mesmo véu translúcido. */
.pub-grade .pub-principal .revista :is(.stat,.card,.stance,.act,.commit,.quote,
  .voice,.ctabox,.col,.node,[class*="-card"]){
  background:rgba(255,255,255,.05);border-color:rgba(255,255,255,.14);color:#ddd8cf}
/* As faixas que só existiam para destacar um trecho com fundo claro perdem o
   fundo: quem separa agora é a linha entre seções. */
.pub-grade .pub-principal .revista :is(.voices,.tl-wash,.pull,[class*="wash"]){
  background:transparent;border-color:rgba(255,255,255,.14)}
/* Vermelho-escuro sobre fundo escuro não se lê: links, fontes e textos
   secundários sobem para um tom que se sustenta no preto. */
.pub-grade .pub-principal .revista a{color:#ff9d92}
.pub-grade .pub-principal .revista :is(.voice-fonte,.fonte,.txt,.yr,small,
  figcaption){color:rgba(255,255,255,.72)}
.pub-grade .pub-principal .revista .voice-fonte{color:#ff9d92}

/* Nomes e funções dentro dos quadros de citação. */
.pub-grade .pub-principal .revista .attr :is(b,span){color:#fff}
.pub-grade .pub-principal .revista .attr span{color:rgba(255,255,255,.66)}

/* O cabeçalho de capítulo era título à esquerda e linha fina à direita. Na
   coluna da publicação sobrava pouca largura para os dois, e o título quebrava
   em quatro linhas de duas palavras. */
.pub-principal .revista .head{display:block}
.pub-principal .revista .head h2{margin:0 0 14px}
.pub-principal .revista .head p{max-width:60ch}

/* Cada publicação nomeia a própria grade de diagramas: sem cobrir as três,
   os cards perdem a grade e são lidos como parágrafo. */
.pub-principal .revista section .grid,
.pub-principal .revista section .grid3,
.pub-principal .revista section .chapter-grid,
.pub-principal .revista section .vgrid{margin-top:30px;padding-bottom:0}
.pub-principal .revista .chapter-grid{display:grid;gap:20px;
  grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}

@media(max-width:640px){
  .pub-principal .revista{padding:4px 20px;border-radius:4px}
  .pub-principal .revista section:not(section section){padding:36px 0}
  .pub-principal .revista section p,
  .pub-principal .revista section .artigo p{font-size:17.5px}
}

@media print{
  /* A margem volta para a @page porque é a única que vale em TODA folha: com
     o recuo nos blocos, a primeira página da seção respirava e as de
     continuação começavam coladas no topo do papel. O alinhamento das seções
     escuras se resolve por margem negativa, não por recuo próprio — assim
     texto claro e escuro começam no mesmo lugar e o fundo sangra. */
  @page{size:A4;margin:22mm 18mm}
  .site-menu,body > footer,.skip-link,
  .pub-lateral,.post-navegacao{display:none !important}
  .pub-grade{display:block;max-width:none;padding:0;margin:0}

  /* A folha da capa tem margem própria, zero: puxá-la para fora da margem com
     margem negativa deslocava a arte para a direita e cortava o índice. */
  /* A folha da capa também é A4 — o arquivo inteiro tem um formato só. A
     arte 3:4 entra inteira, e a sobra vira moldura escura, não faixa branca. */
  @page capa{margin:0}
  .pub-capa-impressa{display:block;page:capa;break-after:page;
    margin:0;padding:0;width:100%;height:297mm;overflow:hidden;
    background:var(--ink);print-color-adjust:exact;-webkit-print-color-adjust:exact}
  .pub-capa-impressa .capa-publicacao{display:block;width:100%;max-width:none;
    transform:none;perspective:none;filter:none}
  .pub-capa-impressa .capa-lombada{display:none}
  .pub-capa-impressa .capa-arte{display:block;width:100%;height:297mm;
    object-fit:contain;transform:none;border-radius:0;box-shadow:none}

  .pub-abertura{padding:0;margin:0;border:0;break-after:page}

  .revista{max-width:none;padding:0;font-family:var(--serifa)}
  /* Cada seção começa em folha nova: é a separação que organiza a leitura,
     agora que não há mais imitação de papel para marcá-la. */
  /* Sem quebra forçada por seção: obrigar cada uma a começar em folha nova
     deixava metade das páginas vazia, porque muitas seções são curtas. O
     texto corre e a linha separadora marca a passagem, como na tela. */
  .revista section:not(section section){break-inside:auto}
  .revista section::before,.revista section::after{content:none}
  /* A área de leitura é escura em toda publicação, então toda folha dela é
     escura: página própria sem margem e o recuo no próprio bloco. Puxar com
     margem negativa jogava o texto para fora do papel. */
  @page escura{margin:0}
  .pub-principal .revista section:not(section section){
    page:escura;margin:0;padding:14mm 18mm;border:0;border-radius:0;
    border-top:1px solid rgba(255,255,255,.16);
    background:var(--ink);color:#f3f1ec;
    print-color-adjust:exact;-webkit-print-color-adjust:exact}
  .revista h2{break-after:avoid}
  /* As grades de duas colunas do cabeçalho de capítulo espremiam o título
     numa faixa de quatro palavras de altura. No papel elas empilham. */
  .revista :is(.head,.stats,.acts,.act,.tl,.ledger,.commits,.commit){display:block}
  .revista h3{break-after:avoid}
  .revista p{orphans:3;widows:3}
  .revista figure,.revista blockquote,.revista .stat,.revista .card{break-inside:avoid}
  a[href]::after{content:none}
  body{background:#fff;color:#151310}
}



/* ------------------------------------------------------------------
   Leitor de PDF — quando a publicação tem arquivo final, é só ele que
   aparece. O visualizador do navegador cuida de virar página, ampliar
   e baixar. (Este bloco se perdeu na separação dos arquivos de estilo:
   o leitor ficou sem altura e sumiu da página.)
   ------------------------------------------------------------------ */
.pub-leitor{margin:0 0 44px;border:1px solid var(--line);border-radius:6px;
  overflow:hidden;background:#e9e7e1;position:relative;
  box-shadow:0 1px 2px rgba(21,19,16,.06),0 18px 40px -24px rgba(21,19,16,.28)}
.pub-leitor iframe{display:block;width:100%;height:min(86vh,940px);border:0}
.pub-leitor-carregando{position:absolute;inset:0;z-index:1;display:grid;place-content:center;
  justify-items:center;gap:12px;padding:28px;text-align:center;background:#f3f1eb;color:var(--ink);
  transition:opacity .2s ease}
.pub-leitor-carregando p{margin:0;color:var(--muted)}
.pub-leitor-carregando a{font-weight:800;text-decoration:underline;text-underline-offset:3px}
.pub-leitor.is-loaded .pub-leitor-carregando{opacity:0;visibility:hidden;pointer-events:none}
.pub-mobile-pdf{display:none}
@media(max-width:700px){
  .pub-so-pdf .pub-leitor{display:none}
  .pub-abertura .pub-baixar{display:none}
  .pub-mobile-pdf{display:grid;gap:12px;margin:8px 0 34px;padding:24px;border:1px solid var(--line);border-radius:18px;background:var(--wash)}
  .pub-mobile-pdf p{margin:0;color:var(--muted)}
  .pub-mobile-pdf .btn{justify-content:center;text-align:center}
  .pub-so-pdf{padding-bottom:12px}
  body.single-publicacao>footer{margin-top:36px}
}

/* ------------------------------------------------------------------
   Modo "a publicação é o PDF".
   O título e a linha fina descem para o painel esquerdo, e a coluna
   principal vira o visualizador inteiro: a página cabe em ~100vh e o
   zoom padrão mostra a folha completa.
   ------------------------------------------------------------------ */
@media(min-width:1041px){
  .pub-so-pdf{grid-template-rows:auto 1fr;padding-bottom:36px}
  .pub-so-pdf .pub-lateral{grid-column:1;grid-row:1}
  /* A abertura ocupa a linha de baixo da MESMA coluna do painel. */
  .pub-so-pdf .pub-abertura{grid-column:1;grid-row:2;align-self:start;
    border-bottom:0;padding-bottom:0;margin-bottom:0}
  .pub-so-pdf .pub-principal{grid-column:2;grid-row:1 / span 2}
  /* No painel o título é título de ficha, não manchete. */
  .pub-so-pdf .pub-abertura h1{font-size:clamp(22px,1.8vw,28px);letter-spacing:-.03em;
    line-height:1.08;margin:10px 0 12px;max-width:none}
  .pub-so-pdf .pub-sub{font-size:15px;line-height:1.5;margin:0 0 18px}
  .pub-so-pdf .pub-creditos{gap:6px 22px}
  .pub-so-pdf .pub-creditos b{font-size:13.5px}
  .pub-so-pdf .pub-lateral-fixa{position:static}
  /* Capa menor: o espaço nobre é do arquivo. */
  .pub-so-pdf .pub-lateral .capa-publicacao{--capa-larg:210px}
  /* O visualizador toma a altura da tela menos o menu do site e o respiro,
     e abre com a folha inteira (view=Fit no iframe). */
  /* Mais curto que a tela de propósito: na primeira dobra sobra um respiro
     abaixo do quadro, em vez de ele morrer rente ao rodapé da janela. E com a
     largura na proporção da folha (≈0,71 da altura, mais a barra do
     visualizador): moldura mais larga que a página vira faixa cinza morta
     dentro do quadro. */
  .pub-so-pdf .pub-leitor{margin:0;height:calc(100vh - 230px);
    width:min(100%,calc((100vh - 286px)*0.76));min-width:420px}
  .pub-so-pdf .pub-leitor iframe{height:100%}
  .pub-so-pdf .post-navegacao{margin-top:18px;padding-top:14px}
}

/* ------------------------------------------------------------------
   O menu escuro é a assinatura das publicações — diferencia a área de
   leitura do resto do site. Antes só o relatório o tinha, porque a
   regra vivia presa às classes antigas (`report`), e publicações novas
   abriam com o vidro claro sobre a mesma página escura.
   `single-publicacao` é a classe que o WordPress dá a todas.
   ------------------------------------------------------------------ */
body.single-publicacao>header.site-menu{
  background:rgba(16,22,18,.92)!important;
  border-bottom-color:rgba(255,255,255,.10)!important}
body.single-publicacao>header .brand,
body.single-publicacao>header nav a{color:#f2f0eb!important}
body.single-publicacao>header .brand i{
  background:transparent!important;border-color:rgba(255,255,255,.5)!important}
body.single-publicacao>header .brand i::before,
body.single-publicacao>header .brand i::after{border-left-color:#fff!important}
body.single-publicacao>header .menu-toggle{
  color:#f2f0eb;border-color:rgba(255,255,255,.45)}

/* O botão de download fecha a ficha da publicação: largura de botão, não de
   banner, e um respiro acima do bloco de créditos. */
.pub-abertura .pub-baixar{display:inline-block;align-self:flex-start;width:auto;
  margin-top:22px;padding:11px 22px;font-size:14px}
@media(max-width:700px){
  /* No celular a ação equivalente já aparece no painel próprio do PDF. */
  .pub-abertura .pub-baixar{display:none}
}
