:root{--text:#6b6375;--text-h:#08060d;--bg:#fff;--border:#e5e4e7;--code-bg:#f4f3ec;--accent:#aa3bff;--accent-bg:#aa3bff1a;--accent-border:#aa3bff80;--social-bg:#f4f3ec80;--shadow:#0000001a 0 10px 15px -3px, #0000000d 0 4px 6px -2px;--page-bg:#f5f5f5;--surface:#fff;--surface-alt:#f9f9f9;--text-strong:#333;--text-soft:#555;--text-muted:#666;--text-faint:#999;--text-fainter:#bbb;--line:#ddd;--line-soft:#eee;--link:#007bff;--primary-solid:#007bff;--primary-solid-hover:#0056b3;--primary-tint:#007bff26;--focus-ring:#007bff4d;--danger-text:#dc3545;--danger-bg:#f8d7da;--danger-border:#f5c6cb;--success-text:#1e7e34;--notice-bg:#fff8e1;--warn-bg:#fff3cd;--warn-text:#856404;--card-shadow:#0000001a;--card-shadow-hover:#00000026;--sans:system-ui, "Segoe UI", Roboto, sans-serif;--heading:system-ui, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, Consolas, monospace;font:18px/145% var(--sans);letter-spacing:.18px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}@media (width<=1024px){:root{font-size:16px}}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--text:#9ca3af;--text-h:#f3f4f6;--bg:#16171d;--border:#2e303a;--code-bg:#1f2028;--accent:#c084fc;--accent-bg:#c084fc26;--accent-border:#c084fc80;--social-bg:#2f303a80;--shadow:#0006 0 10px 15px -3px, #00000040 0 4px 6px -2px;--page-bg:#16171d;--surface:#1f2028;--surface-alt:#1b1c23;--text-strong:#f3f4f6;--text-soft:#c4c8d0;--text-muted:#9ca3af;--text-faint:#7b8190;--text-fainter:#5f6573;--line:#2e303a;--line-soft:#262830;--link:#6cb2ff;--primary-solid:#1f6fd1;--primary-solid-hover:#185bb0;--primary-tint:#6cb2ff2e;--focus-ring:#6cb2ff59;--danger-text:#f28b94;--danger-bg:#3b1f23;--danger-border:#6b2c33;--success-text:#6fcf8a;--notice-bg:#3a3220;--warn-bg:#3a3220;--warn-text:#f0d58a;--card-shadow:#0006;--card-shadow-hover:#0000008c}:root:not([data-theme=light]) #social .button-icon{filter:invert()brightness(2)}}:root[data-theme=dark]{--text:#9ca3af;--text-h:#f3f4f6;--bg:#16171d;--border:#2e303a;--code-bg:#1f2028;--accent:#c084fc;--accent-bg:#c084fc26;--accent-border:#c084fc80;--social-bg:#2f303a80;--shadow:#0006 0 10px 15px -3px, #00000040 0 4px 6px -2px;--page-bg:#16171d;--surface:#1f2028;--surface-alt:#1b1c23;--text-strong:#f3f4f6;--text-soft:#c4c8d0;--text-muted:#9ca3af;--text-faint:#7b8190;--text-fainter:#5f6573;--line:#2e303a;--line-soft:#262830;--link:#6cb2ff;--primary-solid:#1f6fd1;--primary-solid-hover:#185bb0;--primary-tint:#6cb2ff2e;--focus-ring:#6cb2ff59;--danger-text:#f28b94;--danger-bg:#3b1f23;--danger-border:#6b2c33;--success-text:#6fcf8a;--notice-bg:#3a3220;--warn-bg:#3a3220;--warn-text:#f0d58a;--card-shadow:#0006;--card-shadow-hover:#0000008c;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root[data-theme=dark] #social .button-icon{filter:invert()brightness(2)}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}body{margin:0}#root{text-align:center;border-inline:1px solid var(--border);box-sizing:border-box;flex-direction:column;width:1126px;max-width:100%;min-height:100svh;margin:0 auto;display:flex}h1,h2{font-family:var(--heading);color:var(--text-h);font-weight:500}h1{letter-spacing:-1.68px;margin:32px 0;font-size:56px}@media (width<=1024px){h1{margin:20px 0;font-size:36px}}h2{letter-spacing:-.24px;margin:0 0 8px;font-size:24px;line-height:118%}@media (width<=1024px){h2{font-size:20px}}p{margin:0}code,.counter{font-family:var(--mono);color:var(--text-h);border-radius:4px;display:inline-flex}code{background:var(--code-bg);padding:4px 8px;font-size:15px;line-height:135%}.auth-container{border:1px solid var(--line);max-width:400px;box-shadow:0 2px 8px var(--card-shadow);border-radius:8px;margin:100px auto;padding:40px}.auth-container h1{text-align:center;color:var(--text-strong);margin-bottom:30px}.auth-container form{flex-direction:column;gap:15px;display:flex}.auth-container input{border:1px solid var(--line);background-color:var(--surface);color:var(--text-strong);border-radius:4px;padding:12px;font-size:14px}.auth-container input:focus{border-color:var(--link);box-shadow:0 0 5px var(--focus-ring);outline:none}.auth-container button{background-color:var(--primary-solid);color:#fff;cursor:pointer;border:none;border-radius:4px;padding:12px;font-size:14px;transition:background-color .2s}.auth-container button:hover:not(:disabled){background-color:var(--primary-solid-hover)}.auth-container button:disabled{cursor:not-allowed;background-color:#6c757d}.auth-container .back-to-books{margin-bottom:8px;font-size:14px;display:inline-block}.danger-zone{flex-direction:column;gap:12px;margin-top:24px;display:flex}.auth-container .danger-zone .danger-btn{color:var(--danger-text);border:1px solid var(--danger-text);background-color:#0000}.auth-container .danger-zone .danger-btn:hover:not(:disabled){background-color:var(--danger-bg)}.auth-container .danger-zone .danger-btn:disabled{opacity:.6;background-color:#0000}.friends-settings{flex-wrap:wrap;justify-content:center;align-items:center;gap:8px 16px;margin:16px 0;display:flex}.friends-settings label{align-items:center;gap:6px;display:flex}.friends-settings input[type=checkbox]{width:auto;margin:0}.auth-container .friends-settings button{width:auto;color:inherit;border:1px solid var(--link);background-color:#0000}.theme-picker{justify-content:center;align-items:center;gap:8px;margin:16px 0;display:flex}.auth-container .theme-picker button{color:inherit;border:1px solid var(--link);background-color:#0000}.auth-container .theme-picker button:hover:not(:disabled){background-color:var(--primary-tint)}.auth-container .theme-picker button[aria-pressed=true]{background-color:var(--primary-solid);color:#fff}.auth-container .error{color:var(--danger-text);margin:0;font-size:14px}.auth-container .google-auth,.auth-container .apple-auth{justify-content:center;margin-top:20px;display:flex}.apple-signin-button{color:#fff;cursor:pointer;background-color:#000;border:none;border-radius:4px;width:100%;padding:12px 24px;font-size:14px}.apple-signin-button:hover{background-color:#1a1a1a}.auth-container p{text-align:center;margin-top:20px;font-size:14px}.auth-container a{color:var(--link);text-decoration:none}.auth-container a:hover{text-decoration:underline}.legal-container{border:1px solid var(--line);max-width:760px;box-shadow:0 2px 8px var(--card-shadow);color:var(--text-strong);text-align:left;border-radius:8px;margin:60px auto;padding:40px;line-height:1.6}.legal-container h1,.legal-container h2,.legal-container h3{color:var(--text-strong)}.legal-container h1{margin-bottom:4px}.legal-container h2{margin-top:32px;margin-bottom:8px}.legal-container .legal-effective-date{color:var(--text-muted);margin-top:0;margin-bottom:24px;font-size:14px}.legal-container table{border-collapse:collapse;width:100%;margin:16px 0}.legal-container th,.legal-container td{border:1px solid var(--line);text-align:left;padding:8px 12px;font-size:14px}.legal-container a{color:var(--link);text-decoration:none}.legal-container a:hover{text-decoration:underline}.legal-container .back-link{margin-top:32px;display:inline-block}.books-container{max-width:1200px;margin:0 auto;padding:20px}.header{border-bottom:2px solid var(--line-soft);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px 20px;margin-bottom:30px;padding-bottom:20px;display:flex}.header h1{color:var(--text-strong);margin:0}.header h1 .book-total{color:var(--text-muted);margin-left:.6em;font-size:.5em;font-weight:400}.header-actions{align-items:center;gap:20px;min-width:0;margin-left:auto;display:flex}.header-actions .user-email{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;max-width:260px;overflow:hidden}@media (width<=480px){.header-actions{gap:14px}.header h1{font-size:1.6em}.header-actions .user-email{display:none}}.header-actions a{color:var(--link)}.logout-btn{color:#fff;cursor:pointer;background-color:#dc3545;border:none;border-radius:4px;padding:8px 16px;transition:background-color .2s}.logout-btn:hover{background-color:#c82333}.add-btn{color:#fff;cursor:pointer;background-color:#28a745;border:none;border-radius:4px;margin-bottom:20px;padding:12px 24px;font-size:16px;transition:background-color .2s}.add-btn:hover{background-color:#218838}.add-book-form{border:1px solid var(--line);background-color:var(--surface-alt);border-radius:8px;flex-direction:column;gap:15px;margin-bottom:30px;padding:20px;display:flex}.add-book-form input{border:1px solid var(--line);background-color:var(--surface);color:var(--text-strong);border-radius:4px;padding:12px;font-size:14px}.add-book-form input:focus{border-color:var(--link);box-shadow:0 0 5px var(--focus-ring);outline:none}.not-found-offer{background-color:var(--notice-bg);border-radius:4px;padding:12px}.not-found-offer p{color:var(--text-strong);margin:0 0 10px;font-size:14px}.not-found-offer button{color:#fff;cursor:pointer;background-color:#28a745;border:none;border-radius:4px;padding:10px 18px;font-size:14px}.not-found-offer button:disabled{opacity:.5;cursor:default}.form-buttons{gap:10px;display:flex}.form-buttons button{cursor:pointer;border:none;border-radius:4px;padding:12px 20px;font-size:14px;transition:background-color .2s}.form-buttons button[type=submit]{color:#fff;background-color:#28a745}.form-buttons button[type=submit]:hover:not(:disabled){background-color:#218838}.form-buttons button[type=submit]:disabled{cursor:not-allowed;background-color:#6c757d}.cancel-btn{color:#fff;background-color:#6c757d!important}.cancel-btn:hover{background-color:#5a6268!important}.error{color:var(--danger-text);background-color:var(--danger-bg);border:1px solid var(--danger-border);border-radius:4px;margin-bottom:20px;padding:10px}.empty{text-align:center;color:var(--text-faint);padding:40px;font-size:16px}.books-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:15px;margin-bottom:20px;display:flex}.search-input{border:1px solid var(--line);background-color:var(--surface);max-width:320px;color:var(--text-strong);border-radius:4px;flex:1;margin-right:auto;padding:10px 14px;font-size:14px}.search-input:focus{border-color:var(--link);box-shadow:0 0 5px var(--focus-ring);outline:none}.layout-toggle{border:1px solid var(--line);border-radius:4px;display:flex;overflow:hidden}.layout-toggle button{background-color:var(--surface);cursor:pointer;color:var(--text-soft);border:none;padding:8px 14px;font-size:13px}.layout-toggle button+button{border-left:1px solid var(--line)}.layout-toggle button.active{background-color:var(--primary-solid);color:#fff}.books-grid{grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:20px;display:grid}.book-card{border:1px solid var(--line);background-color:var(--surface);box-shadow:0 2px 4px var(--card-shadow);border-radius:8px;padding:20px;transition:transform .2s,box-shadow .2s}.book-card:hover{box-shadow:0 4px 12px var(--card-shadow-hover);transform:translateY(-4px)}.book-card-link{color:inherit;text-decoration:none;display:block}.book-cover{aspect-ratio:2/3;object-fit:cover;border-radius:4px;width:100%;margin-bottom:10px}.book-card h3{color:var(--text-strong);margin:0 0 10px;font-size:18px}.books-grid.list-view{flex-direction:column;gap:10px;display:flex}.books-grid.list-view .book-card{padding:10px 16px}.books-grid.list-view .book-card-link{align-items:center;gap:16px;display:flex}.books-grid.list-view .book-cover{aspect-ratio:2/3;flex-shrink:0;width:48px;margin-bottom:0}.books-grid.list-view .book-card-text{flex-wrap:wrap;align-items:baseline;gap:12px;display:flex}.books-grid.list-view .book-card h3{margin:0;font-size:16px}.books-grid.list-view .book-card .author,.books-grid.list-view .book-card .isbn,.books-grid.list-view .book-card .date{margin:0}.book-card .author{color:var(--text-muted);margin:5px 0;font-size:14px;font-style:italic}.book-card .isbn{color:var(--text-faint);margin:5px 0;font-size:12px}.book-card .date{color:var(--text-fainter);margin:10px 0 0;font-size:12px}.delete-btn{color:#fff;cursor:pointer;background-color:#dc3545;border:none;border-radius:4px;margin-top:10px;padding:6px 14px;font-size:13px;transition:background-color .2s}.delete-btn:hover{background-color:#c82333}.shelf-bar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:20px;display:flex}.shelf-chips-wrap{flex:320px;min-width:0;position:relative}.shelf-chips{flex-wrap:wrap;gap:8px;display:flex}.shelf-chips.shelf-chips-measure{visibility:hidden;pointer-events:none;flex-wrap:nowrap;width:0;height:0;position:absolute;top:0;left:0;overflow:hidden}.shelf-chips.shelf-chips-measure button{flex-shrink:0}.shelf-chips button{white-space:nowrap}.shelf-chips:not(.shelf-chips-measure) button{text-overflow:ellipsis;max-width:100%;overflow:hidden}.shelf-chips button{border:1px solid var(--line);background-color:var(--surface);color:var(--text-soft);cursor:pointer;border-radius:16px;padding:6px 12px;font-size:13px}.shelf-chips button.active{background-color:var(--primary-solid);border-color:var(--link);color:#fff}.shelf-actions{gap:8px;display:flex}.shelf-actions button{border:1px solid var(--line);color:var(--text-soft);cursor:pointer;background:0 0;border-radius:4px;padding:6px 10px;font-size:13px}.shelf-chips button.more-chips{background:0 0;border-style:dashed}.shelf-chips button.new-shelf,button.new-shelf{border:1px dashed var(--text-faint);color:var(--text-soft);cursor:pointer;background:0 0;border-radius:16px;padding:6px 12px;font-size:13px}.shelf-section{margin-bottom:24px}.shelf-section-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:10px;margin-bottom:14px;padding-bottom:6px;display:flex}.shelf-section-toggle{min-width:0;color:var(--text-strong);cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:8px;padding:4px 0;font-size:16px;font-weight:600;display:flex}.shelf-section-empty{text-align:left;margin:0 0 0 22px}.friends-page{box-sizing:border-box;text-align:left;width:100%}.friends-page .muted,.invite-page .muted{color:var(--text-muted);font-size:.9em}.friends-page .message{color:var(--success-text)}.friends-card{background:var(--surface);border:1px solid var(--line-soft);box-shadow:var(--card-shadow);border-radius:8px;margin-bottom:20px;padding:16px 20px}.friends-card h2{color:var(--text-strong);margin:0 0 8px;font-size:1.15em}.friends-card button,.person-actions button,.invite-page button,.add-mine{border:1px solid var(--line);background:var(--surface);color:var(--text-soft);cursor:pointer;border-radius:4px;padding:8px 14px;font-size:14px}.friends-card button[type=submit],.friends-card button.primary,.invite-page>button,.invite-page form button[type=submit]{background:var(--primary-solid);border-color:var(--primary-solid);color:#fff}.friends-card button:disabled,.invite-page button:disabled{opacity:.6;cursor:not-allowed}.friends-card input,.friends-card textarea{border:1px solid var(--line);background:var(--surface);color:var(--text-strong);border-radius:4px;min-width:0;padding:10px 12px;font-size:14px}.invite-link,.name-fields{flex-wrap:wrap;gap:8px;margin:8px 0;display:flex}.invite-link input,.name-fields input{flex:220px}.paste-link label{color:var(--text-strong);font-weight:600}.people{margin:0;padding:0;list-style:none}.people li{border-top:1px solid var(--line-soft);flex-wrap:wrap;align-items:center;gap:8px 14px;padding:10px 0;display:flex}.people li:first-child{border-top:none}.person-name{color:var(--text-strong);font-weight:600}a.person-name{color:var(--link)}.person-actions{flex-wrap:wrap;gap:6px;margin-left:auto;display:flex}.report-person{border:1px solid var(--line);border-radius:6px;flex-basis:100%;margin-top:6px;padding:12px}.report-person fieldset{border:none;gap:6px;margin:8px 0;padding:0;display:grid}.report-person label{color:var(--text-strong);align-items:center;gap:8px;display:flex}.report-person label input{margin:0}.report-person textarea{box-sizing:border-box;width:100%;min-height:60px;font:inherit;border:1px solid var(--line);background:var(--surface);color:var(--text-strong);border-radius:4px;margin-bottom:8px;padding:8px}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.in-common{color:var(--success-text);font-weight:600}.in-mine{color:var(--success-text);margin:0 0 12px;font-size:13px;display:inline-block}.book-card .add-mine{align-self:flex-start;margin:0 0 12px}.books-grid.list-view .in-mine,.books-grid.list-view .add-mine{white-space:nowrap;align-self:center;margin:0 12px 0 0}.friend-footer{border-top:1px solid var(--line-soft);margin-top:30px;padding-top:16px;display:flex}.shelf-chips button.hidden-shelf:before{content:"🔒 "}.friends-link{position:relative}.friends-link .badge{background:var(--danger-text);color:#fff;text-align:center;border-radius:9px;min-width:18px;margin-left:4px;padding:0 5px;font-size:12px;line-height:18px;display:inline-block}.invite-page{text-align:center;max-width:560px;margin:0 auto}.invite-page .form-buttons .primary{background:var(--primary-solid);border-color:var(--primary-solid);color:#fff}.invite-page .form-buttons{justify-content:center}.invite-page .form-buttons .secondary{background:var(--surface);color:var(--text-soft);border:1px solid var(--line)}.invite-page h1{color:var(--text-strong);font-size:1.6em}.header .brand{font-size:1.4em}.app-store-btn{background:var(--text-strong);color:var(--bg);border-radius:10px;padding:14px 22px;font-weight:600;text-decoration:none;display:inline-block}.invite-app{margin:20px 0}.invite-code strong{font-family:var(--mono);letter-spacing:.08em;color:var(--text-strong);font-size:1.2em}.admin-container{max-width:1000px;margin:0 auto;padding:20px 16px}.admin-header{border-bottom:2px solid var(--line-soft);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:16px;display:flex}.admin-header h1{color:var(--text-strong);margin:0 0 12px}.status-tabs{gap:8px;margin-bottom:16px;display:flex}.status-tabs button{border:1px solid var(--line);background:var(--surface);color:var(--text-strong);cursor:pointer;border-radius:16px;padding:6px 14px}.status-tabs button.active{background:var(--text-strong);border-color:var(--text-strong);color:var(--surface)}.submission-card{border:1px solid var(--line);background:var(--surface);border-radius:8px;margin-bottom:20px;padding:16px}.submission-card header{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:12px;display:flex}.submission-card h2{margin:0;font-size:1.2em}.submission{border-bottom:1px solid var(--line-soft);flex-wrap:wrap;gap:16px;padding:12px 0;display:flex}.photos{flex-wrap:wrap;gap:12px;display:flex}.submission-photo{width:200px;max-width:calc(50vw - 28px);margin:0}.submission-photo img,.photo-placeholder{object-fit:contain;background:var(--surface-alt);border-radius:4px;width:100%;height:260px}.photo-placeholder{color:var(--text-muted);text-align:center;justify-content:center;align-items:center;font-size:.9em;display:flex}.submission-photo figcaption{color:var(--text-soft);justify-content:space-between;margin-top:4px;font-size:.85em;display:flex}.submitted-as{flex:1;min-width:200px}.submitted-as p{margin:0 0 6px}.cover-choice{align-items:center;gap:6px;font-size:.9em;display:flex}.existing{background:var(--notice-bg);border-radius:4px;padding:8px 10px}.review-form{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:10px 16px;margin-top:12px;display:grid}.review-form label{color:var(--text-strong);flex-direction:column;gap:4px;font-size:.9em;display:flex}.review-form input{border:1px solid var(--line);background-color:var(--surface);color:var(--text-strong);border-radius:4px;padding:8px;font-size:1em}.review-form .error,.review-form .actions{grid-column:1/-1}.actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.actions button{color:#fff;cursor:pointer;background:#28a745;border:none;border-radius:4px;padding:8px 18px}.actions button.reject{background:#dc3545}.actions button.secondary{background:#6c757d}.actions button:disabled{opacity:.5;cursor:default}.link-btn{color:var(--link);cursor:pointer;font-size:inherit;background:0 0;border:none;padding:0}.muted{color:var(--text-muted);font-size:.9em}.message{color:var(--success-text)}.admin-container .error{color:var(--danger-text)}.report-list{margin:0 0 8px;padding-left:18px}.report-list li{margin-bottom:4px}.block-user button{color:#fff;cursor:pointer;border:none;border-radius:4px;margin-top:4px;padding:4px 12px;font-size:.85rem}.block-user button.reject{background:#dc3545}.block-user button.secondary{background:#6c757d}.block-user button:disabled{opacity:.5;cursor:default}*{box-sizing:border-box;margin:0;padding:0}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:var(--page-bg);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}#root{min-height:100vh}
