.shelf-shell{max-width:1200px;margin:0 auto;padding:var(--space-16) var(--space-8) var(--space-12)}@media (max-width:720px){.shelf-shell{padding:var(--space-12) var(--space-4) var(--space-8)}}.shelf-title-block{margin-bottom:var(--space-8);display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-6);flex-wrap:wrap}.shelf-title{font-weight:600;font-size:clamp(28px,3.8vw,44px);line-height:1.15;letter-spacing:-.015em;margin:0 0 var(--space-2) 0}.shelf-subtitle,.shelf-title{font-family:var(--reader-font-family)}.shelf-subtitle{font-size:15px;font-style:italic;color:var(--reader-fg-muted);margin:0}.import-status{margin-bottom:var(--space-6);padding:var(--space-4);border:1px solid var(--reader-border);border-radius:var(--radius-md)}.import-status-text{font-size:13px;color:var(--reader-fg-muted);margin-bottom:var(--space-3);overflow-wrap:anywhere}.import-status-file{color:var(--reader-fg)}.book-progress-track,.import-status-bar{position:relative;height:3px;border-radius:var(--radius-pill);background:var(--reader-border);overflow:hidden}.book-progress-fill,.import-status-fill{position:absolute;inset:0 auto 0 0;background:var(--reader-accent);border-radius:inherit;transition:width var(--motion-base) var(--easing-default)}.import-status-fill{animation:pulse 1.6s ease-in-out infinite}.shelf-notices{list-style:none;margin:0 0 var(--space-8);padding:0;display:flex;flex-direction:column;gap:var(--space-2)}.shelf-notice{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);margin:0 0 var(--space-2);padding:var(--space-3) var(--space-4);font-size:14px;line-height:1.5;border:1px solid var(--reader-border);border-left-width:3px;border-radius:var(--radius-md)}.shelf-notices .shelf-notice{margin:0}.shelf-notice--error{border-left-color:#b4432f}.shelf-notice--warning{border-left-color:var(--reader-accent)}.shelf-notice--info{border-left-color:var(--reader-fg-muted)}.shelf-notice-text{overflow-wrap:anywhere}.shelf-notice-dismiss{flex-shrink:0;display:inline-flex;padding:4px;color:var(--reader-fg-muted);border-radius:var(--radius-sm)}.shelf-notice-dismiss:hover{color:var(--reader-fg)}.shelf-notice-dismiss svg{stroke:currentColor;stroke-width:2;fill:none;stroke-linecap:round}.shelf-empty{padding:var(--space-12) var(--space-8);border:1px dashed var(--reader-border);border-radius:var(--radius-lg);text-align:center;font-size:15px;line-height:1.6}.shelf-empty-title{font-family:var(--reader-font-family);font-size:22px;font-weight:500;margin:0 0 var(--space-3)}.shelf-empty p{max-width:52ch;margin:0 auto var(--space-3)}.shelf-empty-privacy{font-size:13px;color:var(--reader-fg-muted)}.shelf-drop-hint{margin:var(--space-12) 0 0;font-size:12px;letter-spacing:.04em;color:var(--reader-fg-muted);text-align:center}@media (pointer:coarse){.drop-only{display:none}}.book-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));grid-gap:var(--space-8) var(--space-6);gap:var(--space-8) var(--space-6);animation:fadeIn var(--motion-slow) var(--easing-default)}@media (max-width:440px){.book-grid{grid-template-columns:repeat(2,1fr);gap:var(--space-6) var(--space-4)}}.book-card{display:flex;flex-direction:column;gap:var(--space-2);min-width:0}.book-card-cover{display:block;color:inherit;text-decoration:none;aspect-ratio:2/3;border-radius:var(--radius-md);overflow:hidden;border:1px solid var(--reader-border);background:var(--reader-bg);box-shadow:var(--shadow-sm);margin-bottom:var(--space-1);transition:transform var(--motion-fast) var(--easing-default),border-color var(--motion-fast) var(--easing-default)}.book-card-cover:hover{transform:translateY(-2px);border-color:var(--reader-fg-muted)}.book-cover-img{width:100%;height:100%;object-fit:cover;display:block}.book-cover-placeholder{height:100%;display:flex;flex-direction:column;justify-content:space-between;gap:var(--space-3);padding:var(--space-6) var(--space-4);background:repeating-linear-gradient(135deg,color-mix(in oklab,var(--reader-fg) 6%,var(--reader-border)) 0 8px,color-mix(in oklab,var(--reader-fg) 3%,var(--reader-border)) 8px 16px);color:var(--reader-fg);text-align:center}.book-cover-placeholder-title{font-family:var(--reader-font-family);font-size:17px;font-weight:600;line-height:1.25;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:6;-webkit-box-orient:vertical;overflow:hidden}.book-cover-placeholder-author{font-family:var(--reader-font-family);font-size:12px;font-style:italic;color:var(--reader-fg-muted)}.book-card-info{padding:0 var(--space-1)}.book-card-title{font-size:15px;font-weight:500;line-height:1.3;margin:0;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.book-card-author,.book-card-title{font-family:var(--reader-font-family)}.book-card-author{font-size:12px;font-style:italic;color:var(--reader-fg-muted);margin:2px 0 0}.book-card-progress{display:flex;align-items:center;gap:var(--space-2);padding:0 var(--space-1)}.book-card-progress .book-progress-track{flex:1 1}.book-progress-label{font-size:11px;letter-spacing:.04em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.book-card-section,.book-progress-label{color:var(--reader-fg-muted);white-space:nowrap}.book-card-section{margin:0;padding:0 var(--space-1);font-size:12px;overflow:hidden;text-overflow:ellipsis}.book-card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);margin-top:var(--space-1);padding:0 var(--space-1)}.book-action{white-space:nowrap;font-size:11px;letter-spacing:.1em;text-transform:uppercase;text-decoration:none;padding:var(--space-1) var(--space-3);border:1px solid var(--reader-border);border-radius:var(--radius-pill);transition:border-color var(--motion-fast) var(--easing-default),color var(--motion-fast) var(--easing-default)}.book-action--primary{color:var(--reader-fg)}.book-action--primary:hover{border-color:var(--reader-accent);color:var(--reader-accent)}.book-action--danger{color:var(--reader-fg-muted)}.book-action--danger:hover{border-color:#b4432f;color:#b4432f}.drop-overlay{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;padding:var(--space-6);background:color-mix(in oklab,var(--reader-bg) 80%,transparent);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);pointer-events:none}.drop-overlay-panel{padding:var(--space-12) var(--space-8);border:2px dashed var(--reader-accent);border-radius:var(--radius-lg);font-family:var(--reader-font-family);font-size:18px;text-align:center;color:var(--reader-fg)}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{opacity:.6}50%{opacity:1}}