@import "https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700;1,9..40,400&display=swap";*,:before,:after{box-sizing:border-box}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100vh;margin:0;font-family:DM Sans,system-ui,-apple-system,sans-serif}#root{min-height:100vh}:root{--bg-base:#0a0c10;--bg-elevated:#11151c;--bg-surface:#181d27;--bg-hover:#1f2633;--bg-input:#12161e;--border:#2a3344;--border-subtle:#1e2533;--text-primary:#eef1f6;--text-secondary:#9aa5b8;--text-muted:#5f6b7e;--accent:#7c8cff;--accent-hover:#9aa4ff;--accent-soft:#7c8cff24;--read:#4ade80;--read-soft:#4ade801f;--want:#60a5fa;--want-soft:#60a5fa1f;--reject:#f87171;--reject-soft:#f871711f;--reading:#c084fc;--reading-soft:#c084fc24;--radius:12px;--radius-sm:8px;--radius-pill:999px;--shadow:0 8px 32px #00000073;--shadow-sm:0 2px 8px #0000004d;color:var(--text-primary);background:var(--bg-base);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-family:DM Sans,system-ui,sans-serif;line-height:1.5}body{background:radial-gradient(ellipse 80% 50% at 50% -20%, #7c8cff14, transparent), var(--bg-base);margin:0}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-hover)}.app-shell{max-width:960px;min-height:100vh;margin:0 auto;padding:0 1.5rem 20vh}.app-header{border-bottom:1px solid var(--border-subtle);z-index:10;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#0a0c10d9;grid-template-rows:auto auto;grid-template-columns:auto 1fr;align-items:center;gap:.45rem 1.5rem;margin-bottom:2rem;padding:1rem 0 1.15rem;display:grid;position:sticky;top:0}.app-brand{letter-spacing:-.02em;grid-area:1/1/-1;align-self:center;align-items:center;gap:.6rem;margin:0;font-size:1.15rem;font-weight:700;display:flex}.app-brand a{color:inherit;align-items:center;gap:.6rem;text-decoration:none;display:flex}.app-brand-icon{border-radius:var(--radius-sm);background:var(--accent-soft);width:2rem;height:2rem;color:var(--accent);justify-content:center;align-items:center;display:flex}.app-nav{flex-wrap:wrap;grid-area:2/2;align-items:center;gap:.35rem;min-width:0;display:flex}.nav-link{border-radius:var(--radius-sm);color:var(--text-secondary);align-items:center;gap:.45rem;padding:.45rem .85rem;font-size:.9rem;font-weight:500;text-decoration:none;transition:background .15s,color .15s;display:inline-flex}.nav-link:hover{background:var(--bg-hover);color:var(--text-primary);text-decoration:none}.nav-link.active{background:var(--accent-soft);color:var(--accent)}.nav-link-read{color:var(--read)}.nav-link-read:hover{color:var(--read);background:var(--read-soft)}.nav-link-read.active{background:var(--read-soft);color:var(--read)}.nav-link-reading{color:var(--reading)}.nav-link-reading:hover{color:var(--reading);background:var(--reading-soft)}.nav-link-reading.active{background:var(--reading-soft);color:var(--reading)}.nav-link-want{color:var(--want)}.nav-link-want:hover{color:var(--want);background:var(--want-soft)}.nav-link-want.active{background:var(--want-soft);color:var(--want)}.nav-link-all{color:var(--text-secondary)}.nav-link-all:hover{color:var(--accent);background:var(--accent-soft)}.nav-link-all.active{background:var(--accent-soft);color:var(--accent)}.nav-count{border-radius:var(--radius-pill);border:1px solid #0000;justify-content:center;align-items:center;min-width:1.35rem;height:1.35rem;padding:0 .4rem;font-size:.72rem;font-weight:700;line-height:1;display:inline-flex}.nav-count-read{background:var(--read-soft);color:var(--read);border-color:#4ade8040}.nav-count-want{background:var(--want-soft);color:var(--want);border-color:#60a5fa40}.nav-count-reading{background:var(--reading-soft);color:var(--reading);border-color:#c084fc40}.badge{background:var(--accent);color:#0f1220;border-radius:var(--radius-pill);justify-content:center;align-items:center;min-width:1.25rem;height:1.25rem;padding:0 .35rem;font-size:.7rem;font-weight:700;display:inline-flex}.page h2{letter-spacing:-.02em;align-items:center;gap:.5rem;margin:0 0 .25rem;font-size:1.5rem;font-weight:700;display:flex}.page-icon{border-radius:var(--radius-sm);background:var(--accent-soft);width:2rem;height:2rem;color:var(--accent);flex-shrink:0;justify-content:center;align-items:center;display:flex}.page-icon-read{background:var(--read-soft);color:var(--read)}.page-icon-reading{background:var(--reading-soft);color:var(--reading)}.page-icon-want{background:var(--want-soft);color:var(--want)}.page-icon-all{background:var(--accent-soft);color:var(--accent)}.page-title-read{color:var(--read)}.page-title-reading{color:var(--reading)}.page-title-want{color:var(--want)}.page-title-all{color:var(--accent)}.shelf-status-badge{border-radius:var(--radius-sm);flex-shrink:0;align-items:center;gap:.2rem;padding:.1rem .4rem;font-size:.68rem;font-weight:600;display:inline-flex}.shelf-status-read{background:var(--read-soft);color:var(--read)}.shelf-status-reading{background:var(--reading-soft);color:var(--reading)}.shelf-status-want{background:var(--want-soft);color:var(--want)}.page-desc{color:var(--text-secondary);margin:0 0 1.25rem;font-size:.95rem}.page-header-row{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.filters{flex-wrap:wrap;gap:.5rem;margin-bottom:1rem;display:flex}.input-wrap{flex:1;align-items:center;min-width:10rem;display:flex;position:relative}.input-wrap-grow{flex:2;min-width:14rem}.input-icon{color:var(--text-muted);pointer-events:none;position:absolute;left:.7rem}.input-wrap input{width:100%;padding:.55rem .75rem .55rem 2.25rem}.filters input,.filters select,.seed-form input[type=text],.seed-form select{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-input);color:var(--text-primary);padding:.55rem .75rem;font-family:inherit;font-size:.9rem;transition:border-color .15s,box-shadow .15s}.filters input:focus,.filters select:focus,.seed-form input:focus,.seed-form select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.filters select{cursor:pointer;padding-right:2rem}.select-wrap{align-items:center;display:flex;position:relative}.select-wrap .input-icon{pointer-events:none;left:auto;right:.65rem}.filter-checkbox{color:var(--text-secondary);white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-input);align-items:center;gap:.45rem;padding:.45rem .75rem;font-size:.85rem;transition:border-color .15s,background .15s;display:inline-flex}.filter-checkbox:hover{background:var(--bg-hover)}.filter-checkbox input{cursor:pointer;min-width:0;accent-color:var(--accent);flex:none;margin:0}.filters-with-action{align-items:center}.library-view-tabs{background:var(--bg-elevated);border-radius:var(--radius);border:1px solid var(--border-subtle);gap:.35rem;width:fit-content;margin-bottom:1.25rem;padding:.25rem;display:flex}.btn-tab{align-items:center;gap:.4rem;display:inline-flex}.btn-tab-active{background:var(--accent-soft)!important;color:var(--accent)!important;border-color:#0000!important}.library-breadcrumb{color:var(--text-secondary);align-items:center;gap:.35rem;margin:0 0 .75rem;font-size:.9rem;display:flex}.link-button{color:var(--accent);font:inherit;cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;align-items:center;gap:.3rem;margin:-.25rem -.5rem;padding:.25rem .5rem;font-size:.9rem;transition:background .15s;display:inline-flex}.link-button:hover{background:var(--accent-soft)}.author-list .author-row{text-align:left;cursor:pointer;width:100%;font:inherit;color:inherit}.author-list .author-row:hover{border-color:var(--accent);background:var(--bg-hover)}.seed-panel{margin-bottom:1.25rem}.seed-panel h3{align-items:center;gap:.45rem;margin:0 0 .35rem;font-size:1rem;display:flex}.seed-form{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.seed-form input[type=text]{flex:1;min-width:14rem}.book-list{margin:0;padding:0;list-style:none}.book-row{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius);color:inherit;grid-template-columns:1fr auto;gap:.25rem 1rem;margin-bottom:.5rem;padding:.85rem 1rem;text-decoration:none;transition:border-color .15s,background .15s,box-shadow .15s;display:grid}.book-row:hover{border-color:var(--border);background:var(--bg-hover);box-shadow:var(--shadow-sm);text-decoration:none}.book-title{grid-column:1;font-weight:600}.book-author{color:var(--text-secondary);grid-column:1}.book-meta{color:var(--text-muted);grid-area:1/2/span 2;align-self:center;font-size:.8rem}.book-cover{border-radius:var(--radius-sm);background:var(--bg-elevated);border:1px solid var(--border-subtle);flex-shrink:0;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.book-cover img,.book-cover-img{object-fit:cover;width:100%;height:100%;display:block;position:absolute;inset:0}.book-cover-img.recommend-cover-pending{opacity:0}.book-cover-img.recommend-cover-loaded{opacity:1;transition:opacity .3s,transform .3s;animation:.3s recommendCoverSnap;transform:scale(1)}@keyframes recommendCoverSnap{0%{transform:scale(1.02)}to{transform:scale(1)}}.book-cover-sm{width:2.5rem;height:3.5rem}.book-cover-md{width:3.25rem;height:4.75rem}.book-cover-lg{width:5.5rem;height:8rem}.book-cover-fallback{width:100%;height:100%;color:var(--text-muted);background:var(--bg-hover);justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.book-card,.shelf-list .shelf-item,.search-list .search-item{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius);opacity:1;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;max-height:12rem;margin-bottom:.5rem;padding:.85rem 1rem;transition:opacity .2s,max-height .2s,margin .2s,padding .2s,border-color .15s,background .15s;display:flex;overflow:hidden}.shelf-list .shelf-item:hover,.search-list .search-item:hover{border-color:var(--border);background:var(--bg-hover)}.want-order-hint{margin:0 0 .75rem;font-size:.85rem}.want-queue-summary{margin-bottom:.75rem}.want-queue-summary .count{margin-bottom:.35rem}.want-queue-pace{flex-wrap:wrap;align-items:center;gap:.35rem;margin:0;font-size:.8rem;display:flex}.want-book-length,.want-book-completion{align-items:center;gap:.25rem;display:inline-flex}.want-order-list .want-order-item{cursor:default}.want-order-list .want-order-item[draggable=true]{cursor:grab}.want-order-list .want-order-item.want-order-dragging{opacity:.55;cursor:grabbing}.want-order-list .want-order-item.want-order-drop-target{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.want-order-rank{color:var(--text-muted);text-align:center;flex:0 0 1.5rem;font-size:.8rem;font-weight:600}.want-order-grip{color:var(--text-muted);flex:none;align-items:center;margin-right:-.25rem;display:flex}.want-order-actions{flex-direction:column;flex:none;gap:.15rem;display:flex}.shelf-item-exit{opacity:0;pointer-events:none;border-width:0;max-height:0;margin-bottom:0;padding-top:0;padding-bottom:0}.shelf-item-text,.search-item-text{flex:1;min-width:12rem}.shelf-item-text .book-title,.search-item-text .book-title,.shelf-item-text .book-author,.search-item-text .book-author{display:block}.book-actions{flex-wrap:wrap;align-items:center;gap:.35rem;display:flex}.btn{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-input);color:var(--text-secondary);cursor:pointer;align-items:center;gap:.4rem;padding:.45rem .85rem;font-family:inherit;font-size:.85rem;font-weight:500;transition:background .15s,border-color .15s,color .15s;display:inline-flex}.btn:hover:not(:disabled){background:var(--bg-hover);color:var(--text-primary)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-read{color:var(--read);background:var(--read-soft);border-color:#4ade8059}.btn-read:hover:not(:disabled){color:var(--read);background:#4ade8033}.btn-want{color:var(--want);background:var(--want-soft);border-color:#60a5fa59}.btn-want:hover:not(:disabled){color:var(--want);background:#60a5fa33}.btn-reject{color:var(--reject);background:var(--reject-soft);border-color:#f8717159}.btn-reject:hover:not(:disabled){color:var(--reject);background:#f8717133}.icon-btn{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-input);color:var(--text-secondary);cursor:pointer;justify-content:center;align-items:center;transition:background .15s,border-color .15s,color .15s,transform .1s;display:inline-flex}.icon-btn:hover:not(:disabled){background:var(--bg-hover);color:var(--text-primary);transform:translateY(-1px)}.icon-btn:active:not(:disabled){transform:translateY(0)}.icon-btn:disabled{opacity:.45;cursor:not-allowed}.icon-btn-md{width:2.1rem;height:2.1rem}.icon-btn-sm{width:1.85rem;height:1.85rem}.icon-btn-read{color:var(--read);background:var(--read-soft);border-color:#4ade8059}.icon-btn-read:hover:not(:disabled){color:var(--read);background:#4ade8038}.icon-btn-want{color:var(--want);background:var(--want-soft);border-color:#60a5fa59}.icon-btn-want:hover:not(:disabled){color:var(--want);background:#60a5fa38}.icon-btn-reject{color:var(--reject);background:var(--reject-soft);border-color:#f8717159}.icon-btn-reject:hover:not(:disabled){color:var(--reject);background:#f8717138}.icon-btn-reading{color:var(--reading);background:var(--reading-soft);border-color:#c084fc59}.icon-btn-reading:hover:not(:disabled){color:var(--reading);background:#c084fc38}.icon-btn-primary{color:var(--accent);background:var(--accent-soft);border-color:#7c8cff66}.icon-btn-primary:hover:not(:disabled){color:var(--accent-hover);background:#7c8cff38}.library-title-row{flex-wrap:wrap;align-items:baseline;gap:.35rem .5rem;display:flex}.library-view-link{border-radius:var(--radius-sm);width:1.75rem;height:1.75rem;color:var(--text-muted);justify-content:center;align-items:center;text-decoration:none;transition:background .15s,color .15s;display:inline-flex}.library-view-link:hover{background:var(--accent-soft);color:var(--accent)}.ol-link{border-radius:var(--radius-sm);width:1.5rem;height:1.5rem;color:var(--text-muted);flex-shrink:0;justify-content:center;align-items:center;text-decoration:none;transition:background .15s,color .15s;display:inline-flex}.ol-link:hover{background:var(--accent-soft);color:var(--accent);text-decoration:none}.library-title-row .kind-badge{border-radius:var(--radius-pill);vertical-align:middle;background:var(--bg-elevated);color:var(--text-secondary);border:1px solid var(--border-subtle);align-items:center;gap:.25rem;padding:.15rem .45rem;font-size:.7rem;font-weight:600;display:inline-flex}.editable-field{display:inline}.editable-field-with-detail{align-items:center;gap:.25rem;max-width:100%;display:inline-flex}.book-title-link{color:var(--text);font-weight:600;text-decoration:none}.book-title-link:hover{color:var(--accent);text-decoration:underline}.editable-field-edit-btn{border-radius:var(--radius-sm);color:var(--text-muted);cursor:pointer;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:.15rem;display:inline-flex}.editable-field-edit-btn:hover{background:var(--accent-soft);color:var(--accent)}.reading-history-inline{width:100%;margin-top:.15rem;font-size:.8rem;line-height:1.4;display:block}.book-tags{border-top:1px solid var(--border);margin-top:1.25rem;padding-top:1rem}.book-tags-header{align-items:center;gap:.5rem;margin-bottom:.65rem;display:flex}.book-tags-title{margin:0;font-size:.95rem;font-weight:600}.book-tags-add-btn{border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-muted);cursor:pointer;background:0 0;justify-content:center;align-items:center;padding:.2rem .35rem;display:inline-flex}.book-tags-add-btn:hover{border-color:var(--accent);color:var(--accent)}.book-tags-group{flex-wrap:wrap;align-items:center;gap:.4rem .5rem;margin-bottom:.5rem;display:flex}.book-tag-kind{text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);min-width:4.5rem;font-size:.7rem;font-weight:600}.book-tag-list{flex-wrap:wrap;gap:.35rem;display:flex}.book-tag{border:1px solid var(--border);background:var(--surface-elevated,var(--bg));border-radius:999px;align-items:center;gap:.25rem;padding:.15rem .45rem;font-size:.8rem;display:inline-flex}.book-tag-source{background:#8a8f9818;border-color:#8a8f9855}.book-tag-series{background:#5b8def18;border-color:#5b8def55}.book-tag-genre{background:#6b9e7818;border-color:#6b9e7855}.book-tag-subgenre{background:#b07cc818;border-color:#b07cc855}.book-tag-tag{color:var(--text-primary);background:#e8a83818;border-color:#e8a83855}.book-tag-kind-series{color:#5b8def}.book-tag-kind-genre{color:#6b9e78}.book-tag-kind-subgenre{color:#b07cc8}.book-tag-kind-tag{color:#e8a838}.book-tag-kind-source{color:#8a8f98}.book-tag-remove{color:inherit;opacity:.55;cursor:pointer;background:0 0;border:none;padding:0;display:inline-flex}.book-tag-remove:hover{opacity:1}.tag-manager-page .page-lead{color:var(--text-secondary);max-width:42rem;margin:.35rem 0 1rem;font-size:.9rem}.tag-manager-toolbar{flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:1rem;display:flex}.tag-manager-search{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-input);min-width:10rem;color:var(--text-primary);flex:12rem;padding:.45rem .65rem}.tag-manager-table-wrap{border:1px solid var(--border);border-radius:var(--radius);overflow-x:auto}.tag-manager-table{border-collapse:collapse;width:100%;font-size:.88rem}.tag-manager-table th,.tag-manager-table td{text-align:left;border-bottom:1px solid var(--border-subtle);vertical-align:middle;padding:.5rem .65rem}.tag-manager-table th{text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);background:var(--bg-elevated);font-size:.72rem}.tag-manager-name,.tag-manager-kind,.tag-manager-parent{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-input);width:100%;color:var(--text-primary);font-size:inherit;padding:.35rem .5rem}.tag-manager-count{text-align:right;color:var(--text-secondary);white-space:nowrap}.tag-manager-actions{white-space:nowrap;text-align:right}.tag-manager-delete:hover{color:var(--reject)}.tag-manager-message{color:var(--read);margin:0 0 .75rem;font-size:.88rem}.book-tags-form{flex-wrap:wrap;gap:.4rem;margin-top:.5rem;display:flex}.book-tags-form input,.book-tags-form select{font:inherit;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);color:inherit;padding:.3rem .5rem}.book-tags-form input{flex:1;min-width:10rem}.tag-name-input{flex:1;min-width:10rem;position:relative}.tag-name-input>input{width:100%}.tag-name-input-hint{color:var(--text-muted);margin-top:.2rem;font-size:.75rem;display:block}.tag-name-suggestions{z-index:30;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-sm);max-height:12rem;margin:0;padding:.25rem 0;list-style:none;position:absolute;top:calc(100% + .2rem);left:0;right:0;overflow-y:auto}.tag-name-suggestion{width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;justify-content:space-between;align-items:center;gap:.5rem;padding:.35rem .55rem;display:flex}.tag-name-suggestion:hover,.tag-name-suggestion-active{background:var(--accent-soft)}.tag-name-suggestion .book-tag-kind{border-radius:var(--radius-sm);flex-shrink:0;padding:.1rem .35rem;font-size:.68rem}.book-tags-empty{color:var(--text-muted);margin:0;font-size:.85rem}.book-tags-error{color:#c44;margin:.35rem 0 0;font-size:.8rem}.library-count-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem 1rem;display:flex}.library-select-actions{flex-wrap:wrap;gap:.65rem;font-size:.85rem;display:flex}.book-select-wrap{flex-shrink:0;align-items:center;display:flex}.book-select-checkbox{width:1rem;height:1rem;accent-color:var(--accent);cursor:pointer;margin:0}.book-card-selected{border-color:var(--accent);background:var(--accent-soft)}.bulk-tag-bar{z-index:20;border:1px solid var(--accent);border-radius:var(--radius);background:var(--bg-elevated);box-shadow:var(--shadow);margin-top:1rem;padding:.85rem 1rem;position:sticky;bottom:.75rem}.bulk-tag-bar-header{justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.6rem;display:flex}.bulk-tag-bar-count{color:var(--text-primary);align-items:center;gap:.4rem;font-size:.9rem;font-weight:600;display:inline-flex}.bulk-tag-bar-clear{align-items:center;gap:.25rem;font-size:.85rem;display:inline-flex}.bulk-tag-bar-form{margin-top:0}.bulk-tag-bar-message{color:var(--read);margin:.5rem 0 0;font-size:.85rem}.detail-actions-row{flex-wrap:wrap;gap:.5rem;margin-top:1rem;display:flex}.editable-field-display{cursor:pointer;border-radius:4px;margin:0 -.15rem;padding:0 .15rem;transition:background .15s}.editable-field-display:hover{background:var(--accent-soft);outline:1px dashed var(--border)}.editable-field-heading{font-size:1.5rem;font-weight:700;line-height:1.3}.editable-field-input{font:inherit;color:inherit;border:1px solid var(--accent);border-radius:var(--radius-sm);background:var(--bg-input);width:100%;max-width:100%;padding:.2rem .45rem}.editable-field-input.editable-field-heading{font-size:1.5rem;font-weight:700}.editable-field-saving .editable-field-input{opacity:.7}.editable-field-error{color:var(--reject);margin-top:.15rem;font-size:.75rem;display:block}.editable-page-count{align-items:center;gap:.25rem;display:inline-flex}.editable-page-count-input{text-align:right;width:5.5rem}.editable-page-count-suffix{color:var(--muted);font-size:.9em}.editable-page-count-with-edit{gap:.35rem}.editable-word-count{align-items:center;gap:.25rem;display:inline-flex}.editable-word-count-input{text-align:right;width:7rem}.editable-word-count-with-edit{gap:.35rem}.star-rating{align-items:center;gap:.1rem;display:inline-flex}.star-rating-sm{margin-top:.2rem}.star-rating-star{width:1.15em;height:1.15em;line-height:0;display:inline-flex;position:relative}.star-rating-md .star-rating-star{width:1.25em;height:1.25em}.star-rating-icon{flex-shrink:0}.star-rating-empty{color:var(--border)}.star-rating-filled{color:#fbbf24;pointer-events:none;position:absolute;top:0;left:0}.star-rating-half{clip-path:inset(0 50% 0 0)}.star-rating-hit{cursor:pointer;z-index:1;background:0 0;border:none;margin:0;padding:0;position:absolute;inset:-2px}.star-rating-hit:disabled{cursor:wait}.star-rating-saving{opacity:.65;pointer-events:none}.star-rating-hit:hover~.star-rating-empty,.star-rating:hover .star-rating-empty{color:var(--text-muted)}.kind-badge-comic{color:#fca5a5;background:#f871711f;border-color:#f8717140}.kind-badge-novel{color:#86efac;background:#4ade801a;border-color:#4ade8033}.kind-badge-nonfiction{color:#fcd34d;background:#fbbf241a;border-color:#fbbf2433}.kind-badge-drama{color:#c4b5fd;background:#a78bfa1f;border-color:#a78bfa40}.kind-badge-poetry{color:#fdba74;background:#fb923c1a;border-color:#fb923c33}.kind-badge-anthology{color:#93c5fd;background:#60a5fa1a;border-color:#60a5fa33}.kind-badge-novella{color:#6ee7b7;background:#34d3991a;border-color:#34d39933}.kind-badge-short_story{color:#fde047;background:#facc151a;border-color:#facc1533}.kind-filters{flex-wrap:wrap;align-items:center;gap:.4rem;margin-bottom:1rem;display:flex}.kind-filters-label{color:var(--text-muted);align-items:center;gap:.35rem;margin-right:.25rem;font-size:.85rem;font-weight:600;display:inline-flex}.kind-chip{border:1px solid var(--border);border-radius:var(--radius-pill);background:var(--bg-input);color:var(--text-secondary);cursor:pointer;align-items:center;gap:.35rem;padding:.35rem .7rem;font-family:inherit;font-size:.8rem;transition:background .15s,border-color .15s,color .15s;display:inline-flex}.kind-chip:hover{background:var(--bg-hover);color:var(--text-primary)}.kind-chip-active{background:var(--accent-soft);color:var(--accent);border-color:#7c8cff59}.kind-chip-count{opacity:.75;border-radius:var(--radius-pill);background:#ffffff0f;padding:.05rem .35rem;font-size:.72rem}.kind-chip-active .kind-chip-count{opacity:1;background:#7c8cff33}.btn-primary{background:var(--accent-soft);color:var(--accent);border-color:#7c8cff66}.btn-primary:hover:not(:disabled){color:var(--accent-hover);background:#7c8cff38}.action-error{color:var(--reject);font-size:.8rem}.panel{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius);box-shadow:var(--shadow-sm);margin:1.25rem 0;padding:1.15rem 1.35rem}.panel h3{align-items:center;gap:.45rem;margin:0 0 .75rem;font-size:1rem;display:flex}.meta-dl{grid-template-columns:auto 1fr;gap:.35rem 1.25rem;margin:1rem 0;font-size:.9rem;display:grid}.meta-dl dt{color:var(--text-muted);align-items:center;gap:.35rem;font-weight:500;display:flex}.meta-dl .editable-date-field{align-items:center;gap:.35rem;display:inline-flex}.meta-dl .editable-date-field-with-edit{flex-wrap:wrap}.meta-dl .editable-date-display-btn{font:inherit;font-size:inherit;color:inherit;cursor:pointer;background:0 0;border:none;border-radius:4px;margin:0 -.15rem;padding:0 .15rem;transition:background .15s}.meta-dl .editable-date-display-btn:hover:not(:disabled){background:var(--accent-soft);outline:1px dashed var(--border)}.meta-dl .editable-date-display-btn:disabled{opacity:.6;cursor:default}.meta-dl .editable-date-field-saving .meta-date-input{opacity:.7}.meta-dl input.meta-date-input{font:inherit;font-size:inherit;border-radius:var(--radius-sm);border:1px solid var(--border-subtle);background:var(--bg-surface);color:var(--text-primary);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;padding:.15rem .4rem}.meta-dl input.meta-date-input:focus-visible{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft);outline:none}.meta-dl input.meta-date-input:disabled{opacity:.6}.detail-author{color:var(--text-secondary);margin:0 0 .5rem;font-size:1.1rem}.back{margin:0 0 .75rem}.back a{color:var(--text-secondary);border-radius:var(--radius-sm);align-items:center;gap:.35rem;margin:-.3rem -.6rem;padding:.3rem .6rem;font-size:.9rem;transition:background .15s,color .15s;display:inline-flex}.back a:hover{background:var(--bg-hover);color:var(--text-primary)}.muted{color:var(--text-muted)}.count{align-items:center;gap:.35rem;margin:0 0 .75rem;font-size:.85rem;display:flex}.explore-grid{grid-template-columns:repeat(auto-fill,minmax(11rem,1fr));gap:.65rem;margin:0;padding:0;list-style:none;display:grid}.explore-card{border:1px solid var(--border-subtle);border-radius:var(--radius);background:var(--bg-surface);width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;flex-direction:column;align-items:flex-start;gap:.45rem;padding:1rem;transition:border-color .15s,background .15s,box-shadow .15s;display:flex}.explore-card:hover{border-color:var(--accent);background:var(--bg-hover);box-shadow:var(--shadow-sm)}.explore-card-icon{border-radius:var(--radius-sm);background:var(--accent-soft);width:2.5rem;height:2.5rem;color:var(--accent);justify-content:center;align-items:center;display:flex}.series-card .explore-card-icon{background:var(--want-soft);color:var(--want)}.explore-card-title{font-size:.95rem;font-weight:600;line-height:1.3}.explore-card-meta{color:var(--text-muted);flex-wrap:wrap;align-items:center;gap:.35rem .5rem;font-size:.75rem;display:flex}.series-link{border-radius:var(--radius-pill);background:var(--accent-soft);color:var(--accent);font:inherit;cursor:pointer;border:none;align-items:center;gap:.3rem;margin-top:.15rem;padding:.15rem .45rem;font-size:.75rem;transition:background .15s;display:inline-flex}.series-link:hover{background:#fbbf2438}.book-meta-inline{color:var(--text-muted);align-items:center;gap:.3rem;margin-top:.15rem;font-size:.75rem;display:inline-flex}.breadcrumb-sep{color:var(--text-muted);flex-shrink:0}.detail-hero{align-items:flex-start;gap:1.25rem;margin-bottom:1rem;display:flex}.detail-hero-text{flex:1;min-width:0}.detail-blurb{color:var(--text-secondary);margin:0 0 1.25rem;font-size:.95rem;line-height:1.55}.detail-blurb-loading{color:var(--text-muted);align-items:center;gap:.4rem;font-size:.85rem;display:flex}.detail-title-row h2{margin:0}.detail-ol-row{margin:.35rem 0 0}.detail-ol-link{color:var(--accent);align-items:center;gap:.35rem;font-size:.82rem;font-weight:500;text-decoration:none;display:inline-flex}.detail-ol-link:hover{text-decoration:underline}.editable-ol-work-key-display{font-family:var(--font-mono,ui-monospace, monospace);font-size:.85rem}.editable-ol-work-key-input{min-width:14rem;font-family:var(--font-mono,ui-monospace, monospace);font-size:.85rem}.book-links-panel h3{align-items:center;gap:.45rem;margin:0 0 .35rem;display:flex}.book-links-panel-desc{margin:0 0 .85rem;font-size:.85rem}.book-links-editor{flex-direction:column;gap:.75rem;display:flex}.book-links-list{flex-direction:column;gap:.45rem;margin:0;padding:0;list-style:none;display:flex}.book-link-item{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;display:flex}.book-link-anchor{color:var(--accent);align-items:center;gap:.35rem;font-size:.9rem;font-weight:500;text-decoration:none;display:inline-flex}.book-link-anchor:hover{text-decoration:underline}.book-link-kind-muted{color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;font-size:.75rem}.book-link-item-actions{gap:.25rem;display:inline-flex}.book-link-form{grid-template-columns:minmax(7rem,auto) 1fr;gap:.5rem;width:100%;display:grid}.book-link-form input[type=url],.book-link-form input[type=text]{grid-column:2}.book-link-form-actions{grid-column:1/-1;justify-content:flex-end;gap:.5rem;display:flex}.book-link-error{margin:0}.book-create-hero{align-items:flex-start}.book-create-cover-placeholder{border:1px dashed var(--border);border-radius:var(--radius);width:7.5rem;height:11rem;color:var(--text-muted);background:var(--bg-elevated);flex-shrink:0;justify-content:center;align-items:center;display:flex}.book-create-fields{flex-direction:column;flex:1;gap:.75rem;min-width:min(100%,20rem);display:flex}.book-create-field{flex-direction:column;gap:.3rem;display:flex}.book-create-label{text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);font-size:.78rem;font-weight:600}.book-create-field input{font-size:1rem}.book-create-actions{justify-content:flex-end;gap:.75rem;margin-top:1rem;display:flex}.empty{color:var(--text-muted);text-align:center;background:var(--bg-elevated);border:1px dashed var(--border);border-radius:var(--radius);justify-content:center;align-items:center;gap:.5rem;padding:1.5rem;font-style:italic;display:flex}.error{color:var(--reject);align-items:center;gap:.4rem;display:flex}.loading-row{color:var(--text-muted);align-items:center;gap:.5rem;display:flex}.search-pending{color:var(--text-muted);align-items:center;gap:.4rem;margin:0 0 .75rem;font-size:.8rem;display:inline-flex}.spin{animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.stats-page .page-desc{margin-bottom:1.25rem}.stats-filters{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius);flex-wrap:wrap;align-items:flex-end;gap:.75rem 1rem;margin-bottom:1.5rem;padding:1rem 1.1rem;display:flex}.stats-filter{color:var(--text-muted);flex-direction:column;gap:.35rem;min-width:8rem;font-size:.75rem;display:flex}.stats-filter select,.stats-filter input[type=date]{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-input);color:var(--text-primary);padding:.45rem .6rem;font-size:.875rem}.stats-chart-panel-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem .75rem;margin-bottom:.75rem;display:flex}.stats-chart-panel-header h3{margin:0}.stats-metric-toggle{gap:.25rem;display:flex}.stats-metric-toggle button{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-input);color:var(--text-secondary);cursor:pointer;padding:.45rem .75rem;font-size:.8rem}.stats-metric-toggle button.active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.stats-summary{grid-template-columns:repeat(auto-fill,minmax(7.5rem,1fr));gap:.65rem;margin-bottom:1.5rem;display:grid}.stats-card{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius);color:var(--text-muted);flex-direction:column;align-items:flex-start;gap:.25rem;padding:.85rem 1rem;display:flex}.stats-card svg{opacity:.7}.stats-card-value{color:var(--text-primary);letter-spacing:-.02em;font-size:1.35rem;font-weight:700}.stats-card-prose{color:var(--text-primary);letter-spacing:-.01em;margin:0;font-size:.92rem;font-weight:600;line-height:1.4}.stats-card-sub{color:var(--text-muted);margin-top:.2rem;font-size:.68rem;font-weight:500;line-height:1.35;display:block}.stats-card-projection-up svg{color:var(--read)}.stats-card-projection-down svg{color:#f87171}.stats-card-projection-flat svg{color:var(--text-muted)}.stats-card-label{text-transform:uppercase;letter-spacing:.04em;font-size:.72rem}.stats-charts{grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:1.5rem;display:grid}.stats-chart-panel{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius);padding:1rem 1rem .5rem}.stats-chart-panel-wide{grid-column:1/-1}.stats-chart-panel h3{color:var(--text-secondary);margin:0 0 .75rem;font-size:.9rem;font-weight:600}.stats-chart-panel-clickable .stats-chart-bar{transition:opacity .15s}.stats-chart-panel-clickable .stats-chart-bar:hover{opacity:.85}.stats-empty{color:var(--text-muted);margin:1rem 0 1.5rem;font-size:.85rem}.chart-tooltip{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-sm);padding:.5rem .65rem;font-size:.8rem}.chart-tooltip-label{color:var(--text-primary);margin-bottom:.35rem;font-weight:600}.chart-tooltip-row{color:var(--text-secondary);justify-content:space-between;gap:1rem;display:flex}.chart-tooltip-books{max-height:8rem;color:var(--text-secondary);margin:.35rem 0 0;padding:.35rem 0 0 1rem;font-size:.75rem;line-height:1.35;overflow-y:auto}.chart-tooltip-books li+li{margin-top:.15rem}.chart-tooltip-total{border-top:1px solid var(--border-subtle);color:var(--text-primary);margin-top:.35rem;padding-top:.35rem;font-weight:600}.stats-chart-hint{color:var(--text-muted);margin:-.35rem 0 .5rem;font-size:.75rem}.stats-table-panel{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius);padding:1rem}.stats-table-panel h3{color:var(--text-secondary);flex-wrap:wrap;align-items:baseline;gap:.5rem .75rem;margin:0 0 .75rem;font-size:.9rem;font-weight:600;display:flex}.stats-table-count{color:var(--text-muted);font-size:.75rem;font-weight:400}.stats-table-scroll{max-height:min(70vh,960px);overflow:auto}.stats-table{border-collapse:collapse;width:100%;font-size:.85rem}.stats-table th{text-align:left;border-bottom:1px solid var(--border);color:var(--text-muted);text-transform:uppercase;letter-spacing:.03em;padding:.5rem .65rem;font-size:.75rem;font-weight:500}.sortable-th-btn{font:inherit;color:inherit;text-transform:inherit;letter-spacing:inherit;cursor:pointer;background:0 0;border:none;border-radius:4px;align-items:center;gap:.3rem;padding:0;display:inline-flex}.sortable-th-btn:hover,.sortable-th-btn-active{color:var(--text-secondary)}.sortable-th-idle{opacity:.35}.sortable-th-btn:hover .sortable-th-idle,.sortable-th-btn-active .sortable-th-idle{opacity:.65}.sortable-th-right,.sortable-td-right{text-align:right}.sortable-th-right .sortable-th-btn{justify-content:flex-end;width:100%}.stats-table td{border-bottom:1px solid var(--border-subtle);vertical-align:top;padding:.55rem .65rem}.stats-table-author{color:var(--text-muted);font-size:.75rem;display:block}.stats-list-tabs{margin-bottom:.75rem}.stats-list-tab-count{color:var(--text-muted);background:var(--bg-surface);border-radius:999px;padding:.05rem .45rem;font-size:.72rem;font-weight:600}.btn-tab-active .stats-list-tab-count{color:var(--accent);background:#7c8cff1f}.stats-list-tab-desc{color:var(--text-muted);margin:0 0 .75rem;font-size:.78rem}.stats-table-empty{color:var(--text-muted);text-align:center;font-style:italic;padding:1.25rem .65rem!important}.stats-table-row-reading{background:#60a5fa0f}.stats-table-row-undated{opacity:.82}.stats-table-badge{text-transform:uppercase;letter-spacing:.04em;color:var(--want);margin-bottom:.15rem;font-size:.68rem;font-weight:600;display:inline-block}.stats-table-badge-muted{color:var(--text-muted)}.stats-table-date-sub{color:var(--text-muted);font-size:.75rem;display:block}@media (width<=720px){.stats-charts{grid-template-columns:1fr}.stats-chart-panel-header{flex-direction:column;align-items:flex-start}.stats-metric-toggle{width:100%}}.dashboard-page .page-desc{margin-bottom:1.25rem}.dashboard-grid{grid-template-columns:1fr 1fr;gap:1rem;display:grid}.dashboard-tile{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius);padding:1rem 1rem .85rem}.dashboard-tile-wide{grid-column:1/-1}.dashboard-tile-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem .75rem;margin-bottom:.85rem;display:flex}.dashboard-tile-header h3{color:var(--text-secondary);align-items:center;gap:.45rem;margin:0;font-size:.9rem;font-weight:600;display:flex}.dashboard-tile-header h3 svg{opacity:.75}.dashboard-tile-link{color:var(--accent);align-items:center;gap:.15rem;font-size:.78rem;font-weight:500;text-decoration:none;display:inline-flex}.dashboard-tile-link:hover{text-decoration:underline}.dashboard-stats-summary{margin-bottom:.85rem}.dashboard-empty{margin:.5rem 0 .25rem;font-size:.85rem}.dashboard-book-list{flex-direction:column;gap:.65rem;margin:0;padding:0;list-style:none;display:flex}.dashboard-book-row{align-items:flex-start;gap:.65rem;display:flex}.dashboard-want-rank{color:var(--text-muted);text-align:center;flex:0 0 1.25rem;padding-top:.15rem;font-size:.75rem;font-weight:600}.dashboard-book-meta{flex-direction:column;gap:.15rem;min-width:0;display:flex}.dashboard-book-title{color:var(--text-primary);font-size:.88rem;font-weight:600;line-height:1.3;text-decoration:none}.dashboard-book-title:hover{color:var(--accent)}.dashboard-book-author{color:var(--text-muted);font-size:.78rem}.dashboard-book-date,.dashboard-book-length{color:var(--text-muted);align-items:center;gap:.25rem;font-size:.72rem;display:inline-flex}.dashboard-queue-stat{color:var(--text-muted);margin:-.15rem 0 .65rem;font-size:.75rem}.dashboard-rec-grid{grid-template-columns:repeat(3,1fr);gap:.85rem;display:grid}.dashboard-rec-item{flex-direction:column;gap:.45rem;display:flex}.dashboard-rec-seed{color:var(--text-muted);margin:0;font-size:.72rem;line-height:1.35}.dashboard-rec-seed a{color:var(--text-secondary);font-weight:500}.dashboard-rec-card{background:var(--bg-input);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);gap:.6rem;padding:.55rem;display:flex;position:relative}.dashboard-rec-dismiss{z-index:2;border-radius:var(--radius-pill);width:1.65rem;height:1.65rem;color:var(--text-muted);cursor:pointer;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0a0c10c7;border:none;justify-content:center;align-items:center;padding:0;transition:color .15s,background .15s;display:flex;position:absolute;top:.35rem;right:.35rem}.dashboard-rec-dismiss:hover:not(:disabled){color:#f87171;background:#0a0c10eb}.dashboard-rec-dismiss:disabled{opacity:.45;cursor:not-allowed}.dashboard-rec-meta{flex-direction:column;gap:.2rem;min-width:0;display:flex}.dashboard-rec-cover-hit{cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;flex:none;padding:0}.dashboard-rec-cover-hit:disabled{cursor:wait;opacity:.7}.dashboard-rec-cover-hit:not(:disabled):hover{opacity:.92}.dashboard-rec-title-row{align-items:flex-start;gap:.25rem;min-width:0;display:flex}.dashboard-rec-title{color:var(--text-primary);text-align:left;margin:0;font-size:.82rem;font-weight:600;line-height:1.3;text-decoration:none}.dashboard-rec-title:hover{color:var(--accent)}.dashboard-rec-title-btn{cursor:pointer;background:0 0;border:none;padding:0}.dashboard-rec-title-btn:disabled{cursor:wait;opacity:.7}.dashboard-rec-meta h4{color:var(--text-primary);margin:0;font-size:.82rem;font-weight:600;line-height:1.3}.dashboard-rec-meta p{color:var(--text-muted);margin:0;font-size:.74rem}.dashboard-rec-actions{flex-wrap:wrap;gap:.3rem;margin-top:.25rem;display:flex}.dashboard-rec-actions .btn{gap:.2rem;padding:.28rem .45rem;font-size:.68rem}@media (width<=960px){.dashboard-rec-grid{grid-template-columns:repeat(2,1fr)}}@media (width<=720px){.dashboard-grid,.dashboard-rec-grid{grid-template-columns:1fr}}.book-blurb-hover{flex-shrink:0;display:inline-block;position:relative}.book-blurb-hover-cover-card{width:100%;height:100%;display:block}.book-blurb-popup{z-index:2000;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-md);pointer-events:none;padding:.7rem .8rem;animation:.16s bookBlurbIn}.book-blurb-popup-right{animation-name:bookBlurbInSide}.book-blurb-popup-below{animation-name:bookBlurbInBelow}.book-blurb-popup-title{color:var(--text-primary);margin:0 0 .2rem;font-size:.88rem;font-weight:700;line-height:1.3}.book-blurb-popup-author{color:var(--text-muted);margin:0 0 .45rem;font-size:.76rem;line-height:1.3}.book-blurb-popup-text{color:var(--text-secondary);align-items:flex-start;gap:.35rem;margin:0;font-size:.78rem;line-height:1.45;display:flex}@keyframes bookBlurbIn{0%{opacity:0;transform:translate(-50%,calc(4px - 100%))}to{opacity:1;transform:translate(-50%,-100%)}}@keyframes bookBlurbInSide{0%{opacity:0;transform:translate(-4px)}to{opacity:1;transform:translate(0)}}@keyframes bookBlurbInBelow{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.series-suggestions{margin-bottom:1.25rem}.series-suggestions h3{align-items:center;gap:.5rem;margin:0 0 .5rem;font-size:1rem;display:flex}.series-suggestions-desc{color:var(--text-secondary);margin:0 0 1rem;font-size:.9rem}.series-suggestions-empty .muted{margin:0}.series-suggestions-grid{grid-template-columns:repeat(auto-fill,minmax(7.5rem,1fr));gap:.75rem;margin:0;padding:0;list-style:none;display:grid}.series-suggestion-card{border:1px solid var(--border-subtle);border-radius:var(--radius-sm);background:var(--bg-surface);width:100%;color:var(--text-primary);cursor:pointer;text-align:left;flex-direction:column;align-items:stretch;gap:.35rem;padding:.65rem;transition:border-color .15s,background .15s,transform .12s;display:flex}.series-suggestion-card:hover:not(:disabled){border-color:var(--accent);background:var(--bg-hover)}.series-suggestion-card:active:not(:disabled){transform:scale(.98)}.series-suggestion-card:disabled{opacity:.6;cursor:wait}.series-suggestion-title{-webkit-line-clamp:3;-webkit-box-orient:vertical;font-size:.8rem;font-weight:600;line-height:1.25;display:-webkit-box;overflow:hidden}.series-suggestion-author{color:var(--text-secondary);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:.72rem;line-height:1.2;display:-webkit-box;overflow:hidden}.series-suggestion-action{color:var(--want);align-items:center;gap:.25rem;margin-top:.15rem;font-size:.72rem;font-weight:600;display:inline-flex}.recommend-page .page-desc{margin-bottom:1rem}.recommend-seed{color:var(--text-secondary);background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-pill);align-items:center;gap:.4rem;margin:0 0 1.25rem;padding:.35rem .5rem .35rem .75rem;font-size:.85rem;display:inline-flex}.recommend-seed-text{line-height:1.35}.recommend-seed-text strong{color:var(--text-primary);font-weight:600}.recommend-seed-refresh,.recommend-seed-dismiss{border-radius:var(--radius-pill);width:1.65rem;height:1.65rem;color:var(--text-muted);cursor:pointer;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.recommend-seed-refresh:hover:not(:disabled),.recommend-seed-dismiss:hover{background:var(--bg-elevated);color:var(--text-primary)}.recommend-seed-refresh:disabled{cursor:default;opacity:.6}.recommend-shelf-empty{color:var(--text-muted);margin:0;padding:.75rem 0;font-size:.85rem}.recommend-section{margin-bottom:2.25rem}.recommend-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:1.25rem;display:grid}.recommend-sentinel{width:100%;height:1px}.recommend-end{text-align:center;color:var(--text-secondary);margin:1.5rem 0 .5rem}.recommend-end p{margin:0 0 .75rem}.recommend-slot{aspect-ratio:2/3;position:relative}.recommend-card{border-radius:var(--radius);border:1px solid var(--border-subtle);background:var(--bg-surface);height:100%;transition:transform .2s,box-shadow .2s,border-color .15s;position:relative;overflow:hidden}.recommend-card-idle:hover{box-shadow:var(--shadow);border-color:var(--accent);transform:translateY(-4px)}.recommend-card-hit:active{transform:scale(.98)}.recommend-card-hit{width:100%;height:100%;color:inherit;cursor:pointer;text-align:left;font:inherit;background:0 0;border:none;padding:0;transition:transform .1s;display:block}.recommend-corner-btn,.recommend-dismiss,.recommend-start-reading,.recommend-mark-read{z-index:3;border-radius:var(--radius-pill);height:2rem;color:var(--text-secondary);cursor:pointer;white-space:nowrap;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0a0c10b8;border:none;justify-content:center;align-items:center;gap:.3rem;padding:0 .6rem;transition:opacity .15s,transform .12s,background .15s,color .15s;display:flex;position:absolute;top:.5rem}.recommend-corner-label{font-size:.72rem;font-weight:600;line-height:1}.recommend-dismiss{right:.5rem}.recommend-ol-link{z-index:3;border-radius:var(--radius-pill);border:1px solid var(--border-subtle);width:2rem;height:2rem;color:var(--text-secondary);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);opacity:0;pointer-events:none;background:#0a0c10b8;justify-content:center;align-items:center;text-decoration:none;transition:opacity .15s,transform .12s,background .15s,color .15s;display:flex;position:absolute;bottom:.5rem;right:.5rem;transform:translateY(4px)scale(.9)}.recommend-card:hover .recommend-ol-link,.recommend-ol-link:focus-visible{opacity:1;pointer-events:auto;transform:translateY(0)scale(1)}.recommend-ol-link:hover{color:var(--text-primary);border-color:var(--border);background:#0a0c10eb}.recommend-author-actions{z-index:3;opacity:0;pointer-events:none;align-items:center;gap:.3rem;transition:opacity .15s,transform .12s;display:flex;position:absolute;bottom:.5rem;left:.5rem;transform:translateY(4px)scale(.9)}.recommend-card:hover .recommend-author-actions,.recommend-author-actions:focus-within{opacity:1;pointer-events:auto;transform:translateY(0)scale(1)}.recommend-author-link{border-radius:var(--radius-pill);border:1px solid var(--border-subtle);height:1.75rem;color:var(--text-secondary);white-space:nowrap;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0a0c10b8;align-items:center;gap:.3rem;padding:0 .6rem;font-size:.7rem;font-weight:600;line-height:1;text-decoration:none;transition:background .15s,color .15s,border-color .15s;display:flex}.recommend-author-link:hover{color:var(--text-primary);border-color:var(--border);background:#0a0c10eb}.recommend-ol-author-link{border-radius:var(--radius-pill);border:1px solid var(--border-subtle);width:1.75rem;height:1.75rem;color:var(--text-muted);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0a0c10b8;flex-shrink:0;justify-content:center;align-items:center;text-decoration:none;transition:background .15s,color .15s,border-color .15s;display:flex}.recommend-ol-author-link:hover{color:var(--text-secondary);border-color:var(--border);background:#0a0c10eb}.recommend-dismiss:hover{color:var(--reject);background:#0a0c10eb}.recommend-mark-read{color:var(--read);opacity:0;pointer-events:none;background:#4ade802e;border:1px solid #4ade8066;left:.5rem;transform:translateY(-4px)scale(.9)}.recommend-card:hover .recommend-mark-read,.recommend-mark-read:focus-visible{opacity:1;pointer-events:auto;transform:translateY(0)scale(1)}.recommend-mark-read:hover{color:#bbf7d0;background:#4ade8052}.recommend-start-reading{color:var(--reading);opacity:0;pointer-events:none;background:#c084fc2e;border:1px solid #c084fc66;top:2.85rem;left:.5rem;transform:translateY(-4px)scale(.9)}.recommend-card:hover .recommend-start-reading,.recommend-start-reading:focus-visible{opacity:1;pointer-events:auto;transform:translateY(0)scale(1)}.recommend-start-reading:hover{color:#e9d5ff;background:#c084fc52}.recommend-cover-wrap{width:100%;height:100%;position:relative}.recommend-cover-wrap .book-cover-lg{border:none;border-radius:0;width:100%;height:100%}.recommend-card-overlay{z-index:1;background:linear-gradient(#0000 0%,#080a0e59 28%,#080a0ed1 62%,#080a0ef5 100%);flex-direction:column;gap:.15rem;padding:1.75rem .85rem .7rem;display:flex;position:absolute;inset:auto 0 0}.recommend-accept-overlay{z-index:2;color:var(--want);background:#60a5fa59;justify-content:center;align-items:center;animation:.48s recommendAcceptOverlay;display:flex;position:absolute;inset:0}.recommend-accept-overlay-read{color:var(--read);background:#4ade8059}.recommend-accept-overlay-reading{color:var(--reading);background:#c084fc59}@keyframes recommendAcceptOverlay{0%{opacity:0}to{opacity:1}}.recommend-card-title{color:#fff;-webkit-line-clamp:2;text-shadow:0 1px 3px #0009;-webkit-box-orient:vertical;margin:0;font-size:.95rem;font-weight:700;line-height:1.25;display:-webkit-box;overflow:hidden}.recommend-card-author{color:#ffffffc7;-webkit-line-clamp:1;-webkit-box-orient:vertical;margin:0;font-size:.78rem;display:-webkit-box;overflow:hidden}.recommend-card-cta{z-index:2;color:var(--want);border-radius:var(--radius-pill);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);white-space:nowrap;opacity:0;pointer-events:none;background:#080a0eb8;border:1px solid #60a5fa59;align-items:center;gap:.35rem;padding:.4rem .85rem;font-size:.8rem;font-weight:700;transition:opacity .18s,transform .18s;display:inline-flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)scale(.85)}.recommend-card:hover .recommend-card-cta{opacity:1;transform:translate(-50%,-50%)scale(1)}.page-desc-icon{vertical-align:-2px;color:var(--read);display:inline-block}.recommend-card-skeleton{border-radius:var(--radius);border:1px solid var(--border-subtle);background:linear-gradient(110deg, var(--bg-surface) 8%, var(--bg-hover) 18%, var(--bg-surface) 33%);background-size:200% 100%;height:100%;min-height:18rem;animation:1.2s ease-in-out infinite recommendShimmer}@keyframes recommendShimmer{0%{background-position:100% 0}to{background-position:-100% 0}}@keyframes recommendEnter{0%{opacity:0;transform:translateY(16px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}.recommend-card-enter{animation:.4s cubic-bezier(.22,1,.36,1) both recommendEnter}.recommend-card-enter-0{animation-delay:0s}.recommend-card-enter-1{animation-delay:80ms}.recommend-card-enter-2{animation-delay:.16s}.recommend-card-enter-3{animation-delay:.24s}.recommend-card-enter-4{animation-delay:.32s}.recommend-card-enter-5{animation-delay:.4s}.recommend-card-accepting{border-color:var(--want);box-shadow:0 0 0 2px var(--want-soft);transition:transform .8s,box-shadow .8s,border-color .6s;transform:scale(1.03)}.recommend-card-accepting-read{border-color:var(--read);box-shadow:0 0 0 2px var(--read-soft)}.recommend-card-accepting-reading{border-color:var(--reading);box-shadow:0 0 0 2px var(--reading-soft)}.recommend-card-exit-accept{opacity:0;pointer-events:none;transition:opacity .8s,transform .8s;transform:scale(.92)translateY(-8px)}.recommend-card-exit-dismiss{opacity:0;pointer-events:none;transition:opacity 1.12s,transform 1.12s;transform:translate(24px)}.recommend-empty{text-align:center;padding:2rem 1.25rem}.recommend-busy{color:var(--text-muted);align-items:center;gap:.4rem;margin-top:1rem;font-size:.8rem;display:flex}@media (width<=720px){.recommend-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=420px){.recommend-grid{grid-template-columns:1fr}.recommend-slot{aspect-ratio:auto;min-height:22rem}}@media (prefers-reduced-motion:reduce){.recommend-card-enter,.recommend-card-exit-accept,.recommend-card-exit-dismiss,.recommend-card-skeleton,.recommend-accept-overlay,.book-cover-img.recommend-cover-loaded{animation:none!important}.recommend-card-enter,.recommend-card-exit-accept,.recommend-card-exit-dismiss{transition:opacity .2s!important;transform:none!important}.recommend-card-idle:hover{transform:none}}.reading-dates{flex-wrap:wrap;gap:.5rem .9rem;margin-top:.4rem;display:flex}.reading-date-field{color:var(--text-secondary);align-items:center;gap:.35rem;font-size:.78rem;display:inline-flex}.reading-date-field>span{font-weight:500}.reading-date-field input[type=date]{font:inherit;border-radius:var(--radius-sm);border:1px solid var(--border-subtle);background:var(--bg-surface);color:var(--text-primary);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;padding:.2rem .4rem;font-size:.78rem}.reading-date-field input[type=date]:focus-visible{border-color:var(--reading);box-shadow:0 0 0 2px var(--reading-soft);outline:none}.reading-date-field input[type=date]:disabled{opacity:.6}.app-auth{grid-area:1/2;justify-content:flex-end;justify-self:end;align-items:center;gap:.65rem;display:flex}.app-auth-user{color:var(--text-secondary);font-size:.9rem;font-weight:500}.btn-auth{text-decoration:none}.login-shell{justify-content:center;align-items:center;min-height:100vh;padding:2rem 1.5rem;display:flex}.login-page{width:min(100%,28rem);margin:0 auto}.login-brand{align-items:center;gap:.65rem;margin:0 0 1.5rem;font-size:1.25rem;font-weight:700;display:flex}.login-user-grid{gap:.65rem;margin:1.25rem 0;display:grid}.login-user-btn{justify-content:center;padding:.75rem 1rem;font-size:1rem}.login-status{color:var(--text-secondary);align-items:center;gap:.5rem;display:flex}.login-error{color:var(--reject);margin:.5rem 0 0}.login-oauth{margin-top:.5rem}.login-oauth-buttons{flex-wrap:wrap;gap:.5rem;display:flex}.btn-google{font-weight:500}.login-divider{color:var(--text-muted);text-align:center;margin:1.75rem 0 1rem;font-size:.85rem}.login-oauth-placeholder{border-top:1px solid var(--border-subtle);margin-top:2rem;padding-top:1.5rem}.login-oauth-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;margin:0 0 .75rem;font-size:.85rem}.login-back{margin-top:1.5rem;font-size:.9rem}.login-back a{color:var(--text-secondary)}.login-prompt{border-radius:var(--radius-sm);background:var(--bg-surface);border:1px solid var(--border-subtle);color:var(--text-secondary);flex-wrap:wrap;align-items:center;gap:.35rem;margin:.75rem 0 0;padding:.65rem .85rem;font-size:.9rem;display:flex}.login-prompt a{color:var(--accent);font-weight:500}.star-rating-readonly{opacity:.85}.editable-field-readonly{cursor:default}.preferences-page .preferences-panel{border-radius:var(--radius);background:var(--bg-elevated);border:1px solid var(--border-subtle);margin-top:1.25rem;padding:1.25rem}.preferences-section-title{color:var(--text-primary);align-items:center;gap:.45rem;margin:0 0 1rem;font-size:.95rem;font-weight:600;display:flex}.language-grid{grid-template-columns:repeat(auto-fill,minmax(9.5rem,1fr));gap:.55rem;display:grid}.language-chip{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-surface);color:var(--text-secondary);cursor:pointer;flex-direction:column;align-items:flex-start;gap:.15rem;padding:.65rem .75rem;transition:border-color .15s,background .15s,color .15s;display:flex}.language-chip:hover{border-color:var(--accent);background:var(--bg-hover);color:var(--text-primary)}.language-chip-on{border-color:var(--accent);background:var(--accent-soft);color:var(--text-primary)}.language-chip-code{letter-spacing:.06em;color:var(--accent);font-size:.72rem;font-weight:700}.language-chip-label{font-size:.88rem}.preferences-hint{color:var(--text-muted);margin:1rem 0 0;font-size:.85rem;line-height:1.45}.preferences-actions{align-items:center;gap:.75rem;margin-top:1.25rem;display:flex}.preferences-saved{color:var(--read);font-size:.85rem}.agent-token-create{margin-top:1rem}.agent-token-label{color:var(--text-secondary);margin-bottom:.4rem;font-size:.85rem;display:block}.agent-token-create-row{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.agent-token-input{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-surface);min-width:0;color:var(--text-primary);flex:14rem;padding:.55rem .7rem;font-size:.9rem}.agent-token-reveal{border-radius:var(--radius-sm);border:1px solid var(--accent);background:var(--accent-soft);margin-top:1rem;padding:1rem}.agent-token-reveal-title{color:var(--text-primary);margin:0 0 .35rem;font-weight:600}.agent-token-value{border-radius:var(--radius-sm);background:var(--bg-surface);border:1px solid var(--border-subtle);word-break:break-all;color:var(--text-primary);margin:.75rem 0;padding:.65rem .75rem;font-size:.78rem;display:block}.agent-token-table{border-collapse:collapse;width:100%;margin-top:1.25rem;font-size:.88rem}.agent-token-table th,.agent-token-table td{text-align:left;border-bottom:1px solid var(--border-subtle);padding:.55rem .65rem}.agent-token-table th{color:var(--text-muted);font-size:.78rem;font-weight:600}.agent-token-revoke{color:var(--reject);align-items:center;gap:.35rem;display:inline-flex}.book-map-section .map-lede{color:var(--text-secondary);max-width:42rem;margin:0 0 1rem;font-size:.9rem}.map-status,.map-error{color:var(--text-secondary);align-items:center;gap:.5rem;display:flex}.map-error{color:var(--reject)}.map-layout{grid-template-columns:minmax(0,1fr) minmax(220px,280px);align-items:start;gap:1.25rem;display:grid}@media (width<=800px){.map-layout{grid-template-columns:1fr}}.map-svg{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);width:100%;height:auto}.map-panel{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);padding:1rem 1.1rem}.map-panel-kicker{text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);margin:0;font-size:.75rem}.map-panel-title{margin:.35rem 0 .15rem;font-size:1.05rem;font-weight:600;line-height:1.3}.map-panel-author,.map-panel-status,.map-panel-meta,.map-panel-empty{color:var(--text-secondary);margin:.2rem 0;font-size:.9rem}.map-panel-actions{flex-wrap:wrap;gap:.45rem;margin:.85rem 0 1rem;display:flex}.map-legend{border-top:1px solid var(--border-subtle);color:var(--text-secondary);gap:.35rem;margin:0;padding:.75rem 0 0;font-size:.8rem;list-style:none;display:grid}.map-legend li{align-items:center;gap:.45rem;display:flex}.map-swatch{border-radius:50%;flex-shrink:0;width:.65rem;height:.65rem}
