:root{--wall:#ede3d1;--wall-stripe:#e5d9c3;--ink:#2b1d14;--muted:#6b5646;--accent:#8c3b2a;--frame-light:#7a4b2c;--frame-dark:#4a2c19;--back:#3a2416;--back-seam:#2c1a0f;--plank-top:#c18a5a;--plank:#96613a;--plank-low:#7c4e2d;--plank-edge:#4f301b;--brass-light:#f1d58c;--brass:#c9a04e;--brass-dark:#8e6b26;--brass-ink:#3d2b0c;--paper:#fbf6ea;--paper-line:#d9cdb4;--cover-w:112px;--cover-h:168px;--head:30px;--plank-h:30px;--row:calc(var(--head) + var(--cover-h) + var(--plank-h));--slot-w:calc(var(--cover-w) + 34px);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--wall:#1c211d;--wall-stripe:#20261f;--ink:#f1e7d6;--muted:#b9a891;--accent:#e39a7e;--back:#26170e;--back-seam:#1b0f08;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--wall:#1c211d;--wall-stripe:#20261f;--ink:#f1e7d6;--muted:#b9a891;--accent:#e39a7e;--back:#26170e;--back-seam:#1b0f08;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@media (width>=640px){:root{--cover-w:146px;--cover-h:219px;--head:36px;--plank-h:32px;--slot-w:calc(var(--cover-w) + 44px)}}*,:before,:after{box-sizing:border-box}html,body{margin:0}body{background:repeating-linear-gradient(90deg, var(--wall) 0 46px, var(--wall-stripe) 46px 50px), var(--wall);min-height:100vh;color:var(--ink);padding:env(safe-area-inset-top,0px) 16px calc(2rem + env(safe-area-inset-bottom,0px));-webkit-font-smoothing:antialiased;font-family:Nunito,Segoe UI,system-ui,sans-serif;font-size:1.0625rem;line-height:1.55}.masthead{text-align:center;max-width:40rem;margin:0 auto;padding:clamp(2rem,7vh,4rem) 0 1.5rem}.eyebrow{color:var(--accent);letter-spacing:.12em;text-transform:uppercase;margin:0 0 .4rem;font-size:.85rem;font-weight:700}h1{font-optical-sizing:auto;letter-spacing:-.02em;margin:0 0 .6rem;font-family:Fraunces,Georgia,serif;font-size:clamp(2.6rem,11vw,4.2rem);font-weight:600;line-height:1}.lede{max-width:32rem;color:var(--muted);margin:0 auto;font-size:1.1rem}.ledge{flex-wrap:wrap;justify-content:center;align-items:flex-end;column-gap:14px;max-width:36rem;margin:0 auto;padding:0 18px 16px;display:flex;position:relative}.ledge:after{content:"";background:repeating-linear-gradient(90deg, #ffffff0a 0 2px, transparent 2px 13px, #0000000f 13px 15px, transparent 15px 31px), linear-gradient(180deg, var(--plank-top) 0 3px, var(--plank) 3px, var(--plank-low) 12px, var(--plank-edge) 12px);border-radius:2px;height:16px;position:absolute;bottom:0;left:0;right:0;box-shadow:0 10px 14px -8px #1e0f05b3}.book-select{z-index:2;flex:15rem;max-width:17rem;position:relative}.book-select:nth-child(2){margin-left:10px}.book-select.open{z-index:10}@media (width<=560px){.ledge{flex-direction:column-reverse;align-items:center}.book-select{flex:none;width:min(100%,17rem)}.book-select:first-child{width:min(100% - 10px,16.2rem)}.book-select:nth-child(2){margin-left:0}}.spine{--cloth:#7a2e2e;--foil:#e8c877;width:100%;height:56px;font:inherit;text-align:left;color:var(--foil);background: linear-gradient(90deg, var(--foil) 0 2px, transparent 2px 5px, var(--foil) 5px 6px) left 12px top 0 / 6px 100% no-repeat, linear-gradient(90deg, var(--foil) 0 1px, transparent 1px 4px, var(--foil) 4px 6px) right 12px top 0 / 6px 100% no-repeat,  linear-gradient(180deg, #ffffff38 0, #ffffff0f 22%, transparent 45%, #0000004d 100%),  repeating-linear-gradient(0deg, #ffffff0b 0 1px, transparent 1px 3px), repeating-linear-gradient(90deg, #00000012 0 1px, transparent 1px 3px), var(--cloth);cursor:pointer;border:0;border-radius:5px/12px;align-items:center;padding:0 44px 0 104px;transition:transform .2s;display:flex;position:relative;box-shadow:inset 0 0 0 1px #00000040,0 3px 4px -1px #00000073}.book-select:nth-child(2) .spine{--cloth:#2f4b6e}.spine:hover{transform:translateY(-2px)}.spine:focus-visible{outline:3px solid var(--accent);outline-offset:3px}.spine-value{text-overflow:ellipsis;white-space:nowrap;text-shadow:0 1px #00000073,0 0 6px #e8c87740;flex:1;min-width:0;font:italic 400 1.15rem/1 Fraunces,Georgia,serif;overflow:hidden}.spine-caret{border-right:2px solid var(--foil,#e8c877);border-bottom:2px solid var(--foil,#e8c877);width:8px;height:8px;margin-top:-6px;transition:transform .2s,margin-top .2s;position:absolute;top:50%;right:26px;transform:rotate(45deg)}.open .spine-caret{margin-top:-2px;transform:rotate(-135deg)}.spine-label{z-index:1;text-align:center;letter-spacing:.16em;text-transform:uppercase;color:#e8c877;pointer-events:none;background:linear-gradient(#3a2516,#24160c);border-radius:2px;width:66px;padding:5px 0;font-size:.68rem;font-weight:700;position:absolute;top:50%;left:26px;transform:translateY(-50%);box-shadow:inset 0 0 0 1px #e8c87799,inset 0 0 0 3px #2e1d11,inset 0 0 0 4px #e8c87759}.page{color:#2b1d14;transform-origin:50% 0;background:linear-gradient(90deg,#785a321f,#0000 8% 92%,#785a321a),#fbf6ea;border-radius:2px 2px 4px 4px;min-width:13rem;padding:.9rem 1rem .75rem;animation:.22s ease-out unfold;position:absolute;top:calc(100% + 10px);left:6px;right:6px;box-shadow:0 1px #e6dcc6,0 2px #fbf6ea,0 3px #ddd1b8,0 18px 30px -10px #1e0f0599}@keyframes unfold{0%{opacity:0;transform:perspective(600px)rotateX(-55deg)}}.page-heading{text-align:center;color:#8c3b2a;letter-spacing:.04em;margin:0 0 .5rem;font:italic 400 .95rem Fraunces,Georgia,serif}.page-heading:before,.page-heading:after{content:"❧";opacity:.7;margin:0 .5em;font-style:normal}.page-heading:before{display:inline-block;transform:scaleX(-1)}.contents{outline:none;max-height:16rem;margin:0;padding:0;list-style:none;overflow-y:auto}.entry{cursor:pointer;border-radius:2px;align-items:baseline;gap:.4rem;padding:.38rem .5rem .38rem 1.4rem;font:400 1.02rem/1.3 Fraunces,Georgia,serif;display:flex;position:relative}.entry.active{background:#8c3b2a1a}.entry.none{color:#9a8a78}.leader{border-bottom:2px dotted #6b56468c;flex:1;transform:translateY(-.25em)}.entry-count{font-variant-numeric:oldstyle-nums;color:#6b5646}.entry[aria-selected=true]:before{content:"";clip-path:polygon(0 0,100% 0,100% 100%,50% 78%,0 100%);background:linear-gradient(90deg,#8c2a20,#b23a2c 60%,#8c2a20);width:.7rem;position:absolute;top:-.1rem;bottom:.25rem;left:.2rem}.entry[aria-selected=true] .entry-label{font-weight:600}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.count{text-align:center;color:var(--muted);margin:.9rem 0 1.4rem;font-size:.95rem;font-weight:600}.bookcase{background:linear-gradient(90deg, var(--frame-dark), var(--frame-light) 6%, var(--frame-light) 94%, var(--frame-dark));border-radius:6px 6px 3px 3px;max-width:1080px;margin:0 auto;padding:0 14px 16px;box-shadow:0 30px 50px -24px #1e0f05cc,0 2px #0003}@media (width>=640px){.bookcase{padding:0 22px 22px}}.rail{z-index:1;background:repeating-linear-gradient(90deg,#ffffff09 0 2px,#0000 2px 13px,#0000000f 13px 15px,#0000 15px 31px),linear-gradient(#8b5a36,#6a4024);border-radius:6px 6px 0 0;justify-content:center;align-items:center;height:34px;margin:0 -14px;display:flex;position:relative;box-shadow:inset 0 1px #fff3,0 3px 4px #00000059}.shelf+.shelf .rail{border-radius:0}@media (width>=640px){.rail{height:40px;margin:0 -22px}}.plaque{letter-spacing:.08em;color:var(--brass-ink);background:radial-gradient(circle at 7px 50%, var(--brass-dark) 0 1.6px, transparent 2.2px), radial-gradient(circle at calc(100% - 7px) 50%, var(--brass-dark) 0 1.6px, transparent 2.2px), linear-gradient(180deg, var(--brass-light), var(--brass) 55%, var(--brass-dark));text-shadow:0 1px #ffffff59;border-radius:3px;margin:0;padding:.1rem 1.1rem;font:600 1.05rem/1.4 Fraunces,Georgia,serif;box-shadow:inset 0 1px #fff9,0 1px 2px #00000080}.shelf-books{grid-template-columns:repeat(auto-fill, var(--slot-w));grid-auto-rows:var(--row);background:repeating-linear-gradient(180deg, #00000080 0, #0000 26px, transparent calc(var(--row) - var(--plank-h)), var(--plank-top) calc(var(--row) - var(--plank-h)), var(--plank-top) calc(var(--row) - var(--plank-h) + 4px), var(--plank) calc(var(--row) - var(--plank-h) + 4px), var(--plank-low) calc(var(--row) - 5px), var(--plank-edge) calc(var(--row) - 5px), var(--plank-edge) var(--row)), repeating-linear-gradient(90deg, transparent 0 118px, var(--back-seam) 118px 120px), repeating-linear-gradient(90deg, #ffffff06 0 3px, transparent 3px 17px), var(--back);justify-content:center;padding:0 4px;display:grid;box-shadow:inset 14px 0 18px -10px #000000b3,inset -14px 0 18px -10px #000000b3}.slot{padding-bottom:var(--plank-h);justify-content:center;align-items:flex-end;display:flex;position:relative}.slot:first-child:before,.slot:last-child:after{content:"";bottom:var(--plank-h);width:9px;height:calc(var(--cover-h) * .62);background:linear-gradient(90deg, var(--brass-dark), var(--brass-light) 45%, var(--brass) 70%, var(--brass-dark));border-radius:5px 5px 0 0;position:absolute;box-shadow:0 0 6px #00000080}.slot:first-child:before{left:4px}.slot:last-child:after{right:4px}@media (width>=640px){.slot:first-child:before{left:7px}.slot:last-child:after{right:7px}}.book{width:var(--cover-w);height:var(--cover-h);transform-origin:50% 100%;outline:none;transition:transform .25s cubic-bezier(.2,.8,.3,1.2);display:block;position:relative}.cover{background:#5b4636;border-radius:2px 5px 5px 2px;transition:box-shadow .25s;position:absolute;inset:0;overflow:hidden;box-shadow:2px 0 #f2ead7,3px 1px #d8ccb2,4px 1px #f2ead7,5px 2px #cfc2a6,0 12px 14px -8px #000c,8px 4px 14px -6px #0009}.cover:after{content:"";pointer-events:none;background:linear-gradient(90deg,#00000061 0,#fff3 3%,#00000024 6%,#0000 11%),linear-gradient(120deg,#ffffff29,#0000 38%);position:absolute;inset:0}.cover img{object-fit:cover;width:100%;height:100%;display:block}.book:hover,.book:focus-visible{transform:translateY(-12px)rotate(-2deg)}.book:hover .cover,.book:focus-visible .cover{box-shadow:2px 0 #f2ead7,3px 1px #d8ccb2,4px 1px #f2ead7,5px 2px #cfc2a6,0 26px 22px -12px #000000bf,10px 8px 20px -6px #0000008c}.book:focus-visible .cover{outline:3px solid var(--brass-light);outline-offset:4px}.book:active{transform:translateY(-6px)rotate(-1deg)}.cloth{text-align:center;color:#e8c877;background:repeating-linear-gradient(0deg, #ffffff0a 0 1px, transparent 1px 3px), repeating-linear-gradient(90deg, #0000000f 0 1px, transparent 1px 3px), var(--cloth);box-shadow:inset 0 0 0 6px var(--cloth), inset 0 0 0 7px #e8c877b3, inset 0 0 0 10px var(--cloth), inset 0 0 0 11px #e8c87773;flex-direction:column;justify-content:center;align-items:center;gap:.5rem;padding:14% 12%;display:flex;position:absolute;inset:0}.cloth-title{text-wrap:balance;font:600 clamp(.85rem,2.6vw,1.05rem)/1.2 Fraunces,Georgia,serif}.cloth-rule{opacity:.7;background:currentColor;width:30%;height:1px}.cloth-author{opacity:.9;font:italic 400 .75rem/1.2 Fraunces,Georgia,serif}.plate{left:50%;bottom:calc((var(--plank-h) - 1.25rem) / 2 + 2px);white-space:nowrap;letter-spacing:.1em;text-transform:uppercase;height:1.25rem;color:var(--brass-ink);background:linear-gradient(180deg, var(--brass-light), var(--brass) 55%, var(--brass-dark));pointer-events:none;border-radius:2px;align-items:center;padding:0 .6rem;font-size:.68rem;font-weight:700;display:flex;position:absolute;transform:translate(-50%);box-shadow:inset 0 1px #ffffff8c,0 1px 1px #00000073}.shelf.empty .shelf-books{grid-template-columns:1fr}.note{margin-bottom:calc(var(--plank-h) / 2);text-align:center;color:#2b1d14;background:repeating-linear-gradient(180deg, transparent 0 23px, var(--paper-line) 23px 24px), var(--paper);border-radius:2px;place-self:center;max-width:17rem;padding:1.1rem 1.4rem 1.2rem;font-family:Fraunces,Georgia,serif;transform:rotate(-1.5deg);box-shadow:0 10px 18px -8px #000000b3}.note p{margin:0 0 .8rem;font-size:1.1rem;font-style:italic}.show-all{color:#fbf6ea;cursor:pointer;background:#8c3b2a;border:0;border-radius:99px;padding:.5rem 1rem;font:700 .95rem Nunito,system-ui,sans-serif}.show-all:focus-visible{outline:3px solid var(--brass);outline-offset:3px}.footer{text-align:center;color:var(--muted);margin-top:2rem;font-size:.9rem}@media (prefers-reduced-motion:reduce){.book,.cover,.spine,.spine-caret{transition:none}.page{animation:none}.book:hover,.book:focus-visible,.book:active{transform:none}}
