.lib-wrap{min-height:100dvh;width:100%;max-width:82rem;box-sizing:border-box;margin:0 auto;padding:clamp(1.5rem,4vw,3rem) var(--rr-space-5) 4rem;background:var(--rr-surface);color:var(--rr-ink);font-family:var(--rr-font-ui)}.lib-head h1{font-family:var(--rr-font-reading);font-size:var(--rr-text-lg);margin:0}.lib-sub{color:var(--rr-ink-muted);margin:.25rem 0 var(--rr-space-6)}.lib-import{background:var(--rr-surface-raised);border:1px solid var(--rr-border);border-radius:var(--rr-radius-lg);padding:var(--rr-space-4);margin-bottom:var(--rr-space-6)}.lib-import-row{display:flex;gap:.6rem}.lib-input{flex:1 1;padding:.65rem .9rem;border:1px solid var(--rr-border);border-radius:var(--rr-radius-md);background:var(--rr-surface);color:var(--rr-ink);font-size:var(--rr-text-base);font-family:var(--rr-font-ui)}.lib-input:focus-visible,.lib-textarea:focus-visible{outline:3px solid var(--rr-focus-ring,var(--rr-accent));outline-offset:1px}.lib-textarea{width:100%;padding:.65rem .9rem;border:1px solid var(--rr-border);border-radius:var(--rr-radius-md);background:var(--rr-surface);color:var(--rr-ink);font-size:var(--rr-text-base);font-family:var(--rr-font-ui);resize:vertical}.lib-paste,.lib-paste .lib-btn,.lib-textarea{margin-top:.6rem}.lib-migration{display:flex;align-items:center;justify-content:space-between;gap:var(--rr-space-4);margin-top:.85rem;padding:.85rem;border:1px solid var(--rr-border);border-radius:var(--rr-radius-md);background:var(--rr-surface)}.lib-migration output,.lib-migration strong{display:block}.lib-migration output{margin-top:.2rem;color:var(--rr-ink);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-size:var(--rr-text-sm)}.lib-migration p{max-width:52ch;margin:.35rem 0 0;color:var(--rr-ink-muted);font-size:var(--rr-text-xs);line-height:1.5}.lib-migration .lib-btn{flex:0 0 auto;min-height:2.75rem}@media (max-width:599px){.lib-migration{align-items:stretch;flex-direction:column}.lib-migration .lib-btn{width:100%}}.lib-btn{display:inline-block;border:none;cursor:pointer;background:var(--rr-accent);color:var(--rr-accent-contrast);font-weight:700;font-size:var(--rr-text-base);font-family:var(--rr-font-ui);padding:.65rem 1.3rem;border-radius:var(--rr-r-control);text-decoration:none;transition:filter var(--rr-dur-fast) ease}.lib-btn:hover{filter:brightness(1.05)}.lib-btn:disabled{opacity:.45;cursor:not-allowed}.lib-btn:focus-visible{outline:3px solid var(--rr-focus-ring,var(--rr-accent));outline-offset:2px}.lib-link{background:none;border:none;padding:0;min-block-size:1.5rem;display:inline-flex;align-items:center;margin-top:.6rem;color:var(--rr-accent);font-family:var(--rr-font-ui);cursor:pointer;text-decoration:underline;text-underline-offset:3px}.lib-error,.lib-link{font-size:var(--rr-text-sm)}.lib-error{margin-top:var(--rr-space-3);padding:.6rem .9rem;border-radius:var(--rr-radius-md);background:color-mix(in srgb,var(--rr-danger) 12%,transparent);color:var(--rr-ink)}.lib-recent{margin-bottom:var(--rr-space-6)}.lib-recent>header{display:flex;align-items:end;justify-content:space-between;gap:var(--rr-space-4);margin-bottom:var(--rr-space-3)}.lib-recent h2,.lib-recent p{margin:0}.lib-recent h2{font-family:var(--rr-font-reading);font-size:var(--rr-text-md)}.lib-recent p{margin-top:.15rem;color:var(--rr-ink-muted);font-size:var(--rr-text-sm)}.lib-recent>header .lib-link{min-height:2.75rem;margin:0}.lib-recent ol{display:grid;grid-template-columns:repeat(auto-fit,minmax(12rem,1fr));grid-gap:.65rem;gap:.65rem;margin:0;padding:0;list-style:none}.lib-recent a{display:grid;min-height:7.25rem;padding:.85rem;border:1px solid var(--rr-border);border-radius:var(--rr-radius-lg);background:linear-gradient(145deg,color-mix(in srgb,var(--rr-accent) 8%,var(--rr-surface-raised)),var(--rr-surface-raised));color:var(--rr-ink);text-decoration:none;transition:border-color var(--rr-dur-fast) ease,transform var(--rr-dur-fast) ease}.lib-recent a:hover{border-color:color-mix(in srgb,var(--rr-accent) 42%,var(--rr-border));transform:translateY(-1px)}.lib-recent a:focus-visible{outline:3px solid var(--rr-focus-ring,var(--rr-accent));outline-offset:2px}.lib-recent strong{overflow:hidden;font-family:var(--rr-font-reading);text-overflow:ellipsis;white-space:nowrap}.lib-recent a>span{color:var(--rr-ink-muted);font-size:var(--rr-text-xs)}.lib-recent a>span:last-child{align-self:end;color:var(--rr-accent-strong,var(--rr-accent));font-weight:700}.lib-search{margin-bottom:var(--rr-space-4)}.lib-search-input{width:100%;box-sizing:border-box}.lib-shelves{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:var(--rr-space-4)}.lib-shelf{display:inline-flex;align-items:center;gap:.4rem;padding:.4rem .85rem;border:1px solid var(--rr-border);border-radius:var(--rr-radius-full);background:transparent;color:var(--rr-ink-muted);font-size:var(--rr-text-sm);font-family:var(--rr-font-ui);font-weight:600;cursor:pointer;transition:color var(--rr-dur-fast) ease,background var(--rr-dur-fast) ease,border-color var(--rr-dur-fast) ease}.lib-shelf:hover{color:var(--rr-ink);border-color:color-mix(in srgb,var(--rr-accent) 40%,var(--rr-border))}.lib-shelf[aria-pressed=true]{background:color-mix(in srgb,var(--rr-accent) 14%,transparent);border-color:color-mix(in srgb,var(--rr-accent) 45%,transparent);color:var(--rr-accent-strong,var(--rr-accent))}.lib-shelf:focus-visible{outline:3px solid var(--rr-focus-ring,var(--rr-accent));outline-offset:2px}.lib-shelf-n{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-size:var(--rr-text-xs);color:var(--rr-ink-muted);background:color-mix(in srgb,var(--rr-ink) 8%,transparent);border-radius:var(--rr-radius-full);padding:0 .4rem;min-width:1.2rem;text-align:center}.lib-shelf[aria-pressed=true] .lib-shelf-n{color:var(--rr-accent-strong,var(--rr-accent));background:color-mix(in srgb,var(--rr-accent) 22%,transparent)}.lib-shelf-empty{color:var(--rr-ink-muted);padding:var(--rr-space-6) var(--rr-space-4);text-align:center;font-size:var(--rr-text-sm)}.lib-head,.lib-import,.lib-recent,.lib-search{max-width:46rem;margin-right:auto}.lib-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(15rem,1fr));grid-gap:var(--rr-space-4);gap:var(--rr-space-4)}.lib-card{position:relative;border:1px solid var(--rr-border);border-radius:var(--rr-radius-lg);background:var(--rr-surface-raised);transition:transform var(--rr-dur-fast) ease,box-shadow var(--rr-dur-fast) ease}.lib-card:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgb(0 0 0/8%)}.lib-card-link{display:block;padding:var(--rr-space-4);color:inherit;text-decoration:none}.lib-card-title{font-family:var(--rr-font-reading);font-weight:700;font-size:var(--rr-text-base);line-height:1.35;margin-bottom:.4rem;padding-right:3.8rem;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.lib-card-meta{color:var(--rr-ink-muted);font-size:var(--rr-text-xs);margin-bottom:.6rem}.lib-card-time{color:var(--rr-accent-strong,var(--rr-accent));font-weight:600}.lib-card-cta{color:var(--rr-accent);font-weight:700;font-size:var(--rr-text-sm)}.lib-card-tools{position:absolute;top:.4rem;right:.4rem;display:flex;gap:.1rem;z-index:2}.lib-fav,.lib-menu-btn{width:2rem;height:2rem;display:grid;place-content:center;padding:0;border:1px solid transparent;border-radius:var(--rr-radius-full);background:transparent;color:var(--rr-ink-muted);line-height:1;cursor:pointer;transition:color var(--rr-dur-fast) ease,background var(--rr-dur-fast) ease}.lib-fav{font-size:var(--rr-text-md)}.lib-menu-btn{font-size:var(--rr-text-lg)}.lib-fav:hover,.lib-menu-btn:hover{color:var(--rr-ink);background:color-mix(in srgb,var(--rr-ink) 8%,transparent)}.lib-fav.is-on{color:var(--rr-accent)}.lib-fav.is-on:hover{color:var(--rr-accent-strong,var(--rr-accent))}.lib-fav:focus-visible,.lib-menu-btn:focus-visible{outline:3px solid var(--rr-focus-ring,var(--rr-accent));outline-offset:2px}.lib-fav:disabled,.lib-menu-btn:disabled{opacity:.4;cursor:not-allowed}.lib-card.is-menu-open{z-index:30}.lib-menu-wrap{position:relative}.lib-menu-panel{position:absolute;top:calc(100% + .25rem);right:0;z-index:40;min-width:12rem;display:flex;flex-direction:column;padding:.3rem;border:1px solid var(--rr-border);border-radius:var(--rr-radius-md);background:var(--rr-surface-raised);box-shadow:0 12px 32px rgb(0 0 0/18%)}.lib-menu-item{text-align:left;padding:var(--rr-space-2) .7rem;border:none;border-radius:var(--rr-radius-sm);background:transparent;color:var(--rr-ink);font-size:var(--rr-text-sm);font-family:var(--rr-font-ui);cursor:pointer}.lib-menu-item:hover{background:color-mix(in srgb,var(--rr-accent) 12%,transparent)}.lib-menu-item:focus-visible{outline:2px solid var(--rr-focus-ring,var(--rr-accent));outline-offset:-2px}.lib-menu-item:disabled{opacity:.5;cursor:not-allowed}.lib-menu-item--danger{color:var(--rr-danger)}.lib-menu-item--danger:hover{background:color-mix(in srgb,var(--rr-danger) 12%,transparent)}.lib-menu-sep{height:1px;margin:var(--rr-space-1) .3rem;border:none;background:var(--rr-border)}.lib-badge{display:inline-block;margin-bottom:var(--rr-space-2);padding:.1rem var(--rr-space-2);border-radius:var(--rr-radius-full);font-size:var(--rr-text-xs);font-weight:700;letter-spacing:.03em;text-transform:uppercase}.lib-badge--reading{color:var(--rr-accent-strong,var(--rr-accent));background:color-mix(in srgb,var(--rr-accent) 15%,transparent)}.lib-badge--finished{color:var(--rr-positive);background:color-mix(in srgb,var(--rr-positive) 15%,transparent)}.lib-badge--archived{color:var(--rr-ink-muted);background:color-mix(in srgb,var(--rr-ink) 10%,transparent)}.lib-progress{display:flex;align-items:center;gap:var(--rr-space-2);margin:0 0 .6rem}.lib-progress-track{flex:1 1;height:4px;border-radius:var(--rr-radius-full);background:color-mix(in srgb,var(--rr-ink) 12%,transparent);overflow:hidden}.lib-progress-track i{display:block;height:100%;border-radius:var(--rr-radius-full);background:var(--rr-accent)}.lib-progress-pct{font-size:var(--rr-text-xs);color:var(--rr-ink-muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.lib-empty{min-height:40vh;display:grid;place-content:center;text-align:center;grid-gap:var(--rr-space-2);gap:var(--rr-space-2);color:var(--rr-ink);background:var(--rr-surface);font-family:var(--rr-font-ui);padding:var(--rr-space-6)}.lib-empty h2{font-family:var(--rr-font-reading);margin:0}.lib-empty p{color:var(--rr-ink-muted);margin:0 0 var(--rr-space-3)}.lib-folderfilter,.lib-tagfilter{display:flex;flex-wrap:wrap;gap:.35rem;margin:0 0 var(--rr-space-4)}.lib-folderchip,.lib-tagchip{display:inline-flex;align-items:center;gap:.3rem;border:1px solid var(--rr-border);border-radius:var(--rr-radius-full);background:transparent;color:var(--rr-ink-muted);font-family:var(--rr-font-ui);font-size:var(--rr-text-xs);padding:.2rem .6rem;cursor:pointer;transition:color var(--rr-dur-fast) ease,background var(--rr-dur-fast) ease,border-color var(--rr-dur-fast) ease}.lib-folderchip:hover,.lib-tagchip:hover{color:var(--rr-ink);border-color:color-mix(in srgb,var(--rr-accent) 40%,var(--rr-border))}.lib-folderchip[aria-pressed=true],.lib-tagchip[aria-pressed=true]{background:color-mix(in srgb,var(--rr-accent) 16%,transparent);border-color:color-mix(in srgb,var(--rr-accent) 50%,transparent);color:var(--rr-accent-strong,var(--rr-accent))}.lib-folderchip:focus-visible,.lib-tagchip:focus-visible{outline:3px solid var(--rr-focus-ring,var(--rr-accent));outline-offset:2px}.lib-tags{display:flex;flex-wrap:wrap;gap:.3rem;margin:0 0 .6rem}.lib-folder-label{display:flex;gap:.3rem;margin:0 0 .45rem}.lib-folder-label,.lib-tag{align-items:center;color:var(--rr-ink-muted);font-size:var(--rr-text-xs);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lib-tag{display:inline-flex;gap:.2rem;max-width:100%;background:color-mix(in srgb,var(--rr-ink) 8%,transparent);border-radius:var(--rr-radius-full);padding:.1rem var(--rr-space-2)}.lib-card.is-editing{z-index:20}.lib-tagedit{padding:var(--rr-space-4)}.lib-tagedit-title{font-family:var(--rr-font-reading);font-weight:700;font-size:var(--rr-text-base);line-height:1.35;margin-bottom:.6rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.lib-organize-label{display:block;color:var(--rr-ink);font-family:var(--rr-font-ui);font-size:var(--rr-text-xs);font-weight:700;margin:.65rem 0 .3rem}.lib-organize-label span{color:var(--rr-ink-muted);font-weight:400}.lib-tagedit-chips{display:flex;flex-wrap:wrap;gap:.3rem;min-height:1.6rem;margin-bottom:var(--rr-space-2)}.lib-tagedit-empty{color:var(--rr-ink-muted);font-size:var(--rr-text-xs);font-style:italic}.lib-tag--edit{overflow:visible;padding-right:.2rem;background:color-mix(in srgb,var(--rr-accent) 14%,transparent);color:var(--rr-accent-strong,var(--rr-accent))}.lib-tag-x{display:grid;place-content:center;width:1.1rem;height:1.1rem;border:none;border-radius:var(--rr-radius-full);background:transparent;color:inherit;font-size:var(--rr-text-base);line-height:1;cursor:pointer}.lib-tag-x:hover{background:color-mix(in srgb,var(--rr-accent) 25%,transparent)}.lib-tag-x:focus-visible{outline:2px solid var(--rr-focus-ring,var(--rr-accent));outline-offset:1px}.lib-tagedit-input{width:100%;box-sizing:border-box;margin-bottom:.6rem}.lib-tagedit-actions{display:flex;align-items:center;gap:var(--rr-space-3)}.lib-btn--sm{padding:.4rem var(--rr-space-4);font-size:var(--rr-text-sm)}.lib-tagedit-cancel{margin-top:0}.lib-import-alt{display:flex;flex-wrap:wrap;align-items:center;gap:var(--rr-space-4)}.lib-file{position:relative;cursor:pointer}.lib-file:focus-within{outline:2px solid var(--rr-focus);outline-offset:2px;border-radius:var(--rr-r-sm)}.lib-offline-mark{display:inline-flex;align-items:center;gap:var(--rr-space-1);margin-left:var(--rr-space-2);color:var(--rr-ink-muted);vertical-align:middle}.lib-offline-gone,.lib-offline-mark{font-size:var(--rr-text-xs);font-weight:600}.lib-offline-gone{display:block;margin-top:var(--rr-space-2);color:var(--rr-danger)}.lib-offline-summary{margin:0 0 var(--rr-space-4)}.lib-import-status,.lib-offline-summary{color:var(--rr-ink-muted);font-size:var(--rr-text-sm)}.lib-import-status{display:block;min-height:1.4em;margin-top:var(--rr-space-2)}.lib-duplicate,.lib-notice{margin-top:var(--rr-space-3);padding:.6rem .9rem;border-radius:var(--rr-radius-md);border:1px solid var(--rr-border);background:var(--rr-surface-raised);color:var(--rr-ink);font-size:var(--rr-text-sm)}.lib-duplicate p{margin:0 0 var(--rr-space-2)}.lib-duplicate-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--rr-space-3)}.lib-btn--secondary{background:transparent;color:var(--rr-ink);border:1px solid var(--rr-border-interactive)}.lib-shelf-count{display:flex;flex-wrap:wrap;align-items:center;gap:var(--rr-space-2)}.lib-input{min-width:0}@media (max-width:1023px){.rr-shell.is-app .lib-head h1{position:absolute;width:1px;height:1px;overflow:hidden;-webkit-clip-path:inset(50%);clip-path:inset(50%);white-space:nowrap}}