/*
 * Revista de serviços — o desenho das páginas (assets/js/catalog_magazine.js).
 * Usado na página pública (catalogo.php) e na prévia do modal de Serviços.
 *
 * Tudo mora dentro de .rv, com seletores de dois níveis (.rv .rv-…): o modal
 * roda dentro do sistema, e as regras globais (style.css põe 44px em todo botão e
 * link no celular; dark.css pinta h1/h2/h3 no tema escuro) não podem entrar aqui.
 * Dentro da página, as medidas são em cqw (1% da largura da página): a folha
 * encolhe inteira, como impressa, do celular ao computador.
 */
.rv{
  --mesa:#E7E0D7;--papel:#F5F0EA;--tinta:#4A3F37;--suave:#74675C;--linha:#D6CBBF;
  --acento:#8E6D50;--sobre:#FFFFFF;--sombra:rgba(70,45,25,.13);
  --f-titulo:"Cormorant Garamond","Cormorant",Georgia,"Times New Roman",serif;
  --f-texto:"Jost","Futura","Avenir Next","Segoe UI",system-ui,sans-serif;
  --w-titulo:400;--ls-titulo:.035em;
}
/* A biblioteca guarda uma "página fantasma" à esquerda (para animar a virada no modo de
   uma página): sem o recorte, a sombra do canto dobrado aparecia por cima do que estiver
   ao lado (o formulário do modal) e um arraste ali virava a página. */
.rv .rv-host{position:relative;overflow:hidden}
.rv .rv-livro{transition:transform .7s cubic-bezier(.3,.7,.2,1)}
.rv .rv-livro.rv-na-capa{transform:translateX(-25%)}
.rv .rv-livro.rv-no-fim{transform:translateX(25%)}

.rv .rv-page{background:var(--papel);container-type:inline-size;overflow:hidden}
.rv .rv-pg{position:absolute;inset:0;box-sizing:border-box;padding:11cqw 9cqw 9cqw;display:flex;flex-direction:column;
  color:var(--tinta);font-family:var(--f-texto);font-size:3.3cqw;font-weight:400;line-height:1.4;text-align:left;letter-spacing:0}
.rv .rv-pg :where(p,h1,h2,h3,dl,dt,dd,ol,ul,li){margin:0;padding:0;color:inherit;font:inherit;letter-spacing:inherit;list-style:none}
.rv .rv-pg a,.rv .rv-pg button{min-width:0;min-height:0;margin:0;padding:0;border:0;background:none;color:inherit;font:inherit;
  text-align:left;text-decoration:none;cursor:pointer;box-shadow:none}
.rv .rv-pg a *,.rv .rv-pg button *{pointer-events:none}   /* o toque cai no botão, não vira a página */
.rv .rv-pg img{max-width:none;display:block}
.rv .rv-esq::after,.rv .rv-dir::after{content:"";position:absolute;top:0;bottom:0;width:7cqw;pointer-events:none}
.rv .rv-esq::after{right:0;background:linear-gradient(to left,var(--sombra),transparent)}
.rv .rv-dir::after{left:0;background:linear-gradient(to right,var(--sombra),transparent)}
.rv .rv-num{position:absolute;bottom:5.5cqw;font-size:2.5cqw;letter-spacing:.14em;color:var(--suave)}
.rv .rv-esq .rv-num{left:8cqw}
.rv .rv-dir .rv-num{right:8cqw}
.rv .rv-rot{font-size:2.6cqw;letter-spacing:.32em;text-transform:uppercase;color:var(--suave);line-height:1.6}
.rv .rv-fio{display:block;width:9cqw;height:1px;background:var(--suave);opacity:.5;margin:4cqw 0}
.rv .rv-tit{font-family:var(--f-titulo);font-weight:var(--w-titulo);letter-spacing:var(--ls-titulo);text-transform:uppercase;line-height:1.04;
  text-wrap:balance;overflow-wrap:break-word;color:var(--tinta)}
