:root{--paper:#f3efe7;--wall:#eae4d8;--ink:#2b3029;--muted:#7a7d72;--line:#d9d8cd;--green:#344f3d;--serif:Georgia,'Times New Roman',serif}
*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:13px Arial,Helvetica,sans-serif}button,input,select,textarea{font:inherit}button{cursor:pointer}a{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:2px solid #92713f;outline-offset:4px}
.masthead{padding:25px 32px 20px;display:flex;justify-content:space-between;align-items:center;gap:20px}.masthead h1{font:400 28px var(--serif);margin:0 0 7px}.masthead p{font-size:12px;color:var(--muted);margin:0}.private{font-size:9px;text-transform:uppercase;letter-spacing:1.6px;color:var(--muted)}
main{margin:0 auto}.collection{padding:0}.section-head{padding:0 32px 13px;display:flex;justify-content:space-between;align-items:center}.section-head h2{font-size:9px;font-weight:400;text-transform:uppercase;letter-spacing:1.5px;margin:0;color:var(--muted)}#book-count{font-family:var(--serif);font-size:18px}.shelf-room{background:linear-gradient(115deg,var(--wall),#f0ece3);padding:40px 0 48px;overflow:hidden}.shelf-content{padding:10px 32px 0;overflow-x:auto;scrollbar-width:thin;scrollbar-color:#c7c1b4 transparent}.spines{display:flex;align-items:flex-end;gap:24px;min-width:100%;width:max-content;padding:18px 0 0}.year-group{flex-shrink:0}.year-books{display:flex;align-items:flex-end;gap:2px}.year-caption{display:none}.spine{position:relative;flex-shrink:0;padding:0;border:0;border-radius:2px 2px 0 0;background:#d8d0c2;box-shadow:2px 1px 3px #0002;transition:transform .2s;display:block}.spine:hover,.spine:focus-visible{transform:translateY(-12px)}.spine-art{position:absolute;inset:0;border-radius:inherit;background-repeat:no-repeat}.spine::after{content:'';position:absolute;inset:0;pointer-events:none;border-radius:inherit;background:linear-gradient(90deg,#0003,#fff1 18%,transparent 50%,#0002);box-shadow:inset 1px 0 0 #fff3,inset -1px 0 0 #0004}.wood-shelf{height:13px;margin:0 20px;background:linear-gradient(#b89770 0 3px,#96734f 4px,#896945);box-shadow:0 9px 18px #4f3f2b25}.shelf-shadow{display:none}.year-nav{display:flex;gap:4px;padding:17px 26px 0;border-top:1px solid var(--line)}.year-link{background:none;border:0;color:#6f7366;font-size:12px;padding:7px 11px;border-radius:3px}.year-link:hover{background:#e3e2d6}.shelf-help{font-size:11px;color:#909185;margin:8px 37px 26px}
.journal-disclosure{margin:0 32px 24px;border-top:1px solid var(--line);padding-top:18px}.journal-disclosure>summary{font-size:12px;color:#737a69;cursor:pointer;padding:0 0 7px}.reading{max-width:1100px;margin:auto;padding-top:22px}.reading-top{display:flex;align-items:center;justify-content:space-between}.reading-top h2{font:400 24px var(--serif);margin:0}.text-button{border:0;background:none;color:#666f61;font-size:11px;padding:10px}.tools{display:flex;justify-content:space-between;gap:15px;margin-top:15px;padding-bottom:10px;border-bottom:1px solid var(--line)}.search{display:flex;align-items:center;gap:9px}.search span{font-size:23px;color:#89917e}.search input{width:230px;border:0;background:none;font-size:12px;padding:8px 0;color:var(--ink)}.filter-label{font-size:11px;color:var(--muted);display:flex;align-items:center;gap:10px}select{border:1px solid #d2d5c8;border-radius:4px;background:var(--paper);padding:8px 10px;color:#45523e;font-size:12px}.journal-row{display:grid;grid-template-columns:33px 1fr auto;align-items:center;gap:16px;padding:19px 0;border-bottom:1px solid var(--line)}.mini-cover{height:48px;width:32px;object-fit:contain;box-shadow:1px 2px 3px #0002}.row-title{border:0;background:none;font:19px var(--serif);color:var(--ink);padding:0;text-align:left}.row-title:hover{text-decoration:underline}.row-author{margin:6px 0 0;color:var(--muted);font-size:11px}.row-history,.detail-history{color:#737e6d;font-size:11px;line-height:1.8;margin:7px 0 0}.status{font-size:10px;padding:7px 10px;background:#e5eadf;color:#4f694b;border-radius:20px;white-space:nowrap}.status.finishing{background:#efe4d3;color:#8c6937}.status.finished{background:#dce8df;color:#41654d}.status.unknown,.status.want-to-read{background:#e7e6e1;color:#72766c}.status.paused{background:#ebe5dc;color:#77634d}.status.unfinished{background:#eae3da;color:#806a51}.empty{padding:32px 0;color:var(--muted)}footer{padding:18px 32px 24px;border-top:1px solid var(--line);display:flex;justify-content:space-between;color:#93988b;font-size:10px}
dialog{border:1px solid #d6d8ca;border-radius:6px;background:var(--paper);color:var(--ink);width:min(630px,calc(100% - 32px));max-height:90vh;overflow:auto;padding:28px;box-shadow:0 30px 100px #15251940}dialog::backdrop{background:#202c2599;backdrop-filter:blur(4px)}.dialog-top{display:flex;justify-content:space-between;align-items:center}.eyebrow{font-size:9px;letter-spacing:1.8px;color:#75816e}.close-button{font-size:26px;border:0;background:none;color:#6d7467;padding:0 5px}#detail-cover{float:left;margin:23px 27px 20px 0}.detail-cover-image{width:150px;max-height:240px;object-fit:contain;display:block;box-shadow:3px 5px 9px #0002}.detail-authors{color:var(--muted);font-size:12px;margin:30px 0 10px}dialog h2{font:400 31px/1.1 var(--serif);margin:0}.detail-subtitle{color:#747d6b;font-size:12px;line-height:1.7}.detail-history{margin:20px 0 22px}.edit-details{clear:both;border-top:1px solid var(--line);padding-top:16px}.edit-details>summary{font-size:11px;cursor:pointer;color:#6a765f}.fields{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:17px}.fields label,.notes-label{font-size:11px;display:flex;flex-direction:column;gap:9px}.fields select{width:100%}.notes-label{margin-top:22px}textarea{resize:vertical;border:1px solid #d8dbcf;border-radius:4px;background:#faf8f2;padding:12px;color:var(--ink);font-size:12px;line-height:1.6}.date-note{font-size:10px;line-height:1.7;color:#8c9185;clear:both;margin-top:18px}.dialog-bottom{display:flex;justify-content:space-between;align-items:center;margin-top:20px;gap:12px}.dialog-bottom a{font-size:11px;color:#69775f}.save-button{background:var(--green);color:#fff;border:0;border-radius:4px;padding:10px 14px;font-size:11px}.toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:#344f3d;color:#fff;padding:12px 20px;border-radius:5px;font-size:12px;z-index:10;display:none}.toast.visible{display:block}
@media(max-width:600px){.masthead{padding:22px 20px 17px}.masthead h1{font-size:25px}.masthead p{font-size:11px;max-width:240px;line-height:1.6}.private{font-size:8px;letter-spacing:.7px}.section-head{padding:0 20px 12px}.shelf-room{padding:25px 0 35px}.shelf-content{padding:10px 20px 0}.spines{gap:16px}.wood-shelf{margin:0 12px}.year-nav{padding-left:13px}.shelf-help{margin-left:24px}.journal-disclosure{margin-left:20px;margin-right:20px}.search input{width:140px}.filter-label{font-size:0;gap:0}.filter-label select{font-size:11px;max-width:140px}.journal-row{gap:12px;grid-template-columns:31px 1fr}.journal-row>.status{grid-column:2;justify-self:start}.row-title{font-size:18px}footer{padding:18px 20px;flex-direction:column;gap:8px}dialog{padding:21px}.detail-cover-image{width:108px;max-height:180px}#detail-cover{margin-right:20px}dialog h2{font-size:26px}.detail-authors{font-size:11px}.detail-history{clear:both}.dialog-bottom{gap:15px}.fields{gap:10px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}

/* Keep the narrow cover-derived spines at their natural display width. */
.spine-art{background-size:cover;background-position:center;opacity:.12}
.spine{background:#d8d0c2}
.year-link[aria-pressed="true"]{background:#344f3d;color:#fff}
.year-nav{flex-wrap:wrap}
.status.unread{background:#e7e6e1;color:#72766c}

/* Compact edge gutters keep full shelves visually full. */
.spines{padding-left:32px;padding-right:32px;min-width:0}
.shelf-content{cursor:grab;user-select:none;touch-action:pan-x pan-y}
.shelf-content.dragging{cursor:grabbing}
.spine-art{opacity:.035}
.spine{transition:opacity .2s,transform .2s,box-shadow .2s}
.spines.has-selection .year-group:not(.is-selected) .spine{opacity:.32}
.year-group.is-selected .spine{box-shadow:0 0 0 1px #bda57e,2px 2px 5px #0002}
@media(prefers-reduced-motion:reduce){.spine{transition:none}}

/* Keep actual cover imagery visible. */
.spine-art{opacity:1;background-size:cover;background-position:center}



/* Private journal and editing controls are shown only by the local preview. */
html:not(.local-library) .journal-disclosure,html:not(.local-library) .edit-details,html:not(.local-library) .save-button,html:not(.local-library) .detail-status-line{display:none}

/* The title tooltip sits outside the scrolling row so it never covers a spine. */
.shelf-room{position:relative}
.spine-tooltip{position:absolute;z-index:5;pointer-events:none;max-width:min(250px,calc(100vw - 32px));padding:10px 13px;border-radius:4px;background:#263a30;color:#f8f5ed;box-shadow:0 5px 18px #14241b40;text-align:left}
.spine-tooltip[hidden]{display:none}
.tooltip-title{display:block;font:16px/1.25 var(--serif)}
.tooltip-author{display:block;margin-top:4px;font-size:10px;line-height:1.35;color:#d8e0d6}

/* Two compact, independently scrollable decade shelves. */
.shelf-room{padding:28px 0 34px}
.shelf-stack{display:flex;flex-direction:column;gap:34px}
.decade-shelf{position:relative}
.decade-label{position:absolute;z-index:2;top:5px;left:32px;margin:0;padding:5px 8px;background:#f0ece3e8;color:#676d61;font-size:9px;font-weight:600;letter-spacing:1.4px;text-transform:uppercase}
.decade-shelf .shelf-content{padding:12px 0 0}
.decade-shelf .spines{padding-top:14px}
.decade-shelf .wood-shelf{height:12px}
@media(max-width:600px){.shelf-room{padding:20px 0 28px}.shelf-stack{gap:28px}.decade-label{left:20px}.decade-shelf .shelf-content{padding-top:10px}.decade-shelf .spines{padding-left:20px;padding-right:20px}}

.detail-status-line{margin:0 0 20px}.detail-notes{clear:both;border-top:1px solid var(--line);padding:18px 0 16px}.detail-notes[hidden]{display:none}.detail-notes h3{margin:0 0 8px;font-size:10px;font-weight:600;letter-spacing:1.2px;text-transform:uppercase;color:#75816e}.detail-notes p{margin:0;font:16px/1.6 var(--serif);white-space:pre-wrap}.source-label{margin-top:18px;font-size:11px;display:flex;flex-direction:column;gap:9px}#edit-source{width:100%;border:1px solid #d8dbcf;border-radius:4px;background:#faf8f2;padding:10px;color:var(--ink);font-size:12px}.save-button:disabled{opacity:.55;cursor:wait}
