:root{--shelf-top-bg: linear-gradient( 90deg, #d6c9bd 0%, #ebe2d8 25%, #e1d6c8 50%, #eee4dc 75%, #d6c9bd 100% );--shelf-front-bg: linear-gradient(180deg, #b8a696 0%, #9f8c7c 100%);--shelf-shadow: 0 16px 28px -4px rgba(45, 30, 20, .18), 0 3px 8px rgba(0, 0, 0, .08);--book-rim-light: rgba(255, 255, 255, .4);--book-shadow-edge: rgba(0, 0, 0, .22);--book-floor-shadow-core: rgba(30, 20, 10, .4);--book-floor-shadow-blur: rgba(30, 20, 10, .15);--book-cover-shadow: -8px 10px 22px rgba(0, 0, 0, .25);--pages-edge: repeating-linear-gradient( to bottom, #fcfbf8, #fcfbf8 1.5px, #ebe4d5 2.5px, #f4eee2 3.5px );--pages-top: repeating-linear-gradient( to right, #fcfbf8, #fcfbf8 1.5px, #ebe4d5 2.5px, #f4eee2 3.5px );--pages-border: #ded3c0}[data-theme=dark]{--shelf-top-bg: linear-gradient( 90deg, #25252d 0%, #32323c 25%, #2a2a33 50%, #33333e 75%, #25252d 100% );--shelf-front-bg: linear-gradient(180deg, #202027 0%, #17171d 100%);--shelf-shadow: 0 20px 36px -2px rgba(0, 0, 0, .85), 0 6px 14px rgba(0, 0, 0, .65);--book-rim-light: rgba(255, 255, 255, .22);--book-shadow-edge: rgba(0, 0, 0, .7);--book-floor-shadow-core: rgba(0, 0, 0, .9);--book-floor-shadow-blur: rgba(0, 0, 0, .5);--book-cover-shadow: -12px 14px 30px rgba(0, 0, 0, .8);--pages-edge: repeating-linear-gradient( to bottom, #d3cdc2, #d3cdc2 1.5px, #beb6a8 2.5px, #c7c0b2 3.5px );--pages-top: repeating-linear-gradient( to right, #d3cdc2, #d3cdc2 1.5px, #beb6a8 2.5px, #c7c0b2 3.5px );--pages-border: #4d473e}.bookshelf-stage{position:relative;width:100%;box-sizing:border-box;perspective:1200px;perspective-origin:50% 40%;overflow:visible}.bookshelf-scroll{width:100%;overflow-x:auto;overflow-y:visible;white-space:nowrap;-webkit-overflow-scrolling:touch;scrollbar-width:none;-ms-overflow-style:none}.bookshelf-scroll::-webkit-scrollbar{display:none;width:0;height:0}.bookshelf-row{display:inline-flex;flex-direction:column;min-width:630px;width:-moz-max-content;width:max-content;position:relative;transform-style:preserve-3d}.bookshelf{display:flex;align-items:flex-end;gap:6px;padding:0 24px;transform-style:preserve-3d;min-height:235px;margin:0;position:relative;z-index:5}.shelf-plank{position:relative;width:100%;margin-top:-2px;transform-style:preserve-3d;z-index:2;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:none}.shelf-top{height:16px;background:var(--shelf-top-bg);border-radius:3px 3px 0 0;box-shadow:inset 0 1px 0 var(--book-rim-light),inset 0 -1px #0003;position:relative}.shelf-front{height:12px;background:var(--shelf-front-bg);border-radius:0 0 3px 3px;box-shadow:var(--shelf-shadow);border-top:1px solid rgba(255,255,255,.08);position:relative}.book{--b-width: 38.5px;--b-height: 216px;--b-depth: 146px;position:relative;width:var(--b-width);height:var(--b-height);transform-style:preserve-3d;transform-origin:0% 100% 0;transform:rotateY(0);z-index:5;transition:transform .36s cubic-bezier(.35,0,.25,1),margin-right .36s cubic-bezier(.35,0,.25,1),z-index 0s .36s;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-shrink:0;outline:none}.book:focus-visible{outline:2px solid var(--accent-color);outline-offset:4px;border-radius:4px}.book-shadow{position:absolute;bottom:0;left:0;width:var(--b-width);height:14px;border-radius:50%;background:radial-gradient(ellipse at center,var(--book-floor-shadow-core) 0%,var(--book-floor-shadow-blur) 50%,transparent 75%);transform-origin:center center;transform:translateY(7px) rotateX(90deg) translateZ(0);transition:transform .36s cubic-bezier(.35,0,.25,1),width .36s cubic-bezier(.35,0,.25,1),opacity .3s ease;pointer-events:none;z-index:1}.book.open{z-index:30;transform:rotateY(-90deg);margin-right:calc(var(--b-depth) - var(--b-width) + 12px);transition:transform .5s cubic-bezier(.25,1,.5,1),margin-right .5s cubic-bezier(.25,1,.5,1),z-index 0s}.book.open .book-shadow{width:var(--b-depth);transform:translateY(7px) rotateX(90deg) translateZ(0) translate(calc((var(--b-depth) - var(--b-width)) / 2));opacity:.85;transition:transform .5s cubic-bezier(.25,1,.5,1),width .5s cubic-bezier(.25,1,.5,1),opacity .4s ease}.side{position:absolute;box-sizing:border-box;transform-style:preserve-3d;will-change:transform}.side.spine{width:var(--b-width);height:var(--b-height);left:0;top:0;transform:translateZ(0);transform-origin:center center;border-radius:2px 0 0 2px;box-shadow:inset 1px 0 0 var(--book-rim-light),inset -1px 0 0 var(--book-shadow-edge),-2px 0 5px #00000024;display:flex;align-items:center;justify-content:center;overflow:hidden}.side.spine:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,#ffffff24,#ffffff40 24%,#ffffff0d 50%,#0000001a 80%,#00000061);pointer-events:none;z-index:2}.side.spine:after{content:"";position:absolute;left:0;right:0;top:3px;bottom:3px;border-top:2px solid rgba(220,185,105,.7);border-bottom:2px solid rgba(220,185,105,.7);pointer-events:none;z-index:3;opacity:.8}.spine-title{margin:0 auto;font-family:var(--font-subheader);font-size:11.5px;font-weight:700;letter-spacing:.05em;writing-mode:vertical-rl;text-orientation:mixed;display:flex;align-items:center;justify-content:center;height:82%;z-index:4;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;text-shadow:0 1px 2px rgba(0,0,0,.45)}.side.cover{width:var(--b-depth);height:var(--b-height);left:var(--b-width);top:0;transform-origin:left center;transform:rotateY(90deg);border-radius:0 3px 3px 0;background-size:cover;background-position:center;background-repeat:no-repeat;box-shadow:inset 4px 0 8px -2px #00000073,inset 0 0 0 1px var(--book-rim-light),var(--book-cover-shadow)}.side.cover:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:0 3px 3px 0;background:linear-gradient(115deg,rgba(255,255,255,.18) 0%,rgba(255,255,255,.05) 30%,transparent 52%,rgba(0,0,0,.14) 100%);pointer-events:none}.side.cover:after{content:"";position:absolute;left:6px;top:0;bottom:0;width:1px;background:#00000040;box-shadow:1px 0 #ffffff1a;pointer-events:none}.side.back{width:var(--b-depth);height:var(--b-height);left:0;top:0;transform-origin:left center;transform:rotateY(90deg);background-color:inherit;border-radius:0 3px 3px 0;box-shadow:inset 0 0 0 1px var(--book-rim-light),inset -4px 0 8px #0006}.side.top{width:var(--b-width);height:var(--b-depth);left:0;top:0;transform-origin:top center;transform:rotateX(-90deg);background:var(--pages-top);box-shadow:inset 0 3px 6px #0000002e,inset 1px 0 0 var(--book-rim-light);border:1px solid var(--pages-border)}.side.right{width:var(--b-width);height:var(--b-height);left:0;top:0;transform:translateZ(calc(-1 * var(--b-depth))) rotateY(180deg);background:var(--pages-edge);box-shadow:inset 0 0 8px #00000038;border:1px solid var(--pages-border)}.side.bottom{width:var(--b-width);height:var(--b-depth);left:0;bottom:0;transform-origin:bottom center;transform:rotateX(90deg);background:var(--pages-top);box-shadow:inset 0 0 8px #0000004d}.book-description{margin-top:1.5rem;margin-bottom:2.25rem;transition:opacity .25s ease}.book-description.fade-out{opacity:0}.book-heading{display:flex;align-items:baseline;flex-wrap:wrap;gap:.65rem;margin-bottom:.65rem}.book-heading #book-title{margin:0;font-family:var(--font-subheader);font-size:1.15rem;font-weight:700;color:var(--text-color);display:inline}.book-heading #book-desc{margin:0;font-family:var(--font-subheader);font-size:.95rem;color:var(--muted-color);display:inline}.book-description #book-notes{margin:0;font-family:var(--font-paragraph);font-size:1rem;line-height:1.5;text-align:justify;color:var(--text-color)}.book-notes-container{position:relative;overflow:hidden;transition:max-height .3s cubic-bezier(.25,1,.5,1)}.book-notes-container.is-collapsible:not(.is-expanded){max-height:7.5em}.book-notes-container.is-collapsible:not(.is-expanded) .book-notes-fade{display:block}.book-notes-fade{display:none;position:absolute;left:0;right:0;bottom:0;height:3.2em;background:linear-gradient(to bottom,rgba(255,255,255,0) 0%,var(--bg-color) 92%);pointer-events:none;transition:opacity .2s ease}.book-notes-toggle{display:inline-flex;align-items:center;justify-content:center;gap:.35rem;margin:.55rem auto 0;padding:4px 8px;background:none;border:none;cursor:pointer;color:var(--muted-color);font-family:var(--font-subheader);font-size:.88rem;font-weight:500;letter-spacing:.02em;transition:color .18s ease;width:100%;text-align:center}.book-notes-toggle:hover{color:var(--text-color)}.book-notes-toggle .toggle-arrow{display:inline-block;font-size:.72rem;transition:transform .25s cubic-bezier(.25,1,.5,1)}.book-notes-toggle[aria-expanded=true] .toggle-arrow{transform:rotate(180deg)}
