.library-page{display:grid;grid-template-columns:minmax(220px,260px) 1fr;gap:var(--spacing-lg);max-width:1200px;margin:0 auto;padding:2rem 32px;width:100%;align-items:start}.library-sidebar{position:sticky;top:1rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--spacing-md);backdrop-filter:blur(var(--card-blur, 12px))}.library-sidebar-header{display:flex;flex-direction:column;gap:var(--spacing-sm);margin-bottom:var(--spacing-md)}.library-sidebar-title{font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);color:var(--text);margin:0}.library-sidebar-nav{display:flex;flex-direction:column;gap:6px;margin-bottom:var(--spacing-md)}.library-quick-nav,.library-subject-nav-item{display:flex;align-items:center;gap:8px;width:100%;text-align:left;padding:8px 10px;border-radius:var(--radius-sm);border:1px solid transparent;background:transparent;color:var(--text-secondary, var(--text-muted));font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);cursor:pointer;transition:background .15s,border-color .15s,color .15s}.library-quick-nav:hover,.library-subject-nav-item:hover{background:var(--surface-2);color:var(--text)}.library-quick-nav.active,.library-subject-nav-item.active{background:var(--accent-soft);border-color:var(--border);color:var(--text)}.library-quick-label,.library-subject-nav-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.library-nav-badge{font-size:.7rem;font-weight:700;min-width:1.35rem;height:1.35rem;padding:0 5px;border-radius:var(--radius-full);background:var(--surface-2);color:var(--text-muted);display:inline-flex;align-items:center;justify-content:center}.library-sidebar-section-label{font-size:.65rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted);margin:0 0 8px}.library-subject-nav{display:flex;flex-direction:column;gap:4px;max-height:min(50vh,420px);overflow-y:auto}.library-subject-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.library-main{min-width:0}.library-main-header{margin-bottom:var(--spacing-md)}.library-breadcrumb{font-size:var(--font-size-sm);color:var(--text-muted);margin:0 0 4px}.library-header-title{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);color:var(--text);margin:0 0 6px}.library-header-stats{font-size:var(--font-size-sm);color:var(--text-muted);margin:0}#libraryCategoryBar .library-cat-tab[data-category=textbook],#libraryCategoryBar .library-cat-tab[data-category=past_paper],#libraryCategoryBar .library-cat-tab[data-category=notes]{--cat-color: var(--accent-ink)}#libraryCategoryBar .library-cat-tab[data-category=slides]{--cat-color: var(--text-muted)}.library-file-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:var(--spacing-md);margin-bottom:var(--spacing-lg)}.library-file-card{display:flex;flex-direction:column;gap:8px;padding:var(--spacing-md);min-height:180px}.library-file-card-top{display:flex;justify-content:flex-start}.library-cat-badge{font-size:.65rem!important}.library-file-name{font-weight:var(--font-weight-semibold);color:var(--text);font-size:var(--font-size-sm);line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.library-file-meta,.library-file-opened{font-size:var(--font-size-xs);color:var(--text-muted)}.library-file-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:auto}.library-upload-slot{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;min-height:180px;padding:var(--spacing-md);border-style:dashed;border-width:2px;border-color:var(--border);cursor:pointer;transition:border-color .15s,background .15s}.library-upload-slot:hover,.library-upload-slot.dragover{border-color:var(--accent);background:var(--accent-soft)}.library-upload-icon{font-size:1.75rem;opacity:.85}.library-upload-title{font-size:var(--font-size-sm);color:var(--text-muted);text-align:center;margin:0}.library-recent-list{display:flex;flex-direction:column;gap:8px;margin-bottom:var(--spacing-lg)}.library-empty-hint{color:var(--text-muted);font-size:var(--font-size-sm);margin:0}.library-recent-row{display:grid;grid-template-columns:auto 1fr auto auto auto;gap:12px;align-items:center;padding:10px 12px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm)}.library-recent-type{font-size:1.25rem;line-height:1}.library-recent-name{font-weight:var(--font-weight-semibold);color:var(--text);font-size:var(--font-size-sm)}.library-recent-meta{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:2px}.library-subject-pill{display:inline-flex;align-items:center;gap:6px;font-size:var(--font-size-xs);color:var(--text-muted)}.library-recent-cat{font-size:var(--font-size-xs);color:var(--text-muted)}.library-recent-time,.library-recent-page{font-size:var(--font-size-xs);color:var(--text-muted);white-space:nowrap}.library-storage-wrap{margin-top:var(--spacing-md)}.library-storage-bar{height:10px;border-radius:var(--radius-full);background:var(--surface-2);overflow:hidden;border:1px solid var(--border)}.library-storage-fill{height:100%;width:0%;border-radius:var(--radius-full);background:var(--accent);transition:width .25s ease,background .2s}.library-storage-bar--warning .library-storage-fill{background:var(--warning)}.library-storage-label{font-size:var(--font-size-xs);color:var(--text-muted);margin:6px 0 0}.pdf-library-upload-modal{max-width:480px;width:95%}.pdf-library-category-radios{display:flex;flex-direction:column;gap:8px}.pdf-library-cat-option{display:flex;align-items:center;gap:8px;font-size:var(--font-size-sm);color:var(--text);cursor:pointer}@media(max-width:900px){.library-page{grid-template-columns:1fr;padding:1.25rem 16px}.library-sidebar{position:relative;top:auto}.library-recent-row{display:flex;flex-direction:column;align-items:flex-start;gap:10px}.library-recent-row .library-open-btn{align-self:flex-end}}.library-page-tagline{font-size:var(--font-size-sm);color:var(--text-muted);line-height:1.5;margin:0 0 .5rem;max-width:42rem}

/*# sourceMappingURL=library.41241ea333.css.map */
