:root{--bg:#faf8f5;--fg:#24201b;--muted:#7a726a;--accent:#6b4f3a;--card:#fff;--border:#e7e0d8;--ok-bg:#e7f4ec;--ok-fg:#256b45;--err-bg:#fbeaea;--err-fg:#a13030;color:var(--fg);background:var(--bg);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}body{margin:0}.app{min-height:100vh}.topbar{border-bottom:1px solid var(--border);background:var(--card);justify-content:space-between;align-items:center;padding:1rem 1.5rem;display:flex}.nav a{color:var(--accent);font-size:.95rem;font-weight:600;text-decoration:none}.nav a:hover{text-decoration:underline}.brand{color:var(--fg);font-size:1.1rem;font-weight:700;text-decoration:none}.container{max-width:960px;margin:0 auto;padding:2rem 1.5rem}h1{font-size:1.6rem;line-height:1.3}.muted{color:var(--muted)}code{background:#efe9e1;border-radius:4px;padding:.1em .35em;font-size:.9em}.banner{border-radius:8px;margin:1rem 0;padding:.75rem 1rem;font-size:.95rem}.banner.checking{color:var(--muted);background:#f0ece6}.banner.ok{background:var(--ok-bg);color:var(--ok-fg)}.banner.error{background:var(--err-bg);color:var(--err-fg)}.grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:1.25rem;margin-top:1.5rem;display:grid}.card{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:1rem}.card.clickable{cursor:pointer;transition:box-shadow .15s,transform .15s}.card.clickable:hover{transform:translateY(-2px);box-shadow:0 4px 16px #00000014}.card.clickable:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.cover{aspect-ratio:2/3;object-fit:cover;background:#efe9e1;border-radius:6px;width:100%}.cover.placeholder{color:var(--muted);justify-content:center;align-items:center;font-size:.85rem;display:flex}.card-title{margin:.75rem 0 .25rem;font-size:1rem}.rec{margin:.5rem 0 0;font-size:.85rem}.note{color:var(--muted);font-size:.9rem;font-style:italic}.form{flex-direction:column;gap:1rem;max-width:460px;margin-top:1.5rem;display:flex}.form label{flex-direction:column;gap:.35rem;font-size:.9rem;font-weight:600;display:flex}.form input,.form textarea{font:inherit;border:1px solid var(--border);border-radius:6px;padding:.55rem .7rem;font-weight:400}button{font:inherit;cursor:pointer;background:var(--accent);color:#fff;border:none;border-radius:6px;padding:.6rem 1rem;font-weight:600}button:disabled{opacity:.55;cursor:not-allowed}.error{color:var(--err-fg);font-size:.9rem}.small{font-size:.85rem}.book-search{max-width:460px;margin-top:1.5rem}.book-search label{flex-direction:column;gap:.35rem;font-size:.9rem;font-weight:600;display:flex}.book-search input{font:inherit;border:1px solid var(--border);border-radius:6px;padding:.55rem .7rem}.results{border:1px solid var(--border);background:var(--card);border-radius:8px;margin:.75rem 0 0;padding:0;list-style:none;overflow:hidden}.results li+li{border-top:1px solid var(--border)}.result{text-align:left;width:100%;color:var(--fg);background:0 0;border:none;border-radius:0;align-items:center;gap:.75rem;padding:.6rem .75rem;font-weight:400;display:flex}.result:hover{background:#f4efe9}.result-cover{object-fit:cover;background:#efe9e1;border-radius:3px;flex-shrink:0;width:40px;height:60px}.result-cover.placeholder{color:var(--muted);justify-content:center;align-items:center;display:flex}.result-meta{flex-direction:column;gap:.15rem;display:flex}.result-title{font-weight:600}.selected{border:1px solid var(--border);background:var(--card);border-radius:8px;align-items:flex-start;gap:1rem;margin-top:1.5rem;padding:1rem;display:flex}.selected .result-cover{width:56px;height:84px}.selected p{margin:.25rem 0 .5rem}.manual{max-width:460px;margin-top:1.5rem}.manual label{flex-direction:column;gap:.35rem;font-size:.9rem;font-weight:600;display:flex}.manual input{font:inherit;border:1px solid var(--border);border-radius:6px;padding:.55rem .7rem}.link{color:var(--accent);background:0 0;margin-top:.5rem;padding:.4rem 0;font-weight:600;text-decoration:underline}.shelf-head{justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.shelf-head .link{flex-shrink:0}.empty{border:1px dashed var(--border);text-align:center;background:var(--card);border-radius:10px;margin-top:1.5rem;padding:2rem}.shelf-actions{flex-shrink:0;align-items:center;gap:1rem;display:flex}.pending-link{color:var(--accent);align-items:center;gap:.4rem;font-size:.95rem;font-weight:600;text-decoration:none;display:inline-flex}.pending-link:hover{text-decoration:underline}.badge{background:var(--accent);color:#fff;vertical-align:middle;border-radius:999px;justify-content:center;align-items:center;min-width:1.4rem;height:1.4rem;margin-left:.5rem;padding:0 .4rem;font-size:.8rem;font-weight:700;display:inline-flex}.pending-list{flex-direction:column;gap:1rem;margin:1.5rem 0 0;padding:0;list-style:none;display:flex}.pending-item{border:1px solid var(--border);background:var(--card);border-radius:10px;align-items:flex-start;gap:1rem;padding:1rem;display:flex}.pending-cover{object-fit:cover;background:#efe9e1;border-radius:4px;flex-shrink:0;width:48px;height:72px}.pending-cover.placeholder{color:var(--muted);justify-content:center;align-items:center;display:flex}.pending-meta{flex:1;min-width:0}.pending-meta p{margin:.25rem 0 0}.pending-actions{flex-direction:column;flex-shrink:0;gap:.5rem;display:flex}button.secondary{color:var(--fg);border:1px solid var(--border);background:0 0}button.secondary:hover:not(:disabled){background:#f4efe9}.success{color:var(--ok-fg);font-size:.9rem}.settings-block{border:1px solid var(--border);background:var(--card);border-radius:10px;max-width:520px;margin-top:1.5rem;padding:1.25rem}.field-label{margin-bottom:.5rem;font-size:.9rem;font-weight:600;display:block}.username-row{gap:.5rem;display:flex}.username-row input{min-width:0;font:inherit;border:1px solid var(--border);border-radius:6px;flex:1;padding:.55rem .7rem}.toggle{cursor:pointer;align-items:flex-start;gap:.75rem;padding:.6rem 0;display:flex}.toggle+.toggle{border-top:1px solid var(--border)}.toggle input{width:1.1rem;height:1.1rem;accent-color:var(--accent);flex-shrink:0;margin-top:.2rem}@media (width<=640px){.container{padding:1.5rem 1rem}h1{font-size:1.4rem}.shelf-head{flex-direction:column;align-items:stretch;gap:.75rem}.shelf-actions{flex-wrap:wrap}.grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:1rem}.pending-item{flex-wrap:wrap}.pending-actions{flex-direction:row;width:100%}.pending-actions button{flex:1}.modal{padding:1.25rem}.modal-body{flex-direction:column}.modal-cover{width:96px}.settings-block,.form,.book-search,.manual{max-width:100%}}.modal-backdrop{z-index:50;background:#14100c80;justify-content:center;align-items:center;padding:1.5rem;display:flex;position:fixed;inset:0}.modal{background:var(--card);border-radius:12px;width:100%;max-width:640px;max-height:85vh;padding:1.75rem;position:relative;overflow-y:auto}.modal-close{color:var(--muted);background:0 0;padding:.25rem .5rem;font-size:1.5rem;line-height:1;position:absolute;top:.75rem;right:.75rem}.modal-body{align-items:flex-start;gap:1.5rem;display:flex}.modal-body>div{flex:1;min-width:0}.modal-cover{aspect-ratio:2/3;object-fit:cover;background:#efe9e1;border-radius:6px;flex-shrink:0;width:120px}.modal-cover.placeholder{color:var(--muted);justify-content:center;align-items:center;font-size:.85rem;display:flex}.description{margin-top:1rem;font-size:.92rem;line-height:1.55}
