/* ==========================================================================
   Blog público — Dra. Jordanna Franco
   Complementa /css/style.css e segue o Manual de Identidade Visual:
   paleta #6D5242 · #A1AD98 · #DBCDBB · #4A3A33 · branco
   títulos em Playfair Display, textos em Pragmatica (alternativa: Arimo)

   As cores e fontes são declaradas aqui com nome próprio (--jf-*) porque
   esta folha também é carregada no painel, para a prévia do editor. Lá o
   style.css do site não existe, e os nomes próprios evitam que o painel e o
   blog disputem a mesma variável.
   ========================================================================== */

:root{
  --jf-marrom:#6D5242;
  --jf-verde:#A1AD98;
  --jf-bege:#DBCDBB;
  --jf-cafe:#4A3A33;
  --jf-claro:#F4EEE6;
  --jf-linha:rgba(74,58,51,.18);
  --jf-linha-forte:rgba(74,58,51,.32);
  --jf-titulo:"Playfair Display",Georgia,"Times New Roman",serif;
  --jf-texto:"Pragmatica","Helvetica Neue",Helvetica,"Arimo",Arial,sans-serif;
}

.sr-only{
  position:absolute;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;
}
.pixel-oculto{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}

/* Mesma coluna do site (.w), com o nome que o sistema do blog usa. */
.container{
  width:100%;max-width:1240px;margin-inline:auto;
  padding-left:max(22px,env(safe-area-inset-left,0px));
  padding-right:max(22px,env(safe-area-inset-right,0px));
}

.nav a.is-ativo{border-color:var(--jf-marrom)}
.btn--pequeno{min-height:42px;padding:0 22px;font-size:14px}
button.btn{cursor:pointer;font-family:inherit}

.secao{padding:64px 0}
.secao--papel{background:var(--jf-claro)}
.secao--apos-capa{padding-top:clamp(40px,4vw,64px)}
.secao__cabeca{margin-bottom:36px;padding-bottom:18px;border-bottom:1px solid var(--jf-linha-forte)}
.secao__cabeca h2{font-size:clamp(1.7rem,4.4vw,2.4rem);font-style:italic;color:var(--jf-marrom)}
@media (min-width:900px){ .secao{padding:96px 0} .secao--apos-capa{padding-top:64px} }

/* ---------- Capa do blog ---------- */
.blog-capa{
  position:relative;overflow:hidden;
  background:var(--jf-claro);
  padding-block:clamp(52px,6vw,104px) clamp(48px,5vw,84px);
  border-bottom:1px solid var(--jf-linha);
}
.blog-capa .container{position:relative}
.blog-capa > .jf{
  display:none;position:absolute;
  color:var(--jf-verde);opacity:.38;
}
.blog-capa h1{
  font-size:clamp(2.6rem,8vw,4.6rem);line-height:1.02;margin-bottom:22px;
}
.blog-capa h1 em{color:var(--jf-marrom)}
.blog-capa .lead{max-width:34em;margin:0;font-size:1.09rem}
@media (min-width:900px){ .blog-capa > .jf{display:block;width:420px;right:5%;bottom:-110px} }

.busca{
  display:flex;align-items:center;gap:10px;
  margin-top:34px;padding:6px 6px 6px 22px;max-width:600px;
  background:#fff;border:1px solid var(--jf-cafe);border-radius:999px;
}
.busca:focus-within{outline:2px solid var(--jf-marrom);outline-offset:3px}
.busca svg{width:18px;height:18px;color:var(--jf-marrom);flex:none}
.busca input{
  flex:1;min-width:0;border:0;background:transparent;outline:none;
  padding:10px 0;font:inherit;font-size:15.5px;color:var(--jf-cafe);
}
.busca input::placeholder{color:#8F8179}
.busca .btn{flex:none}

@media (max-width:560px){
  .busca{flex-wrap:wrap;border-radius:18px;padding:14px}
  .busca input{flex:1 1 100%;padding:4px 0 8px}
  .busca .btn{width:100%}
  .busca svg{display:none}
}

.resultado-busca{margin:0 0 32px;font-size:15px}
.resultado-busca a{margin-left:10px;text-underline-offset:3px}

/* ---------- Grade de posts ---------- */
/* Exatamente 3 colunas no desktop: com 12 posts por página, a última fileira
   nunca fica com um cartão sozinho. */
.posts{display:grid;grid-template-columns:repeat(3,1fr);gap:56px 44px}
@media (max-width:980px){ .posts{grid-template-columns:repeat(2,1fr);gap:48px 32px} }
@media (max-width:620px){ .posts{grid-template-columns:1fr;gap:44px} }

/* Sem caixa, sem sombra: a foto, uma linha e o título. É uma lista de
   leituras, e o desenho é o de um índice de revista. */
.post-cartao__link{display:flex;flex-direction:column;height:100%;text-decoration:none;color:inherit}
.post-cartao__capa{
  aspect-ratio:4/3;background:var(--jf-bege);overflow:hidden;
  display:grid;place-items:center;
}
.post-cartao__capa img{width:100%;height:100%;object-fit:cover;transition:transform 900ms cubic-bezier(.2,.7,.2,1)}
.post-cartao:hover .post-cartao__capa img{transform:scale(1.04)}
.post-cartao__vazia{color:var(--jf-marrom);opacity:.45}
.post-cartao__vazia svg{width:40px;height:40px}

.post-cartao__corpo{padding-top:20px;display:flex;flex-direction:column;flex:1;gap:10px}
.post-cartao__corpo time{
  font-size:11.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--jf-marrom);
}
.post-cartao__corpo h2{font-size:1.5rem;line-height:1.2}
.post-cartao__corpo p{margin:0;font-size:15.5px;line-height:1.6;flex:1}
.post-cartao__mais{
  display:inline-flex;align-items:center;gap:8px;align-self:flex-start;margin-top:6px;
  font-size:14.5px;border-bottom:1px solid currentColor;padding-bottom:3px;
}
.post-cartao__mais svg{width:14px;height:14px;transition:transform .25s}
.post-cartao:hover .post-cartao__mais svg{transform:translateX(4px)}
.post-cartao__link:focus-visible{outline-offset:6px}

