.book-library__loading{display:flex;align-items:center;justify-content:center;padding:3rem 0}.book-library__spinner{width:3rem;height:3rem;border:2px solid transparent;border-bottom:2px solid var(--black);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.book-library__header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem}.book-library__title{font-size:2.25rem;font-weight:700;color:var(--black)}.book-library__controls{display:flex;align-items:center;gap:1.5rem}.book-library__checkbox-label{display:flex;align-items:center;gap:.5rem;font-size:.875rem;color:var(--gray-500);cursor:pointer}.book-library__checkbox{width:1rem;height:1rem;color:var(--primary);border-color:#d1d5db;border-radius:.25rem;accent-color:var(--primary)}.book-library__checkbox:focus{ring:2px;ring-color:var(--primary)}.book-library__jobs{margin-bottom:2rem}.book-library__jobs-list{display:flex;flex-direction:column;gap:1rem}.book-library__job{background-color:var(--white);border-radius:.5rem;padding:1.5rem;box-shadow:0 1px 3px 0 rgba(0,0,0,.1)}.book-library__job--failed{border-color:#fca5a5}.book-library__job-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:.75rem}.book-library__job-info{flex:1}.book-library__job-title{font-weight:600;color:var(--black);font-size:1.125rem;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.book-library__job-meta{font-size:.875rem;color:var(--gray-500);margin-top:.25rem}.book-library__job-status{font-size:.75rem;font-weight:600;margin-left:1.5rem;padding:.25rem .75rem;border-radius:9999px;text-transform:uppercase;letter-spacing:.025em}.book-library__job-status--pending{color:#854d0e;background-color:#fef3c7}.book-library__job-status--in-progress{color:#9a3412;background-color:#fed7aa}.book-library__job-status--failed{color:#991b1b;background-color:#fecaca}.book-library__job-status--success{color:#166534;background-color:#bbf7d0}.book-library__progress-wrapper{margin-bottom:.5rem}.book-library__progress-info{display:flex;justify-content:space-between;font-size:.875rem;color:var(--gray-500);margin-bottom:.25rem}.book-library__progress-bar{width:100%;background-color:#e5e7eb;border-radius:9999px;height:.625rem}.book-library__progress-fill{background-color:var(--primary);height:.625rem;border-radius:9999px;transition:width .5s}.book-library__error{margin-top:.75rem;padding:.75rem;background-color:#fef2f2;border:1px solid #fecaca;border-radius:.25rem}.book-library__error-text{font-size:.875rem;color:#b91c1c}.book-library__admin-debug{margin-top:.75rem;padding-top:.75rem;border-top:1px solid #e5e7eb}.book-library__debug-btn{font-size:.75rem;color:var(--primary);text-decoration:underline;background:none;border:none;cursor:pointer;padding:0}.book-library__debug-btn:hover{color:#3730a3}.book-library__debug-btn:disabled{opacity:.5;cursor:not-allowed}.book-library__books-title{font-size:1.5rem;font-weight:600;color:var(--black);margin-bottom:1rem}.book-library__books-list{display:flex;flex-direction:column;font-family:var(--font-serif)}.book-library__book{border-radius:.5rem;padding:1rem;transition:box-shadow .2s}.book-library__book:not(:last-child):after{content:"";display:block;height:1px;background:linear-gradient(to right,transparent 25%,var(--primary) 50%,transparent 75%);margin-top:1rem}.book-library__book--hidden{background-color:#f3f4f6}.book-library__book-title:hover{color:var(--primary)}.book-library__book-content{display:flex;gap:1rem;&:has(.book-library__book-title:hover) .book-library__book-cover{transform:rotate(-2deg)}&:has(.book-library__book-cover:hover) .book-library__book-title{color:var(--primary)}}.book-library__book-cover{flex-shrink:0;cursor:pointer;transform-origin:left center;transition:transform .3s ease;&:hover{transform:rotate(-2deg)}}.book-library__book-details{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:space-between}.book-library__book-header{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem}.book-library__book-title-wrapper{cursor:pointer;flex:1;min-width:0}.book-library__book-title{font-weight:600;color:var(--black);font-size:1.125rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:all .3s}.book-library__book-date{font-size:.875rem;color:var(--gray-500);flex-shrink:0;margin-top:.25rem}.book-library__book-metadata{font-size:.875rem;color:var(--gray-500);display:flex;flex-direction:column;gap:.25rem;margin-top:.5rem}.book-library__book-actions{display:flex;align-items:center;gap:.75rem;margin-top:.75rem}.book-library__book-spacer{flex:1}.book-library__action-btn{font-size:.75rem;padding:.25rem .75rem;border-radius:.25rem;border:1px solid;transition:all .2s;background:white;cursor:pointer}.book-library__action-btn--hide{color:var(--gray-500);border-color:#d1d5db}.book-library__action-btn--hide:hover{color:var(--black);background-color:#f9fafb}.book-library__action-btn--delete{color:#dc2626;border-color:#fca5a5}.book-library__action-btn--delete:hover{color:#991b1b;background-color:#fef2f2}.book-library__empty{text-align:center;padding:3rem 0}.book-library__empty-text{color:var(--gray-500);font-size:1.125rem}.book-library__empty-subtext{color:var(--gray-500);font-size:.875rem;margin-top:.5rem}.book-library__modal-overlay{position:fixed;inset:0;background-color:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;z-index:50}.book-library__modal{background-color:var(--white);border-radius:.5rem;padding:1.5rem;max-width:42rem;width:100%;margin:0 1rem;max-height:80vh;overflow-y:auto}.book-library__modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.book-library__modal-title{font-size:1.25rem;font-weight:600;color:var(--black)}.book-library__modal-close{color:var(--gray-500);font-size:1.5rem;background:none;border:none;cursor:pointer;padding:0;line-height:1}.book-library__modal-close:hover{color:var(--black)}.book-library__modal-content{display:flex;flex-direction:column;gap:1rem}.book-library__modal-section-title{font-weight:600;color:var(--black);margin-bottom:.5rem}.book-library__modal-section-title--error{color:#dc2626}.book-library__modal-details,.book-library__modal-logs{background-color:#f9fafb;border-radius:.25rem;padding:1rem;display:flex;flex-direction:column;gap:.5rem;font-size:.875rem;color:var(--black)}.book-library__modal-logs{max-height:24rem;overflow-y:auto}.book-library__log-entry{padding-bottom:.5rem;border-bottom:1px solid #e5e7eb}.book-library__log-entry:last-child{border-bottom:none}.book-library__log-timestamp{font-size:.75rem;color:var(--gray-500)}.book-library__log-message{margin-top:.25rem}.book-library__log-empty{color:var(--gray-500)}.book-library__modal-params{background-color:#f9fafb;border-radius:.25rem;padding:1rem;font-size:.875rem;color:var(--black)}.book-library__modal-params pre{white-space:pre-wrap;word-wrap:break-word}.book-library__modal-error-box{background-color:#fef2f2;border:1px solid #fecaca;border-radius:.25rem;padding:1rem;font-size:.875rem;color:#b91c1c}