/* BIBLIOTECA e LEITOR. Dono: frente Loja e Biblioteca.
   (o livro 3D da estante "Materiais" mora em loja.css) */

/* =====================================================================================
   CABEÇALHO: o céu de estudos (uma estrela por estudo; acende quando você termina)
   ===================================================================================== */
.bib-cab { padding-bottom: 4px; }
.bib-cab .olho { margin-bottom: 10px; }
.bib-ceu { display: flex; align-items: center; flex-wrap: wrap; gap: 2px; margin: 16px 0 4px -4px; min-height: 26px; }
.bib-ce { width: 24px; height: 24px; display: grid; place-items: center; flex: none; }
.bib-ce .estrela4 { overflow: visible; }
.bib-ce.acesa .estrela4 { filter: drop-shadow(0 0 7px color-mix(in srgb, var(--c) 75%, transparent)); }
.bib-ce .cintila { animation-delay: calc(var(--i, 0) * -.43s); }
.bib-ce.prox .estrela4 { animation: bibProx 2.8s ease-in-out infinite; transform-origin: center; }   /* o próximo estudo pulsa de leve */
@keyframes bibProx { 0%, 100% { transform: scale(.9); opacity: .55; } 50% { transform: scale(1.35); opacity: 1; } }
.bib-ce-vao { width: 12px; flex: none; }
.bib-cab .sub b { color: var(--ouro-2); font-weight: 600; }

/* =====================================================================================
   COLEÇÕES: carrossel de capas com inclinação 3D ao tocar e paralaxe ao deslizar
   ===================================================================================== */
.bib-col { margin-top: 42px; }
.bib-col.primeira { margin-top: 32px; }
.bib-col .cab-s .olho svg { width: 13px; height: 13px; }
/* a janela clara da cena passa atrás do cabeçalho da primeira coleção: um véu escuro local (sem borda, some nas pontas)
   e uma sombra no texto deixam o rótulo dourado e o título legíveis sem apagar a luz da cena */
.bib-col > .cab-s { position: relative; isolation: isolate; }
.bib-col > .cab-s::before { content: ''; position: absolute; z-index: -1; inset: -46px -18px -32px -20px; pointer-events: none;
  background: radial-gradient(ellipse 64% 46% at 30% 56%, rgba(8,7,11,.76) 0%, rgba(8,7,11,.5) 48%, rgba(8,7,11,0) 100%); }
