.book-grain:after{content:"";opacity:.22;mix-blend-mode:overlay;pointer-events:none;background-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");position:absolute;inset:0}.book-cover{box-shadow:0 30px 60px -28px #000000bf,0 8px 18px -10px #00000080}.book-spine{background:linear-gradient(90deg,#00000059,#ffffff29 35%,#0000001f 70%,#0000)}.book-tilt{--rx:0deg;--ry:0deg;transform:perspective(1100px) rotateX(var(--rx)) rotateY(var(--ry));transform-style:preserve-3d;transition:transform .35s cubic-bezier(.22,1,.36,1)}.book-float{animation:9s ease-in-out infinite alternate book-drift}.book-float:nth-child(2){animation-duration:11s;animation-delay:-3s}.book-float:nth-child(3){animation-duration:13s;animation-delay:-6s}@keyframes book-drift{0%{translate:0}to{translate:0 -14px}}.book-flip{perspective:1400px;display:grid}.book-flip-face{backface-visibility:hidden;grid-area:1/1;transition:transform .7s cubic-bezier(.22,1,.36,1)}.book-flip-back{transform:rotateY(180deg)}.book-flip.is-flipped .book-flip-face:not(.book-flip-back){transform:rotateY(-180deg)}.book-flip.is-flipped .book-flip-back{transform:rotateY(0)}@media (prefers-reduced-motion:reduce){.book-tilt,.book-float,.book-flip-face{transition:none;animation:none;transform:none}.book-flip-back,.book-flip.is-flipped .book-flip-face:not(.book-flip-back){visibility:hidden}.book-flip.is-flipped .book-flip-back{visibility:visible}}
