.library-toolbar{margin:1.2rem 0}.library-toolbar #library-search{width:100%;max-width:420px;padding:.6rem .9rem;border-radius:.5rem;border:1px solid rgba(128,128,128,.35);background:rgba(255,255,255,3%);color:inherit;font:inherit;box-sizing:border-box}.library-toolbar #library-search:focus{outline:none;border-color:#009e8f}.library-grid{display:grid;grid-template-columns:1fr;gap:1rem;margin:1.4rem 0}.library-card{display:flex;flex-direction:row;align-items:stretch;padding:.9rem;border:1px solid rgba(128,128,128,.22);border-radius:14px;background:rgba(255,255,255,2%);transition:border-color .18s ease,transform .18s ease,box-shadow .18s ease}.library-card:hover{border-color:rgba(0,158,143,.55);transform:translateY(-2px);box-shadow:0 10px 26px rgba(0,0,0,.18)}.library-cover{flex:0 0 132px;width:132px;aspect-ratio:2/3;display:flex;align-items:center;justify-content:center;padding:8px;border-radius:10px;background:linear-gradient(160deg,rgba(128,128,128,.16),rgba(128,128,128,5%));overflow:hidden}.library-cover img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;border-radius:4px;box-shadow:0 5px 14px rgba(0,0,0,.3);display:block}.library-meta{flex:1;min-width:0;display:flex;flex-direction:column;gap:.3rem;padding-left:1rem}.library-title{font-size:1.06rem;font-weight:600;line-height:1.35;margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.library-title a{color:inherit;text-decoration:none}.library-title a:hover{color:#009e8f}.library-author{font-size:.83rem;color:#9aa0a6}.library-desc{font-size:.84rem;color:#b8bdc2;line-height:1.6;flex:1;margin:.1rem 0 0;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.library-badges{display:flex;flex-wrap:wrap;gap:.35rem;margin:.1rem 0}.library-badge{font-size:.66rem;letter-spacing:.08em;text-transform:uppercase;padding:.1rem .4rem;border-radius:4px;border:1px solid rgba(0,158,143,.45);color:#009e8f;line-height:1.5}.library-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.55rem;margin-top:.55rem}.library-actions a,.book-actions a{font-size:.82rem;font-weight:500;padding:.4rem .95rem;border-radius:8px;text-decoration:none;border:1px solid rgba(0,158,143,.7);color:#009e8f;transition:background .15s ease,color .15s ease,opacity .15s ease}.library-actions a.btn-read,.book-actions a.btn-dl{background:#009e8f;color:#001b18;border-color:#009e8f}.library-actions a:hover,.book-actions a:hover{opacity:.9}.library-actions a.btn-dl:hover,.book-actions a:not(.btn-dl):hover{background:rgba(0,158,143,.12)}@media(max-width:560px){.library-card{flex-direction:column}.library-cover{flex:none;width:120px;margin:0 auto}.library-meta{padding-left:0;margin-top:.8rem}}.library-empty{text-align:center;color:#9aa0a6;padding:2rem 0}.library-book{margin:1.6rem 0}.book-header{margin-bottom:1.2rem}.book-hero{display:flex;gap:1.2rem;align-items:flex-start}.book-cover{flex:0 0 150px;width:150px;aspect-ratio:2/3;display:flex;align-items:center;justify-content:center;padding:8px;border-radius:10px;background:linear-gradient(160deg,rgba(128,128,128,.16),rgba(128,128,128,5%))}.book-cover img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;border-radius:4px;box-shadow:0 6px 18px rgba(0,0,0,.32);display:block}.book-info{flex:1;min-width:0}.book-info h1{margin:0 0 .35rem;line-height:1.3}.book-author{color:#9aa0a6;margin:.3rem 0}.book-desc{color:#b8bdc2;line-height:1.65}.book-actions{display:flex;flex-wrap:wrap;gap:.6rem;margin:.8rem 0 0}@media(max-width:560px){.book-hero{flex-direction:column}.book-cover{margin:0 auto}}.reader-epub,.reader-pdf{margin:1rem 0}.epub-controls{display:flex;gap:.5rem;margin-top:.6rem}.epub-controls button{font:inherit;font-size:.8rem;padding:.35rem .8rem;border-radius:.4rem;border:1px solid rgba(128,128,128,.4);background:0 0;color:inherit;cursor:pointer}.epub-controls button:hover{background:rgba(128,128,128,.15)}#epub-toc-list{list-style:none;padding:.6rem;margin:.6rem 0;border:1px solid rgba(128,128,128,.3);border-radius:.4rem}#epub-toc-list a{color:#009e8f;text-decoration:none}