.bib-col > .cab-s .olho, .bib-col > .cab-s .titulo-s { text-shadow: 0 1px 2px rgba(0,0,0,.8), 0 0 14px rgba(8,7,11,.85); }
.bib-conta { font: 500 16px/1 var(--serif); color: var(--txt-3); padding-bottom: 5px; white-space: nowrap; font-variant-numeric: lining-nums; }
.bib-conta b { color: var(--c); font-weight: 600; font-size: 22px; }
.bib-capas { position: relative; gap: 14px; padding-top: 6px; padding-bottom: 16px; }
.bib-capa { position: relative; width: 222px; height: 312px; flex: none; perspective: 900px; text-align: left; border-radius: 20px; }
.bib-capa-3d { position: absolute; inset: 0; border-radius: 20px; overflow: hidden; transform-origin: 50% 50%;
  background: radial-gradient(120% 70% at 50% 8%, color-mix(in srgb, var(--c) 26%, #15121b), #0c0a10 70%);   /* enquanto a imagem chega */
  border: 1px solid rgba(255,255,255,.10); box-shadow: 0 24px 42px -20px rgba(0,0,0,.9), inset 0 1px 0 rgba(255,255,255,.08), 0 0 0 1px color-mix(in srgb, var(--c) 10%, transparent); }
.bib-capa:active .bib-capa-3d { transform: scale(.98); }
.bib-capa-img { position: absolute; inset: 0; overflow: hidden; }
.bib-capa-img img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transform: translate3d(calc(var(--px, 0) * -11%), 0, 0) scale(1.26); }
/* véu de leitura: mora DENTRO da imagem para ficar por cima dela e por baixo do texto (antes ficava atrás da imagem e
   não aparecia: o "min de leitura" sumia no brilho dos neurônios). A parte de cima da capa continua viva. */
.bib-capa-img::after { content: ''; position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(180deg, rgba(8,7,11,.38) 0%, rgba(8,7,11,0) 22%, rgba(8,7,11,0) 46%, rgba(8,7,11,.5) 64%, rgba(8,7,11,.8) 82%, rgba(8,7,11,.88) 100%); }
.bib-capa-3d > * { z-index: 1; }
.bib-capa-luz { position: absolute; inset: 0; z-index: 2 !important; pointer-events: none; opacity: calc(var(--luz, 0) * .9);
  background: radial-gradient(75% 55% at var(--gx, 50%) var(--gy, 30%), rgba(255,236,200,.22), transparent 62%); }
.bib-num { position: absolute; top: 16px; left: 17px; font: 600 30px/1 var(--cinzel); letter-spacing: .04em;
  background: var(--ouro-grad); -webkit-background-clip: text; background-clip: text; color: transparent; -webkit-text-fill-color: transparent;
  filter: drop-shadow(0 2px 8px rgba(0,0,0,.75)); }
.bib-fita { position: absolute; top: -1px; right: 18px; width: 26px; height: 42px; display: grid; justify-items: center; align-content: start; padding-top: 10px; color: #1b1307;
  background: linear-gradient(90deg, #a77c34, #f6dfa0 50%, #a77c34); clip-path: polygon(0 0, 100% 0, 100% 100%, 50% 79%, 0 100%); }
.bib-fita svg { width: 13px; height: 13px; stroke-width: 2.8; }
.bib-prox { position: absolute; top: 16px; right: 14px; font: 600 10px/1 var(--cinzel); letter-spacing: .18em; text-transform: uppercase; color: #1b1307;
  background: linear-gradient(180deg, #f5dc9c, #c99a4a); padding: 6px 9px 5px 11px; border-radius: 99px; box-shadow: 0 6px 16px -6px rgba(226,183,98,.8); }
.bib-capa-txt { position: absolute; left: 0; right: 0; bottom: 0; padding: 0 18px 18px; }
.bib-capa-txt b { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; font: 500 22px/1.16 var(--serif); letter-spacing: -.01em; text-shadow: 0 2px 14px rgba(0,0,0,.6); }
.bib-capa-txt small { display: flex; align-items: center; gap: 6px; margin-top: 9px; color: var(--txt-2); font-size: 13px; text-shadow: 0 1px 6px rgba(0,0,0,.8); }
.bib-capa-txt small svg { width: 14px; height: 14px; }

/* estante "Materiais" (o livro 3D vem de loja.css) */
.lj-estante { margin-top: 48px; }

/* =====================================================================================
   SANTOS: retratos redondos com halo
   ===================================================================================== */
.bib-santos { margin-top: 54px; }
.bib-santos-grade { display: flex; flex-wrap: wrap; justify-content: center; gap: 22px 4px; padding-top: 10px; }
.bib-santo { width: calc(25% - 3px); min-width: 0; display: flex; flex-direction: column; align-items: center; gap: 12px; text-align: center; }
.bib-halo { position: relative; display: block; width: 68px; height: 68px; border-radius: 50%; }
.bib-halo::before { content: ''; position: absolute; inset: -16px; border-radius: 50%; pointer-events: none; transition: transform .45s var(--mola), opacity .3s;
  background: radial-gradient(closest-side, rgba(255,216,146,.42), rgba(217,180,106,.13) 52%, transparent 72%); }
.bib-halo::after { content: ''; position: absolute; inset: -3px; border-radius: 50%; padding: 1.5px; pointer-events: none;
  background: conic-gradient(from 210deg, #fff1c9, #a77c34, #f0d38f, #7d5a24, #fff1c9);
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask: linear-gradient(#000 0 0) content-box exclude, linear-gradient(#000 0 0); }
.bib-halo-in { position: absolute; inset: 0; border-radius: 50%; overflow: hidden; background: #17131c; box-shadow: 0 12px 24px -10px rgba(0,0,0,.9); }
.bib-halo img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 34%; transform: scale(1.32); opacity: 0; transition: opacity .6s ease; }
.bib-halo img.ok { opacity: 1; }
.bib-santo b { font: 500 13.5px/1.25 var(--serif); color: var(--txt-2); padding: 0 2px; }
.bib-santo:active .bib-halo::before { transform: scale(1.22); }
.bib-santo:active .bib-halo-in { transform: scale(.95); transition: transform .2s var(--mola); }
.bib-santos-nota { text-align: center; margin: 22px 0 0; }

/* folha do santo: retrato grande, raios de luz devagar, oração */
.bib-sf { text-align: center; padding-top: 4px; }
.bib-sf-halo { position: relative; width: 176px; height: 176px; margin: 12px auto 22px; }
.bib-sf-halo::before { content: ''; position: absolute; inset: -34px; border-radius: 50%; background: radial-gradient(closest-side, rgba(255,214,140,.34), transparent 76%); }
.bib-sf-raios { position: absolute; inset: -44px; border-radius: 50%; pointer-events: none;
  background: repeating-conic-gradient(rgba(255,228,175,.16) 0deg 1.6deg, transparent 1.6deg 11deg);
  -webkit-mask-image: radial-gradient(closest-side, #000 38%, transparent 100%); mask-image: radial-gradient(closest-side, #000 38%, transparent 100%);
  animation: bibRaios 110s linear infinite; }
@keyframes bibRaios { to { transform: rotate(360deg); } }
.bib-sf-halo img { position: relative; width: 100%; height: 100%; border-radius: 50%; object-fit: cover; object-position: 50% 30%;
  box-shadow: 0 0 0 2px rgba(240,211,143,.75), 0 0 0 8px rgba(217,180,106,.12), 0 26px 50px -16px rgba(0,0,0,.9); }
.bib-sf .olho { justify-content: center; }
.f-painel .bib-sf h3 { margin: 10px 0 0; font-size: 28px; }
.bib-sf-oracao { font: italic 400 21px/1.5 var(--serif); margin: 16px 6px 14px; text-wrap: pretty; }
.bib-sf-lembra { margin: 0 8px; }

/* =====================================================================================
   LEITOR (camada por cima de tudo)
   ===================================================================================== */
.leitor { position: fixed; inset: 0; z-index: 70; background: #0b0a0e; overflow-y: auto; overscroll-behavior: contain; animation: leitorEntra .5s var(--mola) both; }
@keyframes leitorEntra { from { transform: translateY(34px); opacity: 0; } }
/* progresso da leitura: fio de luz na base do topo (abaixo da barra de status e do recorte do celular) */
.leitor .progresso { position: absolute; left: 0; right: 0; bottom: -1px; z-index: 1; height: 2px; pointer-events: none; background: transparent; transition: background .3s; }
.leitor .topo-l.rolou .progresso { background: rgba(255,255,255,.07); }
.leitor .progresso i { display: block; height: 100%; width: 100%; transform-origin: 0 50%; transform: scaleX(0);
  background: linear-gradient(90deg, color-mix(in srgb, var(--c, var(--ouro)) 55%, #fff), var(--c, var(--ouro))); box-shadow: 0 0 12px var(--c, var(--ouro)); }
.leitor .topo-l { position: sticky; top: 0; z-index: 3; display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 6px; padding: calc(var(--st) + 4px) 10px 6px;
  background: linear-gradient(180deg, rgba(11,10,14,.7), rgba(11,10,14,0)); border-bottom: 1px solid transparent; transition: background .3s, border-color .3s; }
.leitor .topo-l.rolou { background: rgba(11,10,14,.74); backdrop-filter: blur(22px) saturate(160%); -webkit-backdrop-filter: blur(22px) saturate(160%); border-bottom-color: var(--linha); }
.leitor .topo-l .bt-voltar { justify-self: start; }
.topo-l-tit { font: 600 15px/1.2 var(--sans); text-align: center; opacity: 0; transition: opacity .25s; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 52vw; }
.topo-l.rolou .topo-l-tit { opacity: 1; }
.topo-l-min { justify-self: end; padding-right: 8px; }
.leitor .capa-l { height: min(50vh, 420px); position: relative; margin-top: calc(-1 * (var(--st) + 55px)); overflow: hidden; }
.leitor .capa-l img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: .8; transform: scale(1.04); transform-origin: 50% 35%; will-change: transform; }
.leitor .capa-l::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(11,10,14,.4) 0%, rgba(11,10,14,0) 30%, rgba(11,10,14,.5) 66%, #0b0a0e 97%); }
.capa-l-num { position: absolute; left: 22px; bottom: 92px; z-index: 1; font: 600 54px/1 var(--cinzel); letter-spacing: .03em;
  background: var(--ouro-grad); -webkit-background-clip: text; background-clip: text; color: transparent; -webkit-text-fill-color: transparent; filter: drop-shadow(0 4px 18px rgba(0,0,0,.8)); }
.leitor article { max-width: 640px; margin: -70px auto 0; padding: 0 22px calc(var(--sb) + 60px); position: relative; z-index: 1; }
.leitor article .n { color: var(--c); font: 600 12px/1.3 var(--cinzel); letter-spacing: .14em; text-transform: uppercase; }
.leitor article h1 { font: 600 34px/1.12 var(--serif); margin: 10px 0 8px; letter-spacing: -.015em; text-wrap: balance; }
.leitor article .fonte { color: var(--txt-3); font-size: 14px; margin-bottom: 26px; font-style: italic; }
.leitor article p { font: 400 19px/1.65 var(--serif); color: rgba(243,238,229,.86); margin: 0 0 18px; text-wrap: pretty; }
.leitor article h2 { font: 600 23px/1.25 var(--serif); margin: 34px 0 12px; letter-spacing: -.012em; color: var(--c); text-wrap: balance; }   /* serifa, como o resto do livro */
.leitor article blockquote { margin: 26px 0; padding: 4px 0 4px 18px; border-left: 3px solid var(--c); font: italic 400 22px/1.45 var(--serif); color: var(--txt); }
.leitor article ul { padding-left: 22px; margin: 0 0 18px; }
.leitor article li { font: 400 18px/1.6 var(--serif); color: rgba(243,238,229,.86); margin-bottom: 8px; }
.leitor .fim-l { margin-top: 38px; display: grid; gap: 12px; }
.selo-l { display: flex; flex-direction: column; align-items: center; gap: 10px; padding: 6px 0 20px; color: var(--txt-3); font: 600 11.5px/1.2 var(--cinzel); letter-spacing: .2em; text-transform: uppercase; }
.selo-l .estrela4 { opacity: .4; filter: grayscale(1); transition: opacity .6s, filter .6s; }
.selo-l.lido { color: var(--ouro); }
.selo-l.lido .estrela4 { opacity: 1; filter: drop-shadow(0 0 14px rgba(240,200,120,.65)); }
.selo-l.agora .estrela4 { animation: seloAcende 1.1s var(--mola-salto) both; }
@keyframes seloAcende { from { transform: scale(.3) rotate(-50deg); opacity: 0; } }
.prox-l { display: flex; align-items: center; gap: 14px; width: 100%; text-align: left; padding: 10px 14px 10px 10px; border-radius: 22px;
  background: linear-gradient(180deg, rgba(255,255,255,.07), rgba(255,255,255,.025)), rgba(18,16,26,.6); border: 1px solid var(--vidro-borda); box-shadow: var(--vidro-luz);
  transition: transform .2s var(--mola); }
.prox-l:active { transform: scale(.985); }
.prox-l-img { position: relative; width: 74px; height: 96px; border-radius: 14px; overflow: hidden; flex: none; }
.prox-l-img img { width: 100%; height: 100%; object-fit: cover; transform: scale(1.3); }
.prox-l-img i { position: absolute; left: 9px; top: 8px; font: normal 600 16px/1 var(--cinzel); background: var(--ouro-grad); -webkit-background-clip: text; background-clip: text; color: transparent; -webkit-text-fill-color: transparent; filter: drop-shadow(0 1px 4px rgba(0,0,0,.8)); }
.prox-l-txt { flex: 1; min-width: 0; display: block; }
.prox-l-txt small { display: block; font: 600 10.5px/1.2 var(--cinzel); letter-spacing: .18em; text-transform: uppercase; color: var(--c); }
.prox-l-txt b { display: block; font: 500 19px/1.2 var(--serif); margin-top: 6px; text-wrap: balance; }
.prox-l-txt em { display: block; font-style: normal; font-size: 13px; color: var(--txt-3); margin-top: 5px; }
.prox-l > svg { width: 20px; height: 20px; color: var(--txt-3); flex: none; }

@media (max-width: 370px) {
  .bib-capa { width: 208px; height: 292px; }
  .bib-halo { width: 62px; height: 62px; }
  .bib-santo b { font-size: 12.5px; }
}
@media (prefers-reduced-motion: reduce) {
  .bib-sf-raios { animation: none; }
  .bib-capa-img img { transform: scale(1.12); }
}
