/* Site público — Henrique Rezend's Fotografia
   Réplica do site da 46graus, MEDIDO no site no ar em 12/08/2026:
   fundo cinza-quente rgb(113,105,105), texto branco, foto sangrando no topo
   com a marca por cima. NÃO é branco com preto — foi assim que montei na
   primeira tentativa e saiu outro site. */

:root {
  --papel: #716969;          /* medido: background do body do site atual */
  --papel-escuro: #635c5c;
  --tinta: #ffffff;
  --tinta-fraca: rgba(255, 255, 255, .72);
  --linha: rgba(255, 255, 255, .22);
  --realce: #d8b979;
  --largura: 1180px;
  --serif: 'Cormorant Garamond', Georgia, 'Times New Roman', serif;
  --sans: 'Figtree', -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
}

* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0; background: var(--papel); color: var(--tinta);
  font-family: var(--sans); font-size: 17px; line-height: 1.7;
}
img { max-width: 100%; height: auto; display: block; }
a { color: inherit; }

.pular { position: absolute; left: -9999px; top: 0; background: #000; color: #fff; padding: .6rem 1rem; z-index: 100; }
.pular:focus { left: 0; }
:focus-visible { outline: 2px solid var(--realce); outline-offset: 3px; }

/* ---------- topo sobre a foto ---------- */
.topo {
  position: absolute; top: 0; left: 0; right: 0; z-index: 10;
  display: grid; grid-template-columns: 1fr auto 1fr; align-items: center;
  gap: 1.5rem; padding: 1.1rem clamp(1rem, 4vw, 3rem);
}
.topo .marca { justify-self: center; }
.marca img { width: clamp(190px, 20vw, 270px); height: auto; }
.topo nav { display: flex; flex-wrap: wrap; gap: .4rem 1.7rem; }
.topo .esq { justify-content: flex-end; }
.topo .dir { flex-direction: column; align-items: flex-start; gap: .5rem; }
.topo .dir .itens { display: flex; flex-wrap: wrap; gap: .4rem 1.7rem; }
.topo a.item {
  text-decoration: none; text-transform: uppercase; letter-spacing: .16em;
  font-size: .76rem; color: #fff; padding-bottom: .25rem; border-bottom: 2px solid transparent;
  text-shadow: 0 1px 6px rgba(0, 0, 0, .45);
}
.topo a.item:hover, .topo a.item[aria-current='page'] { border-bottom-color: var(--realce); }
.redes-topo { display: flex; gap: 1rem; }
.redes-topo a { font-size: .72rem; text-transform: uppercase; letter-spacing: .1em; text-decoration: none; opacity: .85; }
.redes-topo a:hover { opacity: 1; color: var(--realce); }
.abre-menu {
  display: none; background: none; border: 1px solid rgba(255, 255, 255, .5); color: #fff;
  font: inherit; font-size: .72rem; text-transform: uppercase; letter-spacing: .14em;
  padding: .45rem .9rem; cursor: pointer;
}

/* ---------- capa (foto sangrando) ---------- */
.capa {
  position: relative; min-height: min(80vh, 640px);
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  text-align: center; padding: 9rem 1.5rem 3.5rem;
  background: #4a4444 center / cover no-repeat;
}
.capa::after {
  content: ''; position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,.45) 0%, rgba(0,0,0,.12) 42%, rgba(0,0,0,.35) 100%);
}
.capa > * { position: relative; z-index: 1; }
.capa-sobre {
  text-transform: uppercase; letter-spacing: .34em; font-size: .82rem;
  margin: 0 0 .5rem; text-shadow: 0 2px 10px rgba(0, 0, 0, .5);
}
.capa h1 {
  text-transform: uppercase; letter-spacing: .1em; font-weight: 400;
  font-size: clamp(1.4rem, 3.4vw, 2.1rem); margin: 0 0 1.6rem;
  text-shadow: 0 2px 12px rgba(0, 0, 0, .5);
}
.capa h1 span { color: var(--realce); }