/* ---------- Estado vazio ---------- */
.vazio{
  text-align:center;padding:clamp(52px,6vw,92px) 24px;
  background:var(--jf-claro);
}
.vazio svg{width:44px;height:44px;margin:0 auto 20px;color:var(--jf-marrom);opacity:.55}
.vazio h1,.vazio h2{font-size:1.8rem;margin-bottom:10px}
.vazio p{margin:0}
.vazio .btn{margin-top:26px}

/* ---------- Paginação ---------- */
.paginacao{display:flex;justify-content:center;align-items:center;gap:8px;flex-wrap:wrap;margin-top:64px}
.paginacao a,.paginacao span{
  min-width:44px;padding:10px 16px;border-radius:999px;
  font-size:14.5px;text-align:center;text-decoration:none;
  border:1px solid var(--jf-linha-forte);color:var(--jf-cafe);
  transition:border-color .25s,background .25s,color .25s;
}
.paginacao a:hover{border-color:var(--jf-cafe)}
.paginacao .is-atual{background:var(--jf-marrom);border-color:var(--jf-marrom);color:#fff}

/* --------------------------------------------------------------------------
   PÁGINA DO POST

   A medida do texto é o eixo do desenho: ~68 caracteres por linha. Título,
   assinatura, capa e corpo dividem as mesmas bordas, alinhados à esquerda.
   -------------------------------------------------------------------------- */
.artigo{--medida:42rem;padding-block:clamp(34px,4vw,60px) 0}
.artigo__topo{max-width:var(--medida);margin-inline:auto}

.migalhas{
  display:flex;align-items:center;gap:10px;margin-bottom:26px;
  font-size:11.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--jf-marrom);
}
.migalhas a{text-decoration:none;border-bottom:1px solid transparent;transition:border-color .25s}
.migalhas a:hover{border-color:currentColor}

.artigo__topo h1{
  font-size:clamp(2rem,1.3rem + 2.6vw,3.1rem);
  line-height:1.1;margin-bottom:22px;
}
.artigo__deck{
  font-family:var(--jf-titulo);font-style:italic;
  font-size:clamp(1.2rem,1.1rem + .5vw,1.45rem);line-height:1.45;
  color:var(--jf-marrom);margin:0 0 30px;max-width:34rem;
}

.artigo__assinatura{
  display:flex;align-items:center;gap:10px 18px;flex-wrap:wrap;
  padding-top:18px;border-top:1px solid var(--jf-linha-forte);
  font-size:14px;
}
.artigo__autor{display:inline-flex;align-items:center;gap:8px;font-weight:700}
.artigo__autor svg{color:var(--jf-marrom);flex:0 0 17px}
.artigo__cargo{position:relative;padding-left:19px}
.artigo__cargo::before{
  content:"";position:absolute;left:0;top:50%;width:11px;height:1px;background:var(--jf-linha-forte);
}
.artigo__meta{display:inline-flex;align-items:center;gap:8px;margin-left:auto}

@media (max-width:620px){
  .artigo__assinatura{gap:6px;flex-direction:column;align-items:flex-start}
  .artigo__meta{margin-left:0}
  .artigo__cargo{padding-left:0}
  .artigo__cargo::before{display:none}
}

/* Capa: mesma largura do texto, altura limitada. A imagem acompanha o texto
   em vez de competir com ele. */
