/* Editais Stratago — páginas públicas (apresentação, entrar, termos).
   Layout: alinhado à esquerda, coluna de 1120px; papel frio + tinta azul-escura; o marca-texto âmbar
   (a mesma cor do boletim) só aparece em PRAZOS — é o único destaque forte da página. */
:root {
  --papel:   #f2f4f0;
  --folha:   #ffffff;
  --tinta:   #14262f;
  --tinta-2: #4a5c66;
  --tinta-3: #7a8a92;
  --linha:   #d9dfda;
  --carimbo: #2b5c8a;
  --marca:   #f2b33d;
  --marca-f: rgba(242, 179, 61, .38);
  --aberto:  #1e6b45;
  --alerta:  #a8461f;
  --sombra:  0 1px 0 rgba(20, 38, 47, .06), 0 10px 28px -14px rgba(20, 38, 47, .28);
  --f-tit: "Bricolage Grotesque", "Segoe UI", system-ui, sans-serif;
  --f-txt: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;
  --raio: 10px;
  --larg: 1120px;
  color-scheme: light;
}
@media (prefers-color-scheme: dark) {
  :root {
    --papel: #0f1b21; --folha: #16252d; --tinta: #e6ece8; --tinta-2: #a9b8b4; --tinta-3: #7f918f;
    --linha: #273a42; --carimbo: #86b6e0; --marca: #f0b23a; --marca-f: rgba(240, 178, 58, .30);
    --aberto: #6fcf97; --alerta: #f0a07a;
    --sombra: 0 1px 0 rgba(0, 0, 0, .3), 0 12px 30px -14px rgba(0, 0, 0, .7);
    color-scheme: dark;
  }
}

* { box-sizing: border-box; margin: 0; padding: 0 }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100% }
body { font-family: var(--f-txt); font-size: 16px; line-height: 1.6; background: var(--papel); color: var(--tinta);
  -webkit-font-smoothing: antialiased; overflow-x: hidden }
img { max-width: 100%; height: auto; display: block }
a { color: var(--carimbo) }
a:focus-visible, button:focus-visible, input:focus-visible, summary:focus-visible, select:focus-visible {
  outline: 3px solid var(--carimbo); outline-offset: 2px; border-radius: 4px }
.num { font-variant-numeric: tabular-nums }
.envolve { max-width: var(--larg); margin: 0 auto; padding-inline: 20px }
.sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap }

h1, h2, h3 { font-family: var(--f-tit); line-height: 1.08; letter-spacing: -.02em; text-wrap: balance; font-weight: 700 }
h1 { font-size: clamp(2.35rem, 5.2vw, 4.1rem); font-weight: 750 }
h2 { font-size: clamp(1.75rem, 3.2vw, 2.55rem) }
h3 { font-size: 1.22rem; letter-spacing: -.01em; line-height: 1.25 }
p { max-width: 64ch }
.lead { font-size: 1.15rem; color: var(--tinta-2) }

/* marca-texto: só prazos */
.marca { background: linear-gradient(transparent 52%, var(--marca-f) 52%, var(--marca-f) 92%, transparent 92%);
  padding: 0 .12em; font-weight: 600 }

/* botões */
.bt { display: inline-flex; align-items: center; justify-content: center; gap: .5em; font: 600 1rem/1 var(--f-txt);
  padding: .9em 1.35em; border-radius: 999px; border: 1.5px solid var(--tinta); background: transparent;
  color: var(--tinta); text-decoration: none; cursor: pointer; transition: background .15s, color .15s }
.bt:hover { background: color-mix(in srgb, var(--tinta) 8%, transparent) }
.bt-p { background: var(--tinta); color: var(--papel) }
.bt-p:hover { background: color-mix(in srgb, var(--tinta) 86%, var(--carimbo)) }
.bt-pq { padding: .62em 1.05em; font-size: .92rem }
.bt[disabled] { opacity: .55; cursor: progress }

