:root{--bg: #f5f5f5;--surface: #ffffff;--surface-2: #f8f9fa;--border: #e9ecef;--border-strong: #dee2e6;--hover: #e9ecef;--text: #495057;--text-heading: #333333;--text-muted: #666666;--accent: #667eea;--accent-hover: #5566d6;--accent-text: #ffffff;--picked: #fff3cd;--picked-hover: #ffe8a8;--picked-border: #ffe08a;--input-bg: #ffffff;--input-border: #cccccc;--scroll-track: #f1f1f1;--scroll-thumb: #888888;--scroll-thumb-hover: #555555;--error: #b00020;--disabled: #b9b9b9;--shadow: rgba(0, 0, 0, .1);--gradient-start: #667eea;--gradient-end: #764ba2;--star: #ffd700;--header-bg: #2c3e50;--header-text: #ecf0f1;--success: #2e9e5b;--success-hover: #25864c;--danger: #dc3545;--danger-hover: #c82333;--error-bg: #fdecea;--success-bg: #eafaf0}[data-theme=warm]{--bg: #f7f1e8;--surface: #fffdf8;--surface-2: #f1e7d6;--border: #e6d9c3;--border-strong: #d9c6a8;--hover: #ece0c9;--text: #5b4a36;--text-heading: #3f3325;--text-muted: #8a7860;--accent: #c2772f;--accent-hover: #a9641f;--accent-text: #ffffff;--picked: #ffe9bf;--picked-hover: #ffdf9f;--picked-border: #f0cf8a;--input-bg: #fffdf8;--input-border: #cdb79a;--scroll-track: #efe4d2;--scroll-thumb: #b39b76;--scroll-thumb-hover: #8a7860;--error: #b00020;--disabled: #c7b89c;--shadow: rgba(80, 60, 30, .12);--gradient-start: #d98a3d;--gradient-end: #b5602a;--star: #e0a020;--header-bg: #4a3826;--header-text: #f7f1e8;--success: #5a8a3c;--success-hover: #4c7732;--danger: #c0392b;--danger-hover: #a93226;--error-bg: #f7e1d9;--success-bg: #eef2dd}[data-theme=cool]{--bg: #eef3f7;--surface: #ffffff;--surface-2: #e4edf3;--border: #d4e0ea;--border-strong: #c2d4e0;--hover: #dbe7ef;--text: #33444f;--text-heading: #1f3540;--text-muted: #5f7585;--accent: #2196a3;--accent-hover: #197d88;--accent-text: #ffffff;--picked: #cdeef0;--picked-hover: #b3e4e8;--picked-border: #9ad6db;--input-bg: #ffffff;--input-border: #bcccd8;--scroll-track: #e0eaf1;--scroll-thumb: #8fa9bb;--scroll-thumb-hover: #5f7585;--error: #b00020;--disabled: #bcc9d3;--shadow: rgba(20, 50, 70, .1);--gradient-start: #2196a3;--gradient-end: #1c6f9c;--star: #f0b429;--header-bg: #1f3540;--header-text: #e4edf3;--success: #1f8a70;--success-hover: #19735d;--danger: #c2455b;--danger-hover: #a8394c;--error-bg: #fbe6ea;--success-bg: #e2f4ee}[data-theme=vivid]{--bg: #f3ecfc;--surface: #ffffff;--surface-2: #f6effe;--border: #e3d4f7;--border-strong: #cdb2ef;--hover: #ece0fb;--text: #1e3a8a;--text-heading: #172554;--text-muted: #5a6aa0;--accent: #9333ea;--accent-hover: #7e22ce;--accent-text: #ffffff;--picked: #ffd9ec;--picked-hover: #ffc2e0;--picked-border: #ff9fcf;--input-bg: #ffffff;--input-border: #c9b3e6;--scroll-track: #efe6fb;--scroll-thumb: #b794e0;--scroll-thumb-hover: #9333ea;--error: #c2185b;--disabled: #c8b6e3;--shadow: rgba(70, 30, 110, .16);--gradient-start: #9333ea;--gradient-end: #db2777;--star: #ffb300;--header-bg: #3b1f63;--header-text: #f3ecfc;--success: #1e8e3e;--success-hover: #197832;--danger: #e11d48;--danger-hover: #be123c;--error-bg: #ffe1ea;--success-bg: #e3f7e8}[data-theme=dark]{--bg: #1e1e22;--surface: #27272d;--surface-2: #2f2f37;--border: #3a3a44;--border-strong: #45454f;--hover: #373740;--text: #d4d4d8;--text-heading: #f1f1f4;--text-muted: #9a9aa4;--accent: #7c8cff;--accent-hover: #6b7bf0;--accent-text: #ffffff;--picked: #4a4326;--picked-hover: #5a5230;--picked-border: #6b6033;--input-bg: #2f2f37;--input-border: #4a4a55;--scroll-track: #2a2a30;--scroll-thumb: #55555f;--scroll-thumb-hover: #6b6b77;--error: #ff6b6b;--disabled: #4a4a52;--shadow: rgba(0, 0, 0, .4);--gradient-start: #7c8cff;--gradient-end: #9b6bff;--star: #ffd54f;--header-bg: #16161a;--header-text: #f1f1f4;--success: #58c07a;--success-hover: #46a866;--danger: #e35d6a;--danger-hover: #cf4854;--error-bg: #3a2329;--success-bg: #17311f}[data-theme=midnight]{--bg: #11151f;--surface: #1a2030;--surface-2: #212a3d;--border: #2c3850;--border-strong: #36445f;--hover: #283450;--text: #c3cde0;--text-heading: #eaf0fb;--text-muted: #8090a8;--accent: #4d8dff;--accent-hover: #3a7bf0;--accent-text: #ffffff;--picked: #42391c;--picked-hover: #52461f;--picked-border: #6a5a2a;--input-bg: #212a3d;--input-border: #384867;--scroll-track: #1a2030;--scroll-thumb: #3c4a66;--scroll-thumb-hover: #52638a;--error: #ff7a7a;--disabled: #33405e;--shadow: rgba(0, 0, 0, .5);--gradient-start: #4d8dff;--gradient-end: #6f6cff;--star: #ffce54;--header-bg: #0c1018;--header-text: #eaf0fb;--success: #58c07a;--success-hover: #46a866;--danger: #e35d6a;--danger-hover: #cf4854;--error-bg: #33222b;--success-bg: #16301f}[data-theme=slate]{--bg: #15191b;--surface: #1e2427;--surface-2: #252d30;--border: #323c40;--border-strong: #3d484c;--hover: #2b3539;--text: #cdd6d2;--text-heading: #eef4f0;--text-muted: #8b9893;--accent: #3fae8f;--accent-hover: #329a7d;--accent-text: #ffffff;--picked: #3c401f;--picked-hover: #4a4f26;--picked-border: #5c6230;--input-bg: #252d30;--input-border: #3d4a4e;--scroll-track: #1e2427;--scroll-thumb: #465257;--scroll-thumb-hover: #5c6a70;--error: #ff7a7a;--disabled: #323c40;--shadow: rgba(0, 0, 0, .5);--gradient-start: #3fae8f;--gradient-end: #2f8f78;--star: #ffce54;--header-bg: #11161a;--header-text: #eef4f0;--success: #58c07a;--success-hover: #46a866;--danger: #e35d6a;--danger-hover: #cf4854;--error-bg: #33232a;--success-bg: #163020}[data-theme=neon]{--bg: #0f0a1a;--surface: #1a1230;--surface-2: #241a40;--border: #352a55;--border-strong: #463566;--hover: #2e2350;--text: #ffe14d;--text-heading: #fff27a;--text-muted: #c2b25c;--accent: #d040ff;--accent-hover: #b92ee8;--accent-text: #ffffff;--picked: #1f4a52;--picked-hover: #266068;--picked-border: #2f7a85;--input-bg: #241a40;--input-border: #463568;--scroll-track: #1a1230;--scroll-thumb: #463a66;--scroll-thumb-hover: #6a5790;--error: #ff5e8a;--disabled: #352a55;--shadow: rgba(0, 0, 0, .6);--gradient-start: #d040ff;--gradient-end: #ff2e9a;--star: #ffe14d;--header-bg: #0a0614;--header-text: #ffe14d;--success: #00e5a0;--success-hover: #00c98d;--danger: #ff5e8a;--danger-hover: #ff3d72;--error-bg: #3a1426;--success-bg: #0d3328}:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:var(--accent);text-decoration:inherit}a:hover{color:var(--accent-hover)}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:var(--bg);color:var(--text)}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}*{box-sizing:border-box}#root{width:100%;height:100vh}.App{min-height:100vh;padding:0}.App{width:100%;min-height:100vh;padding:0;margin:0}.menu-bar{display:flex;align-items:center;background-color:var(--header-bg);color:var(--header-text);padding:12px 20px;box-shadow:0 2px 4px var(--shadow);position:relative;z-index:1000}.hamburger-button{background:none;border:none;cursor:pointer;padding:8px;display:flex;align-items:center;justify-content:center;transition:background-color .2s;border-radius:4px}.hamburger-button:hover{background-color:#ffffff1a}.hamburger-icon{width:24px;height:20px;display:flex;flex-direction:column;justify-content:space-between}.hamburger-icon span{display:block;height:3px;background-color:var(--header-text);border-radius:2px;transition:all .3s}.app-title{margin:0 0 0 20px;font-size:24px;font-weight:600;flex:1}.view-toggle{display:flex;gap:10px;margin-left:auto;margin-right:20px}.view-button{background-color:#ffffff1a;color:var(--header-text);border:1px solid rgba(255,255,255,.2);padding:8px 16px;border-radius:6px;cursor:pointer;font-size:14px;font-weight:500;transition:all .2s ease;white-space:nowrap}.view-button:hover{background-color:#fff3;border-color:#ffffff4d}.view-button.active{background-color:var(--accent);border-color:var(--accent-hover);color:var(--accent-text);font-weight:600}.view-button:active{transform:scale(.98)}.theme-select{background-color:#ffffff1a;color:var(--header-text);border:1px solid rgba(255,255,255,.2);padding:8px 10px;border-radius:6px;cursor:pointer;font-size:14px;font-weight:500;margin-right:15px}.theme-select:hover{background-color:#fff3;border-color:#ffffff4d}.theme-select option,.theme-select optgroup{background-color:var(--surface);color:var(--text)}.user-info{display:flex;align-items:center;gap:15px}.settings-button{background-color:#ffffff1a;color:var(--header-text);border:1px solid rgba(255,255,255,.2);padding:8px 12px;border-radius:6px;cursor:pointer;font-size:20px;line-height:1;transition:all .2s ease;display:flex;align-items:center;justify-content:center;margin-right:15px}.settings-button:hover{background-color:#fff3;border-color:#ffffff4d;transform:rotate(90deg)}.settings-button:active{transform:scale(.95) rotate(90deg)}.user-name{font-size:14px;color:var(--header-text);font-weight:500}.logout-button{background-color:#ffffff1a;color:var(--header-text);border:1px solid rgba(255,255,255,.2);padding:8px 16px;border-radius:6px;cursor:pointer;font-size:14px;font-weight:500;transition:all .2s ease}.logout-button:hover{background-color:#fff3;border-color:#ffffff4d}.logout-button:active{transform:scale(.98)}.split-view{display:flex;height:calc(100vh - 56px);position:relative}.overlay{display:none;position:fixed;inset:0;background-color:#00000080;z-index:800}.left-panel{position:absolute;left:-400px;top:0;bottom:0;width:400px;background-color:var(--surface);box-shadow:2px 0 8px var(--shadow);overflow:auto;transition:left .3s ease-in-out;z-index:900}.left-panel.open{left:0}.right-panel{flex:1;min-width:0;display:flex;flex-direction:column;overflow:hidden;margin:20px;transition:transform .6s ease-in-out}.right-panel.menu-open{transform:translate(400px)}.error-container{max-width:800px;margin:40px auto;padding:20px;background-color:var(--surface);border-radius:8px;box-shadow:0 2px 8px var(--shadow)}.error-container h1{margin:0 0 15px;font-size:24px;color:var(--text-heading)}.error-container p{margin:10px 0}@media(max-width:768px){.overlay{display:block}.menu-bar{padding:10px 16px}.app-title{margin-left:16px;font-size:20px}.split-view{height:calc(100vh - 52px)}.left-panel{width:100%;left:-100%}.right-panel{margin:10px}.right-panel.menu-open{transform:none}}@media(max-width:480px){.menu-bar{padding:8px 12px;flex-wrap:wrap}.app-title{margin-left:12px;font-size:18px}.view-toggle{order:3;width:100%;margin-left:0;margin-right:0;margin-top:8px}.view-button{flex:1;padding:6px 12px;font-size:12px}.hamburger-icon{width:22px;height:18px}.right-panel{margin:8px}.user-info{gap:10px}.settings-button{padding:6px 10px;font-size:18px}.theme-select{font-size:12px;padding:6px 8px;margin-right:10px}.user-name{display:none}.logout-button{padding:6px 12px;font-size:13px}}.floating-add-button{position:fixed;bottom:30px;right:30px;width:60px;height:60px;border-radius:50%;background:linear-gradient(135deg,var(--gradient-start) 0%,var(--gradient-end) 100%);color:var(--accent-text);border:none;font-size:2rem;font-weight:300;cursor:pointer;box-shadow:0 4px 12px var(--shadow);transition:all .3s ease;z-index:999;display:flex;align-items:center;justify-content:center;line-height:1}.floating-add-button:hover{transform:scale(1.1) rotate(90deg);box-shadow:0 6px 20px var(--shadow)}.floating-add-button:active{transform:scale(1.05) rotate(90deg)}@media(max-width:768px){.floating-add-button{bottom:20px;right:20px;width:50px;height:50px;font-size:1.8rem}}.list-order-bar{display:flex;align-items:center;gap:12px;padding:8px 16px;background-color:var(--surface-2);border-bottom:1px solid var(--border)}.list-order-button{padding:4px 12px;font-size:.85rem;font-weight:600;color:var(--text);background-color:var(--surface);border:1px solid var(--border-strong);border-radius:6px;cursor:pointer;white-space:nowrap}.list-order-button:hover{border-color:var(--accent)}.list-order-button.active{background-color:var(--accent);border-color:var(--accent-hover);color:var(--accent-text)}.list-order-hint{font-size:.8rem;color:var(--text-muted, var(--text));opacity:.75}.list-switch-select{padding:4px 10px;font-size:.85rem;font-weight:600;color:var(--text);background-color:var(--surface);border:1px solid var(--border-strong);border-radius:6px;cursor:pointer;max-width:240px}.list-switch-select:hover{border-color:var(--accent)}.list-switch-select option{background-color:var(--surface);color:var(--text)}@media(max-width:768px){.list-order-hint{display:none}}.tree-node-content{display:flex;align-items:center;padding:6px 8px;cursor:pointer;transition:background-color .2s;border-radius:4px;margin:2px 0}.tree-node-content.has-children{cursor:pointer}.tree-node-content:hover{background-color:var(--hover)}.tree-node-content.selected{background-color:var(--picked);font-weight:600}.tree-node-content.selected:hover{background-color:var(--picked-hover)}.tree-node-icon{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;margin-right:6px;font-size:14px;color:var(--text-muted);font-weight:700}.tree-node-spacer{display:inline-block;width:22px}.tree-node-text{font-size:14px;color:var(--text);font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif}.tree-node-children{margin-left:0}@media(max-width:768px){.tree-node-content{padding:10px 12px;margin:4px 0;min-height:44px}.tree-node-icon{width:20px;height:20px;margin-right:8px;font-size:16px}.tree-node-text{font-size:15px}.tree-node-spacer{width:28px}}@media(max-width:480px){.tree-node-content{padding:12px}.tree-node-text{font-size:16px}}.tree-view-container{height:100%;display:flex;flex-direction:column;background-color:var(--surface);border-radius:8px;box-shadow:0 2px 8px var(--shadow);overflow:hidden}.manage-lists-button{margin-top:8px;padding:6px 12px;background-color:var(--accent);color:var(--accent-text);border:none;border-radius:6px;font-size:.85rem;cursor:pointer;transition:background-color .2s}.manage-lists-button:hover{background-color:var(--accent-hover)}.tree-view-header{padding:20px;border-bottom:2px solid var(--border-strong);flex-shrink:0}.tree-view-header h1{margin:0 0 15px;font-size:24px;color:var(--text-heading);font-weight:600}.tree-view-controls{display:flex;gap:15px;align-items:center}.tree-view-controls label{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--text-muted);cursor:pointer}.tree-view-controls input[type=checkbox]{cursor:pointer;width:16px;height:16px}.tree-view-content{flex:1;overflow:auto;padding:20px}.tree-view-content::-webkit-scrollbar{width:10px}.tree-view-content::-webkit-scrollbar-track{background:var(--scroll-track)}.tree-view-content::-webkit-scrollbar-thumb{background:var(--scroll-thumb);border-radius:5px}.tree-view-content::-webkit-scrollbar-thumb:hover{background:var(--scroll-thumb-hover)}@media(max-width:768px){.tree-view-container{border-radius:0;box-shadow:none}.tree-view-header{padding:16px}.tree-view-header h1{font-size:20px;margin:0 0 12px}.tree-view-controls{flex-direction:column;align-items:flex-start;gap:10px}.tree-view-controls label{font-size:15px;padding:8px 0;min-height:44px}.tree-view-content{padding:16px;-webkit-overflow-scrolling:touch}}@media(max-width:480px){.tree-view-header{padding:12px}.tree-view-header h1{font-size:18px}.tree-view-content{padding:12px}}.table-view-container{flex:1;min-height:0;display:flex;flex-direction:column;background-color:var(--surface);border-radius:8px;box-shadow:0 2px 8px var(--shadow);overflow:hidden}.table-view-header{padding:20px;border-bottom:2px solid var(--border-strong);display:flex;justify-content:space-between;align-items:center}.table-view-header h2{margin:0;font-size:24px;color:var(--text-heading);font-weight:600}.table-view-counts{display:flex;align-items:center;gap:10px}.unit-short{display:none}.table-view-count{font-size:14px;color:var(--text-muted);background-color:var(--surface-2);padding:4px 12px;border-radius:12px;white-space:nowrap}.table-view-abandoned{font-size:14px;color:var(--danger);background-color:var(--surface-2);padding:4px 12px;border-radius:12px;white-space:nowrap}.mobile-hint{display:none;padding:8px 16px;background-color:var(--surface-2);color:var(--accent);font-size:12px;text-align:center;border-bottom:1px solid var(--border)}.table-view-loading,.table-view-empty{padding:40px;text-align:center;color:var(--text-muted);font-size:16px}.table-view-scroll{flex:1;overflow:auto;position:relative}.title-struck{text-decoration:line-through;opacity:.65}.books-table{width:100%;border-collapse:collapse;font-size:14px}.books-table thead{position:sticky;top:0;background-color:var(--surface-2);z-index:10}.books-table th{padding:12px 16px;text-align:left;font-weight:600;color:var(--text-heading);border-bottom:2px solid var(--border-strong);border-right:1px solid var(--border);white-space:nowrap}.books-table th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color .15s ease}.books-table th.sortable:hover{background-color:var(--hover)}.books-table th.narrow-column{width:1%;white-space:nowrap}.books-table tbody tr{border-bottom:1px solid var(--border);transition:background-color .15s ease}.books-table tbody tr:nth-child(2n){background-color:var(--surface-2)}.books-table tbody tr:hover{background-color:var(--hover)}.books-table td{padding:12px 16px;color:var(--text);border-right:1px solid var(--border)}.cell-number{text-align:left;font-variant-numeric:tabular-nums;width:1%;white-space:nowrap}.cell-author{font-weight:500;min-width:150px}.cell-title{min-width:200px;font-weight:500;color:var(--text-heading)}.cell-series{min-width:150px;color:var(--text-muted)}.cell-date{white-space:nowrap;font-variant-numeric:tabular-nums}.cell-rating{text-align:center;font-weight:500;font-size:16px;white-space:nowrap}.star-rating{display:inline-block;white-space:nowrap;font-size:20px}.action-column{width:1%;white-space:nowrap;padding:8px!important}.cell-action{width:1%;white-space:nowrap;text-align:center;padding:4px 8px!important}.view-book-button{display:inline-flex;align-items:center;justify-content:center;background:none;border:1px solid var(--input-border);border-radius:4px;padding:4px 8px;cursor:pointer;font-size:16px;line-height:1;color:var(--text);transition:background-color .15s,border-color .15s,color .15s}.view-book-button:hover{background-color:var(--accent);border-color:var(--accent);color:var(--accent-text)}.view-icon{display:block}.table-view-scroll::-webkit-scrollbar{width:10px;height:10px}.table-view-scroll::-webkit-scrollbar-track{background:var(--scroll-track)}.table-view-scroll::-webkit-scrollbar-thumb{background:var(--scroll-thumb);border-radius:5px}.table-view-scroll::-webkit-scrollbar-thumb:hover{background:var(--scroll-thumb-hover)}@media(max-width:768px){.mobile-hint{display:block}.table-view-header{padding:12px 16px;flex-direction:column;align-items:flex-start;gap:8px}.table-view-header h2{font-size:20px}.table-view-counts{gap:6px}.table-view-count,.table-view-abandoned{font-size:13px;padding:4px 8px}.unit-full{display:none}.unit-short{display:inline}.table-view-scroll{overflow-x:auto;overflow-y:auto;-webkit-overflow-scrolling:touch}.books-table th{padding:10px 12px;font-size:13px;min-height:44px}.books-table td{padding:10px 12px;font-size:14px}.cell-author{min-width:120px}.cell-title{min-width:150px}.cell-series{min-width:100px}}@media(max-width:480px){.table-view-header{padding:10px 12px}.table-view-header h2{font-size:18px}.books-table th{padding:8px 10px;font-size:12px}.books-table td{padding:8px 10px;font-size:13px}.cell-author{min-width:100px}.cell-title{min-width:120px}}.tile-view-container{width:100%;flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden;background-color:var(--bg)}.tile-view-scroll{flex:1;min-height:0;overflow-y:auto;scrollbar-gutter:stable;padding:20px}.tiles-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(312px,1fr));gap:20px;padding:10px}.book-tile{width:312px;height:186px;display:flex;background-color:var(--surface-2);border:2px solid var(--border-strong);border-radius:8px;overflow:hidden;box-shadow:0 2px 4px var(--shadow);transition:transform .2s,box-shadow .2s;cursor:pointer}.book-tile:hover{transform:translateY(-2px);box-shadow:0 4px 8px var(--shadow)}.tile-image{flex-shrink:0;width:100px;height:100%;display:flex;align-items:center;justify-content:center;background-color:var(--surface);overflow:hidden;position:relative}.tile-image img{width:100%;height:100%;object-fit:cover}.image-loading-spinner{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:24px;height:24px;border:3px solid var(--border);border-top:3px solid var(--accent);border-radius:50%;animation:spin 1s linear infinite;pointer-events:none}@keyframes spin{0%{transform:translate(-50%,-50%) rotate(0)}to{transform:translate(-50%,-50%) rotate(360deg)}}.tile-content{flex:1;display:flex;flex-direction:column;padding:0;overflow:hidden}.tile-title{background-color:var(--accent);color:var(--accent-text);padding:8px 12px;font-weight:700;font-size:14px;line-height:1.3;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;min-height:40px}.tile-title.title-struck{text-decoration:line-through;opacity:.8}.tile-info{flex:1;padding:10px 12px;display:flex;flex-direction:column;gap:6px;background-color:var(--surface-2);overflow:hidden}.tile-author{color:var(--text);font-size:13px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tile-series{color:var(--text-muted);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tile-rating{margin-top:auto}.tile-ownership{align-self:flex-start;margin-top:4px;padding:2px 8px;border-radius:10px;background-color:var(--accent);color:var(--accent-text);font-size:11px;font-weight:600}.star-rating{color:var(--star);font-size:20px;letter-spacing:2px}.star-full{color:var(--star)}.star-half{position:relative;display:inline-block;color:transparent}.star-half:before{content:"★";position:absolute;left:0;top:0;color:var(--star);width:50%;overflow:hidden}.unrated,.abandoned{color:var(--text-muted);font-size:12px;font-style:italic}.loading-message,.no-books-message{display:flex;align-items:center;justify-content:center;height:100%;font-size:18px;color:var(--text-muted)}@media(max-width:768px){.tiles-grid{grid-template-columns:1fr;justify-items:center}.tile-view-scroll{padding:10px}}@media(max-width:480px){.book-tile{width:302px;max-width:calc(100vw - 20px)}.tile-view-scroll{padding:5px}.tiles-grid{padding:5px;gap:15px}}.cover-view-container{width:100%;flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden;background-color:var(--bg)}.cover-view-scroll{flex:1;min-height:0;overflow-y:auto;scrollbar-gutter:stable;padding:16px}.cover-cell{width:100%;padding:0;margin:0;border:none;background:none;cursor:pointer;border-radius:6px;overflow:hidden;box-shadow:0 2px 4px var(--shadow);transition:transform .15s,box-shadow .15s;display:block}.cover-cell:hover{transform:translateY(-2px);box-shadow:0 4px 10px var(--shadow)}.cover-cell img{width:100%;height:100%;object-fit:cover;display:block}@media(max-width:480px){.cover-view-scroll{padding:8px}}.auth-layout{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--gradient-start) 0%,var(--gradient-end) 100%);padding:20px}.auth-container{background:var(--surface);border-radius:12px;box-shadow:0 10px 40px var(--shadow);width:100%;max-width:450px;padding:40px;animation:slideUp .4s ease-out}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.auth-header{text-align:center;margin-bottom:30px}.auth-logo{max-width:250px;width:100%;height:auto;margin-bottom:15px}.auth-header h1{color:var(--text-heading);font-size:28px;margin-bottom:8px;font-weight:600}.auth-header p{color:var(--text-muted);font-size:14px;margin:0}.auth-tabs{display:flex;gap:10px;margin-bottom:30px;border-bottom:2px solid var(--border)}.auth-tab{flex:1;padding:12px;background:none;border:none;border-bottom:3px solid transparent;color:var(--text-muted);font-size:16px;font-weight:500;cursor:pointer;transition:all .3s ease;margin-bottom:-2px}.auth-tab:hover{color:var(--accent)}.auth-tab.active{color:var(--accent);border-bottom-color:var(--accent)}.auth-form{display:flex;flex-direction:column;gap:20px}.form-group{display:flex;flex-direction:column;gap:8px}.form-group label{color:var(--text-heading);font-size:14px;font-weight:500}.form-group input{padding:12px 16px;border:2px solid var(--input-border);background:var(--input-bg);color:var(--text);border-radius:8px;font-size:15px;transition:border-color .3s ease}.form-group input:focus{outline:none;border-color:var(--accent)}.form-group input.error{border-color:var(--error)}.form-error{color:var(--error);font-size:13px;margin-top:-12px}.auth-submit{padding:14px;background:linear-gradient(135deg,var(--gradient-start) 0%,var(--gradient-end) 100%);color:var(--accent-text);border:none;border-radius:8px;font-size:16px;font-weight:600;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease;margin-top:10px}.auth-submit:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 20px var(--shadow)}.auth-submit:active:not(:disabled){transform:translateY(0)}.auth-submit:disabled{opacity:.6;cursor:not-allowed}.auth-error{background:var(--error-bg);color:var(--error);padding:12px;border-radius:8px;font-size:14px;text-align:center;margin-bottom:20px}.auth-footer{text-align:center;margin-top:30px;padding-top:20px;border-top:1px solid var(--border);color:var(--text-muted);font-size:14px}.auth-footer button{background:none;border:none;color:var(--accent);font-weight:600;cursor:pointer;padding:0;margin-left:5px;text-decoration:underline}.auth-footer button:hover{color:var(--accent-hover)}.password-hint{font-size:12px;color:var(--text-muted);margin-top:-12px;line-height:1.4}.auth-loading{display:flex;justify-content:center;align-items:center;min-height:100vh;background:linear-gradient(135deg,var(--gradient-start) 0%,var(--gradient-end) 100%)}.spinner{width:50px;height:50px;border:4px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.coming-soon-overlay{position:fixed;inset:0;background-color:#0009;display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .3s ease-out}.coming-soon-modal{background:var(--surface);border-radius:16px;padding:40px;max-width:400px;width:90%;text-align:center;box-shadow:0 20px 60px var(--shadow);animation:scaleIn .3s ease-out}@keyframes scaleIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.coming-soon-modal h2{color:var(--text-heading);font-size:28px;margin-bottom:15px;font-weight:600}.coming-soon-modal p{color:var(--text-muted);font-size:16px;line-height:1.6;margin-bottom:10px}.coming-soon-subtitle{font-size:14px!important;color:var(--text-muted)!important;margin-bottom:20px!important}.waitlist-form{display:flex;flex-direction:column;gap:12px;width:100%}.waitlist-field input{width:100%;padding:10px 14px;border:1px solid var(--input-border);background:var(--input-bg);color:var(--text);border-radius:8px;font-size:15px;font-family:inherit;transition:border-color .2s,box-shadow .2s}.waitlist-field input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--shadow)}.coming-soon-button{background:linear-gradient(135deg,var(--gradient-start) 0%,var(--gradient-end) 100%);color:var(--accent-text);border:none;border-radius:8px;padding:12px 32px;font-size:16px;font-weight:600;cursor:pointer;transition:all .3s ease;box-shadow:0 4px 12px var(--shadow)}.coming-soon-button:hover{transform:translateY(-2px);box-shadow:0 6px 20px var(--shadow)}.coming-soon-button:active{transform:translateY(0)}.waitlist-form .coming-soon-button{width:100%;margin-top:4px}.demo-section{text-align:center;margin-top:20px}.demo-divider{display:flex;align-items:center;color:var(--text-muted);font-size:13px;margin-bottom:16px}.demo-divider:before,.demo-divider:after{content:"";flex:1;border-bottom:1px solid var(--border)}.demo-divider span{padding:0 12px}.demo-button{width:100%;padding:12px;background:var(--surface);color:var(--accent);border:2px solid var(--accent);border-radius:8px;font-size:16px;font-weight:600;cursor:pointer;transition:all .2s ease}.demo-button:hover:not(:disabled){background:var(--accent);color:var(--accent-text)}.demo-button:disabled{opacity:.6;cursor:not-allowed}.demo-hint{color:var(--text-muted);font-size:12px;margin-top:8px}@media(max-width:480px){.auth-container{padding:30px 20px}.auth-logo{max-width:180px}.auth-header h1{font-size:24px}.coming-soon-modal{padding:30px 20px}.coming-soon-modal h2{font-size:24px}}.landing-page{width:100%;min-height:100vh;height:100vh;position:relative;display:flex;align-items:flex-start;justify-content:center;padding-top:10vh;background:linear-gradient(135deg,var(--gradient-start) 0%,var(--gradient-end) 100%);overflow-x:hidden;overflow-y:auto}.landing-content{z-index:1;max-width:800px;width:100%;padding:20px;text-align:center}.landing-hero{background:var(--surface);border-radius:20px;padding:60px 40px;box-shadow:0 20px 60px var(--shadow);animation:fadeInUp .8s ease-out;margin:0 auto}@keyframes fadeInUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.landing-logo{max-width:300px;width:100%;height:auto;margin-bottom:30px;animation:fadeIn 1s ease-out .2s both}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.landing-title{font-size:2.5rem;font-weight:700;color:var(--text-heading);margin-bottom:20px;animation:fadeIn 1s ease-out .4s both;line-height:1.2}.landing-title-line1{font-size:2rem;font-weight:500;margin-bottom:5px}.landing-title-line2{font-size:2.8rem;font-weight:700}.landing-description{font-size:1.2rem;color:var(--text-muted);line-height:1.8;margin-bottom:40px;max-width:600px;margin-left:auto;margin-right:auto;animation:fadeIn 1s ease-out .6s both}.landing-cta-button{background:linear-gradient(135deg,var(--gradient-start) 0%,var(--gradient-end) 100%);color:var(--accent-text);border:none;padding:16px 48px;font-size:1.2rem;font-weight:600;border-radius:50px;cursor:pointer;transition:all .3s ease;box-shadow:0 4px 15px var(--shadow);animation:fadeIn 1s ease-out .8s both}.landing-cta-button:hover{transform:translateY(-2px);box-shadow:0 6px 20px var(--shadow)}.landing-cta-button:active{transform:translateY(0)}.landing-corner-image{position:fixed;bottom:0;right:0;max-width:350px;max-height:350px;width:25vw;height:auto;opacity:.9;pointer-events:none;animation:slideInCorner 1s ease-out .5s both;z-index:0}@keyframes slideInCorner{0%{opacity:0;transform:translate(50px,50px)}to{opacity:.9;transform:translate(0)}}@media(max-width:768px){.landing-page{padding:20px 0;padding-top:8vh}.landing-content{padding:20px 15px;max-width:95%}.landing-hero{padding:40px 25px;margin:0 auto;max-width:90%}.landing-logo{max-width:180px;margin-bottom:20px}.landing-title{font-size:1.8rem}.landing-title-line1{font-size:1.5rem}.landing-title-line2{font-size:2rem}.landing-description{font-size:1rem;margin-bottom:30px}.landing-cta-button{padding:14px 36px;font-size:1rem}.landing-corner-image{max-width:200px;max-height:200px;width:30vw}}@media(max-width:480px){.landing-page{padding:15px 0;padding-top:6vh}.landing-content{padding:15px 10px}.landing-hero{padding:30px 20px;border-radius:15px;max-width:92%}.landing-logo{max-width:140px;margin-bottom:15px}.landing-title{font-size:1.4rem;margin-bottom:15px}.landing-title-line1{font-size:1.2rem}.landing-title-line2{font-size:1.6rem}.landing-description{font-size:.9rem;margin-bottom:25px;line-height:1.6}.landing-cta-button{padding:12px 28px;font-size:.95rem}.landing-corner-image{max-width:150px;max-height:150px;width:35vw}}@media(min-height:800px)and (max-width:480px){.landing-page{padding-top:15vh;align-items:center}.landing-content{margin-top:-5vh}}@media(min-height:900px)and (max-width:480px){.landing-page{padding-top:0;align-items:center}.landing-content{margin-top:0}}@media(min-width:769px)and (max-width:1024px){.landing-content{padding:30px 20px}.landing-hero{padding:50px 35px}.landing-corner-image{max-width:280px;max-height:280px;width:25vw}}.book-entry-overlay{position:fixed;inset:0;background-color:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;overflow-y:auto;padding:20px}.book-entry-modal{position:relative;background:var(--surface);border-radius:12px;box-shadow:0 4px 20px var(--shadow);max-width:1200px;width:100%;max-height:90vh;display:flex;flex-direction:column;margin:auto}.book-entry-header{display:flex;justify-content:space-between;align-items:center;padding:20px 30px;border-bottom:2px solid var(--border-strong);background-color:var(--surface-2);border-radius:12px 12px 0 0}.book-entry-header h2{margin:0;color:var(--text-heading);font-size:1.8rem}.close-button{background:none;border:none;font-size:2rem;color:var(--text-muted);cursor:pointer;padding:0;width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:background-color .2s,color .2s}.close-button:hover{background-color:var(--hover);color:var(--text-heading)}.book-entry-form{display:flex;flex-direction:column;flex:1;overflow:hidden}.form-content{display:grid;grid-template-columns:400px 1fr;gap:30px;padding:30px;overflow-y:auto;flex:1}.form-column{display:flex;flex-direction:column;gap:20px}.form-section{background-color:var(--surface-2);border-radius:8px;padding:20px;border:1px solid var(--border)}.form-section h3{margin:0 0 15px;color:var(--text-heading);font-size:1.2rem;border-bottom:2px solid var(--accent);padding-bottom:8px}.section-toggle{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;background:none;border:none;padding:0;margin:0;font:inherit;color:inherit;cursor:pointer;text-align:left}.section-toggle:hover>span:first-child{color:var(--accent)}.section-chevron{color:var(--accent);font-size:.85em;flex:none}.form-section.collapsed>*:not(h3){display:none}.form-section.collapsed{padding-bottom:12px}.form-section.collapsed h3.collapsible-heading{margin-bottom:0}.cover-placeholder{display:flex;justify-content:center;margin-bottom:10px}.cover-image{width:100px;height:155px;object-fit:cover;border-radius:4px;border:1px solid var(--input-border)}.view-mode .cover-placeholder{margin-bottom:0}.view-mode .cover-image{width:auto;height:calc(100% - 6px);max-width:100%}.view-mode .form-section:has(.cover-placeholder){display:flex;justify-content:center;align-items:center;padding:3px}.placeholder-image{width:100px;height:155px;background-color:var(--surface-2);border:2px dashed var(--input-border);border-radius:4px;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--text-muted);font-size:.9rem;text-align:center}.placeholder-image.hidden{display:none}.placeholder-image span{font-size:2.5rem;margin-bottom:8px}.placeholder-image p{margin:5px 0;font-weight:500}.placeholder-image small{font-size:.75rem;color:var(--text-muted)}.form-group{margin-bottom:15px}.form-group:last-child{margin-bottom:0}.form-group label{display:block;margin-bottom:6px;font-weight:600;color:var(--text-heading);font-size:.95rem}.form-group input[type=text],.form-group input[type=number],.form-group select,.form-group textarea{width:100%;padding:10px 12px;border:1px solid var(--input-border);background:var(--input-bg);color:var(--text);border-radius:6px;font-size:.95rem;font-family:inherit;transition:border-color .2s,box-shadow .2s}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--shadow)}.form-group textarea{resize:vertical;min-height:80px}.field-hint{display:block;margin-top:4px;font-size:.85rem;color:var(--text-muted);font-style:italic}.author-input-group{display:flex;gap:8px;margin-bottom:8px}.author-input-group input{flex:1}.remove-button{background-color:var(--danger);color:var(--accent-text);border:none;border-radius:4px;width:32px;height:38px;font-size:1.5rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background-color .2s}.remove-button:hover{background-color:var(--danger-hover)}.add-button{background-color:var(--accent);color:var(--accent-text);border:none;border-radius:6px;padding:8px 16px;font-size:.9rem;cursor:pointer;transition:background-color .2s;margin-top:8px;font-weight:500}.add-button:hover{background-color:var(--accent-hover)}.date-inputs{display:grid;grid-template-columns:70px 1.6fr 1fr;gap:8px;align-items:center}.date-inputs input,.date-inputs select{min-width:0}.date-field-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.date-field-header label{margin-bottom:0}.date-field-actions{display:flex;gap:14px;align-items:center}.clear-date-button{background:none;border:none;color:var(--accent);font-size:.85rem;cursor:pointer;padding:0}.clear-date-button:hover{text-decoration:underline}.rating-input-group{display:flex;align-items:center;gap:15px}.rating-slider{flex:1;height:8px;border-radius:4px;background:linear-gradient(to right,var(--border) 0%,var(--accent) 100%);outline:none;-webkit-appearance:none}.rating-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:20px;border-radius:50%;background:var(--accent);cursor:pointer;box-shadow:0 2px 4px var(--shadow)}.rating-slider::-moz-range-thumb{width:20px;height:20px;border-radius:50%;background:var(--accent);cursor:pointer;border:none;box-shadow:0 2px 4px var(--shadow)}.rating-value{font-weight:700;font-size:1.1rem;color:var(--accent);min-width:50px;text-align:right}.rating-stars{font-size:1.2rem;color:var(--star);margin-top:5px}.checkbox-label,.radio-label{display:flex;align-items:center;gap:8px;cursor:pointer;font-weight:400;color:var(--text)}.checkbox-label input[type=checkbox],.radio-label input[type=radio]{width:auto;margin:0;cursor:pointer;accent-color:var(--accent)}.radio-group{display:flex;gap:20px;flex-wrap:wrap}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:15px}.isbn-input-group{display:flex;gap:8px}.isbn-input-group input{flex:1}.isbn-lookup-button{background-color:var(--success);color:var(--accent-text);border:none;padding:8px 16px;border-radius:6px;cursor:pointer;font-size:.9rem;font-weight:500;white-space:nowrap;transition:background-color .2s}.isbn-lookup-button:hover:not(:disabled){background-color:var(--success-hover)}.isbn-lookup-button:disabled{opacity:.5;cursor:not-allowed}.isbn-scan-button{background-color:var(--accent);color:var(--accent-text);border:none;padding:8px 14px;border-radius:6px;cursor:pointer;font-size:.9rem;font-weight:500;white-space:nowrap;transition:background-color .2s}.isbn-scan-button:hover{background-color:var(--accent-hover)}.isbn-error{color:var(--error);font-size:.85rem;margin-top:4px;display:block}.title-search-button{width:100%;background-color:var(--accent);color:var(--accent-text);border:none;padding:10px 16px;border-radius:6px;cursor:pointer;font-size:.9rem;font-weight:500;transition:background-color .2s}.title-search-button:hover:not(:disabled){background-color:var(--accent-hover)}.title-search-button:disabled{opacity:.5;cursor:not-allowed}.search-results{list-style:none;margin:10px 0 0;padding:4px;max-height:320px;overflow-y:auto;background:var(--surface);border:1px solid var(--border-strong);border-radius:8px}.search-results li{margin:0}.search-result{display:flex;gap:10px;width:100%;text-align:left;background:none;border:none;border-radius:6px;padding:8px;cursor:pointer;transition:background-color .2s}.search-result:hover{background-color:var(--hover)}.search-result-cover{width:40px;height:60px;flex-shrink:0;object-fit:cover;border-radius:3px;border:1px solid var(--input-border)}.search-result-cover.placeholder{display:flex;align-items:center;justify-content:center;font-size:1.4rem;background-color:var(--surface-2)}.search-result-info{display:flex;flex-direction:column;gap:2px;min-width:0}.search-result-title{font-weight:600;color:var(--text-heading);font-size:.9rem}.search-result-author{color:var(--text);font-size:.85rem}.search-result-meta{display:flex;flex-wrap:wrap;gap:10px;color:var(--text-muted);font-size:.8rem}.reading-list-checks{display:flex;flex-direction:column;gap:8px}.subject-input-group{display:flex;gap:8px}.subject-input-group input{flex:1}.subjects-list{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.subject-tag{background-color:var(--accent);color:var(--accent-text);padding:6px 12px;border-radius:20px;font-size:.9rem;display:flex;align-items:center;gap:8px}.remove-tag-button{background:none;border:none;color:var(--accent-text);font-size:1.2rem;cursor:pointer;padding:0;width:20px;height:20px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:background-color .2s}.remove-tag-button:hover{background-color:#fff3}.form-actions{display:flex;justify-content:flex-end;gap:15px;padding:20px 30px;border-top:2px solid var(--border-strong);background-color:var(--surface-2);border-radius:0 0 12px 12px}.cancel-button,.save-button{padding:12px 30px;border-radius:6px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s;border:none}.cancel-button{background-color:var(--surface);color:var(--text);border:1px solid var(--border-strong)}.cancel-button:hover{background-color:var(--hover)}.save-button{background-color:var(--accent);color:var(--accent-text)}.save-button:hover{background-color:var(--accent-hover);box-shadow:0 4px 8px var(--shadow)}.view-mode input:disabled,.view-mode select:disabled,.view-mode textarea:disabled{background-color:var(--surface-2);border-color:var(--border);color:var(--text);opacity:1;cursor:default;-webkit-text-fill-color:var(--text)}.view-mode .rating-slider:disabled{cursor:default}.view-mode .checkbox-label,.view-mode .radio-label{cursor:default}.no-data{color:var(--text-muted);font-style:italic;font-size:.9rem}.form-actions-right{display:flex;gap:15px}.edit-button{padding:12px 30px;border-radius:6px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s;border:none;background-color:var(--accent);color:var(--accent-text)}.edit-button:hover{background-color:var(--accent-hover);box-shadow:0 4px 8px var(--shadow)}.delete-button{padding:12px 30px;border-radius:6px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s;border:none;background-color:var(--danger);color:var(--accent-text);opacity:.7}.delete-button:hover{background-color:var(--danger-hover);opacity:1}.confirm-overlay{position:absolute;inset:0;background:#00000080;border-radius:12px;display:flex;align-items:center;justify-content:center;z-index:10}.confirm-dialog{background:var(--surface);color:var(--text);border-radius:8px;padding:30px;max-width:380px;width:90%;text-align:center;box-shadow:0 4px 20px var(--shadow)}.confirm-dialog p{margin:0 0 24px;font-size:1rem;line-height:1.5}.confirm-actions{display:flex;gap:12px;justify-content:center}.form-actions:has(.delete-button){justify-content:space-between}.image-context-menu{position:fixed;z-index:1100;margin:0;padding:4px;list-style:none;min-width:200px;background:var(--surface);border:1px solid var(--border-strong);border-radius:8px;box-shadow:0 4px 16px var(--shadow)}.image-context-menu li{margin:0}.image-context-menu button{display:block;width:100%;text-align:left;background:none;border:none;border-radius:6px;padding:9px 12px;font-size:.9rem;color:var(--text);cursor:pointer}.image-context-menu button:hover:not(:disabled){background-color:var(--hover)}.image-context-menu button:disabled{color:var(--text-muted);opacity:.6;cursor:not-allowed}@media(max-width:1024px){.form-content{grid-template-columns:1fr}}@media(max-width:768px){.book-entry-modal{max-width:100%;margin:10px;max-height:95vh}.book-entry-header{padding:15px 20px}.book-entry-header h2{font-size:1.4rem}.form-content{padding:20px;gap:20px}.form-section{padding:15px}.form-row{grid-template-columns:1fr}.form-actions{padding:15px 20px;flex-direction:column-reverse}.cancel-button,.save-button,.edit-button,.delete-button{width:100%}.form-actions-right{flex-direction:column-reverse;width:100%}.form-actions:has(.delete-button){flex-direction:column-reverse}}@media(max-width:480px){.book-entry-overlay{padding:10px}.date-inputs{grid-template-columns:1fr}.radio-group{flex-direction:column;gap:10px}}.scanner-overlay{position:fixed;inset:0;background-color:#000000b3;display:flex;align-items:center;justify-content:center;z-index:2000;padding:20px}.scanner-panel{background:var(--surface);color:var(--text);border-radius:12px;box-shadow:0 4px 20px var(--shadow);width:100%;max-width:520px;display:flex;flex-direction:column;overflow:hidden}.scanner-header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--border)}.scanner-header h3{margin:0;font-size:1.15rem;color:var(--text-heading)}.scanner-close{background:none;border:none;color:var(--text-muted);font-size:1.6rem;line-height:1;cursor:pointer;padding:0 4px}.scanner-close:hover{color:var(--text-heading)}.scanner-video-wrap{position:relative;width:100%;aspect-ratio:4 / 3;background:#000;overflow:hidden}.scanner-video{width:100%;height:100%;object-fit:cover;display:block}.scanner-reticle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:80%;height:42%;border:2px solid rgba(255,255,255,.9);border-radius:8px;box-shadow:0 0 0 100vmax #00000059;pointer-events:none}.scanner-status,.scanner-error{position:absolute;left:50%;transform:translate(-50%);max-width:90%;text-align:center;padding:10px 14px;border-radius:8px;font-size:.9rem}.scanner-status{top:12px;background:#0000008c;color:#fff}.scanner-error{top:50%;transform:translate(-50%,-50%);background:var(--error-bg);color:var(--error);border:1px solid var(--error);line-height:1.4}.scanner-camera-select{display:flex;align-items:center;gap:10px;padding:12px 18px 0}.scanner-camera-select label{font-size:.85rem;color:var(--text-muted);white-space:nowrap}.scanner-camera-select select{flex:1;min-width:0;padding:6px 8px;border:1px solid var(--input-border);border-radius:6px;background:var(--input-bg);color:var(--text);font-size:.9rem}.scanner-hint{margin:0;padding:12px 18px 16px;font-size:.85rem;color:var(--text-muted);line-height:1.4}@media(max-width:768px){.scanner-overlay{padding:10px}}.options-modal-overlay{position:fixed;inset:0;background-color:#00000080;display:flex;align-items:center;justify-content:center;z-index:2000;padding:20px;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.options-modal{background-color:var(--surface);border-radius:12px;box-shadow:0 8px 32px var(--shadow);max-width:600px;width:100%;max-height:90vh;display:flex;flex-direction:column;animation:modalSlideIn .3s ease-out}@keyframes modalSlideIn{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.options-modal-header{display:flex;justify-content:space-between;align-items:center;padding:24px 28px;border-bottom:2px solid var(--border-strong)}.options-modal-header h2{margin:0;font-size:26px;color:var(--text-heading);font-weight:600}.options-close-button{background:none;border:none;font-size:32px;color:var(--text-muted);cursor:pointer;padding:0;width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:6px;transition:all .2s ease;line-height:1}.options-close-button:hover{background-color:var(--hover);color:var(--text-heading)}.options-modal-content{flex:1;overflow-y:auto;padding:24px 28px}.options-message{padding:12px 16px;border-radius:8px;margin-bottom:20px;font-size:14px}.options-error{background-color:var(--error-bg);color:var(--error);border:1px solid var(--error)}.options-success{background-color:var(--success-bg);color:var(--success);border:1px solid var(--success)}.options-section{margin-bottom:28px}.options-section:last-child{margin-bottom:0}.options-section h3{margin:0 0 16px;font-size:18px;color:var(--text-heading);font-weight:600;padding-bottom:8px;border-bottom:1px solid var(--border)}.section-header-with-buttons{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;padding-bottom:8px;border-bottom:1px solid var(--border)}.section-header-with-buttons h3{margin:0;padding:0;border:none}.preset-buttons{display:flex;gap:12px}.preset-button{padding:8px 16px;border:1px solid var(--border-strong);background-color:var(--surface);color:var(--text);border-radius:8px;font-size:13px;font-weight:500;cursor:pointer;transition:all .2s ease}.preset-button:hover:not(:disabled){background-color:var(--hover);border-color:var(--accent);color:var(--accent)}.preset-button:disabled{cursor:not-allowed;opacity:.5}.theme-picker{display:flex;flex-direction:column;gap:8px}.theme-group-label{font-size:13px;color:var(--text-muted);font-weight:600;margin-top:4px}.theme-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.theme-chip{padding:10px;border:2px solid var(--border-strong);background-color:var(--surface-2);color:var(--text);border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;transition:all .15s ease}.theme-chip:hover{border-color:var(--accent)}.theme-chip.active{border-color:var(--accent);background-color:var(--picked);color:var(--text-heading);font-weight:600}.column-visibility-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.column-visibility-item{display:flex}.column-label{display:flex;align-items:center;cursor:pointer;gap:8px;flex:1}.column-label input[type=checkbox]{width:18px;height:18px;cursor:pointer;flex-shrink:0;accent-color:var(--accent)}.column-label input[type=checkbox]:disabled{cursor:not-allowed;opacity:.5}.column-name{font-size:14px;color:var(--text-heading);font-weight:500}.column-name-required{font-size:14px;color:var(--text-muted);font-weight:500;display:flex;align-items:center;gap:6px}.required-badge{font-size:11px;background-color:var(--border);color:var(--text-muted);padding:2px 6px;border-radius:4px;font-weight:600}.option-item{padding:12px 0;border-bottom:1px solid var(--border)}.option-item:last-child{border-bottom:none}.option-label{display:flex;align-items:flex-start;cursor:pointer;gap:12px}.option-label input[type=checkbox]{margin-top:2px;width:20px;height:20px;cursor:pointer;flex-shrink:0;accent-color:var(--accent)}.option-label input[type=checkbox]:disabled{cursor:not-allowed;opacity:.5}.option-text{flex:1;display:flex;flex-direction:column;gap:4px}.option-text strong{font-size:15px;color:var(--text-heading);font-weight:600}.option-text small{font-size:13px;color:var(--text-muted);line-height:1.4}.options-modal-footer{display:flex;justify-content:space-between;align-items:center;padding:20px 28px;border-top:2px solid var(--border-strong);background-color:var(--surface-2);border-radius:0 0 12px 12px}.options-button-group{display:flex;gap:12px}.options-button{padding:10px 20px;border:none;border-radius:8px;font-size:15px;font-weight:600;cursor:pointer;transition:all .2s ease;white-space:nowrap}.options-button:disabled{cursor:not-allowed;opacity:.5}.options-button-save{background-color:var(--accent);color:var(--accent-text);min-width:100px}.options-button-save:hover:not(:disabled){background-color:var(--accent-hover);transform:translateY(-1px);box-shadow:0 2px 8px var(--shadow)}.options-button-save:active:not(:disabled){transform:translateY(0)}.options-button-cancel{background-color:var(--hover);color:var(--text)}.options-button-cancel:hover:not(:disabled){background-color:var(--border-strong)}.options-button-reset{background-color:transparent;color:var(--danger);border:1px solid var(--danger)}.options-button-reset:hover:not(:disabled){background-color:var(--danger);color:var(--accent-text)}.options-modal-content::-webkit-scrollbar{width:8px}.options-modal-content::-webkit-scrollbar-track{background:var(--scroll-track);border-radius:4px}.options-modal-content::-webkit-scrollbar-thumb{background:var(--scroll-thumb);border-radius:4px}.options-modal-content::-webkit-scrollbar-thumb:hover{background:var(--scroll-thumb-hover)}@media(max-width:768px){.options-modal-overlay{padding:0;align-items:flex-end}.options-modal{max-width:100%;max-height:85vh;border-radius:12px 12px 0 0}.options-modal-header{padding:20px}.options-modal-header h2{font-size:22px}.options-modal-content{padding:20px}.options-section h3{font-size:16px}.theme-grid{grid-template-columns:repeat(2,1fr)}.options-modal-footer{flex-direction:column;gap:12px;padding:16px 20px}.options-button-group{width:100%}.options-button{flex:1}.options-button-reset{width:100%}.column-visibility-grid{grid-template-columns:1fr}.section-header-with-buttons{flex-direction:column;align-items:flex-start;gap:12px}.preset-buttons{width:100%}.preset-button{flex:1}}.rl-create{display:flex;flex-wrap:wrap;gap:8px}.rl-create input{flex:1;min-width:140px;padding:8px 10px;border:1px solid var(--input-border);background:var(--input-bg);color:var(--text);border-radius:6px;font-size:.95rem}.rl-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.rl-row{display:flex;align-items:center;gap:8px}.rl-name{flex:1;min-width:0;padding:8px 10px;border:1px solid var(--input-border);background:var(--input-bg);color:var(--text);border-radius:6px;font-size:.95rem}.rl-count{min-width:28px;text-align:center;color:var(--text-muted);font-size:.85rem}.rl-action{padding:6px 10px;border:1px solid var(--border-strong);background:var(--surface);color:var(--text);border-radius:6px;cursor:pointer;font-size:.85rem;white-space:nowrap}.rl-action:hover:not(:disabled){background:var(--hover)}.rl-action:disabled{opacity:.5;cursor:not-allowed}.rl-delete{color:var(--danger);border-color:var(--danger)}.rl-empty{color:var(--text-muted);font-style:italic}.book-search{position:relative;display:flex;align-items:center;padding:10px 20px;border-bottom:1px solid var(--border);background-color:var(--surface)}.book-search-button{display:inline-flex;align-items:center;gap:8px;padding:6px 12px;border:1px solid var(--border-strong);border-radius:8px;background-color:var(--surface-2);color:var(--text);cursor:pointer;font-size:14px;line-height:1.2}.book-search-button:hover{background-color:var(--hover)}.book-search-button.active{background-color:var(--picked);border-color:var(--picked-border);color:var(--text-heading)}.book-search-query{font-weight:600;max-width:40vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.book-search-clear{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;margin-left:2px;border-radius:4px;font-weight:700;line-height:1}.book-search-clear:hover{background-color:var(--picked-hover)}.book-search-popover{position:absolute;top:calc(100% - 2px);left:20px;z-index:1000;min-width:300px;max-width:calc(100vw - 40px);padding:12px;display:flex;flex-direction:column;gap:10px;background-color:var(--surface);border:1px solid var(--border-strong);border-radius:8px;box-shadow:0 8px 24px var(--shadow)}.book-search-input{width:100%;padding:8px 10px;border:1px solid var(--input-border);border-radius:6px;background-color:var(--input-bg);color:var(--text);font-size:14px;box-sizing:border-box}.book-search-input:focus{outline:none;border-color:var(--accent)}.book-search-fields{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.book-search-fields-label{font-size:13px;color:var(--text-muted)}.book-search-field{display:inline-flex;align-items:center;gap:5px;font-size:14px;color:var(--text);cursor:pointer}.book-search-footer{display:flex;align-items:center;justify-content:space-between;gap:10px}.book-search-count,.book-search-hint{font-size:13px;color:var(--text-muted)}.book-search-clear-button{padding:4px 10px;border:1px solid var(--border-strong);border-radius:6px;background-color:var(--surface-2);color:var(--text);cursor:pointer;font-size:13px}.book-search-clear-button:hover{background-color:var(--hover)}@media(max-width:768px){.book-search{padding:8px 12px}.book-search-popover{left:12px;max-width:calc(100vw - 24px)}}.stats-view{position:fixed;inset:0;z-index:2000;background:var(--bg);color:var(--text);overflow-y:auto}.stats-topbar{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:16px;padding:12px 24px;background:var(--surface);border-bottom:1px solid var(--border-strong)}.stats-back{display:inline-flex;align-items:center;gap:7px;padding:7px 12px;border:1px solid var(--border-strong);border-radius:8px;background:var(--surface);color:var(--text);cursor:pointer;font-size:14px}.stats-back:hover{background:var(--surface-2)}.stats-back svg{width:14px;height:14px}.stats-title{margin:0;font-size:20px;color:var(--text-heading);font-weight:600}.stats-topbar-right{margin-left:auto;display:flex;align-items:center;gap:14px}.stats-scope{color:var(--text-muted);font-size:13.5px;font-variant-numeric:tabular-nums}.stats-theme-select{background-color:var(--surface);color:var(--text);border:1px solid var(--border-strong);padding:7px 10px;border-radius:8px;cursor:pointer;font-size:13.5px;font-weight:500}.stats-theme-select:hover{background-color:var(--surface-2)}.stats-theme-select option,.stats-theme-select optgroup{background-color:var(--surface);color:var(--text)}.stats-body{max-width:1100px;margin:0 auto;padding:8px 24px 64px}.stats-eyebrow{font-size:11.5px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted);margin:28px 2px 12px;display:flex;align-items:center;gap:10px}.stats-eyebrow:after{content:"";height:1px;flex:1;background:var(--border)}.stats-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(158px,1fr));gap:14px}.stat-kpi{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:15px 16px;box-shadow:var(--shadow)}.stat-kpi-label{font-size:11.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--text-muted)}.stat-kpi-value{font-size:27px;color:var(--text-heading);font-weight:650;margin-top:6px;font-variant-numeric:tabular-nums;letter-spacing:-.01em}.stat-kpi-value .unit{font-size:14px;color:var(--text-muted);font-weight:500;margin-left:4px}.stat-kpi-foot{font-size:12.5px;color:var(--text-muted);margin-top:3px}.stat-kpi.hero{background:linear-gradient(150deg,var(--gradient-start),var(--gradient-end));border:none}.stat-kpi.hero .stat-kpi-label,.stat-kpi.hero .stat-kpi-foot{color:#ffffffd9}.stat-kpi.hero .stat-kpi-value{color:#fff}.delta-up{color:var(--success);font-weight:600}.delta-down{color:var(--danger);font-weight:600}.stats-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px;align-items:start}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:18px;box-shadow:var(--shadow);min-width:0}.stat-card.col-full{grid-column:1 / -1}.stat-card-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.stat-card-head h3{margin:0;font-size:17px;color:var(--text-heading);font-weight:600}.stat-card-head-right{display:flex;align-items:center;gap:10px;flex:none}.stat-card-note{color:var(--text-muted);font-size:13px;margin:4px 0 14px}.stat-card-foot{color:var(--text-muted);font-size:12.5px;margin-top:12px;padding-top:12px;border-top:1px dashed var(--border-strong)}.stat-pill{font-size:10.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;padding:3px 8px;border-radius:999px;white-space:nowrap}.stat-pill.free{color:var(--success);background:color-mix(in srgb,var(--success) 15%,transparent)}.stat-pill.pro{color:var(--accent);background:color-mix(in srgb,var(--accent) 16%,transparent)}.measure-toggle{display:inline-flex;border:1px solid var(--border-strong);border-radius:8px;overflow:hidden}.measure-toggle button{border:none;background:var(--surface);color:var(--text-muted);font-size:12.5px;padding:5px 11px;cursor:pointer}.measure-toggle button.active{background:var(--accent);color:var(--accent-text)}.measure-toggle button:not(.active):hover{background:var(--surface-2)}.stats-empty{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:28px;text-align:center;color:var(--text-muted)}.chart-wrap{position:relative;margin-top:8px}svg.chart{width:100%;height:auto;display:block;overflow:visible}.chart-grid{stroke:var(--border);stroke-width:1}.chart-axis{fill:var(--text-muted);font-size:10.5px}.chart-axis-val{font-variant-numeric:tabular-nums}.chart-bar{fill:var(--chart-color, var(--accent));transition:opacity .12s}.chart-bar.partial{fill:color-mix(in srgb,var(--chart-color, var(--accent)) 40%,var(--surface));stroke:var(--chart-color, var(--accent));stroke-width:1;stroke-dasharray:3 2.5}.chart-bar.hover{opacity:.78}.chart-line{fill:none;stroke:var(--chart-color, var(--accent));stroke-width:2;stroke-linejoin:round;stroke-linecap:round}.chart-area{fill:var(--chart-color, var(--accent));opacity:.13}.chart-guide{stroke:var(--border-strong);stroke-width:1;stroke-dasharray:3 3}.chart-dot{fill:var(--chart-color, var(--accent));stroke:var(--surface);stroke-width:2}.chart-tip{position:absolute;transform:translate(-50%,calc(-100% - 8px));background:var(--text-heading);color:var(--surface);padding:5px 9px;border-radius:7px;font-size:12.5px;white-space:nowrap;pointer-events:none;box-shadow:0 6px 20px var(--shadow);z-index:2;font-variant-numeric:tabular-nums}.pace-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:8px}.pace-cell{background:var(--surface-2);border:1px solid var(--border);border-radius:10px;padding:12px 13px}.pace-cell .v{font-size:21px;color:var(--text-heading);font-weight:640;font-variant-numeric:tabular-nums}.pace-cell .k{font-size:11.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);margin-top:3px}.donut{display:flex;flex-direction:column;align-items:center;margin-top:8px}.donut-graphic{position:relative;width:100%;max-width:220px}.donut-graphic .chart{max-width:220px;margin:0 auto}.donut-center{position:absolute;inset:0;display:grid;place-content:center;text-align:center}.donut-center .n{font-size:24px;font-weight:650;color:var(--text-heading);font-variant-numeric:tabular-nums}.donut-center .l{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted)}.legend{display:flex;flex-wrap:wrap;gap:10px 14px;margin-top:14px;justify-content:center}.legend-item{display:inline-flex;align-items:center;gap:7px;font-size:13px;color:var(--text)}.legend .sw{width:11px;height:11px;border-radius:3px;flex:none}.legend-val{color:var(--text-muted);font-variant-numeric:tabular-nums}.chart-marker{stroke:var(--text-muted);stroke-width:1.5;stroke-dasharray:4 3}.chart-marker-label{fill:var(--text-heading);font-size:11px;font-weight:700}.stat-select{background-color:var(--surface);color:var(--text);border:1px solid var(--border-strong);border-radius:8px;padding:5px 9px;font-size:12.5px;cursor:pointer}.stat-select:hover{background-color:var(--surface-2)}.records{list-style:none;margin:4px 0 0;padding:0}.records li{display:flex;align-items:baseline;gap:12px;padding:9px 0;border-top:1px solid var(--border)}.records li:first-child{border-top:none}.rec-k{font-size:12.5px;color:var(--text-muted);width:118px;flex:none}.rec-v{color:var(--text-heading);font-weight:550;min-width:0}.rec-v .sub{color:var(--text-muted);font-weight:400;font-size:12.5px;font-variant-numeric:tabular-nums}@media(max-width:520px){.stats-scope{display:none}.stats-title{font-size:18px}.stats-body{padding:8px 14px 48px}.stat-card{padding:14px}}@media(prefers-reduced-motion:reduce){.chart-bar{transition:none}}.list-estimate{display:flex;align-items:center;gap:9px;padding:10px 20px;font-size:14px;color:var(--text);background:color-mix(in srgb,var(--accent) 8%,var(--surface));border-bottom:1px solid var(--border)}.list-estimate svg{width:16px;height:16px;flex:none;color:var(--accent)}.list-estimate strong{color:var(--text-heading);font-weight:600;font-variant-numeric:tabular-nums}.list-estimate strong.time{color:var(--accent)}.list-estimate .note{color:var(--text-muted)}.list-estimate.is-done{background:var(--surface);color:var(--text-muted)}.list-estimate.is-done svg{color:var(--success)}@media(max-width:520px){.list-estimate{padding:9px 14px;font-size:13px}}