.artigo__capa{margin:clamp(28px,3vw,44px) auto 0;max-width:var(--medida)}
.artigo__capa img{
  display:block;width:100%;
  aspect-ratio:2/1;max-height:300px;
  object-fit:cover;object-position:center;
}
.artigo__capa figcaption{margin-top:10px;font-size:13px;color:var(--jf-marrom);font-style:italic}

.artigo__corpo{max-width:var(--medida);margin-inline:auto;padding-block:clamp(34px,3.4vw,52px) clamp(56px,6vw,96px)}

/* Barra de progresso da leitura: 3px no topo. A largura é escrita pelo
   JavaScript; sem ele, a barra apenas não aparece. */
.leitura-barra{position:fixed;inset:0 0 auto 0;height:3px;z-index:60;background:transparent;pointer-events:none}
.leitura-barra span{display:block;height:100%;width:0;background:var(--jf-marrom);transition:width .08s linear}
@media (prefers-reduced-motion: reduce){ .leitura-barra span{transition:none} }

/* ---------- Texto do post (também usado na prévia do painel) ---------- */
.prosa{font-family:var(--jf-texto);font-size:1.09rem;line-height:1.75;color:var(--jf-cafe)}
.prosa > *{margin:0}
.prosa > *+*{margin-top:1.15em}

.prosa h2,.prosa h3{font-family:var(--jf-titulo);font-weight:400;color:var(--jf-cafe);letter-spacing:-.012em}
.prosa h2{
  position:relative;
  font-size:clamp(1.55rem,1.3rem + .9vw,2rem);line-height:1.2;
  margin-top:2.1em;margin-bottom:.15em;
  padding-top:.6em;border-top:1px solid var(--jf-linha);
}
.prosa h2::before{
  content:"";position:absolute;top:-1px;left:0;width:44px;height:2px;background:var(--jf-marrom);
}
.prosa h3{font-size:clamp(1.25rem,1.15rem + .4vw,1.45rem);font-style:italic;color:var(--jf-marrom);margin-top:1.7em;margin-bottom:.1em}
.prosa p{color:var(--jf-cafe)}

/* O primeiro parágrafo entra um pouco maior: puxa o olho para o começo da
   leitura depois da capa. */
.prosa > p:first-child{font-size:1.18rem;line-height:1.68}

.prosa strong{font-weight:700}
.prosa a{color:var(--jf-marrom);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}
.prosa a:hover{color:var(--jf-cafe)}
.prosa ul,.prosa ol{padding-left:1.3em;display:grid;gap:.5em}
.prosa ul{list-style:disc}
.prosa ol{list-style:decimal}
.prosa li{padding-left:.25em}
.prosa li::marker{color:var(--jf-marrom)}
.prosa blockquote{
  border-left:1px solid var(--jf-marrom);
  padding:4px 0 4px 24px;margin-block:1.7em;
  font-family:var(--jf-titulo);font-style:italic;
  font-size:1.32rem;line-height:1.42;color:var(--jf-marrom);
}
.prosa hr{border:0;height:1px;background:var(--jf-linha-forte);margin-block:2.4em}
.prosa img{margin-block:1.6em}

/* ---------- Bloco de agendamento no fim do texto ---------- */
/* Duas colunas: a foto ocupa a esquerda e o lado direito empilha convite e
   botão. O rosto ancora o pedido numa pessoa. */
.artigo__cta{
  margin-top:clamp(44px,4.4vw,68px);
  padding:clamp(26px,3vw,38px);
  background:var(--jf-cafe);color:var(--jf-bege);
  display:grid;grid-template-columns:auto 1fr;
  gap:16px clamp(18px,2.2vw,30px);
}
.artigo__cta__foto{
  grid-row:1 / span 2;align-self:center;
  width:84px;height:84px;border-radius:50%;object-fit:cover;object-position:center top;
}
.artigo__cta__texto{grid-column:2}
.artigo__cta strong{
  display:block;font-family:var(--jf-titulo);font-weight:400;
  font-size:clamp(1.3rem,1.2rem + .5vw,1.6rem);line-height:1.2;color:#fff;margin-bottom:6px;
}
.artigo__cta p{margin:0;font-size:15px;line-height:1.5;max-width:40ch}
.artigo__cta .btn--zap{grid-column:2;justify-self:start}

.btn--zap{background:#fff;color:var(--jf-cafe);border-color:#fff}
.btn--zap svg{flex:0 0 19px}
.btn--zap:hover{background:var(--jf-bege);border-color:var(--jf-bege);color:var(--jf-cafe)}
.artigo__cta :focus-visible{outline-color:var(--jf-bege)}

@media (max-width:620px){
  /* No celular o botão ocupa a largura inteira, embaixo das duas colunas:
     é o único alvo de toque que importa neste bloco. */
  .artigo__cta{row-gap:18px}
  .artigo__cta__foto{grid-row:1;width:62px;height:62px}
  .artigo__cta .btn--zap{grid-column:1 / -1;width:100%}
}