/* topo */
.topo { position: sticky; top: env(safe-area-inset-top, 0px); z-index: 50;
  background: color-mix(in srgb, var(--papel) 92%, transparent); backdrop-filter: blur(10px);
  border-bottom: 1px solid color-mix(in srgb, var(--linha) 70%, transparent) }
.topo .envolve { display: flex; align-items: center; gap: 24px; height: 64px }
.marca-site { font-family: var(--f-tit); font-weight: 750; font-size: 1.18rem; color: var(--tinta);
  text-decoration: none; letter-spacing: -.02em; white-space: nowrap }
.marca-site small { font-weight: 500; color: var(--tinta-3); font-size: .8em; margin-left: .3em }
.topo nav { display: flex; gap: 22px; margin-left: 8px }
.topo nav a { color: var(--tinta-2); text-decoration: none; font-size: .95rem; font-weight: 500 }
.topo nav a:hover { color: var(--tinta) }
.topo .acoes { margin-left: auto; display: flex; gap: 10px; align-items: center }
@media (max-width: 920px) { .topo nav { display: none } }
@media (max-width: 460px) { .topo .acoes .bt:not(.bt-p) { display: none } .marca-site small { display: none } }

/* seções */
section { padding-block: clamp(64px, 9vw, 112px) }
.sec-cab { display: grid; gap: 14px; margin-bottom: 44px; max-width: 760px }
.sec-cab p { color: var(--tinta-2); font-size: 1.08rem }

/* abertura */
.abertura { padding-block: clamp(40px, 7vw, 88px) clamp(56px, 8vw, 96px) }
.abertura .envolve { display: grid; grid-template-columns: minmax(0, 1.08fr) minmax(0, .92fr); gap: clamp(32px, 5vw, 72px);
  align-items: center }
.abertura .texto { display: grid; gap: 24px }
.abertura .ctas { display: flex; gap: 12px; flex-wrap: wrap }
.ao-vivo { display: grid; grid-template-columns: repeat(3, minmax(0, max-content)); gap: 16px 32px; padding-top: 8px; color: var(--tinta-2); font-size: .92rem; line-height: 1.35 }
@media (max-width: 520px) { .ao-vivo { grid-template-columns: repeat(2, minmax(0, 1fr)) } }
.ao-vivo b { display: block; font-family: var(--f-tit); font-size: 2rem; color: var(--tinta); line-height: 1.1; letter-spacing: -.02em }
@media (max-width: 860px) { .abertura .envolve { grid-template-columns: minmax(0, 1fr) } }

/* pilha de editais (o elemento marcante) */
.pilha { position: relative; min-height: 510px; isolation: isolate }
.ficha { position: absolute; left: 0; right: 0; background: var(--folha); border: 1px solid var(--linha);
  grid-template-columns: minmax(0, 1fr); color: var(--tinta); text-decoration: none; overflow: hidden;
  border-radius: var(--raio); box-shadow: var(--sombra); padding: 22px 24px 20px; display: grid; gap: 10px;
  transform-origin: 50% 100% }
.ficha:nth-child(1) { top: 0; transform: rotate(-2.2deg) translateX(-10px); z-index: 1 }
.ficha:nth-child(2) { top: 142px; transform: rotate(1.4deg) translateX(14px); z-index: 2 }
.ficha:nth-child(3) { top: 284px; transform: rotate(-.6deg); z-index: 3 }
.ficha .org { font-size: .82rem; color: var(--carimbo); font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap }
.ficha h3 { font-size: 1.08rem; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden }
.ficha .rodape { display: flex; justify-content: space-between; gap: 12px; align-items: baseline; font-size: .9rem;
  color: var(--tinta-2); flex-wrap: wrap }
.ficha .valor { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 60% }
.carimbo { position: absolute; top: 16px; right: 18px; font: 700 .72rem/1 var(--f-tit); color: var(--aberto);
  border: 2px solid currentColor; border-radius: 6px; padding: 5px 7px 4px; transform: rotate(6deg); letter-spacing: .04em;
  opacity: .85 }
