.reading-header{margin-bottom:2rem}.hardcover-link{--tw-text-opacity:1;color:rgb(var(--accent)/var(--tw-text-opacity, 1))}.hardcover-link:hover{text-decoration-line:underline}.books-section{margin-bottom:4rem}.bookshelf{position:relative;overflow:visible}.bookshelf-books{display:flex;align-items:flex-end;gap:2px;padding-top:40px;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none}.bookshelf-books::-webkit-scrollbar{display:none}@media (max-width:768px){.bookshelf,.bookshelf-books{overflow-y:hidden}}.bookshelf-ledge{position:relative;width:100%;height:8px;margin-top:-24px;pointer-events:none;background:linear-gradient(to bottom,#2a3a6a,#1a2a4a);border-radius:0 0 2px 2px;box-shadow:0 2px 8px #00000080,0 1px #ffffff08 inset}.bookshelf-ledge:after{content:"";display:block;height:30px;background:radial-gradient(ellipse at 50%0,rgba(0,0,0,.4)0,transparent 70%)}.book-wrapper{position:relative;flex-shrink:0;display:flex;align-items:flex-end;padding-bottom:24px}.book-spine{position:relative;flex-shrink:0;height:var(--spine-height, 320px);width:var(--spine-width, 48px);background:var(--spine-bg, #2c6e49);border-radius:2px 3px 1px 1px;cursor:pointer;overflow:hidden;transition:transform .4s cubic-bezier(.23,1,.32,1),box-shadow .4s cubic-bezier(.23,1,.32,1);transform-origin:bottom center;box-shadow:1px 0#ffffff0a inset,-1px 0#0003 inset}.book-spine--hovered{transform:translateY(-16px) rotateX(-4deg) scale(1.02);z-index:10;box-shadow:1px 0#ffffff1a inset,-1px 0#0000004d inset,0 12px 32px #0009,0 4px 8px #0000004d}.noise-overlay{position:absolute;inset:0;z-index:1;pointer-events:none;background-size:200px 200px;background-repeat:repeat;opacity:.25;mix-blend-mode:overlay;border-radius:inherit}.hover-sparkle-canvas{position:absolute;bottom:0;left:-15px;z-index:20;pointer-events:none}.wandering-sparkle-canvas{position:absolute;top:0;left:0;width:100%;height:100%;z-index:15;pointer-events:none}.book-spine--skeleton{pointer-events:none;background:rgb(var(--bg-card));opacity:.6}.bookmark{position:absolute;left:50%;--tw-translate-x:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));top:-4px;width:16px;height:32px;z-index:var(--z-overlay);filter:drop-shadow(0 2px 4px rgb(0 0 0/.3))}.bookmark-icon{height:100%;width:100%;color:#ef4444}.spine-content{position:absolute;inset:0;overflow:hidden;padding:6px 2px;color:var(--spine-text, #f0f0f0);display:flex;flex-direction:column;align-items:center;z-index:2}.spine-rating{flex-shrink:0;font-size:6px;text-align:center;line-height:1.4;opacity:.8}.spine-title-wrapper{flex:1;min-height:0;width:100%;position:relative;overflow:hidden}.spine-title{font-weight:700;letter-spacing:.05em;font-size:9px;line-height:1.3;text-align:center;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) rotate(90deg);width:calc(var(--spine-height, 320px) - 80px);max-width:calc(var(--spine-height, 320px) - 80px)}.spine-author{flex-shrink:0;font-size:6px;text-align:center;word-break:break-word;max-width:100%;opacity:.7;letter-spacing:.5px;padding:0 6px}.book-modal-overlay{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;z-index:9999;height:100vh;height:100dvh;animation:book-modal-fade-in .25s ease forwards}@keyframes book-modal-fade-in{0%{opacity:0}to{opacity:1}}.book-modal-overlay.closing{animation:book-modal-fade-out .25s ease forwards}@keyframes book-modal-fade-out{0%{opacity:1}to{opacity:0}}.book-modal-card{position:relative;background:rgb(var(--bg-card));border:1px solid rgb(var(--border-default));border-radius:1rem;overflow:hidden;max-width:36rem;width:calc(100% - 2rem);max-height:90dvh;box-shadow:var(--shadow-xl);display:flex;flex-direction:column}.book-modal-close{position:absolute;top:.75rem;right:.75rem;width:2rem;height:2rem;display:flex;align-items:center;justify-content:center;border-radius:9999px;border:0;background:#00000059;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);color:#ffffffe6;cursor:pointer;transition:background .15s;z-index:20}.book-modal-close:hover{background:#0000008c}.book-modal-body{overflow-y:auto;scrollbar-width:none;flex:1;min-height:0}.book-modal-body::-webkit-scrollbar{display:none}.book-modal-hero{position:relative;height:120px;overflow:hidden;background:rgb(var(--bg-secondary, var(--bg-card)))}.book-modal-hero-bg{position:absolute;inset:-20px;width:calc(100% + 40px);height:calc(100% + 40px);-o-object-fit:cover;object-fit:cover;filter:blur(28px) brightness(.6) saturate(1.3);pointer-events:none}.book-modal-hero-gradient{position:absolute;inset:0;background:linear-gradient(to bottom,rgb(var(--bg-card)/0),rgb(var(--bg-card)/.02),rgb(var(--bg-card)/.08),rgb(var(--bg-card)/.18),rgb(var(--bg-card)/.32) 44%,rgb(var(--bg-card)/.52) 56%,rgb(var(--bg-card)/.72),rgb(var(--bg-card)/.88),rgb(var(--bg-card)/.97),rgb(var(--bg-card)))}.book-modal-identity{display:flex;align-items:flex-end;gap:1rem;padding:0 1.5rem;margin-top:-76px;position:relative;z-index:1}.book-modal-cover-wrap{flex-shrink:0}.book-modal-cover{width:96px;height:144px;-o-object-fit:cover;object-fit:cover;border-radius:6px;box-shadow:0 8px 28px #00000073;display:block}.book-modal-cover-placeholder{width:96px;height:144px;border-radius:6px;background:rgb(var(--text-secondary)/.15)}.book-modal-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:.3rem;padding-bottom:.25rem}.book-modal-title{font-family:var(--font-serif, Georgia, serif);font-size:1.25rem;font-weight:700;color:rgb(var(--text-primary));line-height:1.25;margin:0}.book-modal-author{font-size:.8125rem;color:rgb(var(--text-secondary));margin:0}.book-modal-rating{display:flex;gap:1px;font-size:.9rem}.book-modal-rating .star{color:rgb(var(--text-secondary)/.25)}.book-modal-rating .star--filled{color:#f59e0b}.book-modal-genres{display:flex;flex-wrap:wrap;gap:.375rem}.book-genre-tag{font-size:.7rem;font-weight:500;padding:.2rem .6rem;border-radius:9999px;border:1px solid rgb(var(--border-default));color:rgb(var(--text-secondary));background:rgb(var(--text-secondary)/.05);white-space:nowrap}.book-modal-summary{padding:1.25rem 1.5rem;margin-top:1rem;border-top:1px solid rgb(var(--border-subtle))}.book-modal-summary-label{font-size:.65rem;font-weight:700;letter-spacing:.12em;color:rgb(var(--text-secondary));margin:0 0 .625rem}.book-modal-description{font-size:.875rem;color:rgb(var(--text-secondary));line-height:1.7;margin:0}.book-modal-footer{padding:1rem 1.5rem;border-top:1px solid rgb(var(--border-subtle))}.book-modal-link{display:inline-flex;align-items:center;gap:.375rem;font-size:.875rem;color:rgb(var(--text-primary));text-decoration:none;border-bottom:1px dashed currentColor;transition:color .2s ease,border-bottom-color .2s ease}.book-modal-link:hover{color:rgb(var(--accent));border-bottom-color:rgb(var(--accent))}@media (max-width:480px){.book-modal-hero{height:200px}.book-modal-identity{flex-direction:column;align-items:center;text-align:center;margin-top:-100px}.book-modal-info{align-items:center;padding-bottom:0}.book-modal-genres,.book-modal-rating{justify-content:center}}