/* Cover-based 3D book. Page layout sizes stay in the site stylesheet. */
.book-scene{width:284px;height:426px;perspective:1300px;position:relative;z-index:2;cursor:grab;touch-action:pan-y;user-select:none;-webkit-user-select:none;outline:none}
.book-scene.is-dragging{cursor:grabbing}
.book-scene:focus-visible:after{content:'';position:absolute;inset:-14px;border:3px solid #1458ed;border-radius:10px;box-shadow:0 0 0 5px #fff;pointer-events:none}
.book-object{--book-x:7deg;--book-y:-24deg;--book-z:5deg;position:relative;width:100%;height:100%;transform-style:preserve-3d;transform:rotateX(var(--book-x)) rotateY(var(--book-y)) rotateZ(var(--book-z));transition:transform .18s ease-out;will-change:transform}
/* Once book-3d.js is running it animates every frame, so the CSS transition would only add lag. */
.book-object.is-live,.book-scene.is-dragging .book-object{transition:none}
.book-face{position:absolute;inset:0;backface-visibility:hidden;overflow:hidden;border-radius:1px 4px 4px 1px;box-shadow:inset 0 0 1px #000;transform-style:preserve-3d}
.book-front{transform:translateZ(19px);background:#0a2b86;box-shadow:12px 19px 26px #03144965}
.book-front:after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,#0005,transparent 3%,#fff2 4%,transparent 7%,transparent 95%,#fff1);pointer-events:none}
/* Glare that slides across the cover as the book turns (position set by book-3d.js). */
.book-front:before{content:'';position:absolute;inset:0;z-index:1;background:linear-gradient(105deg,transparent calc(var(--book-glare,50%) - 28%),rgba(255,255,255,.2) var(--book-glare,50%),transparent calc(var(--book-glare,50%) + 28%));mix-blend-mode:screen;pointer-events:none}
.book-face img{width:100%;height:100%;object-fit:cover;pointer-events:none;-webkit-user-drag:none}
.book-back{transform:rotateY(180deg) translateZ(19px);border-radius:4px 1px 1px 4px}
.book-spine{position:absolute;width:38px;left:-19px;top:0;height:100%;background:#082571;border-left:1px solid #4261a9;border-right:1px solid #071c5e;transform:rotateY(-90deg);color:var(--yellow);writing-mode:vertical-rl;padding:20px 8px;font:600 14px var(--display);letter-spacing:.8px}
.book-spine span{margin-top:auto;color:white;font-size:8px}
.book-pages{position:absolute;width:36px;right:-18px;height:98%;top:1%;transform:rotateY(90deg);background:repeating-linear-gradient(90deg,#f4f0df 0 1px,#c9c6b8 1px 2px)}
@media(prefers-reduced-motion:reduce){.book-object{transition:none}.book-front:before{display:none}}