.ficha .org, .ficha h3 { padding-right: 84px }
.ficha > * { min-width: 0 }          /* texto longo (órgão com parceiros) nunca alarga a ficha */
.ficha h3 { overflow-wrap: anywhere }
a.ficha { transition: box-shadow .2s, border-color .2s }
a.ficha:hover { border-color: var(--carimbo); box-shadow: 0 1px 0 rgba(20, 38, 47, .06), 0 16px 34px -14px rgba(20, 38, 47, .4) }
a.ficha:hover h3 { text-decoration: underline; text-underline-offset: 3px }
.pilha-nota { position: absolute; bottom: 0; left: 0; font-size: .82rem; color: var(--tinta-3) }
@media (prefers-reduced-motion: no-preference) {
  .pilha.entra .ficha { animation: assenta .7s cubic-bezier(.2, .8, .2, 1) both }
  .pilha.entra .ficha:nth-child(2) { animation-delay: .12s }
  .pilha.entra .ficha:nth-child(3) { animation-delay: .24s }
  @keyframes assenta { from { opacity: 0; translate: 0 -26px } to { opacity: 1; translate: 0 0 } }
}
@media (max-width: 860px) { .pilha { min-height: 480px } }

/* fontes */
.fontes { padding-block: 26px; border-block: 1px solid var(--linha); background: color-mix(in srgb, var(--folha) 55%, transparent) }
.fontes .envolve { display: flex; gap: 14px 30px; flex-wrap: wrap; align-items: baseline; color: var(--tinta-2); font-size: .95rem }
.fontes strong { color: var(--tinta); font-weight: 600 }

/* como funciona: sequência real de 4 etapas */
.etapas { display: grid; gap: clamp(48px, 7vw, 88px) }
.etapa { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); gap: clamp(28px, 5vw, 64px); align-items: center }
.etapa:nth-child(even) .etapa-txt { order: 2 }
.etapa-txt { display: grid; gap: 14px; align-content: start }
.etapa-n { font: 700 1rem/1 var(--f-tit); color: var(--carimbo); display: flex; align-items: center; gap: 10px }
.etapa-n::before { content: attr(data-n); display: inline-grid; place-items: center; width: 34px; height: 34px;
  border-radius: 50%; border: 2px solid var(--carimbo); font-size: .95rem }
.etapa-txt ul { list-style: none; display: grid; gap: 8px; color: var(--tinta-2) }
.etapa-txt li { padding-left: 22px; position: relative }
.etapa-txt li::before { content: ""; position: absolute; left: 4px; top: .62em; width: 8px; height: 2px; background: var(--tinta-3) }
.tela { border-radius: var(--raio); border: 1px solid var(--linha); background: var(--folha); box-shadow: var(--sombra);
  overflow: hidden; min-width: 0 }
.tela .barra { height: 28px; display: flex; gap: 6px; align-items: center; padding-inline: 12px; border-bottom: 1px solid var(--linha) }
.tela .barra i { width: 9px; height: 9px; border-radius: 50%; background: var(--linha) }
.tela img { width: 100%; aspect-ratio: 16 / 10; object-fit: cover; object-position: top left; max-width: 100% }
.diagrama { padding: 26px; display: grid; gap: 12px; font-size: .92rem }
.diagrama .ln { display: grid; grid-template-columns: 9.5rem minmax(0, 1fr); gap: 12px; align-items: center }
.diagrama .ln span:first-child { color: var(--tinta-2) }
.diagrama .fio { height: 10px; border-radius: 6px; background: var(--linha); position: relative; overflow: hidden }
.diagrama .fio b { position: absolute; inset: 0 auto 0 0; border-radius: 6px; background: var(--carimbo) }
@media (max-width: 860px) {
  .etapa { grid-template-columns: minmax(0, 1fr) }
  .etapa:nth-child(even) .etapa-txt { order: 0 }
}

