@import "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap";:root{--primary:#4f46e5;--primary-hover:#4338ca;--bg-main:#f8fafc;--bg-card:#fff;--text-main:#0f172a;--text-muted:#64748b;--border-color:#e2e8f0;--shadow-sm:0 1px 2px 0 #0000000d;--shadow-md:0 4px 6px -1px #0000001a;--shadow-lg:0 10px 15px -3px #0000001a;--accent:#f5f3ff}*{box-sizing:border-box;margin:0;padding:0;font-family:Inter,system-ui,sans-serif}body{background:var(--bg-main);color:var(--text-main);min-height:100vh;line-height:1.5;overflow-x:hidden}button,input,select,textarea{font:inherit}.modal-glow{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 20px 50px #4f46e51f,0 0 0 1px #4f46e50d}.animate-fade{animation:.4s cubic-bezier(.16,1,.3,1) forwards fadeIn}@keyframes fadeIn{0%{opacity:0;transform:translateY(15px)}to{opacity:1;transform:translateY(0)}}.navbar{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border-color);z-index:100;background:#ffffffd9;position:sticky;top:0}.main-content{padding:2.5rem 2rem}.nav-text-btn{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:.75rem;padding:.5rem .75rem;font-size:.95rem;font-weight:700;transition:all .2s}.nav-text-btn:hover{color:var(--text-main);background:#f1f5f9}.nav-text-btn.active{color:var(--primary)}.genre-pill{border:1px solid var(--border-color);color:#475569;cursor:pointer;white-space:nowrap;background:#f8fafc;border-radius:2rem;padding:.35rem 1rem;font-size:.8rem;font-weight:700;transition:all .2s}.genre-pill:hover{color:var(--text-main);background:#e2e8f0}.genre-pill.active{background:var(--primary);border-color:var(--primary);color:#fff;box-shadow:0 4px 10px #4f46e533}.hide-scrollbar::-webkit-scrollbar{display:none}.hide-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.025em;margin-bottom:.35rem;font-size:.75rem;font-weight:700;display:block}.label-small{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.35rem;font-size:.7rem;font-weight:800;display:block}.input-field{border:1px solid var(--border-color);background:#fff;border-radius:.75rem;outline:none;width:100%;padding:.65rem 1rem;font-size:.9rem;font-weight:500;transition:all .2s}.input-field:focus{border-color:var(--primary);box-shadow:0 0 0 4px #4f46e514}.btn-primary{background:var(--primary);color:#fff;cursor:pointer;border:none;border-radius:.85rem;justify-content:center;align-items:center;gap:.5rem;padding:.75rem 1.5rem;font-weight:700;transition:all .2s;display:inline-flex}.btn-primary:hover{background:var(--primary-hover);transform:translateY(-1px);box-shadow:0 10px 20px #4f46e533}.btn-secondary{color:var(--text-main);cursor:pointer;background:#f1f5f9;border:none;border-radius:.85rem;padding:.75rem 1.25rem;font-weight:600;transition:all .2s}.btn-ghost{color:var(--text-muted);border:1px solid var(--border-color);cursor:pointer;background:0 0;border-radius:.85rem;justify-content:center;align-items:center;padding:.6rem;transition:all .2s;display:flex}.btn-ghost:hover{color:var(--text-main);background:#f1f5f9}.btn-tab{cursor:pointer;color:var(--text-muted);background:0 0;border:none;border-radius:.6rem;padding:.5rem 1rem;font-weight:700;transition:all .2s}.btn-tab.active{color:var(--primary);box-shadow:var(--shadow-sm);background:#fff}.book-tags{border:1px solid var(--border-color);background:#fcfcfd;border-radius:.75rem;flex-wrap:wrap;gap:.35rem;min-height:42px;padding:.35rem;display:flex}.tag{background:var(--accent);color:var(--primary);border-radius:.4rem;align-items:center;gap:.25rem;padding:.2rem .5rem;font-size:.8rem;font-weight:600;display:flex}.tag svg{cursor:pointer;opacity:.6;transition:opacity .2s}.tag svg:hover{opacity:1}.tag-input{background:0 0;border:none;outline:none;flex:1;min-width:80px;padding:.15rem;font-size:.85rem}.search-bar-container{flex:1;max-width:500px;position:relative}.search-icon{color:var(--text-muted);position:absolute;top:50%;left:1rem;transform:translateY(-50%)}.search-input{background:#f1f5f9;border:1px solid #0000;border-radius:.85rem;outline:none;width:100%;padding:.7rem 1rem .7rem 3rem;font-size:.95rem;font-weight:500;transition:all .2s}.search-input:focus{border-color:var(--border-color);background:#fff;box-shadow:0 4px 12px #00000008}.custom-select-container{position:relative}.custom-options{border:1px solid var(--border-color);z-index:100;background:#fffffffa;border-radius:.75rem;flex-direction:column;gap:.1rem;min-width:220px;padding:.4rem;display:flex;position:absolute;top:calc(100% + .5rem);left:0}.custom-options div{cursor:pointer;color:var(--text-main);border-radius:.5rem;padding:.6rem .85rem;font-size:.85rem;font-weight:600;transition:all .2s}.custom-options div:hover,.custom-options div.selected{background:var(--primary);color:#fff}.sort-label-short{display:none}.filter-count{background:var(--primary);color:#fff;border-radius:999px;justify-content:center;align-items:center;min-width:1.25rem;height:1.25rem;padding:0 .35rem;font-size:.72rem;font-weight:800;line-height:1;display:inline-flex}.shelf-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:2rem;display:grid}.grouped-library{flex-direction:column;gap:1.5rem;display:flex}.book-row-section{border-bottom:1px solid var(--border-color);flex-direction:column;gap:.85rem;padding-bottom:1.5rem;display:flex}.book-row-header{justify-content:space-between;align-items:center;gap:1rem;padding-top:.15rem;display:flex}.book-row-header h3{color:var(--text-main);overflow-wrap:anywhere;margin:0;font-size:1.05rem;font-weight:800;line-height:1.25}.book-row-header span{color:var(--text-muted);margin-top:.35rem;font-size:.8rem;font-weight:700;display:inline-flex}.shelf-actions{flex-shrink:0;gap:.35rem;display:flex}.shelf-action-btn{border:1px solid var(--border-color);color:var(--text-muted);cursor:pointer;background:#fff;border-radius:.6rem;justify-content:center;align-items:center;width:34px;height:34px;transition:all .2s;display:inline-flex}.shelf-action-btn:hover,.shelf-action-btn.primary{background:var(--primary);border-color:var(--primary);color:#fff}.shelf-action-btn.danger:hover{color:#fff;background:#ef4444;border-color:#ef4444}.book-row-slider{grid-template-columns:38px minmax(0,1fr) 38px;align-items:stretch;gap:.5rem;display:grid}.row-arrow{border:1px solid var(--border-color);color:var(--primary);cursor:pointer;z-index:2;background:#fff;border-radius:999px;justify-content:center;align-self:center;align-items:center;width:38px;height:38px;transition:all .2s;display:inline-flex}.row-arrow:hover{background:var(--primary);color:#fff;box-shadow:var(--shadow-md)}.row-arrow.right svg{transform:rotate(180deg)}.book-row-scroll{overscroll-behavior-x:contain;scrollbar-width:thin;scroll-snap-type:x proximity;touch-action:pan-x;-webkit-overflow-scrolling:touch;grid-auto-columns:170px;grid-auto-flow:column;gap:1rem;padding:.25rem .25rem 1rem;display:grid;overflow-x:auto}.book-cell{scroll-snap-align:start;min-width:170px}.shelf-add-modal{background:#fff;border-radius:1.25rem;flex-direction:column;width:100%;max-width:640px;max-height:82vh;padding:2rem;display:flex}.modal-subtitle{color:var(--text-muted);margin-top:.2rem;font-size:.9rem;font-weight:700}.shelf-add-search{width:100%;max-width:none;margin-bottom:1rem}.shelf-candidate-list{border:1px solid var(--border-color);border-radius:.9rem;flex:1;min-height:260px;overflow-y:auto}.shelf-candidate-row{border-bottom:1px solid var(--border-color);cursor:pointer;grid-template-columns:20px 1fr;align-items:center;gap:.8rem;padding:.85rem 1rem;display:grid}.shelf-candidate-row:last-child{border-bottom:none}.shelf-candidate-row:hover{background:#f8fafc}.shelf-candidate-row input{accent-color:var(--primary);width:18px;height:18px}.shelf-candidate-row strong{color:var(--text-main);font-size:.95rem;display:block}.shelf-candidate-row span{color:var(--text-muted);margin-top:.1rem;font-size:.82rem;font-weight:600;display:block}.empty-candidate-list{color:var(--text-muted);flex-direction:column;justify-content:center;align-items:center;gap:.75rem;height:260px;display:flex}.shelf-add-footer{justify-content:space-between;align-items:center;padding-top:1rem;display:flex}.shelf-add-footer span{color:var(--text-muted);font-size:.9rem;font-weight:800}.shelf-add-footer .btn-primary:disabled{cursor:not-allowed;opacity:.45;transform:none}.folder-card{cursor:pointer;border:1px solid var(--border-color);background:#fff;border-radius:1.25rem;align-items:center;gap:1.25rem;padding:1.5rem;transition:all .3s;display:flex}.folder-card:hover{border-color:var(--primary);transform:translateY(-4px);box-shadow:0 12px 30px #0000000f}.folder-icon-wrapper{background:var(--accent);border-radius:1rem;justify-content:center;align-items:center;width:56px;height:56px;display:flex}.folder-info h3{margin-bottom:.15rem;font-size:1rem;font-weight:800}.folder-info p{color:var(--text-muted);margin-bottom:.15rem;font-size:.78rem;font-weight:700}.folder-info span{color:var(--text-muted);font-size:.8rem;font-weight:500}.book-card-small{border:1px solid var(--border-color);cursor:pointer;background:#fff;border-radius:1.25rem;flex-direction:column;padding:.85rem;transition:all .4s cubic-bezier(.165,.84,.44,1);display:flex}.book-card-small:hover{border-color:var(--primary);transform:translateY(-6px);box-shadow:0 20px 40px #00000014}.book-cover-wrapper{aspect-ratio:2/3;background:#f1f5f9;border-radius:.85rem;width:100%;position:relative;overflow:hidden}.book-overlay-top{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);color:#fff;z-index:2;background:#0f172acc;border-radius:.4rem;align-items:center;gap:.2rem;padding:.2rem .4rem;font-size:.7rem;font-weight:700;display:flex;position:absolute;top:.5rem;right:.5rem}.book-status-badge{color:#fff;z-index:2;text-transform:uppercase;letter-spacing:.05em;border-radius:.4rem;padding:.2rem .5rem;font-size:.65rem;font-weight:800;position:absolute;top:.5rem;left:.5rem}.book-status-badge.read{background:#10b981}.book-status-badge.reading{background:var(--primary)}.book-cover-wrapper img{object-fit:cover;width:100%;height:100%;transition:transform .3s}.book-card-small:hover .book-cover-wrapper img{transform:scale(1.05)}.book-details-small{padding-top:1rem}.book-details-small h4{white-space:nowrap;text-overflow:ellipsis;margin-bottom:.25rem;font-size:.95rem;font-weight:800;overflow:hidden}.book-details-small p{color:var(--text-muted);height:1.2rem;margin-bottom:.25rem;font-size:.8rem;font-weight:600;overflow:hidden}.book-meta-small{color:var(--text-muted);opacity:.8;gap:.35rem;margin-bottom:.5rem;font-size:.72rem;font-weight:600;display:flex}.progress-container{background:#f1f5f9;border-radius:10px;align-items:center;width:100%;height:6px;display:flex;position:relative;overflow:hidden}.progress-bar{background:var(--primary);border-radius:10px;height:100%;transition:width .5s}.progress-text{color:var(--primary);font-size:.7rem;font-weight:800;position:absolute;top:-14px;right:0}.context-menu{z-index:1000;border:1px solid var(--border-color);background:#fffffff2;border-radius:.75rem;flex-direction:column;gap:.1rem;min-width:220px;padding:.4rem;display:flex;position:fixed}.context-menu button{text-align:left;cursor:pointer;width:100%;color:var(--text-main);background:0 0;border:none;border-radius:.5rem;align-items:center;gap:.75rem;padding:.6rem .85rem;font-size:.85rem;font-weight:600;transition:all .2s;display:flex}.context-menu button:hover{background:var(--accent);color:var(--primary)}.context-submenu{min-width:180px;box-shadow:var(--shadow-lg);border:1px solid var(--border-color);background:#fffffffa;border-radius:.75rem;flex-direction:column;gap:.1rem;padding:.4rem;display:flex;position:absolute}.modal-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1000;background:#0f172a99;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.confirm-overlay{z-index:1300}.confirm-dialog{background:#fff;border-radius:1.1rem;gap:1rem;width:min(100%,430px);max-width:430px;padding:1.4rem;display:grid}.confirm-icon{color:#dc2626;background:#fee2e2;border-radius:999px;justify-content:center;align-items:center;width:46px;height:46px;display:inline-flex}.confirm-content h3{color:#0f172a;margin-bottom:.45rem;font-size:1.25rem;font-weight:800}.confirm-content p{color:var(--text-muted);font-size:.95rem;line-height:1.55}.confirm-error{color:#b91c1c;background:#fef2f2;border:1px solid #fecaca;border-radius:.75rem;margin-top:.85rem;padding:.7rem .8rem;font-size:.86rem;font-weight:700}.confirm-actions{justify-content:flex-end;gap:.75rem;margin-top:.2rem;display:flex}.confirm-actions .btn-ghost,.confirm-actions .btn-primary{min-height:44px;padding:.75rem 1rem}.danger-confirm{background:#dc2626}.danger-confirm:hover{background:#b91c1c;box-shadow:0 10px 20px #dc262633}.confirm-actions button:disabled{cursor:wait;opacity:.72;transform:none}.modal-split{background:#fff;border-radius:1.25rem;width:100%;max-width:1250px;max-height:92vh;display:flex;overflow:hidden;box-shadow:0 25px 50px -12px #00000040}.modal-left{background:#f8fafc;flex-direction:column;flex-shrink:0;width:380px;display:flex}.modal-left.upload-mode{justify-content:center;align-items:center;padding:2rem}.modal-left.view-mode{background:#0f172a;padding:0}.modal-left.view-mode img{object-fit:cover;width:100%;height:100%}.cover-upload-area{aspect-ratio:2/3;border:2px dashed var(--border-color);cursor:pointer;background:#fff;border-radius:1rem;flex-direction:column;justify-content:center;align-items:center;width:100%;transition:all .2s;display:flex;overflow:hidden}.cover-upload-area:hover{border-color:var(--primary);background:var(--accent)}.modal-right{background:#fff;flex-direction:column;flex:1;padding:2rem 2.5rem;display:flex;overflow-y:auto}.modal-header{justify-content:space-between;align-items:flex-start;margin-bottom:1.5rem;display:flex}.modal-header h2{color:#0f172a;margin:0;font-size:1.6rem;font-weight:800}.modal-form-grid{grid-template-columns:1fr 1fr;gap:1.5rem;display:grid}.form-col{flex-direction:column;gap:1rem;display:flex}.form-row{grid-template-columns:1fr 1fr;gap:1rem;display:grid}.notes-block{background:#f8fafc;border:1px solid #e2e8f0;border-radius:1rem;flex-direction:column;gap:.5rem;padding:1.25rem;display:flex}.notes-block p{color:#334155;margin:0;font-size:.95rem;line-height:1.5}.notes-block span.strong{color:#0f172a;font-weight:700}.status-badge{background:var(--primary);color:#fff;text-transform:uppercase;letter-spacing:.05em;border-radius:.4rem;padding:.25rem .6rem;font-size:.75rem;font-weight:800;display:inline-flex}.status-badge.bought-true{background:#10b981}.status-badge.bought-false{background:#ef4444}.login-screen{background:#f1f5f9;place-items:center;height:100vh;display:grid}.login-box{background:#fff;border-radius:2.5rem;width:100%;max-width:440px;padding:3.5rem}.mobile-bottom-nav,.mobile-fab{display:none}@media (width<=760px){body{padding-bottom:86px}.navbar{gap:.8rem!important;padding:.75rem .85rem .5rem!important}.navbar-main{align-items:flex-start!important;gap:.75rem!important}.navbar-main>div:first-child{flex:none}.navbar-main>div:first-child span:last-child{display:none}.desktop-tabs{display:none!important}.search-bar-container{order:3;width:100%;flex:100%!important;max-width:none!important}.search-input{border-radius:.75rem;min-height:44px}.genre-filter-bar{scrollbar-width:none;overflow-x:auto;flex-wrap:nowrap!important;gap:.45rem!important;width:calc(100% + 1.7rem)!important;max-width:none!important;margin:0 -.85rem!important;padding:0 .85rem .35rem!important}.genre-filter-bar::-webkit-scrollbar{display:none}.genre-pill{flex:none;min-height:36px;padding:.4rem .85rem}.main-content{padding:1.1rem .85rem 1.5rem}.page-toolbar{flex-direction:column;gap:.85rem;align-items:stretch!important;margin-bottom:1.1rem!important}.page-title-block,.page-title-row{flex-wrap:wrap;width:100%;align-items:center!important;gap:.6rem!important}.page-title-row h2{line-height:1.2;font-size:1.35rem!important}.page-title-row .btn-secondary,.page-title-row .btn-primary{display:none}.page-tools{align-items:center;width:100%;gap:.65rem!important}.page-tools>.custom-select-container{flex:1 1 0;min-width:0}.page-tools .btn-ghost{width:100%;min-height:44px}.page-tools .sort-trigger,.page-tools .filter-trigger{white-space:nowrap;border-radius:.95rem;padding:.65rem .75rem;min-width:0!important}.page-tools .sort-trigger{justify-content:space-between!important}.page-tools .filter-trigger{flex:0 0 128px;gap:.4rem;width:auto}.sort-label-full{display:none}.sort-label-short{text-overflow:ellipsis;display:inline;overflow:hidden}.filter-trigger svg,.sort-trigger svg{flex:none}.page-tools .custom-options{z-index:1200;min-width:100%;left:0;right:auto}.shelf-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.85rem}.book-card-small{border-radius:.9rem;padding:.55rem}.book-card-small:hover{box-shadow:var(--shadow-sm);transform:none}.book-cover-wrapper{border-radius:.65rem}.book-details-small{padding-top:.65rem}.book-details-small h4{white-space:normal;-webkit-line-clamp:2;-webkit-box-orient:vertical;min-height:2.1em;font-size:.84rem;line-height:1.25;display:-webkit-box}.book-details-small p{height:1.1rem;font-size:.72rem}.book-meta-small{display:none}.book-row-section{gap:.75rem;padding-bottom:1.15rem}.book-row-header{flex-direction:column;align-items:flex-start;gap:.55rem}.book-row-header h3{font-size:1rem}.book-row-header span{margin-top:.2rem}.shelf-actions{width:100%;padding-bottom:.1rem;overflow-x:auto}.shelf-action-btn{width:40px;height:40px}.book-row-slider{grid-template-columns:minmax(0,1fr)}.book-row-scroll{scrollbar-width:none;grid-auto-columns:138px;gap:.75rem;margin:0 -.85rem;padding:.15rem .85rem .9rem;scroll-padding-inline:.85rem;overflow-x:auto}.book-row-scroll::-webkit-scrollbar{display:none}.row-arrow{display:none}.book-cell{min-width:138px}.modal-overlay{align-items:end;padding:0;display:flex}.modal-split,.shelf-add-modal,.confirm-dialog,.modal-glow.animate-fade[style*="max-width: 400px"],.modal-glow.animate-fade[style*="max-width: 500px"]{min-height:56vh;border-radius:1.1rem 1.1rem 0 0!important;width:100%!important;max-height:94vh!important}.confirm-dialog{max-width:none;min-height:auto;padding:1.25rem 1rem calc(1.25rem + env(safe-area-inset-bottom));gap:.9rem}.confirm-actions{flex-direction:column-reverse}.confirm-actions .btn-ghost,.confirm-actions .btn-primary{width:100%}.modal-split{flex-direction:column;overflow-y:auto}.modal-left{width:100%}.modal-left.upload-mode{padding:1rem}.modal-left.upload-mode .cover-upload-area{max-width:170px;max-height:240px}.modal-left.view-mode{height:280px}.modal-right{padding:1.1rem}.modal-header{gap:.8rem;margin-bottom:1rem}.modal-header h1{font-size:1.35rem!important}.modal-header h2{font-size:1.25rem}.modal-form-grid,.form-row{grid-template-columns:1fr}.input-field,.btn-primary,.btn-secondary,.btn-ghost{min-height:44px}.shelf-add-modal{padding:1.1rem}.shelf-candidate-list{min-height:300px}.shelf-candidate-row{min-height:58px}.shelf-add-footer{background:#fff;gap:.8rem;margin:0 -1.1rem -1.1rem;padding:.85rem 1.1rem 1.1rem;position:sticky;bottom:0}.shelf-add-footer .btn-primary{flex:1}.mobile-bottom-nav{border-top:1px solid var(--border-color);padding:.35rem .3rem calc(.35rem + env(safe-area-inset-bottom));z-index:900;background:#fffffff5;grid-template-columns:repeat(6,1fr);align-items:center;display:grid;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -10px 24px #0f172a14}.mobile-bottom-nav button{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:.7rem;flex-direction:column;justify-content:center;align-items:center;gap:.15rem;min-height:52px;font-size:.64rem;font-weight:800;display:flex}.mobile-bottom-nav button.active{background:var(--accent);color:var(--primary)}.mobile-fab{background:var(--primary);bottom:calc(76px + env(safe-area-inset-bottom));color:#fff;cursor:pointer;z-index:920;border:none;border-radius:999px;justify-content:center;align-items:center;width:56px;height:56px;display:inline-flex;position:fixed;right:1rem;box-shadow:0 12px 28px #4f46e559}.context-menu{max-width:calc(100vw - 1.5rem);right:.75rem;bottom:calc(72px + env(safe-area-inset-bottom));width:auto;top:auto!important;left:.75rem!important}.context-menu button{min-height:44px}.context-submenu{max-height:220px;bottom:100%;overflow-y:auto;top:auto!important;left:0!important}.login-screen{padding:1rem}.login-box{border-radius:1.25rem;padding:2rem}}
