.shelf-intro{display:flex;justify-content:space-between;min-height:0;padding:42px 0 26px;gap:30px}.shelf-intro h1{margin:0 0 12px;font-size:clamp(34px,4.3vw,54px)}.shelf-intro .intro{max-width:none;margin:0}.shelf-intro-note{font-size:12px;line-height:1.8;color:var(--muted);flex-shrink:0}.shelf-heading{display:flex;justify-content:space-between;align-items:end}.shelf-heading h2{font-size:30px}.shelf-heading #catalog-status{font-size:11px;color:var(--muted)}.shelf-section{padding:26px 0 0;border-top:1px solid var(--line)}.shelf-section .catalog-tools{margin:22px 0 16px}.shelf-options{display:flex;align-items:center;gap:20px;color:var(--muted);font-size:11px;margin:0 0 12px}.shelf-options label{display:flex;align-items:center;gap:8px}.shelf-options input{width:15px;height:15px;accent-color:var(--ink);margin:0}.shelf-arrows{display:flex;gap:8px;margin-left:auto}.shelf-arrows button{width:42px;height:36px;background:transparent;color:var(--ink);border:1px solid var(--line);font-size:22px}.shelf-arrows button:hover:not(:disabled){background:var(--ink);color:var(--paper)}.shelf-arrows button:disabled{opacity:.3;cursor:default}.bookcase{background:linear-gradient(180deg,#d9d5c8,#eeece3 30%,#dedace);box-shadow:inset 0 4px 18px #3e35281a;border:1px solid #c9c1ae;border-bottom:none;padding:0 18px}.shelf-track{display:flex;align-items:flex-end;gap:13px;overflow-x:auto;overflow-y:hidden;height:310px;padding:22px 12px 12px;scroll-padding:12px;overscroll-behavior-x:contain;scrollbar-width:thin;scrollbar-color:#8e8065 #dcd6c8}.shelf-book{flex:none;display:block;position:relative;height:var(--book-height);transition:transform .18s;filter:drop-shadow(5px 4px 3px #1d231a40)}.shelf-book:hover,.shelf-book:focus-visible{transform:translateY(-9px);z-index:2}.shelf-book img{display:block;height:100%;width:auto;max-width:220px;object-fit:contain;border-radius:2px}.shelf-book svg{display:block;height:100%;max-width:460px}.cover-book{border-left:4px solid #534c3d;border-radius:3px}.shelf-wood{height:19px;margin:0 -19px;background:linear-gradient(#a88d65 0%,#bfa581 15%,#8e724e 20%,#a68b65 75%,#776044 100%);box-shadow:0 9px 10px #3b342426}.shelf-caption{display:flex;justify-content:space-between;gap:25px;min-height:55px;padding:20px 0 0;font-size:11px;line-height:1.6;color:var(--muted)}.shelf-caption span:last-child{white-space:nowrap}.shelf-empty{align-self:center;max-width:420px;margin:auto;line-height:1.8;color:var(--muted)}.shelf-missing{display:block;width:120px;height:100%;padding:18px;background:var(--ink);color:var(--paper);font:19px Georgia;overflow:hidden}.collection{padding-top:35px}.collection .section-top{margin-bottom:0}@media(max-width:700px){.shelf-intro{display:block}.shelf-intro-note{display:none}.shelf-options{flex-wrap:wrap;gap:12px}.shelf-options #shelf-count{order:3;flex-basis:100%}.shelf-heading{align-items:start;gap:14px}.shelf-heading #catalog-status{max-width:105px;line-height:1.7}.shelf-track{height:290px}.shelf-book{height:calc(var(--book-height) * .88)}.shelf-caption{display:block}.shelf-caption span{display:block}.shelf-caption span:last-child{margin-top:8px}.bookcase{padding:0 8px}.shelf-wood{margin:0 -9px}}@media(prefers-reduced-motion:reduce){.shelf-book{transition:none}html{scroll-behavior:auto}}
.shelf-book svg{max-width:none}
@media(max-width:700px){.has-spine{--book-scale:.88}}

/* Photo shelf trial — local preview only. */
.bookcase{padding:0 24px;background:linear-gradient(90deg,#23170d77,transparent 9%,transparent 91%,#23170d88),url('assets/spines/wood-back.svg') center/auto 100%;border:12px solid #93734b;border-image:url('assets/spines/wood-edge.svg') 15 stretch;box-shadow:inset 0 22px 24px #21170c88,inset 0 -10px 15px #21170c55,0 12px 25px #37291922}
.shelf-track{height:430px;gap:2px;padding:35px 16px 0;scrollbar-color:#614a30 #b49770;align-items:flex-end}
.shelf-book{filter:drop-shadow(3px 0 2px #21170c66);transform-origin:bottom center}
.shelf-book::after{content:'';position:absolute;inset:0 -5px;min-width:24px}
.shelf-book:hover,.shelf-book:focus-visible{transform:translateY(-6px);outline:2px solid #e6d3a8;outline-offset:3px}
.shelf-wood{height:27px;margin:0 -24px;background:url('assets/spines/wood-edge.svg') center/auto 100%;box-shadow:0 7px 12px #2c1c1744;border-top:2px solid #d6bb8e}
@media(max-width:700px){.bookcase{padding:0 8px;border-width:8px}.shelf-track{height:390px;padding:28px 8px 0;gap:3px}.shelf-wood{margin:0 -8px}.has-spine{--book-scale:.88}}

.bookcase{background-size:100% 100%;background-repeat:no-repeat}

/* Spines touch, with no inset from the inner bookcase edge. */
.bookcase{padding-left:0;padding-right:0}
.shelf-track{gap:0;padding-left:0;padding-right:0;scroll-padding:0}
.shelf-wood{margin-left:0;margin-right:0}
.shelf-book{filter:none}
.shelf-book svg{overflow:hidden}

/* Taller photographed volumes retain their relative height. */
.shelf-track{height:495px}
@media(max-width:700px){.shelf-track{height:450px}}