/* tipos */
.tipos { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 0; border-top: 2px solid var(--tinta) }
.tipo { grid-column: span 2 }
.tipo:nth-child(n+4) { grid-column: span 3 }
@media (max-width: 960px) { .tipos { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) } .tipo, .tipo:nth-child(n+4) { grid-column: auto } .tipo:last-child { grid-column: 1 / -1 } }
@media (max-width: 600px) { .tipos { grid-template-columns: minmax(0, 1fr) } }
.tipo { padding: 26px 24px 28px 0; border-bottom: 1px solid var(--linha); display: grid; gap: 8px; align-content: start }
.tipo + .tipo { padding-left: 0 }
.tipo-cab { display: flex; justify-content: space-between; align-items: baseline; gap: 12px }
.tipo-cab .qtd { font: 700 1.6rem/1 var(--f-tit); color: var(--tinta); white-space: nowrap }
.tipo-cab .qtd small { font: 500 .78rem var(--f-txt); color: var(--tinta-3); margin-left: 4px }
.tipo p { color: var(--tinta-2); font-size: .97rem }
.tipo .ex { font-size: .88rem; color: var(--tinta-3) }
@media (min-width: 720px) { .tipo { padding-right: 32px } }
.areas { margin-top: 28px; display: flex; flex-wrap: wrap; gap: 8px }
.areas span { border: 1px solid var(--linha); border-radius: 999px; padding: .35em .85em; font-size: .9rem; color: var(--tinta-2);
  background: var(--folha) }

/* para quem */
.publicos { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)); gap: 20px }
.publico { background: var(--folha); border: 1px solid var(--linha); border-radius: var(--raio); overflow: hidden;
  display: grid; grid-template-rows: auto 1fr }
.publico .ilustra { aspect-ratio: 16 / 9; background: color-mix(in srgb, var(--carimbo) 10%, var(--folha)); max-width: 100% }
.publico .ilustra svg { width: 100%; height: 100%; display: block }
.publico .corpo { padding: 22px 24px 26px; display: grid; gap: 12px; align-content: start }
.publico ul { list-style: none; display: grid; gap: 7px; color: var(--tinta-2); font-size: .96rem }
.publico li { padding-left: 22px; position: relative }
.publico li::before { content: ""; position: absolute; left: 2px; top: .5em; width: 10px; height: 6px;
  border-left: 2px solid var(--aberto); border-bottom: 2px solid var(--aberto); transform: rotate(-45deg) }
.convite { margin-top: 28px; display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 20px; align-items: center;
  padding: 26px 28px; border-radius: var(--raio); background: var(--tinta); color: var(--papel) }
.convite p { color: color-mix(in srgb, var(--papel) 82%, transparent) }
.convite h3 { color: var(--papel) }
.convite .bt { border-color: var(--papel); color: var(--papel) }
.convite .bt:hover { background: color-mix(in srgb, var(--papel) 14%, transparent) }
@media (max-width: 720px) { .convite { grid-template-columns: minmax(0, 1fr) } }

/* preços */
.precos { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.3fr); gap: 24px; align-items: start }
.plano { background: var(--folha); border: 1px solid var(--linha); border-radius: var(--raio); padding: 28px; display: grid; gap: 14px }
.plano .valor-g { font: 750 2.6rem/1 var(--f-tit); letter-spacing: -.03em }
.plano .valor-g small { font: 500 1rem var(--f-txt); color: var(--tinta-2); letter-spacing: 0 }
.pacotes { display: grid; gap: 10px }
.pacote { display: flex; justify-content: space-between; gap: 12px; padding: 14px 0; border-bottom: 1px solid var(--linha); align-items: baseline }
.pacote b { font-family: var(--f-tit); font-size: 1.3rem }
.custos { width: 100%; border-collapse: collapse; font-size: .96rem }
.custos td { padding: 10px 0; border-bottom: 1px solid var(--linha); vertical-align: top }
.custos td:last-child { text-align: right; white-space: nowrap; font-weight: 600 }
.nota { font-size: .88rem; color: var(--tinta-3) }
@media (max-width: 860px) { .precos { grid-template-columns: minmax(0, 1fr) } }

