.bookshelf-page #site-content{width:min(1140px,calc(100% - 64px));max-width:none}.shelf-back{font-size:12px}.shelf-intro{padding:28px 0 35px}.bookshelf-page .shelf-kicker{font:10px ui-monospace,monospace;letter-spacing:1.8px;color:#a4af95}.bookshelf-page #site-content h1{font:normal clamp(50px,7vw,86px)/1.1 Georgia,serif;letter-spacing:-3px;margin:20px 0}.shelf-intro>p:last-child{font:23px/1.5 Georgia,serif;color:#c8ceb9}.shelf-tools{display:flex;gap:10px;flex-wrap:wrap}.shelf-tools input{flex:1;min-width:190px}.shelf-tools input,.shelf-tools select,.shelf-tools button,.shelf-filters button,.shelf-more{font:inherit;font-size:12px;color:#d0d7c4;background:#24271f;border:1px solid #4b5340;border-radius:7px;padding:13px 15px}.shelf-tools button,.shelf-filters button,.shelf-more{cursor:pointer}.shelf-filters{display:flex;flex-wrap:wrap;gap:7px;margin:20px 0}.shelf-filters button{padding:9px 14px;background:transparent;border-color:transparent}.shelf-filters button[aria-pressed=true]{background:#becbad;color:#20241b}.bookshelf-page .shelf-status{font:11px ui-monospace,monospace;color:#a4ac98;margin:24px 0 8px}.shelf-case{padding:20px 32px 12px;background:radial-gradient(ellipse at 50% 0,#44403355,transparent 80%),#191b16;border:1px solid #434336;border-radius:12px;box-shadow:inset 0 0 45px #0007}.shelf-row{display:flex;align-items:flex-end;gap:9px;min-height:255px;padding:28px 18px 0;position:relative;border-bottom:16px solid #716047;margin-bottom:26px;background:linear-gradient(0deg,#b49b5820,transparent 30%);box-shadow:0 10px 10px -6px #000,0 2px 0 #b39a7155;perspective:1100px}.shelf-row:after{content:'';position:absolute;bottom:-16px;left:0;right:0;height:16px;pointer-events:none;background:repeating-linear-gradient(1deg,transparent 0 3px,#0001 4px 5px)}.shelf-book{position:relative;flex:1;max-width:68px;min-width:0;height:var(--height);border:0;border-radius:2px 3px 1px 1px;background:linear-gradient(90deg,#0005,transparent 14%,#fff1 22%,transparent 55%,#0003),var(--book-color);color:#f2e4c8;box-shadow:inset 2px 0 1px #ffffff15,3px 3px 5px #0009;cursor:pointer;transform:rotateY(-12deg);transform-origin:left bottom;transform-style:preserve-3d;transition:transform .22s,box-shadow .22s;padding:12px 6px;display:flex;align-items:center;gap:9px;flex-direction:column}.shelf-book:after{content:'';position:absolute;right:-5px;top:3px;bottom:2px;width:5px;transform:skewY(-20deg);background:repeating-linear-gradient(#d1c5a8 0 1px,#aaa18b 1px 2px)}.shelf-book:hover,.shelf-book:focus-visible{transform:translateY(-18px) rotateY(-24deg) rotateZ(-2deg);box-shadow:9px 12px 15px #0008;z-index:2;outline:2px solid #c9d6b2;outline-offset:3px}.shelf-spine-title{writing-mode:vertical-rl;transform:rotate(180deg);font:600 13px/1.15 Georgia,serif;flex:1;overflow:hidden;max-height:calc(100% - 28px);text-overflow:ellipsis;white-space:nowrap;letter-spacing:.3px}.shelf-spine-mark{font-size:13px;border-top:1px solid #f2e4c833;width:80%;padding-top:6px;text-align:center}.shelf-row-number{position:absolute;bottom:-31px;left:5px;font:8px ui-monospace,monospace;color:#9b8b70}.shelf-more{display:block;margin:28px auto}.shelf-more[hidden]{display:none}.bookshelf-page .shelf-caption{font-size:11px;line-height:1.8;color:#9ba28f;max-width:770px;margin:22px 0 0}.bookshelf-page .shelf-credit{font-size:11px;color:#929b84;margin-top:35px}.shelf-empty{padding:50px 10px;color:#b6bea7}.bookshelf-page button:focus-visible,.bookshelf-page input:focus-visible,.bookshelf-page select:focus-visible{outline:2px solid #c9d6b2;outline-offset:3px}#shelf-dialog{position:fixed;inset:0;margin:auto;width:min(800px,calc(100% - 32px));max-height:90dvh;overflow:auto;padding:40px;background:#23261f;color:#e1e4d6;border:1px solid #647052;border-radius:14px;box-shadow:0 20px 90px #0009}#shelf-dialog::backdrop{background:#0d100ccd;backdrop-filter:blur(5px)}#shelf-close{position:absolute;top:10px;right:14px;font:24px sans-serif;background:transparent;color:#d2dac4;border:0;cursor:pointer;padding:5px 10px}.shelf-detail-layout{display:grid;grid-template-columns:230px 1fr;gap:35px;align-items:center}.shelf-cover{min-height:320px;background:linear-gradient(90deg,#0007,transparent 6%,#ffffff09 9%,transparent 12%),var(--book-color,#4d614b);padding:30px 25px;display:flex;flex-direction:column;gap:20px;box-shadow:8px 8px 0 #b7b19c,12px 12px 20px #0005;transform:perspective(800px) rotateY(-8deg);border-radius:2px;color:#f2e4c8}.shelf-cover-series{font:7px ui-monospace,monospace;letter-spacing:1.5px}.shelf-cover strong{font:26px/1.25 Georgia,serif;overflow-wrap:anywhere}.shelf-cover>span:nth-last-child(2){font:12px Georgia,serif}.shelf-cover-mark{font-size:50px;margin-top:auto}.shelf-book-copy h2{font:27px/1.3 Georgia,serif;margin:12px 0}.shelf-book-copy>p{font-size:13px;color:#b4bca6}.shelf-book-copy dl{display:grid;grid-template-columns:auto 1fr;gap:8px 20px;font-size:12px;margin:22px 0}.shelf-book-copy dt{color:#98a48a}.shelf-book-copy dd{margin:0}.shelf-goodreads{display:inline-block;padding:12px;border:1px solid #83936d;border-radius:6px;font-size:12px;color:#dae4cb;text-decoration:none}#shelf-note{display:block;font-size:12px;margin-top:16px}#shelf-note[hidden]{display:none}.shelf-book-copy .shelf-detail-hint{font-size:10px;line-height:1.7;margin-top:15px}
@media(max-width:650px){.bookshelf-page #site-content{width:calc(100% - 28px)}.shelf-case{padding:8px 10px}.shelf-row{gap:7px;padding:25px 8px 0;min-height:235px}.shelf-book{max-width:64px;padding:10px 4px}.shelf-spine-title{font-size:12px}.shelf-tools input{width:100%;flex-basis:100%}.shelf-tools select{flex:1;min-width:0}.shelf-filters button{padding:8px 10px;font-size:11px}.shelf-detail-layout{grid-template-columns:1fr;gap:30px}.shelf-cover{max-width:170px;min-height:230px;padding:22px;margin:auto}.shelf-cover strong{font-size:22px}#shelf-dialog{padding:35px 25px}.shelf-cover-mark{font-size:30px}}
@media(prefers-reduced-motion:reduce){.shelf-book{transition:none}.shelf-book:hover,.shelf-book:focus-visible{transform:none}}
.shelf-intro{padding:12px 0 18px}.bookshelf-page #site-content h1{font-size:clamp(44px,6vw,68px);margin:14px 0}.shelf-intro>p:last-child{font-size:18px;margin:10px 0}.shelf-intro>p:last-child br{display:none}.bookshelf-page .shelf-kicker{margin-bottom:10px}
/* Compact, cover-first shelves. Real artwork stays uncropped. */
.bookshelf-page #site-content{padding-top:22px}.shelf-intro{padding:10px 0 8px}.bookshelf-page #site-content h1{font-size:44px;letter-spacing:-1.5px;margin:9px 0}.shelf-intro>p:last-child{font:15px/1.5 Georgia,serif;margin:8px 0 16px}.shelf-tools input,.shelf-tools select,.shelf-tools button{padding:10px 12px}.shelf-filters{margin:12px 0;gap:4px}.bookshelf-page .shelf-status{margin:15px 0 8px}.shelf-case{padding:4px 14px 4px;border-radius:8px}.shelf-row{gap:12px;min-height:188px;padding:16px 4px 0;border-bottom-width:6px;margin-bottom:12px;box-shadow:0 6px 9px -6px #000}.shelf-row:after{bottom:-6px;height:6px}.shelf-row-number{display:none}.shelf-book{max-width:100px;height:168px;flex:1;background:none!important;box-shadow:none;border:0;padding:0;gap:7px;transform:none;color:#cccdbf}.shelf-book:after{display:none}.shelf-book:hover,.shelf-book:focus-visible{transform:translateY(-6px);box-shadow:none}.shelf-art{height:142px;display:flex;align-items:flex-end;width:100%;justify-content:center}.shelf-art img{display:block;width:100%;height:100%;object-fit:contain;object-position:center bottom;filter:drop-shadow(3px 3px 2px #0008);border-radius:1px}.shelf-cover-caption{font:10px/1.3 -apple-system,BlinkMacSystemFont,sans-serif;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%;text-align:left;display:block}.shelf-art-missing{font:11px/1.7 sans-serif;color:#9a9e91;text-align:center;border:1px dashed #545a4a;width:100%;height:100%;display:flex;align-items:center;justify-content:center;padding:8px;box-sizing:border-box}.shelf-detail-layout{grid-template-columns:190px 1fr;gap:28px}.shelf-cover{padding:0;min-height:0;background:none;box-shadow:none;transform:none;display:block;border:0}.shelf-cover img{width:100%;max-height:310px;object-fit:contain;display:block;filter:drop-shadow(4px 5px 8px #0006)}.shelf-cover>p{padding:35px 15px;border:1px dashed #647052;color:#a7b097;font-size:12px}.shelf-book-copy h2{font-size:24px}#shelf-dialog{padding:30px;max-width:720px}.shelf-more{margin:18px auto}.bookshelf-page .shelf-caption{margin-top:14px}
@media(max-width:650px){.bookshelf-page #site-content h1{font-size:38px}.shelf-case{padding:3px 12px}.shelf-row{gap:14px;min-height:178px;padding-top:12px}.shelf-book{max-width:120px;height:159px}.shelf-art{height:132px}.shelf-detail-layout{grid-template-columns:105px 1fr;gap:16px}.shelf-cover{max-width:none;min-height:0;margin:0;align-self:start}.shelf-book-copy h2{font-size:19px}.shelf-book-copy dl{grid-template-columns:1fr;gap:4px;margin:16px 0}.shelf-book-copy dd{margin:0 0 7px}#shelf-dialog{padding:40px 18px 20px}.shelf-goodreads{padding:9px;font-size:11px}.shelf-book-copy>p{font-size:12px}}
.shelf-art img{transform:perspective(650px) rotateY(-7deg);transform-origin:left bottom;transition:transform .18s}.shelf-book:hover .shelf-art img,.shelf-book:focus-visible .shelf-art img{transform:perspective(650px) rotateY(0)}@media(prefers-reduced-motion:reduce){.shelf-art img{transition:none;transform:none}}
/* Packed illustrated spines; authentic front artwork appears in book details. */
.shelf-row{gap:3px;min-height:230px;padding:14px 5px 0;border-bottom:10px solid #786346;margin-bottom:16px;background:linear-gradient(0deg,#a5864225,transparent 45%);box-shadow:0 8px 12px -6px #000}.shelf-row:after{height:10px;bottom:-10px}.shelf-book{flex:1 1 var(--width);max-width:var(--width);min-width:0;height:var(--height);padding:10px 3px 8px;gap:7px;border-radius:2px 3px 0 0;background:linear-gradient(90deg,#0005,transparent 16%,#ffffff25 24%,transparent 42%,#0003 95%),var(--book-color)!important;color:var(--book-ink);box-shadow:inset 1px 0 #ffffff30,inset -2px 0 #0003,2px 0 3px #0009;transform:none;overflow:hidden}.shelf-book:hover,.shelf-book:focus-visible{transform:translateY(-9px) rotate(-1deg);box-shadow:4px 5px 10px #0009;z-index:2}.shelf-spine-title{writing-mode:vertical-rl;transform:none;font:600 12px/1.15 Georgia,serif;white-space:normal;text-overflow:clip;max-height:none;min-height:0;overflow:hidden;flex:1;letter-spacing:0;text-align:left}.shelf-spine-author{writing-mode:vertical-rl;font:8px/1.1 sans-serif;max-height:52px;overflow:hidden;opacity:.85;white-space:nowrap;flex-shrink:0}.shelf-book:nth-child(5n) .shelf-spine-title{font-family:Arial,sans-serif;font-weight:700}.shelf-book:nth-child(3n){border-top:3px solid #ffffff35;border-bottom:4px solid #0003}@media(max-width:650px){.shelf-row{gap:3px;min-height:230px;padding:14px 2px 0}.shelf-case{padding:3px 9px}.shelf-book{max-width:48px;padding:9px 3px 7px}.shelf-spine-title{font-size:12px}}@media(prefers-reduced-motion:reduce){.shelf-book:hover,.shelf-book:focus-visible{transform:none}}
.shelf-alternate{aspect-ratio:2/3;box-sizing:border-box;background:#ece3cb url('/assets/book-covers/alternate-library-art.webp') center/cover;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;padding:22% 15%;gap:12px;color:#302d22;box-shadow:3px 4px 12px #0005}.shelf-alternate strong{font:clamp(12px,1.5vw,19px)/1.3 Georgia,serif;overflow-wrap:anywhere}.shelf-alternate span{font:10px/1.4 Georgia,serif}
.shelf-spine-title{width:100%;box-sizing:border-box}
/* Use the corresponding cover itself as the color texture, not a hash palette. */
.shelf-book{isolation:isolate;background:var(--book-color)!important}.shelf-spine-surface{position:absolute;inset:-2px;z-index:-1;background-size:100% 100%;background-position:center;filter:blur(2px);pointer-events:none}.shelf-spine-surface:after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,#0005,transparent 18%,#ffffff25 25%,transparent 48%,#0003)}.shelf-spine-title,.shelf-spine-author{text-shadow:0 0 3px var(--book-halo),0 0 5px var(--book-halo)}.shelf-spine-author{opacity:1}.shelf-hover-preview{position:fixed;z-index:80;width:180px;max-width:calc(100vw - 24px);max-height:calc(100dvh - 24px);overflow:auto;padding:12px;background:#26271f;border:1px solid #aab59766;border-radius:9px;box-shadow:0 12px 40px #0009;box-sizing:border-box;display:flex;flex-direction:column;gap:6px;color:#eeeddf;pointer-events:auto}.shelf-hover-preview[hidden]{display:none}.shelf-preview-art img{display:block;width:100%;height:210px;object-fit:contain}.shelf-preview-art .shelf-alternate{width:140px;min-height:210px;margin:auto}.shelf-preview-art .shelf-alternate strong{font-size:13px}.shelf-preview-title{font:14px/1.3 Georgia,serif}.shelf-preview-author{font:11px/1.4 sans-serif;color:#c4c7b8}.shelf-hover-preview>small{font:10px/1.4 sans-serif;color:#b0b79d}.shelf-book{touch-action:manipulation}
.shelf-refine{display:flex;gap:12px;margin-top:12px}.shelf-refine label{font:11px/1.5 sans-serif;color:#aab29d;display:flex;flex:1;flex-direction:column;gap:5px;min-width:0}.shelf-refine select{font:12px sans-serif;padding:9px 12px;background:#24271f;border:1px solid #4b5340;color:#d0d7c4;border-radius:7px;width:100%}.shelf-book:hover,.shelf-book:focus-visible{transform:translateY(-14px) rotateY(-12deg);box-shadow:7px 9px 14px #0009}@media(prefers-reduced-motion:reduce){.shelf-book:hover,.shelf-book:focus-visible{transform:none}}
#shelf-refresh{background:transparent;color:#c5cdb8;border:1px solid #667355;border-radius:5px;padding:7px 9px;font:11px sans-serif;cursor:pointer}#shelf-refresh:disabled{opacity:.6;cursor:wait}
.shelf-view-controls{display:flex;gap:10px;justify-content:space-between;align-items:center;margin:14px 0}.shelf-view-controls button{font:11px sans-serif;padding:9px 12px;border:1px solid #647052;border-radius:6px;background:#25281f;color:#dce3cf;cursor:pointer}.shelf-expanded #site-content{width:calc(100% - 24px);padding-top:14px}.shelf-expanded .site-header,.shelf-expanded .site-footer,.shelf-expanded .shelf-intro,.shelf-expanded .site-breadcrumb,.shelf-expanded .shelf-back,.shelf-expanded .shelf-caption,.shelf-expanded .shelf-credit{display:none}.shelf-expanded .shelf-view-controls{position:sticky;top:0;z-index:5;background:#1b1a17;padding:10px 0}.shelf-expanded .shelf-tools{margin-top:6px}
