/* UVP Livros — componentes no padrão "Constelação" (usa cores e fontes do tema quando disponíveis). */
:root {
	--uvp-azul: var(--wp--preset--color--azul, #0b2a5b);
	--uvp-azul-profundo: var(--wp--preset--color--azul-profundo, #01193d);
	--uvp-ouro: var(--wp--preset--color--ouro, #c9a227);
	--uvp-ouro-escuro: var(--wp--preset--color--ouro-escuro, #7d6210);
	--uvp-nevoa: var(--wp--preset--color--nevoa, #eef1f6);
	--uvp-tinta: var(--wp--preset--color--tinta, #1e2638);
	--uvp-suave: #555d70;
	--uvp-titulo: var(--wp--preset--font-family--cinzel, Georgia, serif);
	--uvp-texto: var(--wp--preset--font-family--literata, Georgia, serif);
	--uvp-whatsapp: #1f8f4e;
	--uvp-ease: cubic-bezier(.2, .75, .25, 1);
}

.uvp-lancamento, .uvp-bento, .uvp-bento__item, .uvp-card, .uvp-card__capa, .uvp-vitrine, .uvp-grade { box-sizing: border-box; }

/* ==========================================================
   Botões
   ========================================================== */
.uvp-botoes { display: flex; flex-wrap: wrap; gap: .75rem; margin-block: 1.75rem 0; }
.uvp-btn {
	display: inline-flex; align-items: center; justify-content: center; gap: .55rem;
	min-height: 48px; padding: .8rem 1.5rem; border-radius: 999px; box-sizing: border-box;
	font-family: var(--uvp-texto); font-size: 1rem; font-weight: 600; line-height: 1.2; letter-spacing: 0; text-transform: none;
	text-decoration: none !important; border: 1.5px solid transparent; cursor: pointer;
	transition: background-color .15s ease, color .15s ease, border-color .15s ease, transform .1s ease;
}
.uvp-btn:active { transform: scale(.97); }
.uvp-btn:focus-visible { outline: 2px solid var(--uvp-ouro); outline-offset: 3px; }
.uvp-btn .uvp-icon { flex: none; width: 20px; height: 20px; }
.uvp-btn--ouro { background: var(--uvp-ouro); color: var(--uvp-azul-profundo) !important; }
.uvp-btn--ouro:hover { background: #b48e17; }
.uvp-btn--whatsapp { background: var(--uvp-whatsapp); color: #fff !important; }
.uvp-btn--whatsapp:hover { background: #18773f; }
.uvp-btn--contorno { border-color: var(--uvp-azul); color: var(--uvp-azul) !important; background: transparent; }
.uvp-btn--contorno:hover { background: var(--uvp-azul); color: #fff !important; }

/* Selos */
.uvp-selo { display: inline-block; padding: .3rem .75rem; border-radius: 999px; font: 600 .8rem/1 var(--uvp-texto); background: var(--uvp-ouro); color: var(--uvp-azul-profundo); }
.uvp-selo--em_breve { background: #fff; color: var(--uvp-azul); box-shadow: inset 0 0 0 1px var(--uvp-azul); }
.uvp-selo--disponivel { background: var(--uvp-nevoa); color: var(--uvp-azul); }

/* ==========================================================
   Livro 3D
   O ângulo final = --giro (fixo do livro) + --ry/--rx (inclinação do mouse, via JS).
   ========================================================== */
.uvp-livro3d { --esp: 28px; --giro: -30deg; --ry: 0deg; --rx: 0deg; display: block; perspective: 1500px; perspective-origin: 50% 40%; }
.uvp-livro3d--grande { --esp: 42px; --giro: -32deg; }
.uvp-livro3d__miolo {
	position: relative; display: block; transform-style: preserve-3d;
	transform: rotateX(var(--rx)) rotateY(calc(var(--giro) + var(--ry)));
	transition: transform .7s var(--uvp-ease);
	will-change: transform;
}
/* Sem JS (toque) ou sem mouse: leve giro ao focar/passar o mouse */
html:not(.uvp-js-movimento) a:hover .uvp-livro3d__miolo,
a:focus-visible .uvp-livro3d__miolo { transform: rotateY(calc(var(--giro) / 2.6)); }
/* Com JS: a inclinação vem das variáveis — sem transição longa para não "atrasar" */
.uvp-tilt .uvp-livro3d { --ry: inherit; --rx: inherit; }
.uvp-js-movimento .uvp-tilt .uvp-livro3d__miolo { transition: transform .12s linear; }
.uvp-livro3d__miolo > img,
.uvp-livro3d__miolo > .uvp-card__sem-capa {
	position: relative; z-index: 1; display: block; width: 100%; height: auto !important; aspect-ratio: 2 / 3; object-fit: cover; margin: 0;
	transform: translateZ(calc(var(--esp) / 2)); border-radius: 2px 5px 5px 2px; background-color: #e9ecf2;
	background-image: linear-gradient(90deg, rgba(0, 0, 0, .18) 0, rgba(255, 255, 255, .12) 2.5%, rgba(0, 0, 0, .06) 4%, transparent 7%);
	backface-visibility: hidden;
}
.uvp-livro3d__miolo::before {
	content: ""; position: absolute; top: 4px; bottom: 4px; width: var(--esp); right: calc(4px - var(--esp) / 2); transform: rotateY(90deg);
	background: linear-gradient(90deg, rgba(0, 0, 0, .12), transparent 25%, transparent 75%, rgba(0, 0, 0, .08)), repeating-linear-gradient(90deg, #fffdf7 0 2px, #e6dfcd 2px 3px);
}
.uvp-livro3d__miolo::after {
	content: ""; position: absolute; inset: 0; transform: translateZ(calc(var(--esp) / -2)); background: #0b1d42; border-radius: 2px 5px 5px 2px;
	box-shadow: -14px 14px 32px rgba(1, 25, 61, .26), -4px 4px 10px rgba(1, 25, 61, .16);
}
.uvp-card__sem-capa { display: flex; align-items: center; justify-content: center; padding: 1.5rem; text-align: center; color: #e9c86a; background: var(--uvp-azul-profundo); font: 600 1.1rem/1.3 var(--uvp-titulo); outline: 1px solid var(--uvp-ouro); outline-offset: -10px; box-sizing: border-box; }

/* ==========================================================
   Grade de livros (cartões)
   ========================================================== */
.uvp-grade { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 230px), 1fr)); gap: 2.5rem 1.5rem; }
.uvp-card { position: relative; display: flex; flex-direction: column; }
.uvp-card__capa { position: relative; display: block; padding: 1.3rem 2.5rem 1.3rem 1.5rem; border-radius: 20px; background: linear-gradient(180deg, #f6f8fb, #eef1f6); transition: background .3s ease; }
.uvp-card:hover .uvp-card__capa { background: linear-gradient(180deg, #fbf6e6, #f3e9c8); }
.uvp-card__capa .uvp-selo { position: absolute; top: .8rem; left: .9rem; z-index: 2; }
.uvp-card__corpo { display: flex; flex-direction: column; gap: .2rem; margin-top: 1rem; }
.uvp-card__titulo { margin: 0; font: 600 1.1rem/1.25 var(--uvp-titulo); letter-spacing: .02em; }
.uvp-card__titulo a { color: var(--uvp-azul); text-decoration: none; }
.uvp-card__titulo a::after { content: ""; position: absolute; inset: 0; } /* cartão inteiro clicável */
.uvp-card__titulo a:hover { color: var(--uvp-ouro-escuro); }
.uvp-card__autor { margin: 0; font-size: .92rem; font-style: italic; color: var(--uvp-suave); }
.uvp-vazio { font-style: italic; color: var(--uvp-suave); }
.uvp-grade-secao__titulo { margin: 0 0 2rem; font: 600 clamp(1.7rem, 3.2vw, 2.3rem)/1.2 var(--uvp-titulo); color: var(--uvp-azul); letter-spacing: .02em; }

/* ==========================================================
   Lançamento em painel
   ========================================================== */
.uvp-lancamento {
	position: relative; overflow: hidden; display: grid; grid-template-columns: minmax(0, 360px) minmax(0, 1fr); gap: clamp(2rem, 5vw, 4.5rem); align-items: center;
	padding: clamp(2rem, 5vw, 4rem); border-radius: 32px; border: 1px solid rgba(201, 162, 39, .28); color: var(--uvp-tinta);
	background: radial-gradient(60% 80% at 0% 0%, rgba(201, 162, 39, .14), transparent 60%), radial-gradient(50% 70% at 100% 100%, rgba(11, 42, 91, .08), transparent 60%), #fff;
}
.uvp-lancamento__capa { position: relative; isolation: isolate; display: block; padding: 1rem 2.5rem 1rem 1rem; }
.uvp-lancamento__capa::before { content: ""; position: absolute; z-index: -1; inset: 18% 8% 0; border-radius: 50%; background: var(--brilho, #2a4f9e); filter: blur(50px); opacity: .35; pointer-events: none; }
.uvp-lancamento__data { margin-left: .6rem; font-size: .92rem; color: var(--uvp-suave); }
.uvp-lancamento__titulo { margin: .9rem 0 0; font: 600 clamp(2rem, 4.5vw, 3.3rem)/1.1 var(--uvp-titulo); letter-spacing: .02em; }
.uvp-lancamento__titulo a { color: var(--uvp-azul); text-decoration: none; }
.uvp-lancamento__titulo a:hover { color: var(--uvp-ouro-escuro); }
.uvp-lancamento__subtitulo { margin: .6rem 0 0; font-size: 1.2rem; font-style: italic; color: var(--uvp-ouro-escuro); }
.uvp-lancamento__autor { margin: .35rem 0 0; color: var(--uvp-suave); }
.uvp-lancamento__resumo { margin: 1.1rem 0 0; font-size: 1.1rem; line-height: 1.75; max-width: 52ch; }
@media (max-width: 781px) {
	.uvp-lancamento { grid-template-columns: 1fr; border-radius: 24px; }
	.uvp-lancamento__capa { max-width: 240px; margin-inline: auto; }
}

/* Ficha técnica / campos */
.uvp-ficha { margin: 1.75rem 0; padding: 0; border-top: 1px solid #e6e9ef; }
.uvp-ficha > div { display: grid; grid-template-columns: 9rem 1fr; gap: 1rem; padding: .6rem 0; border-bottom: 1px solid #e6e9ef; }
.uvp-ficha dt { margin: 0; font-weight: 600; color: var(--uvp-azul); }
.uvp-ficha dd { margin: 0; }
.uvp-campo--subtitulo { font-style: italic; font-size: 1.25rem; color: var(--uvp-ouro-escuro); margin-top: 0; }
.uvp-campo--autor { color: var(--uvp-suave); }

/* ==========================================================
   Categorias em mosaico (bento)
   ========================================================== */
.uvp-bento { display: grid; grid-template-columns: repeat(4, 1fr); grid-auto-rows: 150px; grid-auto-flow: dense; gap: 14px; }
.uvp-bento__item { position: relative; overflow: hidden; isolation: isolate; display: flex; flex-direction: column; justify-content: space-between; padding: 1.25rem 1.35rem; border-radius: 22px; text-decoration: none; color: var(--uvp-azul); background: var(--fundo, var(--uvp-nevoa)); transition: box-shadow .25s ease; }
.uvp-bento__item:hover { box-shadow: 0 16px 34px -18px rgba(1, 25, 61, .45), inset 0 0 0 1px var(--cor); }
.uvp-bento__icone svg { width: 34px; height: 34px; color: var(--cor, var(--uvp-azul)); }
.uvp-bento__texto { position: relative; z-index: 1; }
.uvp-bento__texto strong { display: block; font: 600 1.12rem/1.2 var(--uvp-titulo); letter-spacing: .02em; }
.uvp-bento__texto small { display: block; margin-top: .25rem; font-size: .9rem; color: var(--uvp-suave); }
.uvp-bento__capa { position: absolute; z-index: 0; right: -18px; bottom: -40px; width: 120px; height: auto; transform: rotate(12deg); border-radius: 4px; box-shadow: -8px 10px 24px rgba(1, 25, 61, .25); transition: transform .4s var(--uvp-ease); }
.uvp-bento__item:hover .uvp-bento__capa { transform: rotate(6deg) translateY(-8px); }
.uvp-bento__item.is-grande { grid-column: span 2; grid-row: span 2; }
.uvp-bento__item.is-grande strong { font-size: 1.7rem; }
.uvp-bento__item.is-grande .uvp-bento__capa { width: 190px; right: 6%; bottom: -30px; }
.uvp-bento__item.is-largo { grid-column: span 2; }
.uvp-bento__item.is-largo .uvp-bento__texto { max-width: 65%; }
@media (max-width: 781px) {
	.uvp-bento { grid-template-columns: repeat(2, 1fr); grid-auto-rows: 130px; }
	.uvp-bento__item.is-grande .uvp-bento__capa { width: 130px; }
}

/* ==========================================================
   Vitrine da página inicial: constelação + livros em leque
   ========================================================== */
.uvp-vitrine { --px: 0; --py: 0; position: relative; min-height: 500px; display: grid; place-items: center; }
.uvp-constelacao { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none;
	transform: translate3d(calc(var(--px) * -10px), calc(var(--py) * -10px), 0); }
.uvp-constelacao__linhas line { stroke: rgba(201, 162, 39, .55); stroke-width: 1; stroke-dasharray: 4 6; }
.uvp-constelacao__estrelas circle { fill: var(--uvp-ouro); transform-box: fill-box; transform-origin: center; animation: uvp-piscar 4s ease-in-out infinite; }
.uvp-constelacao__estrelas circle:nth-child(3n) { animation-delay: 1.3s; }
.uvp-constelacao__estrelas circle:nth-child(3n+1) { animation-delay: 2.6s; }
@keyframes uvp-piscar { 0%, 100% { opacity: .35; transform: scale(.8); } 50% { opacity: 1; transform: scale(1.15); } }

.uvp-vitrine__leque { position: relative; display: flex; justify-content: center; align-items: center; padding: 2rem 0; }
/* O <a> é estático (área do mouse estável). Posição do leque = margem/rotação fixas no próprio <a>, sem transição. */
.uvp-vitrine__item { position: relative; display: block; width: clamp(140px, 15vw, 200px); margin: 0 -34px; text-decoration: none; }
.uvp-vitrine__item:nth-child(1) { transform: translateY(30px) rotate(-7deg); z-index: 1; }
.uvp-vitrine__item:nth-child(2) { width: clamp(170px, 18vw, 250px); z-index: 3; }
.uvp-vitrine__item:nth-child(3) { transform: translateY(30px) rotate(7deg); z-index: 2; }
.uvp-vitrine__item:only-child { width: clamp(190px, 20vw, 260px); }
.uvp-vitrine__item:hover, .uvp-vitrine__item:focus-visible { z-index: 4; }
/* Brilho na cor da capa */
.uvp-vitrine__item::before { content: ""; position: absolute; inset: 15% -10% -5%; border-radius: 50%; background: var(--brilho, #2a4f9e); filter: blur(42px); opacity: .5; z-index: -1; pointer-events: none; }
/* Camada que se move: paralaxe (JS) + elevação no hover */
.uvp-vitrine__flut { display: block; transform: translate3d(calc(var(--px) * var(--prof, 20) * 1px), calc(var(--py) * var(--prof, 20) * 1px - var(--sobe, 0px)), 0); transition: --sobe .4s; }
.uvp-vitrine__item:hover .uvp-vitrine__flut, .uvp-vitrine__item:focus-visible .uvp-vitrine__flut { --sobe: 10px; }
@property --sobe { syntax: "<length>"; inherits: true; initial-value: 0px; }
/* Entrada única (só 'backwards': depois de terminar não interfere em nada) */
.uvp-vitrine__entrada { display: block; animation: uvp-surgir .9s var(--uvp-ease) backwards; }
.uvp-vitrine__item:nth-child(1) .uvp-vitrine__entrada, .uvp-vitrine__item:nth-child(3) .uvp-vitrine__entrada { animation-delay: .12s; }
@keyframes uvp-surgir { from { opacity: 0; transform: translateY(28px) scale(.96); } }
.uvp-vitrine .uvp-livro3d { --esp: 26px; --giro: -24deg; }
.uvp-vitrine__item:nth-child(1) .uvp-livro3d { --giro: -16deg; }
.uvp-vitrine__item:nth-child(3) .uvp-livro3d { --giro: -36deg; }
.uvp-vitrine__item:hover .uvp-livro3d__miolo { transform: rotateY(calc(var(--giro) / 2.2)); }
.uvp-vitrine__selo { position: absolute; top: -.8rem; left: 50%; transform: translateX(-50%); z-index: 5; white-space: nowrap; box-shadow: 0 4px 14px rgba(1, 25, 61, .2); }
@media (max-width: 781px) {
	.uvp-vitrine { min-height: 360px; }
	.uvp-vitrine__item { width: 30vw; margin: 0 -6vw; }
	.uvp-vitrine__item:nth-child(2) { width: 38vw; }
}

/* ==========================================================
   Contato e botão flutuante
   ========================================================== */
.uvp-contato ul { list-style: none; margin: 0; padding: 0; display: grid; gap: .6rem; }
.uvp-contato a { display: inline-flex; align-items: center; gap: .5rem; color: inherit; text-decoration: none; overflow-wrap: anywhere; }
.uvp-contato a:hover { text-decoration: underline; }
.uvp-contato__email a::before { content: "\2709"; font-size: 1.1em; width: 20px; text-align: center; }
.uvp-redes { list-style: none; display: flex; flex-wrap: wrap; gap: .5rem 1.25rem; margin: 1rem 0 0; padding: 0; }
.uvp-contato--cartoes > ul { grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); gap: 1rem; }
.uvp-contato--cartoes > ul a { width: 100%; box-sizing: border-box; padding: 1.25rem 1.5rem; border-radius: 20px; background: var(--uvp-nevoa); font-weight: 600; color: var(--uvp-azul); }
.uvp-contato--cartoes > ul a:hover { box-shadow: inset 0 0 0 1px var(--uvp-azul); text-decoration: none; }

.uvp-whatsapp-flutuante {
	position: fixed; right: max(16px, env(safe-area-inset-right)); bottom: max(16px, env(safe-area-inset-bottom)); z-index: 999;
	display: grid; place-items: center; width: 58px; height: 58px; border-radius: 50%;
	background: var(--uvp-whatsapp); color: #fff !important; text-decoration: none !important; box-shadow: 0 8px 24px rgba(1, 25, 61, .3);
}
.uvp-whatsapp-flutuante .uvp-icon { width: 30px; height: 30px; }
.uvp-whatsapp-flutuante:hover { background: #18773f; }
.uvp-whatsapp-flutuante:focus-visible { outline: 2px solid var(--uvp-ouro); outline-offset: 3px; }
.uvp-whatsapp-flutuante__texto { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
@media print { .uvp-whatsapp-flutuante { display: none; } }

@media (prefers-reduced-motion: reduce) {
	.uvp-btn, .uvp-livro3d__miolo, .uvp-vitrine__flut, .uvp-bento__capa { transition: none !important; }
	.uvp-vitrine__entrada, .uvp-constelacao__estrelas circle { animation: none !important; }
}