/* perguntas */
.faq { display: grid; border-top: 2px solid var(--tinta); max-width: 860px }
.faq details { border-bottom: 1px solid var(--linha) }
.faq summary { cursor: pointer; list-style: none; padding: 20px 40px 20px 0; position: relative; font: 600 1.08rem/1.4 var(--f-tit) }
.faq summary::-webkit-details-marker { display: none }
.faq summary::after { content: "+"; position: absolute; right: 6px; top: 16px; font: 400 1.6rem/1 var(--f-txt); color: var(--tinta-2) }
.faq details[open] summary::after { content: "−" }
.faq details > div { padding: 0 0 22px; color: var(--tinta-2); display: grid; gap: 10px }

/* chamada final + rodapé */
.final { background: var(--tinta); color: var(--papel) }
.final .envolve { display: grid; gap: 22px; justify-items: start }
.final h2 { color: var(--papel); max-width: 18ch }
.final p { color: color-mix(in srgb, var(--papel) 80%, transparent) }
.final .bt-p { background: var(--marca); color: #1d1606; border-color: var(--marca) }
.final .bt-p:hover { background: color-mix(in srgb, var(--marca) 85%, #fff) }
.final .bt:not(.bt-p) { border-color: var(--papel); color: var(--papel) }
.rodape-site { padding-block: 34px 44px; font-size: .9rem; color: var(--tinta-3) }
.rodape-site .envolve { display: flex; gap: 14px 28px; flex-wrap: wrap; justify-content: space-between }
.rodape-site nav { display: flex; gap: 20px; flex-wrap: wrap }
.rodape-site a { color: var(--tinta-2); text-decoration: none }
.rodape-site a:hover { text-decoration: underline }

/* ---------- entrar / cadastro ---------- */
.acesso { min-height: calc(100vh - 64px); display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) }
.acesso-lado { background: var(--tinta); color: var(--papel); padding: clamp(32px, 6vw, 72px); display: grid; align-content: center; gap: 22px }
.acesso-lado h1 { font-size: clamp(2rem, 3.6vw, 3rem); color: var(--papel) }
.acesso-lado p, .acesso-lado li { color: color-mix(in srgb, var(--papel) 80%, transparent) }
.acesso-lado ul { list-style: none; display: grid; gap: 10px }
.acesso-lado li { padding-left: 22px; position: relative }
.acesso-lado li::before { content: ""; position: absolute; left: 2px; top: .5em; width: 10px; height: 6px;
  border-left: 2px solid var(--marca); border-bottom: 2px solid var(--marca); transform: rotate(-45deg) }
.acesso-form { padding: clamp(28px, 6vw, 72px) 20px; display: grid; place-items: center }
.cartao { width: 100%; max-width: 420px; display: grid; gap: 18px }
.cartao h2 { font-size: 1.8rem }
.abas { display: grid; grid-template-columns: 1fr 1fr; border-bottom: 1px solid var(--linha) }
.abas button { font: 600 1rem var(--f-txt); background: none; border: 0; padding: 12px 0; color: var(--tinta-3); cursor: pointer;
  border-bottom: 2.5px solid transparent; margin-bottom: -1px }
.abas button[aria-selected="true"] { color: var(--tinta); border-color: var(--tinta) }
.bt-google { width: 100%; background: var(--folha); border: 1.5px solid var(--linha); color: var(--tinta) }
.bt-google:hover { border-color: var(--tinta-3); background: var(--folha) }
.bt-google svg { width: 18px; height: 18px }
.ou { display: grid; grid-template-columns: 1fr auto 1fr; gap: 12px; align-items: center; color: var(--tinta-3); font-size: .88rem }
.ou::before, .ou::after { content: ""; height: 1px; background: var(--linha) }
form.campos { display: grid; gap: 14px }
.campo { display: grid; gap: 6px }
.campo label { font-weight: 600; font-size: .92rem }
.campo input { font: 1rem var(--f-txt); padding: .78em .9em; border-radius: 8px; border: 1.5px solid var(--linha);
  background: var(--folha); color: var(--tinta); width: 100% }
.campo input:focus { border-color: var(--carimbo); outline: none; box-shadow: 0 0 0 3px color-mix(in srgb, var(--carimbo) 22%, transparent) }
.campo .dica { font-size: .84rem; color: var(--tinta-3) }
.senha-wrap { position: relative }
.senha-wrap input { padding-right: 76px }
.senha-wrap button { position: absolute; right: 6px; top: 50%; transform: translateY(-50%); background: none; border: 0;
  color: var(--carimbo); font: 600 .85rem var(--f-txt); cursor: pointer; padding: 6px 8px }
.aceite { display: grid; grid-template-columns: auto 1fr; gap: 10px; font-size: .9rem; color: var(--tinta-2); align-items: start }
.aceite input { width: 18px; height: 18px; margin-top: 2px; accent-color: var(--tinta) }
form.campos .bt { width: 100% }
.msg { padding: 12px 14px; border-radius: 8px; font-size: .94rem; line-height: 1.45 }
.msg-erro { background: color-mix(in srgb, var(--alerta) 12%, transparent); color: var(--alerta) }
.msg-ok { background: color-mix(in srgb, var(--aberto) 12%, transparent); color: var(--aberto) }
.link-bt { background: none; border: 0; color: var(--carimbo); font: 600 .92rem var(--f-txt); cursor: pointer; padding: 0;
  text-decoration: underline; text-underline-offset: 3px }
.pe { font-size: .88rem; color: var(--tinta-3); text-align: left }
@media (max-width: 860px) { .acesso { grid-template-columns: minmax(0, 1fr) } .acesso-lado { order: 2 } }

/* ---------- termos ---------- */
.doc { padding-block: 48px 80px }
.doc .envolve { max-width: 780px; display: grid; gap: 18px }
.doc h1 { font-size: clamp(2rem, 4vw, 2.8rem) }
.doc h2 { font-size: 1.5rem; margin-top: 26px }
.doc h3 { margin-top: 8px }
.doc p, .doc li { color: var(--tinta-2) }
.doc ul { padding-left: 1.2em; display: grid; gap: 6px }
.doc .indice { display: flex; gap: 18px; flex-wrap: wrap }

/* pilha no celular: fichas em fluxo normal (títulos que quebram em mais linhas não escondem o prazo) */
@media (max-width: 860px) {
  .pilha { min-height: 0; display: grid; gap: 0; padding-bottom: 36px }
  .ficha { position: relative; top: auto !important; left: auto; right: auto }
  .ficha:nth-child(1) { transform: rotate(-1.2deg) }
  .ficha:nth-child(2) { transform: rotate(.9deg); margin-top: -8px }
  .ficha:nth-child(3) { transform: rotate(-.4deg); margin-top: -8px }
}
@media (prefers-color-scheme: dark) {
  .marca { color: var(--marca); background: linear-gradient(transparent 58%, rgba(240, 178, 58, .18) 58%, rgba(240, 178, 58, .18) 94%, transparent 94%) }
}

/* ---------- faixas de foto (caminho C: do edital à realização) ----------
   Sem a foto (ainda não baixada ou falhou), a faixa continua legível: fundo de tinta com o texto. */
.faixa { position: relative; min-height: clamp(340px, 58vh, 560px); display: grid; align-content: end;
  padding-block: clamp(48px, 8vw, 96px); color: #fff; isolation: isolate;
  background-color: #14262f;
  background-image: linear-gradient(180deg, rgba(10, 20, 26, .05) 0%, rgba(10, 20, 26, .35) 45%, rgba(10, 20, 26, .82) 100%), var(--foto);
  background-size: cover; background-position: var(--pos, center) }
@media (max-width: 800px) {
  .faixa { background-image: linear-gradient(180deg, rgba(10, 20, 26, .15) 0%, rgba(10, 20, 26, .55) 40%, rgba(10, 20, 26, .88) 100%), var(--foto-p) }
}
.faixa .envolve { display: grid; gap: 12px; width: 100% }
.faixa-tit { font: 750 clamp(1.7rem, 3.6vw, 2.9rem)/1.1 var(--f-tit); letter-spacing: -.02em; max-width: 22ch; text-wrap: balance;
  text-shadow: 0 2px 18px rgba(0, 0, 0, .35) }
.faixa-txt { font-size: clamp(1rem, 1.4vw, 1.15rem); color: rgba(255, 255, 255, .86); max-width: 52ch }
.faixa .credito { position: absolute; right: 14px; bottom: 10px; font-size: .72rem; color: rgba(255, 255, 255, .62) }
.faixa .credito:empty { display: none }
.creditos-fotos { flex-basis: 100%; font-size: .78rem; color: var(--tinta-3) }
.creditos-fotos:empty { display: none }

/* ---------- fundos com foto (opcionais): topo e chamada final ----------
   Sem a foto, o topo fica no papel e a chamada final na tinta, como antes. */
.abertura { position: relative; isolation: isolate }
.abertura.tem-foto {
  background-image: linear-gradient(90deg, var(--papel) 0%, color-mix(in srgb, var(--papel) 92%, transparent) 40%,
                    color-mix(in srgb, var(--papel) 52%, transparent) 100%), var(--foto-topo, none);
  background-size: cover; background-position: var(--pos-topo, center) }
@media (max-width: 860px) {
  .abertura.tem-foto { background-image: linear-gradient(180deg, color-mix(in srgb, var(--papel) 90%, transparent),
                                                var(--papel) 70%), var(--foto-topo-p, none) }
}
.final { position: relative; isolation: isolate;
  background-image: linear-gradient(90deg, rgba(16, 30, 38, .94) 0%, rgba(16, 30, 38, .82) 55%, rgba(16, 30, 38, .55) 100%),
                    var(--foto-final, none);
  background-size: cover; background-position: var(--pos-final, center) }
.abertura .credito, .final .credito { position: absolute; right: 14px; bottom: 10px; font-size: .72rem; color: var(--tinta-3) }
.final .credito { color: rgba(255, 255, 255, .6) }
.abertura .credito:empty, .final .credito:empty { display: none }

/* ---------- fundo da página inteira (opcional, lugar "pagina" do deploy/fotos.py) ----------
   A foto fica fixa atrás de todo o conteúdo e o véu de papel por cima mantém a leitura. Sem foto, nada muda. */
:root { --veu-pagina: color-mix(in srgb, var(--papel) 86%, transparent) }
@media (prefers-color-scheme: dark) { :root { --veu-pagina: color-mix(in srgb, var(--papel) 88%, transparent) } }
body.com-fundo::before { content: ""; position: fixed; inset: 0; z-index: -1; pointer-events: none;
  background-image: linear-gradient(var(--veu-pagina), var(--veu-pagina)), var(--foto-pagina);
  background-size: cover; background-position: var(--pos-pagina, center) }
@media (max-width: 800px) {
  body.com-fundo::before { background-image: linear-gradient(var(--veu-pagina), var(--veu-pagina)), var(--foto-pagina-p) }
}
body.com-fundo .topo { background: color-mix(in srgb, var(--papel) 80%, transparent) }
body.com-fundo .fontes { background: color-mix(in srgb, var(--folha) 45%, transparent) }

/* fotos nos cartões de "Para quem" (lugares profissionais, empresas, oscs) */
.publico .ilustra.tem-foto { background-color: var(--linha); background-image: var(--foto-card);
  background-size: cover; background-position: var(--pos-card, center) }
.publico .ilustra.tem-foto svg { display: none }