.rv .rv-txt{font-size:3.3cqw;line-height:1.6;font-weight:300}
.rv .rv-cit{font-family:var(--f-titulo);font-style:italic;font-weight:400;line-height:1.2;color:var(--tinta)}

/* capa */
.rv .rv-capa{align-items:center;text-align:center;padding-top:10cqw}
.rv .rv-logo{width:15cqw;height:15cqw;border-radius:50%;background:#FFFFFF;display:grid;place-items:center;overflow:hidden;margin-bottom:3cqw;
  box-shadow:0 0 0 1px var(--linha)}
.rv .rv-logo img{max-width:72%;max-height:72%;object-fit:contain}
.rv .rv-capa-nome{font-size:13cqw;margin:1.5cqw 0 2cqw}
.rv .rv-capa .rv-rot{letter-spacing:.42em}
.rv .rv-capa-foto{position:absolute;left:0;bottom:0;width:100%;height:84cqw;object-fit:cover;
  -webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 24%,#000 74%,transparent 100%);
          mask-image:linear-gradient(to bottom,transparent 0,#000 24%,#000 74%,transparent 100%)}
.rv .rv-capa-frase{position:absolute;left:9cqw;right:9cqw;bottom:7cqw;text-align:left}
.rv .rv-capa.rv-sem-foto{justify-content:center;padding-top:9cqw}
.rv .rv-capa.rv-sem-foto .rv-capa-frase{position:static;text-align:center;margin-top:6cqw}

/* índice */
.rv .rv-indice .rv-tit{font-size:9.5cqw}
.rv .rv-ind{display:grid;gap:4cqw;width:54cqw;margin-top:1cqw}
.rv .rv-indice.rv-sem-foto .rv-ind{width:auto}
.rv .rv-ind button{display:grid;grid-template-columns:10cqw 1fr;align-items:start;width:100%}
.rv .rv-ind b{font-family:var(--f-titulo);font-weight:var(--w-titulo);font-size:5.2cqw;line-height:1}
.rv .rv-ind span{font-size:2.6cqw;letter-spacing:.2em;text-transform:uppercase;line-height:1.55;padding-top:.5cqw}
.rv .rv-ind button:hover span,.rv .rv-ind button:focus-visible span{color:var(--acento)}
.rv .rv-ind-medio .rv-ind{gap:2.4cqw}
.rv .rv-ind-medio .rv-ind b{font-size:4.6cqw}
.rv .rv-ind-medio .rv-ind span{font-size:2.4cqw}
.rv .rv-ind-longo .rv-ind,.rv .rv-ind-enorme .rv-ind{width:auto;grid-template-columns:1fr 1fr;gap:2.2cqw 4cqw}
.rv .rv-ind-longo .rv-ind button,.rv .rv-ind-enorme .rv-ind button{grid-template-columns:8cqw minmax(0,1fr)}
.rv .rv-ind-longo .rv-ind b{font-size:4.2cqw}
.rv .rv-ind-longo .rv-ind span{font-size:2.3cqw;letter-spacing:.14em;overflow-wrap:anywhere}
.rv .rv-ind-enorme .rv-ind{grid-template-columns:1fr 1fr 1fr;gap:1.6cqw 3cqw}
.rv .rv-ind-enorme .rv-ind button{grid-template-columns:6.5cqw minmax(0,1fr)}
.rv .rv-ind-enorme .rv-ind b{font-size:3.4cqw}
.rv .rv-ind-enorme .rv-ind span{font-size:2cqw;letter-spacing:.1em;overflow-wrap:anywhere}
.rv .rv-ind-foto{position:absolute;top:0;right:0;width:34cqw;height:106cqw;object-fit:cover;border-bottom-left-radius:34cqw 44cqw}

/* sobre */
.rv .rv-sobre-frase{font-size:7.4cqw;margin-bottom:5cqw}
.rv .rv-fatos{margin-top:auto;margin-bottom:5cqw}
.rv .rv-fatos div{border-top:1px solid var(--linha);padding:3cqw 0;display:grid;gap:.8cqw}
.rv .rv-fatos dt{font-size:2.6cqw;letter-spacing:.24em;text-transform:uppercase;color:var(--suave)}
.rv .rv-fatos dd{font-size:3.3cqw;font-weight:300;line-height:1.45}
.rv .rv-sobre-compacta .rv-sobre-frase{font-size:6.2cqw;margin-bottom:3.5cqw}
.rv .rv-sobre-compacta .rv-txt{font-size:3cqw;line-height:1.5}
.rv .rv-sobre-compacta .rv-fatos div{padding:2.2cqw 0}
.rv .rv-sobre-compacta .rv-fatos dd{font-size:3cqw}

/* abertura de categoria */
.rv .rv-abre-tit{font-size:9cqw;margin-bottom:4cqw}
.rv .rv-abre-txt{max-width:76cqw}
.rv .rv-abre-foto{position:absolute;left:0;bottom:0;width:100%;height:68cqw;object-fit:cover}
.rv .rv-abre-foto.rv-onda{clip-path:ellipse(118% 100% at 64% 100%)}
.rv .rv-abre .rv-num{color:#FFFFFF;text-shadow:0 1px 3px rgba(0,0,0,.35)}
.rv .rv-abre.rv-sem-foto .rv-num{color:var(--suave);text-shadow:none}
.rv .rv-abre-grande{position:absolute;right:7cqw;bottom:4cqw;font-family:var(--f-titulo);font-weight:300;font-size:46cqw;line-height:.8;color:var(--linha)}

/* serviços: dois por página */
.rv .rv-svcs{padding-top:12cqw}
.rv .rv-svc{display:grid;grid-template-columns:37cqw minmax(0,1fr);gap:5cqw;padding-bottom:6cqw}
.rv .rv-svc + .rv-svc{border-top:1px solid var(--linha);padding-top:6cqw}
.rv .rv-svc img{width:37cqw;height:46cqw;object-fit:cover;border-radius:1.4cqw}
.rv .rv-svc.rv-sem-foto{grid-template-columns:minmax(0,1fr)}
.rv .rv-svc-tx{display:flex;flex-direction:column;min-width:0;padding-top:2.5cqw}
.rv .rv-svc.rv-sem-foto .rv-svc-tx{padding-top:0}
.rv .rv-svc-nome{font-size:4.7cqw;letter-spacing:min(var(--ls-titulo),.06em);line-height:1.1;margin-bottom:2.6cqw;hyphens:auto}
.rv .rv-svc-desc{font-size:3.1cqw;line-height:1.5}
.rv .rv-meta{margin-top:auto;display:flex;align-items:center;flex-wrap:wrap;gap:1.6cqw;font-size:3.1cqw;font-variant-numeric:tabular-nums;white-space:nowrap}
.rv .rv-svc.rv-sem-foto .rv-meta,.rv .rv-svc.rv-sem-foto .rv-vars{margin-top:3cqw}
.rv .rv-meta svg{width:3.5cqw;height:3.5cqw;flex:none}
.rv .rv-meta i{width:1px;height:3.4cqw;background:var(--linha);margin:0 2cqw}
.rv .rv-meta b,.rv .rv-vars b{font-weight:500}
.rv .rv-vars{margin-top:auto;display:grid;gap:1.4cqw;font-size:2.9cqw;font-variant-numeric:tabular-nums}
.rv .rv-vars li{display:flex;flex-wrap:wrap;justify-content:space-between;gap:0 2cqw;border-top:1px dotted var(--suave);padding-top:1.4cqw}
.rv .rv-svcs-grande{padding-top:8.5cqw}
.rv .rv-svc-grande img{height:36cqw}
.rv .rv-svc-grande .rv-vars{grid-column:1 / -1;margin-top:1.5cqw;font-size:2.9cqw}
.rv .rv-vars-muitas,.rv .rv-svc-grande .rv-vars-muitas{gap:1cqw;font-size:2.75cqw}
.rv .rv-vars-muitas li{padding-top:1cqw}
.rv .rv-vars .rv-vars-mais{color:var(--suave);font-style:italic}

/* pacotes: um por página. Arranjos (o JS mede e fica com o mais folgado que cabe):
   leve (a foto estica no que sobra) · médio (foto em círculo ao lado do nome) · denso (letra
   menor) · cheio (o que inclui em duas colunas; com .rv-pac-solta a foto volta a esticar no vão).
   Só as classes mudam; a foto mora sempre no mesmo lugar. O círculo e o recuo do nome vêm de
   variáveis (--pc-*), para cada arranjo mudar o tamanho sem briga de especificidade. */
.rv .rv-pac{padding-bottom:13cqw;--pc-d:22cqw;--pc-top:9cqw;--pc-recuo:25cqw}   /* o conteúdo desce até o pé: folga para o número */
.rv .rv-pac-cab{position:relative}
.rv .rv-pac-nome{font-size:7.4cqw;margin-bottom:3cqw}
.rv .rv-pac-txt{font-size:3.2cqw;line-height:1.55}
.rv .rv-pac-foto{flex:1 1 0;min-height:0;max-height:62cqw;width:100%;object-fit:cover;border-radius:1.4cqw;margin-top:4cqw}
.rv .rv-pac-inclui{margin-top:auto;padding-top:4cqw}
.rv .rv-pac-inclui .rv-rot{margin-bottom:1.6cqw}
.rv .rv-pac-inclui .rv-vars{margin-top:0}
.rv .rv-pac-un{font-style:normal}
.rv .rv-pac-preco{display:flex;flex-wrap:wrap;align-items:baseline;gap:1cqw 3cqw;border-top:1px solid var(--linha);margin-top:3.5cqw;padding-top:3.5cqw}
.rv .rv-pac-preco b{font-size:7cqw;color:var(--acento);text-transform:none;letter-spacing:.01em;font-variant-numeric:tabular-nums;white-space:nowrap}
.rv .rv-pac-preco span{font-size:2.9cqw;color:var(--suave);line-height:1.4}
.rv .rv-pac-preco s{text-decoration-thickness:1px}
.rv .rv-pac-ate{margin-top:2cqw;font-size:2.5cqw;letter-spacing:.2em;text-transform:uppercase;color:var(--suave)}
/* médio, denso e cheio (sem "solta"): a foto vira um círculo no alto, ao lado do nome */
.rv .rv-pac:not(.rv-pac-leve):not(.rv-pac-solta) .rv-pac-foto{position:absolute;top:var(--pc-top);right:8cqw;width:var(--pc-d);height:var(--pc-d);
  flex:none;margin:0;border-radius:50%;max-height:none;box-shadow:0 0 0 1px var(--linha)}
.rv .rv-pac:not(.rv-sem-foto):not(.rv-pac-leve):not(.rv-pac-solta) .rv-pac-cab{padding-right:var(--pc-recuo)}
.rv .rv-pac-denso{padding-top:9cqw;--pc-d:19cqw;--pc-top:7.5cqw;--pc-recuo:22cqw}
.rv .rv-pac-denso .rv-fio{margin:3cqw 0}
.rv .rv-pac-denso .rv-pac-nome{font-size:6.4cqw;margin-bottom:2.2cqw}
.rv .rv-pac-denso .rv-pac-txt{font-size:2.95cqw;line-height:1.45}
.rv .rv-pac-denso .rv-pac-inclui{padding-top:3cqw}
.rv .rv-pac-denso .rv-vars{gap:1cqw;font-size:2.7cqw}
.rv .rv-pac-denso .rv-vars li{padding-top:1cqw}
.rv .rv-pac-denso .rv-pac-preco{margin-top:2.6cqw;padding-top:2.6cqw}
.rv .rv-pac-denso .rv-pac-preco b{font-size:6cqw}
.rv .rv-pac-cheio{padding-top:8cqw;--pc-d:17cqw;--pc-top:6.5cqw;--pc-recuo:20cqw}
.rv .rv-pac-cheio .rv-fio{margin:2.4cqw 0}
.rv .rv-pac-cheio .rv-pac-nome{font-size:5.6cqw;margin-bottom:2cqw}
.rv .rv-pac-cheio .rv-pac-txt{font-size:2.8cqw;line-height:1.42}
.rv .rv-pac-cheio .rv-pac-foto{margin-top:3cqw}
.rv .rv-pac-cheio .rv-pac-inclui{padding-top:2.6cqw}
.rv .rv-pac-cheio .rv-vars{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:.9cqw 5cqw;font-size:2.6cqw}
.rv .rv-pac-cheio .rv-vars li{padding-top:.9cqw;flex-wrap:nowrap}
.rv .rv-pac-cheio .rv-vars li span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rv .rv-pac-cheio .rv-vars .rv-vars-mais{grid-column:1 / -1}
.rv .rv-pac-cheio .rv-pac-un{display:none}
.rv .rv-pac-cheio .rv-vars b::after{content:"×"}
.rv .rv-pac-cheio .rv-pac-preco{margin-top:2.2cqw;padding-top:2.2cqw}
.rv .rv-pac-cheio .rv-pac-preco b{font-size:5.4cqw}
.rv .rv-pac-corta .rv-pac-txt{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:4;overflow:hidden}

/* informações *//* informações */
.rv .rv-info-tit{font-size:9cqw;margin-bottom:3cqw}
.rv .rv-info div{display:grid;gap:1cqw;padding:3.3cqw 0;border-top:1px solid var(--linha)}
.rv .rv-info dt{font-size:2.6cqw;letter-spacing:.24em;text-transform:uppercase;color:var(--suave)}
.rv .rv-info dd{font-size:3.4cqw;font-weight:300}
/* 6+ linhas: duas colunas (8 linhas longas numa coluna passavam do fim da folha) */
.rv .rv-info-compacta .rv-info-tit{font-size:7.6cqw;margin-bottom:2cqw}
.rv .rv-info-compacta .rv-info{display:grid;grid-template-columns:1fr 1fr;column-gap:5cqw}
.rv .rv-info-compacta .rv-info div{padding:2.2cqw 0;gap:.6cqw;align-content:start}
.rv .rv-info-compacta .rv-info dd{font-size:3cqw;line-height:1.35}

/* agende */
.rv .rv-pg .rv-agendar{margin-top:6cqw;align-self:flex-start;border-radius:999px;background:var(--acento);color:var(--sobre);
  font-size:3.3cqw;font-weight:500;letter-spacing:.06em;padding:3.2cqw 7cqw;text-align:center}
.rv .rv-insta{margin-top:4cqw}
.rv .rv-arco{position:absolute;right:9cqw;bottom:0;width:40cqw;height:50cqw;object-fit:cover;border-radius:20cqw 20cqw 0 0}

/* respiro e contracapa */
.rv .rv-respiro,.rv .rv-contra{align-items:center;justify-content:center;text-align:center}
.rv .rv-respiro .rv-cit{font-size:7cqw}
.rv .rv-contra .rv-rot{letter-spacing:.42em}
.rv .rv-contra .rv-logo{margin-bottom:4cqw}
.rv .rv-contra-nome{font-size:11cqw;margin:1.5cqw 0 0}
.rv .rv-contra .rv-cit{font-size:5cqw}
.rv .rv-contra-pe{position:absolute;left:0;right:0;bottom:8cqw;font-size:2.5cqw;letter-spacing:.14em;color:var(--suave);text-align:center}

/* sem a biblioteca de virar página: as páginas uma embaixo da outra */
.rv .rv-rolando{width:100%;height:100%;overflow:auto}
.rv .rv-rolando .rv-page{position:relative;width:min(100%,420px);aspect-ratio:1/1.4;margin:0 auto 14px}

@media (prefers-reduced-motion:reduce){.rv .rv-livro{transition:none}}
