:root{--paper:#fff;--ink:#1f1f1f;--muted:#888;--accent:#8a172b;--line:#eee}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:300 16px/1.75 Roboto,'Helvetica Neue',Helvetica,Arial,sans-serif}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button,input,select{font:inherit;color:inherit}button,select{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:4px}main{max-width:1440px;margin:50px 60px 65px}.intro{margin-bottom:40px}h1{font:300 76px/1.15 Roboto,'Helvetica Neue',Helvetica,Arial,sans-serif;margin:0 0 12px}.intro p{font-size:23px;line-height:1.75;margin:0}h2{font-size:28px;font-weight:300;margin:0}.preview-note{font-size:12px;color:var(--muted);margin:6px 0 12px}.toolbar{display:flex;position:relative;justify-content:flex-end;min-height:24px}.shelf-options{font-size:12px;color:var(--muted)}.shelf-options summary{cursor:pointer}.options{position:absolute;right:0;top:28px;z-index:10;background:#fff;border:1px solid var(--line);padding:15px;display:flex;gap:12px;box-shadow:0 4px 12px #0001}.search input{border:0;background:transparent;font-size:13px;padding:6px 0;width:160px}select{border:0;background:transparent;font-size:12px}.shelf-meta{font-size:11px;color:var(--muted);margin:0 0 12px}.shelf{display:grid;grid-template-columns:repeat(auto-fill,minmax(31px,1fr));grid-auto-rows:184px;gap:22px 3px;align-items:end;background:repeating-linear-gradient(to bottom,transparent 0,transparent 181px,#e5e1da 181px,#e5e1da 184px,transparent 184px,transparent 206px);padding:0 0 0;isolation:isolate}.book{position:relative;display:block;width:100%;height:178px;margin:0 0 3px;padding:0;border:0;border-radius:1px 2px 0 0;background:var(--book-color,#52615b);color:white;text-align:left;box-shadow:inset 2px 0 2px #fff3,inset -2px 0 2px #0005,1px 0 2px #0002;transition:transform .15s;isolation:isolate}.spine-art{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;filter:blur(3px) saturate(1.3);clip-path:inset(0);z-index:-2}.book:before{content:'';position:absolute;inset:0;background:linear-gradient(90deg,#0008,#0009 65%,#000b);box-shadow:inset 2px 0 1px #fff3,inset -2px 0 2px #0005;z-index:-1;border-radius:inherit}.book:after{content:'';position:absolute;left:4px;right:4px;top:6px;border-top:1px solid #fff3;pointer-events:none}.book h3{position:absolute;top:12px;left:5px;bottom:10px;margin:0;writing-mode:vertical-rl;text-orientation:mixed;font-size:12px;font-weight:700;line-height:1.15;max-width:27px;overflow:hidden;text-shadow:0 1px 2px #0009}.book>.author{position:absolute;right:3px;bottom:10px;max-height:130px;writing-mode:vertical-rl;font-size:8px;line-height:1;margin:0;overflow:hidden;color:#fffd}.book>.rating,.demo-label,.book>.cover{display:none}.book:hover,.book:focus-visible{transform:translateY(-9px);z-index:3;outline-offset:3px}.book.face-out{grid-column:span 3;height:178px;background:none;box-shadow:none}.face-out:before,.face-out:after,.face-out>.spine-art,.face-out>h3,.face-out>.author{display:none}.book.face-out>.cover{display:block;height:100%;width:100%;box-shadow:2px 0 3px #0003}.cover{position:relative;aspect-ratio:2/3;background:var(--book-color,#52615b);overflow:hidden}.cover img{width:100%;height:100%;object-fit:cover;position:relative;z-index:1}.cover-fallback{position:absolute;inset:0;padding:12px 9px;display:flex;flex-direction:column;justify-content:space-between;color:#fff}.cover-fallback strong{font-size:16px;line-height:1.2;font-weight:300}.cover-fallback span{font-size:9px}dialog{border:1px solid var(--line);background:var(--paper);color:var(--ink);padding:40px;width:min(720px,calc(100% - 32px));max-height:85vh;overflow:auto}dialog::backdrop{background:#0005}.close{position:absolute;right:15px;top:8px;border:0;background:none;font-size:25px}.detail-top{display:grid;grid-template-columns:150px 1fr;gap:28px}.detail-top h2{font-size:28px;line-height:1.3;margin:10px 0}.author{font-size:11px;color:var(--muted);margin:0}.eyebrow{font-size:11px;color:var(--muted);margin:0}.detail-review{margin-top:28px;white-space:pre-wrap}.book-nav{display:flex;justify-content:space-between;margin-top:28px}.book-nav button,#reset{background:none;border:0;color:var(--accent);padding:0;font-size:13px}.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}#empty{padding:30px 0}button:disabled{opacity:.3;cursor:default}@media(min-width:1560px){main{margin-left:auto;margin-right:auto;padding:0 60px}}@media(max-width:900px){main{margin:45px 35px}}@media(max-width:540px){main{margin:35px 24px}h1{font-size:64px}.intro p{font-size:20px}.intro{margin-bottom:35px}.options{flex-direction:column;max-width:90vw}.shelf{grid-template-columns:repeat(auto-fill,minmax(30px,1fr))}dialog{padding:35px 20px}.detail-top{grid-template-columns:95px 1fr;gap:18px}.detail-top h2{font-size:23px}}@media(prefers-reduced-motion:reduce){*{transition:none!important}}
.book h3{bottom:24px;max-width:calc(100% - 9px);font-size:11px;line-height:1.15}.book>.author{writing-mode:horizontal-tb;left:4px;right:4px;bottom:8px;font-size:6px;max-height:9px;white-space:nowrap;text-overflow:ellipsis}

/* Keep the cover palette bright; a paper label gives the type its own contrast. */
.book{color:#24211e;box-shadow:inset 2px 0 2px #fff6,inset -1px 0 2px #0002,1px 0 2px #0001}
.spine-art{filter:blur(3px) saturate(1.15) brightness(1.08)}
.book:before{background:linear-gradient(90deg,#fff2,transparent 65%,#0001);box-shadow:inset 2px 0 1px #fff5,inset -1px 0 1px #0002}
.book h3{top:10px;bottom:22px;left:4px;max-width:calc(100% - 8px);padding:5px 2px;background:#fff9e9eb;border-radius:1px;text-shadow:none;font-size:11px;line-height:1.2;color:#24211e}
.book>.author{bottom:7px;background:#fff9e9eb;color:#24211e;padding:1px 0;max-height:10px}

.book h3{bottom:10px}.book>.author{display:none}

.book.series-book:after{display:block;content:"";position:absolute;top:auto;bottom:4px;left:0;right:0;height:5px;border:0;background:var(--series-color);z-index:2;pointer-events:none}.series-book h3{border-left:2px solid var(--series-color)}

/* Spacing carries the grouping: touching series, 8px between units, 24px between authors. */
.shelf{display:flex;flex-wrap:wrap;align-items:flex-end;gap:25px 0;background:repeating-linear-gradient(to bottom,transparent 0,transparent 178px,#e5e1da 178px,#e5e1da 181px,transparent 181px,transparent 206px)}
.book-cluster{display:flex;flex-wrap:wrap;align-items:flex-end;gap:25px 0;max-width:100%;margin-right:8px}
.book-cluster.author-start{margin-left:16px}
.book-cluster .book{flex:0 0 32px;width:32px;margin-bottom:3px}
.book-cluster .book.face-out{flex-basis:96px;width:96px}
.book h3{border-left:0}
@media(max-width:540px){.book-cluster.author-start{margin-left:12px}.book-cluster{margin-right:6px}}
/* Favorites over a barcode. All 615 books remain directly browsable. */
.section-heading{display:flex;justify-content:space-between;align-items:baseline;gap:20px}#show-all{background:none;border:0;padding:0;color:var(--accent);font-size:14px;font-weight:300}.shelf-intro{font-size:16px;color:#777;margin:7px 0 22px}.shelf{background:none;border-bottom:3px solid #e5e1da;padding-bottom:0;gap:20px 0}.book-cluster{gap:20px 0}.book-cluster .book{height:178px;flex-basis:34px;width:34px;box-shadow:none;border-radius:2px 2px 0 0}.book:before,.book:after{display:none}.book h3{background:#fff9e9eb;left:5px;top:9px;bottom:17px;max-width:calc(100% - 10px);font-size:12px;padding:5px 2px;line-height:1.1}.barcode-label{font-size:11px;color:var(--muted);margin:14px 0 8px}.barcode{display:grid;grid-template-columns:repeat(auto-fill,minmax(6px,1fr));gap:10px 3px}.book-line{display:block;height:40px;min-width:0;padding:0;border:0;background:var(--book-color);opacity:.8;transition:transform .12s,opacity .12s}.book-line:hover,.book-line:focus-visible{opacity:1;transform:translateY(-3px);outline-offset:2px}.book-peek{position:fixed;z-index:100;display:flex;gap:14px;padding:14px;background:#fff;border:1px solid #e8e5df;box-shadow:0 6px 26px #0002;width:290px;pointer-events:none;font-size:12px;line-height:1.5}.book-peek .cover{width:78px;flex:0 0 78px;align-self:start}.book-peek strong{font-weight:700;font-size:14px}.book-peek p{margin:6px 0;color:#777}.book-peek .cover-fallback{padding:7px}.book-peek .cover-fallback strong{font-size:12px}.book-peek .cover-fallback span{font-size:8px}.book-peek[hidden],.barcode[hidden],.shelf[hidden],.barcode-label[hidden]{display:none}@media(max-width:540px){.shelf-intro{font-size:14px}.book-cluster .book{flex-basis:34px;width:34px}.book-peek{width:260px}.barcode{grid-template-columns:repeat(auto-fill,minmax(7px,1fr))}} 

/* One continuous rhythm; spacing no longer encodes authors or series. */
.shelf{gap:20px 4px}.shelf>.book{flex:0 0 34px;width:34px;height:178px;margin-bottom:0;box-shadow:none;border-radius:2px 2px 0 0}
.genre-section{margin:30px 0 55px}.genre-heading{display:flex;justify-content:space-between;align-items:baseline;gap:20px;margin-bottom:26px}.genre-heading h3{font-size:25px;font-weight:300;margin:0}.genre-toggle{border:0;background:none;color:var(--accent);font-size:13px;padding:0;font-weight:300}.genre-section .barcode{margin-top:15px}.genre-section .shelf+.barcode{margin-top:18px}@media(max-width:540px){.genre-heading h3{font-size:22px}.genre-heading{margin-bottom:20px}.genre-section{margin-bottom:40px}}

/* Saturated covers and solid spines, with contrast chosen for each color. */
.book h3{background:transparent;color:var(--spine-ink,#fff);left:6px;max-width:calc(100% - 12px);padding:4px 0;font-weight:700;border:0}
.book-line{opacity:1}.cover-fallback{color:var(--spine-ink,#fff)}

/* Small handpicked collections sit together, rather than stretching across the page. */
#genre-shelves{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:38px;align-items:start}
.genre-section{min-width:0;margin:25px 0 45px}.genre-heading{min-height:58px;margin-bottom:6px;align-items:flex-start;gap:10px}.genre-heading h3{font-size:24px;line-height:1.25;max-width:250px}.genre-toggle{font-size:11px;white-space:nowrap;padding-top:4px}.genre-counts{font-size:11px;color:var(--muted);margin:0 0 18px}
.spotlight-shelf{flex-wrap:nowrap;gap:4px;min-height:213px;align-items:flex-end}.spotlight-shelf>.book{flex:0 1 38px;min-width:24px;width:38px;height:210px}.spotlight-shelf .book h3{font-size:13px;left:5px;max-width:calc(100% - 10px);top:10px;bottom:10px;line-height:1.12}
.genre-section .barcode{grid-template-columns:repeat(auto-fill,minmax(3px,1fr));gap:5px 2px}.genre-section .book-line{height:25px}
.genre-section.expanded{grid-column:1/-1}.genre-section.expanded .genre-heading{min-height:0}.genre-section.expanded .genre-heading h3{max-width:none}#genre-shelves.all-expanded{display:block}
@media(min-width:901px) and (max-width:1199px){#genre-shelves{grid-template-columns:repeat(2,minmax(0,1fr));gap:32px}}
@media(max-width:900px){#genre-shelves{grid-template-columns:1fr;gap:0}.genre-heading{min-height:0;margin-bottom:10px}.genre-heading h3{max-width:none}.spotlight-shelf{min-height:193px}.spotlight-shelf>.book{height:190px}.genre-section{margin:22px 0 38px}.genre-section .barcode{grid-template-columns:repeat(auto-fill,minmax(4px,1fr))}}

/* Group every non-spotlight book into visible rows, rather than filtering books out. */
.browse-tools{display:flex;justify-content:space-between;align-items:center;gap:15px;flex-wrap:wrap;margin:24px 0 8px}.barcode-modes{display:flex;align-items:center;gap:15px;font-size:12px}.barcode-modes>span,#count{font-size:11px;color:var(--muted)}.barcode-modes button{padding:4px 0;border:0;border-bottom:1px solid transparent;background:none;font-size:12px;color:var(--muted);cursor:pointer}.barcode-modes button[aria-pressed=true]{color:var(--accent);border-color:var(--accent)}.barcode-groups{margin-top:18px;display:flex;flex-direction:column;gap:9px}.barcode-row{display:grid;grid-template-columns:42px minmax(0,1fr) 20px;gap:7px;align-items:start}.barcode-row-label,.barcode-row-count{font-size:10px;line-height:22px;color:var(--muted)}.barcode-row-count{text-align:right}.genre-section .barcode-row .barcode{display:flex;flex-wrap:wrap;gap:3px 2px;margin:0;align-items:start;min-height:22px}.genre-section .barcode-row .book-line{height:22px;flex:0 0 4px;width:4px}.barcode-row+.barcode-row{border-top:1px solid #f4f2ee;padding-top:7px}@media(max-width:540px){.browse-tools{gap:9px}.barcode-modes{gap:12px}.barcode-row{grid-template-columns:43px minmax(0,1fr) 22px}.genre-section .barcode-row .book-line{flex-basis:5px;width:5px}}

.genre-section .barcode-row .barcode{flex-wrap:nowrap;gap:var(--barcode-gap,2px)}.genre-section .barcode-row .book-line{flex:0 1 4px;min-width:0;max-width:4px}.genre-section .barcode-row .book-line:hover,.genre-section .barcode-row .book-line:focus-visible{position:relative;z-index:2}

/* Fixed 4px bars; crowding removes gaps within each author before wrapping. */
.genre-section .barcode,.genre-section .barcode-row .barcode{display:flex;flex-wrap:wrap;column-gap:0;row-gap:4px;justify-content:flex-start}
.genre-section .book-line,.genre-section .barcode-row .book-line{flex:0 0 4px;width:4px;min-width:4px;max-width:4px;margin-inline-start:var(--book-gap,2px)}
.genre-section .book-line:first-child{margin-inline-start:0}

.intro-details{display:flex;align-items:flex-start;gap:28px}.intro-photo{display:block;flex:0 0 100px;width:100px;height:100px;margin-top:8px}.intro-details p{margin:0}
@media(max-width:540px){.intro-details{display:flow-root}.intro-photo{float:left;width:72px;height:72px;margin:7px 18px 8px 0}}
