:root{--color-purple-light: #EEEDFE;--color-purple-mid: #7F77DD;--color-purple-dark: #3C3489;--color-green-light: #E1F5EE;--color-green-mid: #1D9E75;--color-green-dark: #085041;--color-amber-light: #FAEEDA;--color-amber-mid: #BA7517;--color-amber-dark: #633806;--color-red-light: #FCEBEB;--color-red-mid: #E24B4A;--color-red-dark: #501313;--color-bg: #FAFAFC;--color-surface: #FFFFFF;--color-border: #E4E4EC;--color-text: #1F1F2E;--color-text-muted: #6E6E80;--prio-high: var(--color-red-mid);--prio-medium: var(--color-amber-mid);--prio-low: var(--color-green-mid);--spice-bg: var(--color-amber-light);--spice-text: var(--color-amber-dark);--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-pill: 99px;--space-xs: 4px;--space-sm: 8px;--space-md: 12px;--space-lg: 16px;--space-xl: 24px}*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--color-bg);color:var(--color-text);-webkit-font-smoothing:antialiased}h1,h2,h3,p{margin:0}button{font:inherit;cursor:pointer}img{display:block;max-width:100%}.input{width:100%;padding:var(--space-sm) var(--space-md);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);font:inherit}.input:focus{outline:2px solid var(--color-purple-mid);outline-offset:-1px;border-color:var(--color-purple-mid)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-lg);border:none;border-radius:var(--radius-md);font-weight:600}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background:var(--color-purple-mid);color:var(--color-surface)}.btn-primary:hover:not(:disabled){background:var(--color-purple-dark)}.btn-secondary{background:var(--color-purple-light);color:var(--color-purple-dark)}.btn-small{padding:var(--space-xs) var(--space-md)}.pill{display:inline-flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-md);border:1px solid var(--color-border);border-radius:var(--radius-pill);background:var(--color-surface);color:var(--color-text-muted);font-size:.85rem}.pill.active{background:var(--color-purple-light);border-color:var(--color-purple-mid);color:var(--color-purple-dark);font-weight:600}.tag{display:inline-block;padding:2px var(--space-sm);border-radius:var(--radius-sm);background:var(--color-purple-light);color:var(--color-purple-dark);font-size:.7rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.priority-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.priority-high{background:var(--prio-high)}.priority-medium{background:var(--prio-medium)}.priority-low{background:var(--prio-low)}.badge{display:inline-flex;align-items:center;padding:2px 6px;border-radius:var(--radius-pill);font-size:.7rem;font-weight:600}.badge-spice{background:var(--spice-bg);color:var(--spice-text)}.badge-owned{background:var(--color-green-light);color:var(--color-green-dark)}.toast{position:fixed;bottom:var(--space-xl);left:50%;transform:translate(-50%);max-width:calc(100vw - 32px);padding:var(--space-md) var(--space-xl);background:var(--color-purple-dark);color:var(--color-surface);border-radius:var(--radius-md);font-size:.9rem;z-index:100}.empty-state{display:flex;flex-direction:column;align-items:center;gap:var(--space-md);padding:64px var(--space-lg);text-align:center;color:var(--color-text-muted)}.empty-state-icon{font-size:2.5rem}.empty-state h2{color:var(--color-text)}.app-loading{display:flex;align-items:center;justify-content:center;min-height:100vh;color:var(--color-text-muted)}.app{display:flex;flex-direction:column;min-height:100vh}.content{flex:1;width:100%;max-width:1100px;margin:0 auto;padding:var(--space-lg)}.topbar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);padding:var(--space-md) var(--space-lg);background:var(--color-surface);border-bottom:1px solid var(--color-border)}.topbar-brand{display:flex;align-items:center;gap:var(--space-sm);font-weight:700;font-size:1.1rem;color:var(--color-purple-dark)}.topbar-user{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-xs) var(--space-md) var(--space-xs) var(--space-xs);border:1px solid var(--color-border);border-radius:var(--radius-pill);background:var(--color-surface);min-width:0}.topbar-user:hover{border-color:var(--color-purple-mid);background:var(--color-purple-light)}.topbar-avatar{width:28px;height:28px;border-radius:50%;flex-shrink:0}.topbar-avatar-fallback{display:inline-flex;align-items:center;justify-content:center;background:var(--color-purple-mid);color:var(--color-surface);font-size:.8rem;font-weight:700}.topbar-username{font-size:.85rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:140px}.topbar-signout{font-size:.75rem;color:var(--color-text-muted);white-space:nowrap}@media (max-width: 480px){.topbar-username,.topbar-signout{display:none}}.tabs{display:flex;gap:var(--space-sm);padding:var(--space-md) var(--space-lg) 0;max-width:1100px;margin:0 auto;width:100%}.tab{padding:var(--space-sm) var(--space-lg);border:none;border-bottom:2px solid transparent;background:none;color:var(--color-text-muted);font-weight:600}.tab.active{color:var(--color-purple-dark);border-bottom-color:var(--color-purple-mid)}.login-screen{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:var(--space-lg)}.login-card{width:100%;max-width:360px;display:flex;flex-direction:column;gap:var(--space-md);padding:var(--space-xl);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);text-align:center}.login-logo{font-size:2.5rem}.login-title{color:var(--color-purple-dark)}.login-subtitle{color:var(--color-text-muted);font-size:.9rem}.login-google{width:100%}.login-divider{display:flex;align-items:center;gap:var(--space-md);color:var(--color-text-muted);font-size:.8rem}.login-divider:before,.login-divider:after{content:"";flex:1;height:1px;background:var(--color-border)}.login-email-form{display:flex;flex-direction:column;gap:var(--space-sm)}.login-link-sent{font-size:.9rem;color:var(--color-green-dark);background:var(--color-green-light);padding:var(--space-md);border-radius:var(--radius-md)}.shelf-view{display:flex;flex-direction:column;gap:var(--space-lg)}.shelf-header{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-md)}.shelf-count{font-size:1rem;color:var(--color-text-muted);font-weight:600}.filter-pills{display:flex;gap:var(--space-sm);flex-wrap:wrap}.book-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px}@media (max-width: 420px){.book-grid{grid-template-columns:repeat(auto-fill,minmax(120px,1fr))}}.book-card{display:flex;flex-direction:column;gap:var(--space-sm);min-width:0}.book-cover{position:relative;aspect-ratio:2 / 3;border-radius:var(--radius-md);overflow:hidden;background:var(--color-purple-light)}.book-cover img{width:100%;height:100%;object-fit:cover}.book-cover-placeholder{display:flex;align-items:center;justify-content:center;width:100%;height:100%;font-size:2rem;background:var(--color-purple-light);color:var(--color-purple-mid)}.book-cover-badges{position:absolute;top:6px;right:6px;display:flex;flex-direction:column;align-items:flex-end;gap:var(--space-xs)}.book-delete{position:absolute;top:6px;left:6px;width:22px;height:22px;display:flex;align-items:center;justify-content:center;border:none;border-radius:50%;background:var(--color-surface);color:var(--color-text-muted);font-size:.7rem;opacity:0}.book-card:hover .book-delete,.book-delete:focus-visible{opacity:1}.book-delete:hover{background:var(--color-red-light);color:var(--color-red-mid)}.book-meta{display:flex;flex-direction:column;gap:var(--space-xs);min-width:0}.book-title-row{display:flex;align-items:center;gap:var(--space-sm);min-width:0}.book-title{font-size:.85rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.book-author{font-size:.75rem;color:var(--color-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.book-tags{display:flex;gap:var(--space-xs);flex-wrap:wrap}.tag-pages{background:var(--color-bg);color:var(--color-text-muted);border:1px solid var(--color-border)}.book-controls{display:flex;flex-direction:column;gap:var(--space-xs);margin-top:var(--space-xs)}.book-control-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-xs)}.book-control-label{font-size:.7rem;color:var(--color-text-muted);flex-shrink:0}.book-control-options{display:flex;gap:2px}.book-option-btn{padding:2px 5px;font-size:.65rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg);color:var(--color-text-muted);line-height:1.4}.book-option-btn.active{background:var(--color-purple-light);border-color:var(--color-purple-mid);color:var(--color-purple-dark);font-weight:600}.priority-btn-high.active{background:var(--color-red-light);border-color:var(--color-red-mid);color:var(--color-red-dark)}.priority-btn-medium.active{background:var(--color-amber-light);border-color:var(--color-amber-mid);color:var(--color-amber-dark)}.priority-btn-low.active{background:var(--color-green-light);border-color:var(--color-green-mid);color:var(--color-green-dark)}.search-view{display:flex;flex-direction:column;gap:var(--space-lg)}.search-bar{display:flex;gap:var(--space-sm)}.search-input{flex:1;min-width:0}.search-results{display:flex;flex-direction:column;gap:var(--space-md)}.search-result{display:flex;align-items:center;gap:var(--space-md);padding:var(--space-md);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg)}.search-result-cover{width:48px;aspect-ratio:2 / 3;border-radius:var(--radius-sm);overflow:hidden;flex-shrink:0;background:var(--color-purple-light)}.search-result-cover img{width:100%;height:100%;object-fit:cover}.search-result-cover .book-cover-placeholder{font-size:1.2rem}.search-result-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:var(--space-xs)}.search-result-title{font-size:.95rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.search-result-author{font-size:.8rem;color:var(--color-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.search-result-added{color:var(--color-green-mid);font-size:.85rem;font-weight:600;white-space:nowrap}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;padding:var(--space-lg);background:#1f1f2e80;z-index:50}.modal{position:relative;width:100%;max-width:420px;max-height:calc(100vh - 32px);overflow-y:auto;display:flex;flex-direction:column;gap:var(--space-lg);padding:var(--space-xl);background:var(--color-surface);border-radius:var(--radius-lg)}.modal-close{position:absolute;top:var(--space-md);right:var(--space-md);width:28px;height:28px;display:flex;align-items:center;justify-content:center;border:none;border-radius:50%;background:var(--color-bg);color:var(--color-text-muted)}.modal-close:hover{background:var(--color-red-light);color:var(--color-red-mid)}.modal-book{display:flex;gap:var(--space-md);align-items:flex-start}.modal-cover{width:72px;aspect-ratio:2 / 3;border-radius:var(--radius-sm);overflow:hidden;flex-shrink:0;background:var(--color-purple-light)}.modal-cover img{width:100%;height:100%;object-fit:cover}.modal-book-info{display:flex;flex-direction:column;gap:var(--space-xs);min-width:0;padding-right:var(--space-xl)}.modal-title{font-size:1.05rem}.modal-author{font-size:.85rem;color:var(--color-text-muted)}.modal-field{display:flex;flex-direction:column;gap:var(--space-sm)}.modal-field-row{flex-direction:row;align-items:center;justify-content:space-between}.modal-label{font-size:.85rem;font-weight:600}.modal-label-hint{font-weight:400;color:var(--color-text-muted)}.option-row{display:flex;gap:var(--space-sm);flex-wrap:wrap}.modal-confirm{width:100%}.toggle{position:relative;width:44px;height:24px;border:none;border-radius:var(--radius-pill);background:var(--color-border);flex-shrink:0}.toggle.on{background:var(--color-purple-mid)}.toggle-knob{position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:var(--color-surface);transition:transform .15s ease}.toggle.on .toggle-knob{transform:translate(20px)}