/* ---------- geral ---------- */
main { min-height: 50vh; }
.bloco { max-width: var(--largura); margin: 0 auto; padding: 3.5rem 1.5rem; }
.bloco.estreito { max-width: 640px; }
h1, h2 { font-weight: 400; line-height: 1.25; text-wrap: balance; margin: 0 0 1rem; }
.bloco h1, .bloco h2 { text-transform: uppercase; letter-spacing: .08em; font-size: clamp(1.3rem, 3vw, 1.9rem); }
p { margin: 0 0 1rem; max-width: 68ch; }
.migalha { text-transform: uppercase; letter-spacing: .14em; font-size: .7rem; color: var(--tinta-fraca); }
.migalha a { text-decoration: none; }

.botao {
  display: inline-block; text-decoration: none; background: transparent; color: #fff;
  text-transform: uppercase; letter-spacing: .16em; font-size: .76rem;
  padding: .9rem 2.1rem; border: 1px solid rgba(255, 255, 255, .75);
}
.botao:hover { background: var(--realce); border-color: var(--realce); color: #2a2626; }
.mais { text-align: center; margin-top: 2.5rem; }

/* ---------- selos ("EMPRESA REFERÊNCIA NO MERCADO!") ---------- */
.selos { text-align: center; padding: clamp(2.5rem, 6vw, 4rem) 1.5rem 1rem; }
.selos h2 {
  text-transform: uppercase; letter-spacing: .04em; font-weight: 700;
  font-size: clamp(1.3rem, 3.4vw, 2rem); margin-bottom: 2.2rem;
}
.selos-fila {
  display: grid; gap: 1.6rem; justify-content: center; align-items: center;
  grid-template-columns: repeat(4, minmax(0, 132px));
  max-width: 640px; margin: 0 auto;
}
.selos-fila img { width: 100%; aspect-ratio: 1; object-fit: contain; }
.frase-capa {
  text-align: center; font-family: var(--serif); font-style: italic;
  font-size: clamp(1.25rem, 3vw, 1.75rem); margin: 2.5rem auto 0; max-width: 800px;
}

/* ---------- parceria ---------- */
.parceria {
  display: grid; gap: 2.5rem; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  max-width: var(--largura); margin: 0 auto; padding: 3.5rem 1.5rem; text-align: center;
}
.parceria > div { border-top: 1px solid var(--linha); padding-top: 1.4rem; }
.parceria p { margin-left: auto; margin-right: auto; }

.citacao { background: var(--papel-escuro); padding: clamp(2.5rem, 6vw, 4rem) 1.5rem; }
.citacao blockquote {
  margin: 0 auto; max-width: 820px; text-align: center;
  font-family: var(--serif); font-size: clamp(1.2rem, 2.8vw, 1.7rem); font-style: italic; line-height: 1.55;
}

/* ---------- convites das Dicas ---------- */
.convites {
  display: grid; gap: 3rem; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
  max-width: var(--largura); margin: 0 auto; padding: clamp(3rem, 7vw, 4.5rem) 1.5rem; text-align: center;
}
.convites article { max-width: 460px; margin: 0 auto; }
.convites h2 { font-family: var(--serif); font-style: italic; text-transform: none; letter-spacing: 0; font-size: clamp(1.5rem, 3vw, 2rem); }
.convites h2 a { text-decoration: none; border-bottom: 1px solid var(--realce); padding-bottom: .15rem; }
.convites h2 a:hover { color: var(--realce); }
.convites p { margin: 0 auto .7rem; color: var(--tinta-fraca); }

/* ---------- grade de fotos ---------- */
.grade { columns: 3 300px; column-gap: 14px; margin-top: 2rem; }
.foto { margin: 0 0 14px; break-inside: avoid; }
.foto img { width: 100%; cursor: zoom-in; background: var(--papel-escuro); }

.cartoes { display: grid; gap: 1.2rem; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); margin-top: 2rem; }
.cartao { position: relative; display: block; text-decoration: none; overflow: hidden; background: #2a2626; }
.cartao img { aspect-ratio: 4 / 3; object-fit: cover; opacity: .72; transition: opacity .3s, transform .5s; }
.cartao:hover img { opacity: .5; transform: scale(1.04); }
.cartao-nome {
  position: absolute; left: 0; right: 0; bottom: 2rem; text-align: center; color: #fff;
  text-transform: uppercase; letter-spacing: .14em; font-size: 1rem;
}
.cartao-qtd {
  position: absolute; left: 0; right: 0; bottom: 1.1rem; text-align: center; color: #fff;
  text-transform: uppercase; letter-spacing: .16em; font-size: .64rem; opacity: .8;
}

/* ---------- filmes ----------
   ⚠️ `.capa` aqui é a capa do VÍDEO e colide com a `.capa` do hero. As três
   linhas abaixo desfazem o que a do hero impõe (altura mínima, gradiente,
   centralização) — sem elas cada filme virava um bloco de 80vh. */
.filmes { display: grid; gap: 1.4rem; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); margin-top: 2rem; }
.filme { margin: 0; }
.filme .capa {
  position: relative; display: block; background: #2a2626;
  min-height: 0; padding: 0; text-align: left;
}
.filme .capa::after { content: none; }
.filme img { aspect-ratio: 16 / 9; object-fit: cover; opacity: .9; }
.filme .capa:hover img { opacity: .7; }
.play {
  position: absolute; inset: 0; margin: auto; width: 56px; height: 56px; border-radius: 50%;
  background: rgba(0, 0, 0, .5); border: 2px solid #fff; z-index: 2;
}
.play::after {
  content: ''; position: absolute; inset: 0; margin: auto; width: 0; height: 0;
  border-left: 15px solid #fff; border-top: 9px solid transparent; border-bottom: 9px solid transparent;
  transform: translateX(3px);
}
.filme figcaption { padding-top: .6rem; font-size: .88rem; color: var(--tinta-fraca); }

