*,:before,:after{box-sizing:border-box}:root{--bg:#1b1612;--shelf:#5a3d26;--text:#f3ebe0;color:var(--text);background:var(--bg);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}html,body,#root{height:100%}body{margin:0}button{font:inherit;cursor:pointer}img{max-width:100%;display:block}.shelf-row{border-left:10px solid var(--shelf);border-right:10px solid var(--shelf);border-bottom:16px solid var(--shelf);background:#120e0b;align-items:flex-end;min-height:220px;padding:10px 10px 0 0;display:flex}.book{-webkit-user-select:none;user-select:none;touch-action:none;cursor:grab;flex-shrink:0;width:40px;height:180px;padding:10px;overflow:hidden}.book-title{writing-mode:vertical-rl;text-overflow:ellipsis;white-space:nowrap;height:100%;display:block;overflow:hidden;transform:rotate(180deg)}.shelf-grid{grid-template-columns:repeat(auto-fill,minmax(500px,1fr));display:grid}.shelf-row.mini{overflow:hidden}.shelf-row.mini .book{cursor:pointer}.shelf-row.full{background:repeating-linear-gradient(to bottom, transparent 0, transparent 204px, var(--shelf) 204px, var(--shelf) 220px), #120e0b;border-bottom:none;flex-wrap:wrap;align-content:flex-start;row-gap:40px;padding:24px 10px 16px 0}.shelf-header{justify-content:space-between;align-items:baseline;display:flex}.more-label{opacity:.7;margin-right:5px;font-size:.8rem}.modal-backdrop{z-index:100;background:#0009;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{border:2px solid var(--shelf);background:#2a2019;border-radius:8px;flex-direction:column;gap:1rem;min-width:300px;padding:1.5rem;display:flex}.modal input{font:inherit;padding:.5rem}.modal-buttons{justify-content:flex-end;gap:.5rem;display:flex}.book-preview{flex-direction:column;align-items:center;gap:1.25rem;animation:.25s ease-out book-pop;display:flex}.book-preview-cover{border-radius:3px 8px 8px 3px;flex-direction:column;justify-content:space-between;width:260px;height:380px;padding:1.25rem;display:flex;overflow:hidden;box-shadow:inset 8px 0 8px -6px #00000080,0 20px 40px #0009}.book-preview-cover img{object-fit:cover;width:100%;height:100%}.book-preview-cover.has-image{padding:0}.welcome{max-width:560px;margin:3rem auto;padding:0 1rem;line-height:1.6}.welcome-note{opacity:.7;font-size:.9rem}@keyframes book-pop{0%{opacity:0;transform:translateY(40px)scale(.85)}to{opacity:1;transform:translateY(0)scale(1)}}
