/* One static catalogue, progressively enhanced into compact shelves. */
.library { margin-block:32px;--control-line:#7a847d; }
.library-controls { display:flex;flex-wrap:wrap;gap:16px;align-items:end; }
.library-controls label { display:grid;gap:8px;font-size:14px;min-width:0; }
.library-controls label:first-child { flex:1 1 260px; }
.library input,.library select,.library button { font:inherit; }
.library input,.library select { width:100%;min-width:0;min-height:44px;border:1px solid var(--control-line);background:transparent;color:var(--ink);padding:10px;border-radius:2px; }
.library button:not(.book-toggle) { min-height:44px;padding:10px 14px;background:transparent;color:var(--ink);border:1px solid var(--control-line);cursor:pointer; }
.library button:disabled { opacity:.45;cursor:default; }
.library :focus-visible { outline:2px solid var(--ink);outline-offset:4px; }
.library-status,.page-status { font-size:14px;color:var(--muted); }
.spine-row { display:flex;flex-wrap:wrap;align-items:flex-start;gap:20px 10px;margin-block:24px;border-bottom:1px solid var(--line);padding-bottom:24px; }
.spine-card { min-width:0;max-width:100%;width:100%;scroll-margin-top:20px; }
.spine-card.enhanced { width:3.5em;font-size:16px;transition:width 180ms ease-out; }
.spine-card.is-open { width:min(100%,36em); }
.book-toggle { display:block;position:relative;width:100%;height:17em;padding:0;border:0;background:transparent;color:var(--ink);cursor:pointer; }
.spine-face { position:absolute;inset:0;display:flex;gap:16px;padding:14px 8px;background:#334d43;color:#f5f2e8;border-radius:2px;box-shadow:3px 2px 0 #c9c7bc,5px 4px 8px #242b2920;writing-mode:vertical-rl;transform:rotate(180deg); }
.spine-card:nth-child(even) .spine-face { background:#375a69; }
.spine-title { font:20px/1.15 Georgia,serif;overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.spine-number { font:11px/1.4 ui-monospace,monospace; }
.is-open .book-toggle { height:3.2em;min-height:44px; }
.is-open .spine-face { writing-mode:horizontal-tb;transform:none;padding:12px;align-items:center; }
.is-open .spine-title { font-size:16px; }
.book-panel { display:grid;grid-template-columns:minmax(0,140px) minmax(0,1fr);gap:20px;padding:24px 0;border-top:1px solid var(--line); }
.enhanced .book-panel { padding:20px;border:1px solid var(--line);border-top:0;background:#f5f2e8; }
.book-cover { min-width:0; }
.book-cover img { display:block;width:100%;height:auto;max-height:290px;object-fit:contain;object-position:top left; }
.missing-cover { overflow-wrap:anywhere;display:flex;align-items:center;justify-content:center;min-height:150px;padding:12px;border:1px solid var(--line);font-size:14px;color:var(--muted); }
.book-metadata { min-width:0; }
.book-metadata h2 { font:400 24px/1.25 Georgia,serif;margin:0 0 12px;overflow-wrap:anywhere; }
.book-metadata p { font-size:16px;line-height:1.5;margin:0 0 12px;overflow-wrap:anywhere; }
.book-metadata .book-kind { font-size:12px;color:var(--muted); }
.personal-note { margin-block:20px; }
.personal-note h3 { font-size:14px;font-weight:400;color:var(--muted);margin-bottom:8px; }
.library-pages { display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap; }
.library [hidden] { display:none!important; }
@media(max-width:600px){.book-panel{grid-template-columns:minmax(0,1fr)}.book-cover{max-width:160px}.library-controls label{flex:1 1 100%}.enhanced .book-panel{padding:16px}}
@media(prefers-reduced-motion:reduce){.spine-card{transition:none!important}}

/* Reveal the final enhanced layout together; the no-JS catalogue stays visible. */
.library-pending .library,.library-pending footer { visibility:hidden; }

.enhanced .cover-fallback { display:none; }