/* ---------- dicas ---------- */
.dicas { display: grid; gap: 1.4rem; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); margin-top: 2rem; }
.cartao-dica { display: block; text-decoration: none; border: 1px solid var(--linha); padding: 1.6rem; }
.cartao-dica:hover { border-color: var(--realce); }
.cartao-dica h2 { font-family: var(--serif); font-style: italic; text-transform: none; letter-spacing: 0; font-size: 1.5rem; margin-bottom: .5rem; }
.cartao-dica p { color: var(--tinta-fraca); font-size: .95rem; margin: 0; }

/* ---------- formulário ---------- */
.formulario { display: grid; gap: 1.1rem; margin-top: 2rem; }
.formulario label {
  display: grid; gap: .35rem; text-transform: uppercase; letter-spacing: .12em;
  font-size: .7rem; color: var(--tinta-fraca);
}
.formulario label span { color: var(--realce); }
.formulario input, .formulario select, .formulario textarea {
  font: inherit; text-transform: none; letter-spacing: normal; color: #2a2626;
  padding: .8rem .9rem; border: 1px solid transparent; background: rgba(255, 255, 255, .93);
  border-radius: 0; width: 100%;
}
.formulario input:focus, .formulario select:focus, .formulario textarea:focus { border-color: var(--realce); }
.formulario button {
  font: inherit; text-transform: uppercase; letter-spacing: .16em; font-size: .76rem;
  background: transparent; color: #fff; border: 1px solid rgba(255, 255, 255, .75);
  padding: .9rem 2.1rem; cursor: pointer; justify-self: start;
}
.formulario button:hover:not(:disabled) { background: var(--realce); border-color: var(--realce); color: #2a2626; }
.formulario button:disabled { opacity: .55; cursor: progress; }
.aviso { margin: 0; font-size: .92rem; min-height: 1.4em; }
.aviso.erro { color: #ffc9c4; }
.aviso.ok { color: #cdf0d8; }
.assina { font-family: var(--serif); font-style: italic; font-size: 1.15rem; }

/* ---------- rodapé ---------- */
.rodape { border-top: 1px solid var(--linha); margin-top: 1rem; }
.rodape-miolo {
  max-width: var(--largura); margin: 0 auto; padding: 2.5rem 1.5rem;
  display: flex; flex-wrap: wrap; gap: 1.5rem; justify-content: space-between; align-items: center;
}
.rodape p { margin: 0; font-size: .92rem; color: var(--tinta-fraca); }
.rodape-nome { font-family: var(--serif); font-style: italic; font-size: 1.3rem; color: #fff; }
.redes { display: flex; gap: 1.4rem; }
.redes a { text-decoration: none; text-transform: uppercase; letter-spacing: .14em; font-size: .7rem; }
.redes a:hover { color: var(--realce); }

/* ---------- foto ampliada ---------- */
.lente {
  position: fixed; inset: 0; background: rgba(0, 0, 0, .94); display: none;
  align-items: center; justify-content: center; z-index: 60; padding: 2rem;
}
.lente.aberta { display: flex; }
.lente img { max-width: 100%; max-height: 92vh; width: auto; object-fit: contain; }
.lente button {
  position: absolute; top: 1rem; right: 1.2rem; background: none; border: 0; color: #fff;
  font-size: 2.4rem; line-height: 1; cursor: pointer; padding: .3rem .6rem;
}

/* páginas internas não têm foto no topo: barra sólida */
body:not(.pag-inicio) .topo { position: static; background: var(--papel-escuro); }

@media (max-width: 860px) {
  .topo { gap: .8rem; padding: .9rem 1rem; }
  .topo nav { display: none; }
  .topo nav.aberto {
    display: flex; position: absolute; top: 100%; left: 0; right: 0;
    flex-direction: column; align-items: center; gap: .9rem;
    background: rgba(42, 38, 38, .97); padding: 1.4rem;
  }
  .topo .esq { display: none !important; }
  .abre-menu { display: block; justify-self: start; }
  .redes-topo { display: none; }
  .capa { min-height: 64vh; padding: 7rem 1.2rem 3rem; }
  .selos-fila { grid-template-columns: repeat(2, minmax(0, 130px)); }
  .grade { columns: 2 150px; column-gap: 8px; }
  .foto { margin-bottom: 8px; }
  .bloco { padding: 2.5rem 1rem; }
}

@media (prefers-reduced-motion: reduce) { * { animation: none !important; transition: none !important; } }

/* ---------- passagem de fotos (carrossel) ----------
   Como a do site atual: a foto do meio grande, as vizinhas espiando nas
   beiradas. Rolagem com encaixe — no celular funciona só com o dedo, sem
   depender do JavaScript; as setas são um extra para o mouse. */
.bloco.larga { max-width: none; padding-left: 0; padding-right: 0; }
.carrossel { position: relative; }
.trilho {
  display: flex; gap: 14px; overflow-x: auto; scroll-snap-type: x mandatory;
  scroll-behavior: smooth; padding: 0 max(1rem, calc((100% - min(72%, 900px)) / 2));
  scrollbar-width: none;
}
.trilho::-webkit-scrollbar { display: none; }
.quadro {
  flex: 0 0 min(72%, 900px); margin: 0; scroll-snap-align: center;
  display: flex; align-items: center; justify-content: center;
}
.quadro img {
  width: 100%; max-height: 78vh; object-fit: contain;
  cursor: zoom-in; background: var(--papel-escuro);
}
.seta {
  position: absolute; top: 50%; transform: translateY(-50%); z-index: 3;
  width: 46px; height: 46px; border-radius: 50%; cursor: pointer;
  background: rgba(0, 0, 0, .45); border: 1px solid rgba(255, 255, 255, .55);
  color: #fff; font-size: 1.8rem; line-height: 1; padding: 0 0 .2rem;
}
.seta:hover { background: rgba(0, 0, 0, .75); }
.seta.ant { left: max(.6rem, 2vw); }
.seta.prox { right: max(.6rem, 2vw); }
@media (max-width: 700px) {
  .quadro { flex-basis: 88%; }
  .trilho { padding: 0 6%; }
  .seta { width: 38px; height: 38px; font-size: 1.4rem; }
}

/* ---------- lugares do ensaio (Pré-wedding) ----------
   17 cartões: a foto do parque + nome, horário e endereço. Antes os textos
   saíam todos juntos e as fotos todas juntas, e não dava para saber qual
   foto era qual lugar. */
.lugares { display: grid; gap: 2rem; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); margin-top: 2rem; }
.lugar { margin: 0; border: 1px solid var(--linha); }
.lugar img { width: 100%; aspect-ratio: 3 / 2; object-fit: cover; cursor: zoom-in; background: var(--papel-escuro); }
.lugar > div { padding: 1.2rem 1.3rem 1.4rem; }
.lugar h3 { margin: 0 0 .5rem; font-family: var(--serif); font-style: italic; font-size: 1.4rem; font-weight: 500; }
.lugar p { margin: 0 0 .3rem; font-size: .93rem; color: var(--tinta-fraca); max-width: none; }
.foto.solta { margin: 1.5rem 0; }
.foto.solta img { width: 100%; max-height: 70vh; object-fit: contain; }

/* ---------- correções de 12/08/2026 (apontadas pelo Henrique) ---------- */

/* 🔴 A `.so-telefone` existe para o menu do CELULAR (onde a coluna da esquerda
   some e a da direita vira a lista inteira). Faltava escondê-la no
   computador: os quatro itens apareciam GRUDADOS no meio do cabeçalho
   ("INÍCIOPORTFOLIOPRÉ WEDDINGFILMES"). */
.so-telefone { display: none; }
@media (max-width: 860px) {
  .so-telefone { display: contents; }
}

/* ⚠️ Só o selo de 2026 é um CÍRCULO num JPG de fundo branco; os outros são
   quadrados cheios. A máscara recorta o círculo e o fundo branco some, sem
   precisar editar o arquivo.
   🔴 `circle 49%` ESTAVA ERRADO e cortava o selo por dentro: a porcentagem no
   radial-gradient é do TAMANHO DO GRADIENTE, que por padrão vai até o CANTO
   mais distante (~1,41x o meio-lado). 49% daquilo dá um círculo de ~35% do
   quadrado — comia "casamentos.com.br" nas laterais.
   `closest-side` faz o gradiente terminar exatamente na BORDA mais próxima,
   então 99%/100% inscreve o círculo no quadrado, que é o que se quer. */
.selos-fila img.redondo {
  -webkit-mask-image: radial-gradient(circle closest-side at 50% 50%, #000 99%, transparent 100%);
  mask-image: radial-gradient(circle closest-side at 50% 50%, #000 99%, transparent 100%);
}

.logo-parceiro { width: 108px; height: 108px; border-radius: 50%; object-fit: cover; margin: 0 auto 1rem; }

/* ---------- campo-isca (anti-robô) ----------
   ⚠️ NÃO usar display:none nem visibility:hidden — robôs simples já pulam
   esses. Posiciona fora da tela mas continua "visível" para quem só lê o
   HTML sem renderizar CSS. Nome do campo ("site") é comum o bastante para
   um preenchimento automático de formulário burro cair nele. */
.isca { position: absolute; left: -9999px; top: -9999px; width: 1px; height: 1px; overflow: hidden; }
