:root{--color-primary: #007bff;--color-primary-hover: #0056b3;--color-secondary: #6c757d;--color-danger: #dc3545;--color-success: #28a745;--color-warning: #ffc107;--color-bg: #ffffff;--color-bg-secondary: #f8f9fa;--color-text: #212529;--color-text-secondary: #6c757d;--color-border: #dee2e6;--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 16px;--spacing-lg: 24px;--spacing-xl: 32px;--font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;--font-size-sm: 14px;--font-size-base: 16px;--font-size-lg: 18px;--font-size-xl: 24px;--border-radius: 8px;--border-radius-sm: 4px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px rgba(0, 0, 0, .1);--shadow-lg: 0 10px 15px rgba(0, 0, 0, .1);--z-navbar: 100;--z-fab: 90;--z-modal: 1000}*{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-family);font-size:var(--font-size-base);line-height:1.5;color:var(--color-text);background-color:var(--color-bg);overflow-x:hidden}h1,h2,h3,h4,h5,h6{font-weight:600;line-height:1.2;margin-bottom:var(--spacing-md)}h1{font-size:2rem}h2{font-size:1.5rem}h3{font-size:1.25rem}p{margin-bottom:var(--spacing-sm)}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}button{font-family:inherit;font-size:inherit;cursor:pointer;border:none;background:none}input,select,textarea{font-family:inherit;font-size:inherit}img{max-width:100%;height:auto;display:block}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--color-bg-secondary)}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:var(--border-radius-sm)}::-webkit-scrollbar-thumb:hover{background:var(--color-secondary)}#app{min-height:100vh;display:flex;flex-direction:column;padding-bottom:80px}.navbar{position:sticky;top:0;z-index:var(--z-navbar);display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-md);background:var(--color-bg);border-bottom:1px solid var(--color-border);box-shadow:var(--shadow-sm)}.navbar-brand{display:flex;align-items:center;gap:var(--spacing-sm);font-size:var(--font-size-lg);font-weight:600;color:var(--color-text)}.navbar-brand svg{color:var(--color-primary)}.navbar-center{flex:1;display:flex;justify-content:center;padding:0 var(--spacing-md)}.booklist-selector{max-width:300px;padding:var(--spacing-sm) var(--spacing-md);border:1px solid var(--color-border);border-radius:var(--border-radius);background:var(--color-bg);color:var(--color-text);font-size:var(--font-size-base);cursor:pointer;transition:border-color .2s}.booklist-selector:hover{border-color:var(--color-primary)}.booklist-selector:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px rgba(var(--color-primary-rgb),.1)}.search-bar{padding:var(--spacing-md);background:var(--color-bg-secondary);border-bottom:1px solid var(--color-border)}.search-input-wrapper{position:relative;margin-bottom:var(--spacing-md)}.search-icon-wrapper{position:absolute;left:var(--spacing-md);top:50%;transform:translateY(-50%);display:flex;flex-direction:column;align-items:center;cursor:pointer;z-index:1;transition:opacity .2s}.search-icon-wrapper:hover{opacity:.7}.search-icon{color:var(--color-text-secondary);pointer-events:none}.search-scope-label{font-size:9px;line-height:1;color:var(--color-primary);font-weight:600;margin-top:-2px;white-space:nowrap;pointer-events:none}.search-scope-dropdown{position:absolute;left:0;top:calc(100% + 4px);background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--border-radius);box-shadow:0 2px 8px #0000001a;min-width:160px;z-index:1000;display:none}.search-scope-dropdown.active{display:block}.search-scope-option{padding:var(--spacing-sm) var(--spacing-md);cursor:pointer;font-size:var(--font-size-sm);transition:background .2s}.search-scope-option:hover{background:var(--color-bg-secondary)}.search-scope-option.active{background:var(--color-primary);color:#fff}.search-scope-option:first-child{border-radius:var(--border-radius) var(--border-radius) 0 0}.search-scope-option:last-child{border-radius:0 0 var(--border-radius) var(--border-radius)}.search-input{width:100%;padding:var(--spacing-md);padding-left:calc(var(--spacing-md) * 3);border:1px solid var(--color-border);border-radius:var(--border-radius);background:var(--color-bg);font-size:var(--font-size-base)}.search-input:focus{outline:none;border-color:var(--color-primary)}.filters{display:flex;gap:var(--spacing-sm);overflow-x:auto;-webkit-overflow-scrolling:touch;align-items:center}.view-toggle{display:flex;gap:0;border:1px solid var(--color-border);border-radius:var(--border-radius);overflow:hidden;flex-shrink:0}.view-toggle .btn-icon{border-radius:0;border:none;border-right:1px solid var(--color-border)}.view-toggle .btn-icon:last-child{border-right:none}.view-toggle .btn-icon.active{background:var(--color-primary);color:#fff}.filter-select{flex-shrink:0;padding:var(--spacing-sm) var(--spacing-md);border:1px solid var(--color-border);border-radius:var(--border-radius);background:var(--color-bg);font-size:var(--font-size-sm)}.filter-select:focus{outline:none;border-color:var(--color-primary)}#book-list{flex:1;padding:var(--spacing-md)}.book-grid{display:grid;grid-template-columns:1fr;gap:var(--spacing-md)}.book-list-view{overflow-x:auto}.book-table{width:100%;border-collapse:collapse;background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--border-radius)}.book-table thead{background:var(--color-bg-secondary);border-bottom:2px solid var(--color-border)}.book-table th{padding:var(--spacing-md);text-align:left;font-weight:600;color:var(--color-text);white-space:nowrap}.book-table td{padding:var(--spacing-md);border-top:1px solid var(--color-border);vertical-align:middle}.book-table .col-checkbox{width:40px;text-align:center}.book-table .col-cover{width:60px}.book-table .col-cover img{width:50px;height:70px;object-fit:cover;border-radius:var(--border-radius-sm)}.book-table .col-cover .no-cover{width:50px;height:70px;display:flex;align-items:center;justify-content:center;background:var(--color-bg-secondary);border-radius:var(--border-radius-sm);font-size:24px}.book-table .col-title{min-width:200px;max-width:400px}.book-table .title-cell strong{display:block;margin-bottom:var(--spacing-xs);color:var(--color-text)}.book-table .notes-preview{font-size:var(--font-size-sm);color:var(--color-text-secondary);line-height:1.4}.book-table .comment-preview{font-size:var(--font-size-sm);color:var(--color-text-secondary);line-height:1.4;margin-top:var(--spacing-xs);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:400px}.book-table .col-author{min-width:150px}.book-table .col-isbn{min-width:120px}.book-table .col-isbn code{font-family:monospace;font-size:var(--font-size-sm);background:var(--color-bg-secondary);padding:var(--spacing-xs);border-radius:var(--border-radius-sm)}.book-table .col-status{min-width:120px}.book-table .col-categories{min-width:150px}.book-table .col-categories .badge{margin-right:var(--spacing-xs);margin-bottom:var(--spacing-xs);display:inline-block}.book-table .col-actions{min-width:150px;white-space:nowrap}.book-table .col-actions .btn-small{margin-right:var(--spacing-xs)}.book-row:hover{background:var(--color-bg-secondary)}@media(min-width:768px){.book-grid{grid-template-columns:repeat(2,1fr)}}@media(min-width:1024px){.book-grid{grid-template-columns:repeat(3,1fr)}}.empty-state{text-align:center;padding:var(--spacing-xl);color:var(--color-text-secondary)}.empty-state svg{margin:0 auto var(--spacing-lg);opacity:.5}.fab{position:fixed;bottom:var(--spacing-lg);right:var(--spacing-lg);z-index:var(--z-fab);width:56px;height:56px;border-radius:50%;background:var(--color-primary);color:#fff;box-shadow:var(--shadow-lg);display:flex;align-items:center;justify-content:center;transition:transform .2s,box-shadow .2s}.fab:hover{transform:scale(1.1);box-shadow:0 12px 20px #00000026}.fab:active{transform:scale(.95)}@media(min-width:768px){.search-bar{display:flex;gap:var(--spacing-md);align-items:flex-start}.search-input-wrapper{flex:1;margin-bottom:0}.filters{flex-shrink:0}}.btn-primary,.btn-secondary,.btn-danger,.btn-small,.btn-icon,.btn-full{padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--border-radius);font-weight:500;transition:all .2s;display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-xs)}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover{background:var(--color-primary-hover)}.btn-secondary{background:var(--color-secondary);color:#fff}.btn-secondary:hover{background:#5a6268}.btn-danger{background:var(--color-danger);color:#fff}.btn-danger:hover{background:#c82333}.btn-small{padding:var(--spacing-xs) var(--spacing-sm);font-size:var(--font-size-sm);background:var(--color-bg-secondary);border:1px solid var(--color-border)}.btn-small:hover{background:var(--color-border)}.btn-primary.btn-small{background:var(--color-primary);color:#fff;border:none}.btn-primary.btn-small:hover{background:var(--color-primary-hover)}.btn-secondary.btn-small{background:var(--color-secondary);color:#fff;border:none}.btn-secondary.btn-small:hover{background:#5a6268}.btn-icon{padding:var(--spacing-sm);color:var(--color-text)}.btn-icon:hover{background:var(--color-bg-secondary);border-radius:var(--border-radius)}.btn-icon.btn-small{padding:var(--spacing-xs);font-size:1rem;min-width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center}.btn-manage-book-lists{opacity:.6;transition:opacity .2s,transform .2s}.btn-manage-book-lists.in-lists{opacity:1}.btn-manage-book-lists:hover{opacity:1;transform:scale(1.15)}.btn-full{width:100%;padding:var(--spacing-md);background:var(--color-bg);color:var(--color-text);border:1px solid var(--color-border);text-align:left;margin-bottom:var(--spacing-sm)}.btn-full:hover{background:var(--color-bg-secondary)}.btn-full.btn-danger{background:var(--color-danger);color:#fff}.btn-full.btn-danger:hover{background:#c82333}.btn-close{font-size:2rem;line-height:1;color:var(--color-text-secondary);padding:0;width:32px;height:32px}.btn-close:hover{color:var(--color-text)}.input-full,.textarea-full{width:100%;padding:var(--spacing-md);border:1px solid var(--color-border);border-radius:var(--border-radius);font-size:var(--font-size-base);background:var(--color-bg)}.input-full:focus,.textarea-full:focus{outline:none;border-color:var(--color-primary)}.textarea-full{resize:vertical;min-height:100px}.form-group{margin-bottom:var(--spacing-lg)}.form-group label{display:block;margin-bottom:var(--spacing-sm);font-weight:500;color:var(--color-text)}.form-group label small{font-weight:400;color:var(--color-text-secondary)}.privacy-hint{display:block;margin-bottom:var(--spacing-xs);font-size:var(--font-size-xs);color:var(--color-text-secondary);opacity:.8}.checkbox-list{max-height:200px;overflow-y:auto;border:1px solid var(--color-border);border-radius:var(--border-radius);padding:var(--spacing-sm)}.checkbox-item{display:flex;align-items:center;padding:var(--spacing-sm);cursor:pointer;border-radius:var(--border-radius);transition:background-color .2s}.checkbox-item:hover{background:var(--color-bg-secondary)}.checkbox-item input[type=checkbox]{margin-right:var(--spacing-sm);cursor:pointer}.checkbox-item span{flex:1}.text-secondary{color:var(--color-text-secondary);font-style:italic}.form-section{border:1px solid var(--color-border);border-radius:var(--border-radius);margin-bottom:var(--spacing-lg);overflow:hidden}.form-section summary{padding:var(--spacing-md);background:var(--color-bg-secondary);cursor:pointer;font-weight:500;list-style:none;-webkit-user-select:none;user-select:none}.form-section summary::-webkit-details-marker{display:none}.form-section summary:before{content:"▶";display:inline-block;margin-right:var(--spacing-sm);transition:transform .2s}.form-section[open] summary:before{transform:rotate(90deg)}.form-section summary:hover{background:var(--color-border)}.form-section-content{padding:var(--spacing-md)}.btn-collection{display:flex;align-items:center;justify-content:center;gap:var(--spacing-sm);font-weight:600}.btn-collection .badge{background:var(--color-primary);color:#fff;padding:2px 8px;border-radius:12px;font-size:var(--font-size-xs);font-weight:600;min-width:20px;text-align:center;display:none}.btn-collection .badge.visible{display:inline-block}.book-lists-management-container,.book-lists-add-container{display:flex;flex-direction:column;gap:var(--spacing-md);margin-bottom:var(--spacing-lg)}.book-list-management-item{padding:var(--spacing-md);background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--border-radius)}.book-lists-add-container .btn-list-option{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-md);text-align:left;transition:all .2s}.book-lists-add-container .btn-list-option:hover{transform:translate(4px);border-color:var(--color-primary)}.book-lists-add-container .action-icon{font-size:var(--font-size-lg);color:var(--color-primary)}.book-lists-container{display:flex;flex-direction:column;gap:var(--spacing-md);margin-bottom:var(--spacing-md)}.empty-book-lists{padding:var(--spacing-md);text-align:center}.book-list-item{padding:var(--spacing-md);background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--border-radius)}.book-list-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--spacing-sm)}.book-list-name{font-weight:600;color:var(--color-text)}.book-list-comment{display:flex;flex-direction:column;gap:var(--spacing-sm)}.book-list-comment .comment-display{font-size:var(--font-size-sm);color:var(--color-text);padding:var(--spacing-sm);background:var(--color-bg);border-radius:var(--border-radius-sm);border-left:3px solid var(--color-primary);white-space:pre-wrap;word-wrap:break-word}.book-list-comment .no-comment{font-size:var(--font-size-sm);color:var(--color-text-secondary);font-style:italic}.scanner-actions{display:flex;gap:var(--spacing-sm);flex-wrap:wrap}.scanner-actions button{flex:1;min-width:150px}.ocr-upload-area{border:2px dashed var(--color-border);border-radius:var(--border-radius);padding:var(--spacing-xl);text-align:center;cursor:pointer;transition:all .2s}.ocr-upload-area:hover,.ocr-upload-area.drag-over{border-color:var(--color-primary);background:var(--color-bg-secondary)}.ocr-upload-area .upload-icon{font-size:48px;margin-bottom:var(--spacing-md)}.ocr-upload-area .upload-hint{color:var(--color-text-secondary);font-size:var(--font-size-sm)}.ocr-preview{margin:var(--spacing-lg) 0;text-align:center}.ocr-preview img{max-width:100%;max-height:400px;border-radius:var(--border-radius);border:1px solid var(--color-border)}.ocr-progress{margin:var(--spacing-lg) 0;text-align:center}.progress-label{margin-bottom:var(--spacing-md);font-weight:500}.progress-bar{height:24px;background:var(--color-bg-secondary);border-radius:var(--border-radius);overflow:hidden;margin-bottom:var(--spacing-sm)}.progress-fill{height:100%;background:var(--color-primary);transition:width .3s;width:0%}.progress-percent{color:var(--color-text-secondary);font-size:var(--font-size-sm)}.ocr-result{margin:var(--spacing-lg) 0}.checkbox-group{display:flex;flex-wrap:wrap;gap:var(--spacing-md);margin-bottom:var(--spacing-md)}.checkbox-label{display:flex;align-items:center;gap:var(--spacing-xs);cursor:pointer}.checkbox-label input[type=checkbox]{width:18px;height:18px;cursor:pointer}.book-card{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--border-radius);overflow:hidden;transition:box-shadow .2s;position:relative}.book-card:hover{box-shadow:var(--shadow-md)}.book-checkbox{position:absolute;top:var(--spacing-sm);left:var(--spacing-sm);z-index:10;background:var(--color-bg);padding:var(--spacing-xs);border-radius:var(--border-radius-sm);box-shadow:var(--shadow-sm)}.book-checkbox input[type=checkbox]{width:20px;height:20px;cursor:pointer}.book-cover{width:100%;height:200px;background:var(--color-bg-secondary);display:flex;align-items:center;justify-content:center;overflow:hidden}.book-cover img{width:100%;height:100%;object-fit:cover}.book-info{padding:var(--spacing-md)}.book-title{font-size:var(--font-size-lg);font-weight:600;margin-bottom:var(--spacing-xs);color:var(--color-text)}.book-author{color:var(--color-text-secondary);margin-bottom:var(--spacing-sm)}.book-meta{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-bottom:var(--spacing-xs)}.book-isbn{font-size:var(--font-size-sm);color:var(--color-text-secondary);font-family:monospace;margin-bottom:var(--spacing-md)}.book-badges{display:flex;flex-wrap:wrap;gap:var(--spacing-xs);margin-bottom:var(--spacing-sm)}.badge{padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--border-radius-sm);font-size:var(--font-size-sm);font-weight:500}.badge-category{background:var(--color-bg-secondary);color:var(--color-text-secondary);border:1px solid var(--color-border)}.book-tags{display:flex;flex-wrap:wrap;gap:var(--spacing-xs);margin-bottom:var(--spacing-sm)}.tag{font-size:var(--font-size-sm);color:var(--color-primary)}.book-notes{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-bottom:var(--spacing-md);line-height:1.4}.book-comment{margin-top:var(--spacing-sm);margin-bottom:var(--spacing-md);padding:var(--spacing-sm);background:var(--color-bg-secondary);border-left:3px solid var(--color-primary);border-radius:var(--border-radius-sm)}.book-comment .comment-label{font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-secondary);margin-bottom:var(--spacing-xs)}.book-comment .comment-text{font-size:var(--font-size-sm);color:var(--color-text);line-height:1.5;white-space:pre-wrap;word-wrap:break-word}.book-actions{display:flex;gap:var(--spacing-sm)}.btn-edit{flex:1;background:var(--color-primary);color:#fff;border:none}.btn-edit:hover{background:var(--color-primary-hover)}.btn-delete{background:var(--color-danger);color:#fff;border:none}.btn-delete:hover{background:#c82333}.modal{display:none;position:fixed;top:0;left:0;width:100%;height:100%;background:#00000080;z-index:var(--z-modal);align-items:center;justify-content:center;padding:var(--spacing-md);overflow-y:auto}.modal.active{display:flex}.modal-content{background:var(--color-bg);border-radius:var(--border-radius);width:100%;max-width:600px;max-height:90vh;overflow-y:auto;box-shadow:var(--shadow-lg)}.modal-large{max-width:800px}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-lg);border-bottom:1px solid var(--color-border);gap:var(--spacing-md)}.modal-header h2{margin:0;flex:1}.modal-header .btn-import{padding:var(--spacing-xs) var(--spacing-md);background:var(--color-secondary);color:#fff;border:none;border-radius:var(--border-radius);font-size:var(--font-size-sm);font-weight:500;cursor:pointer;transition:background .2s}.modal-header .btn-import:hover{background:#5a6268}.modal-body{padding:var(--spacing-lg)}.book-info-preview{margin-bottom:var(--spacing-lg);padding:var(--spacing-sm);background:var(--color-bg-secondary);border-radius:var(--border-radius-sm)}.book-info-preview .book-title{font-size:var(--font-size-base);font-weight:600;margin-bottom:var(--spacing-xs)}.book-info-preview .book-list-name{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.char-counter{display:flex;align-items:center;gap:var(--spacing-sm);margin-top:var(--spacing-xs);font-size:var(--font-size-sm);color:var(--color-text-secondary)}.char-counter .over-limit-warning{color:var(--color-danger);font-weight:600}textarea.over-limit{border-color:var(--color-danger);border-width:2px}.modal-footer{display:flex;gap:var(--spacing-sm);justify-content:space-between;align-items:center;padding:var(--spacing-lg);border-top:1px solid var(--color-border)}.modal-footer .footer-right{display:flex;gap:var(--spacing-md);align-items:center}.unresolved-warning{color:var(--color-error);font-size:var(--font-size-sm);font-weight:600}.btn-confirm:disabled{opacity:.5;cursor:not-allowed;background-color:var(--color-border)}.modal-actions{display:flex;gap:var(--spacing-sm);justify-content:flex-end;margin-top:var(--spacing-lg)}.book-list-options{display:flex;flex-direction:column;gap:var(--spacing-sm)}.btn-list-option{text-align:left;padding:var(--spacing-md);transition:all .2s;position:relative;display:flex;align-items:center;justify-content:space-between}.btn-list-option:hover:not(.disabled){transform:translate(4px);border-color:var(--color-primary)}.btn-list-option.disabled{opacity:.5;cursor:not-allowed;background:var(--color-bg-secondary)}.btn-list-option.disabled:hover{transform:none;border-color:var(--color-border)}.badge-in-list{font-size:var(--font-size-sm);color:var(--color-text-secondary);font-weight:400;padding:var(--spacing-xs) var(--spacing-sm);background:var(--color-bg-secondary);border-radius:var(--border-radius)}.info-box{padding:var(--spacing-md);background:#e7f3ff;border:1px solid #b3d9ff;border-radius:var(--border-radius);margin-bottom:var(--spacing-lg);color:#004085}.warning-box{background:#fff3cd;border-color:#ffc107;color:#856404}.warning-box button{margin-top:var(--spacing-sm)}.help-text,.hint-text{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-bottom:var(--spacing-md)}.help-text a,.hint-text a{color:var(--color-primary);text-decoration:none}.help-text a:hover,.hint-text a:hover{text-decoration:underline}.api-key-section{margin-bottom:var(--spacing-lg);padding-bottom:var(--spacing-md);border-bottom:1px solid var(--color-border)}.api-key-section:last-of-type{border-bottom:none}.api-key-section h3{margin-top:0;margin-bottom:var(--spacing-sm);font-size:var(--font-size-md)}.help-box{background:var(--color-bg-secondary);padding:var(--spacing-md);border-radius:var(--border-radius);margin-top:var(--spacing-md);margin-bottom:var(--spacing-md)}.help-box strong{display:block;margin-bottom:var(--spacing-xs)}.help-box ul{margin:var(--spacing-xs) 0 0 0;padding-left:var(--spacing-lg)}.help-box li{margin-bottom:var(--spacing-xs);font-size:var(--font-size-sm);color:var(--color-text-secondary)}.data-sources{margin-top:var(--spacing-sm);display:flex;flex-wrap:wrap;gap:var(--spacing-xs);align-items:center}.data-sources small{color:var(--color-text-secondary);margin-right:var(--spacing-xs)}.btn-source{padding:var(--spacing-xs) var(--spacing-sm);font-size:var(--font-size-sm);background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--border-radius-sm)}.btn-source:hover{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.external-links{margin-top:var(--spacing-lg);padding-top:var(--spacing-lg);border-top:1px solid var(--color-border)}.external-links h3{font-size:var(--font-size-base);margin-bottom:var(--spacing-md)}.external-links-list{display:flex;flex-wrap:wrap;gap:var(--spacing-sm)}.external-links-list a{padding:var(--spacing-sm) var(--spacing-md);background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--border-radius);font-size:var(--font-size-sm);transition:all .2s}.external-links-list a:hover{background:var(--color-primary);color:#fff;border-color:var(--color-primary);text-decoration:none}.smart-paste-section{margin-bottom:var(--spacing-lg);padding:var(--spacing-md);background:var(--color-bg-secondary);border-radius:var(--border-radius)}.smart-paste-section h3{font-size:var(--font-size-base);margin-bottom:var(--spacing-md)}.smart-paste-section .button-group{display:flex;flex-wrap:wrap;gap:var(--spacing-sm);margin-top:var(--spacing-sm)}.smart-paste-section .button-group button{flex:1;min-width:150px}.divider{text-align:center;margin:var(--spacing-lg) 0;color:var(--color-text-secondary);position:relative}.divider:before,.divider:after{content:"";position:absolute;top:50%;width:45%;height:1px;background:var(--color-border)}.divider:before{left:0}.divider:after{right:0}.upload-section{text-align:center;padding:var(--spacing-lg)}.btn-large{padding:var(--spacing-md) var(--spacing-xl);font-size:var(--font-size-lg)}.book-preview-item{display:flex;justify-content:space-between;align-items:flex-start;padding:var(--spacing-md);margin-bottom:var(--spacing-md);background:var(--color-bg-secondary);border-radius:var(--border-radius);border:2px solid var(--color-border)}.book-preview-content h4{margin:0 0 var(--spacing-sm) 0;color:var(--color-primary)}.book-preview-content p{margin:var(--spacing-xs) 0;font-size:var(--font-size-sm)}.book-preview-actions{flex-shrink:0;margin-left:var(--spacing-md)}.loading-spinner{border:3px solid var(--color-border);border-top:3px solid var(--color-primary);border-radius:50%;width:40px;height:40px;animation:spin 1s linear infinite;margin:0 auto var(--spacing-md)}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}#parsing-status{text-align:center;padding:var(--spacing-lg)}#parsing-status p{color:var(--color-text-secondary);margin-top:var(--spacing-sm)}.manual-llm-modal{max-width:700px}.manual-llm-steps{margin:var(--spacing-lg) 0}.step-item{display:flex;gap:var(--spacing-md);margin-bottom:var(--spacing-xl);align-items:flex-start}.step-number{flex-shrink:0;width:32px;height:32px;background:var(--color-primary);color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:16px}.step-content{flex:1}.step-content h4{margin:0 0 var(--spacing-sm) 0;color:var(--color-text)}.step-content p{margin:var(--spacing-xs) 0;color:var(--color-text-secondary)}.prompt-box{position:relative;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--border-radius);padding:var(--spacing-md);margin-top:var(--spacing-sm)}.prompt-box pre{margin:0 0 var(--spacing-sm) 0;white-space:pre-wrap;word-wrap:break-word;font-size:var(--font-size-sm);color:var(--color-text);max-height:200px;overflow-y:auto}.prompt-box button{margin-top:var(--spacing-sm)}.image-preview-small{margin-top:var(--spacing-sm);padding:var(--spacing-sm);background:var(--color-bg-secondary);border-radius:var(--border-radius);display:inline-block}.camera-selector{margin-bottom:var(--spacing-md);padding:var(--spacing-sm);background:var(--color-bg-secondary);border-radius:var(--border-radius)}.camera-selector label{display:block;margin-bottom:var(--spacing-xs);font-size:var(--font-size-sm);font-weight:500}.camera-selector select{width:100%}.scanner-tips{margin-top:var(--spacing-lg);text-align:center}.scanner-tips p{color:var(--color-text-secondary);margin-bottom:var(--spacing-sm)}.scanner-tips input{margin:var(--spacing-md) 0}.menu-section{margin-bottom:var(--spacing-xl)}.menu-section h3{font-size:var(--font-size-base);margin-bottom:var(--spacing-md);padding-bottom:var(--spacing-sm);border-bottom:1px solid var(--color-border)}.selector-results{max-height:60vh;overflow-y:auto}.selector-item{display:flex;gap:var(--spacing-md);padding:var(--spacing-md);border:1px solid var(--color-border);border-radius:var(--border-radius);margin-bottom:var(--spacing-md);transition:box-shadow .2s}.selector-item:hover{box-shadow:var(--shadow-md)}.selector-item-cover{flex-shrink:0;width:80px;height:120px}.selector-item-cover img{width:100%;height:100%;object-fit:cover;border-radius:var(--border-radius)}.selector-item-cover .no-cover{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:var(--color-bg-secondary);border-radius:var(--border-radius);font-size:var(--font-size-sm);color:var(--color-text-secondary)}.selector-item-info{flex-grow:1}.selector-item-info h3{margin:0 0 var(--spacing-sm) 0;font-size:var(--font-size-lg)}.selector-item-info p{margin:0 0 var(--spacing-xs) 0;font-size:var(--font-size-sm);color:var(--color-text-secondary)}.selector-item-info .author{font-weight:500;color:var(--color-text)}.selector-item-info .source{font-style:italic;color:var(--color-primary)}.selector-item-action{flex-shrink:0;display:flex;align-items:center}.loading-message,.empty-message{text-align:center;padding:var(--spacing-xl);color:var(--color-text-secondary)}.category-tag-input{position:relative;width:100%}.tag-input-wrapper{border:1px solid var(--color-border);border-radius:var(--border-radius);background:var(--color-input-bg);transition:border-color .2s}.tag-input-wrapper:focus-within{border-color:var(--color-primary)}.tags-container{display:flex;flex-wrap:wrap;align-items:center;gap:var(--spacing-xs);padding:var(--spacing-xs);min-height:42px;max-height:200px;overflow-y:auto}.tag-chip{display:inline-flex;align-items:center;gap:4px;padding:4px 8px;background:var(--color-primary);color:#fff;border-radius:14px;font-size:var(--font-size-sm);white-space:nowrap}.tag-remove{background:none;border:none;color:#fff;font-size:18px;line-height:1;cursor:pointer;padding:0;margin:0;width:16px;height:16px;display:flex;align-items:center;justify-content:center;opacity:.8}.tag-remove:hover{opacity:1}.tag-input{flex:1;min-width:120px;border:none;outline:none;background:transparent;padding:var(--spacing-xs);font-size:var(--font-size-base)}.tag-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--border-radius);box-shadow:0 4px 12px #00000026;max-height:300px;overflow-y:auto;z-index:1000}.tag-dropdown-item{padding:var(--spacing-sm) var(--spacing-md);cursor:pointer;transition:background-color .2s;display:flex;justify-content:space-between;align-items:center}.tag-dropdown-item:hover{background:var(--color-hover-bg)}.tag-dropdown-item .category-name{font-weight:500}.tag-dropdown-item .category-meta{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.tag-dropdown-item.create-new{border-top:1px solid var(--color-border);background:var(--color-bg-secondary);display:flex;align-items:center;gap:var(--spacing-sm)}.tag-dropdown-item.create-new:hover{background:var(--color-hover-bg)}.tag-dropdown-item .create-icon{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;background:var(--color-primary);color:#fff;font-size:16px;font-weight:700;flex-shrink:0}.tag-dropdown-item .create-hint{color:var(--color-primary);font-size:var(--font-size-sm);flex:1}.tag-dropdown-empty{padding:var(--spacing-md);text-align:center;color:var(--color-text-secondary);font-size:var(--font-size-sm)}.category-manager-toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-md);padding-bottom:var(--spacing-md);border-bottom:1px solid var(--color-border)}.category-item{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);border:1px solid var(--color-border);border-radius:var(--border-radius);margin-bottom:var(--spacing-xs);background:var(--color-input-bg);transition:background-color .2s}.category-item.selected{background:var(--color-bg-secondary);border-color:var(--color-primary)}.category-item .list-checkbox{width:20px;height:20px;cursor:pointer;margin-right:var(--spacing-xs)}.category-item.edit-mode{background:var(--color-bg-secondary)}.category-checkbox{display:flex;align-items:center;cursor:pointer}.category-checkbox input[type=checkbox]{width:20px;height:20px;cursor:pointer}.category-content{flex:1;display:flex;flex-direction:column;gap:4px}.category-content.clickable:hover{opacity:.7}.category-name{font-weight:500;color:var(--color-text-primary)}.category-meta{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.category-editing{display:flex;gap:var(--spacing-xs);align-items:center;flex:1}.category-edit-input{flex:1}.btn-icon{padding:4px 8px;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--border-radius);cursor:pointer;transition:all .2s;display:inline-flex;align-items:center;justify-content:center}.btn-icon:hover{background:var(--color-hover-bg)}.btn-icon.btn-save{color:#28a745;border-color:#28a745}.btn-icon.btn-save:hover{background:#28a745;color:#fff}.btn-icon.btn-cancel{color:var(--color-danger);border-color:var(--color-danger)}.btn-icon.btn-cancel:hover{background:var(--color-danger);color:#fff}.export-hint{display:block;color:var(--color-text-secondary);font-size:var(--font-size-sm);margin:var(--spacing-sm) 0;opacity:.8}.batch-actions-toolbar{display:flex;align-items:center;gap:var(--spacing-md);padding:var(--spacing-sm) var(--spacing-md);background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--border-radius);margin:var(--spacing-md) 0}.selection-count{flex:1;font-size:var(--font-size-sm);color:var(--color-text-secondary)}.batch-actions-toolbar .btn{padding:var(--spacing-xs) var(--spacing-sm);font-size:var(--font-size-sm)}@media(max-width:767px){.modal-content{max-height:95vh}.filters{padding-bottom:var(--spacing-sm)}.tags-container{max-height:120px}.tag-dropdown{max-height:200px}.category-manager-toolbar{flex-direction:column;gap:var(--spacing-sm);align-items:stretch}.category-item{flex-wrap:wrap}}.undo-toast{position:fixed;top:0;left:50%;transform:translate(-50%) translateY(-100%);min-width:400px;max-width:600px;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-top:none;border-radius:0 0 var(--border-radius) var(--border-radius);box-shadow:0 4px 12px #00000026;padding:var(--spacing-md) var(--spacing-lg);z-index:10000;display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-lg);transition:transform .3s ease-out}.undo-toast.visible{transform:translate(-50%) translateY(0)}.undo-toast-content{display:flex;align-items:center;gap:var(--spacing-sm);flex:1}.undo-toast-icon{font-size:1.2rem;flex-shrink:0}.undo-toast-message{color:var(--color-text-primary);font-size:var(--font-size-base);line-height:1.4}.undo-toast-actions{display:flex;align-items:center;gap:var(--spacing-lg);flex-shrink:0}.undo-toast .btn-undo{padding:var(--spacing-xs) var(--spacing-md);background:var(--color-primary);color:#fff;border:none;border-radius:var(--border-radius);font-weight:500;cursor:pointer;transition:background .2s}.undo-toast .btn-undo:hover{background:var(--color-primary-hover)}.undo-toast .btn-dismiss{padding:var(--spacing-xs);background:transparent;color:var(--color-text-secondary);border:none;font-size:1.2rem;line-height:1;cursor:pointer;transition:color .2s;border-radius:var(--border-radius)}.undo-toast .btn-dismiss:hover{color:var(--color-text-primary);background:var(--color-bg-secondary)}@media(max-width:768px){.undo-toast{min-width:90%;max-width:90%;left:5%;transform:translate(0) translateY(-100%);padding:var(--spacing-sm) var(--spacing-md);gap:var(--spacing-sm)}.undo-toast.visible{transform:translate(0) translateY(0)}.undo-toast-content{flex-direction:column;align-items:flex-start;gap:var(--spacing-xs)}.undo-toast-actions{gap:var(--spacing-md)}.import-preview-modal{position:fixed;inset:0;max-width:100%;max-height:100%;border-radius:0}.strategy-grid{grid-template-columns:1fr}}.import-preview-modal{max-width:700px;max-height:80vh}.import-summary{background:var(--color-bg-secondary);padding:var(--spacing-md);border-radius:var(--border-radius);margin-bottom:var(--spacing-lg)}.import-summary h3{margin:0 0 var(--spacing-sm) 0;font-size:var(--font-size-lg);color:var(--color-text-primary)}.import-summary ul{list-style:none;padding:0;margin:0}.import-summary li{padding:var(--spacing-xs) 0;color:var(--color-text-secondary)}.import-default-strategies{background:var(--color-bg-secondary);padding:var(--spacing-md);border-radius:var(--border-radius);margin-bottom:var(--spacing-lg)}.import-default-strategies h3{margin:0 0 var(--spacing-md) 0;font-size:var(--font-size-lg);color:var(--color-text-primary)}.strategy-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--spacing-md)}.strategy-item{display:flex;flex-direction:column;gap:var(--spacing-xs)}.strategy-item label{font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-secondary)}.strategy-select{padding:var(--spacing-xs) var(--spacing-sm);border:1px solid var(--color-border);border-radius:var(--border-radius);background:var(--color-bg-primary);color:var(--color-text-primary);font-size:var(--font-size-base);cursor:pointer;transition:border-color .2s}.strategy-select:hover:not(:disabled){border-color:var(--color-primary)}.strategy-select:focus:not(:disabled){border-color:var(--color-primary);outline:2px solid var(--color-primary-alpha-20);outline-offset:1px}.strategy-select:disabled{opacity:.5;cursor:not-allowed;background:var(--color-bg-secondary)}.strategy-hint{font-size:var(--font-size-xs);color:var(--color-text-muted);font-style:italic}.import-no-conflicts{text-align:center;padding:var(--spacing-xl) 0;color:var(--color-success);font-size:var(--font-size-lg)}.import-conflicts{margin-top:var(--spacing-lg)}.import-conflicts>h3{margin:0 0 var(--spacing-md) 0;font-size:var(--font-size-lg);color:var(--color-text-primary)}.conflict-section{margin-bottom:var(--spacing-lg)}.conflict-section h4{margin:0 0 var(--spacing-sm) 0;font-size:var(--font-size-base);font-weight:500;color:var(--color-text-secondary)}.conflict-list{list-style:none;padding:0;margin:0;border:1px solid var(--color-border);border-radius:var(--border-radius);overflow:hidden}.conflict-item{border-bottom:1px solid var(--color-border)}.conflict-item:last-child{border-bottom:none}.conflict-header{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);cursor:pointer;transition:background-color .2s;-webkit-user-select:none;user-select:none}.conflict-header:hover{background-color:var(--color-bg-hover)}.conflict-header:active{background-color:var(--color-bg-secondary)}.conflict-expand-icon{flex-shrink:0;width:1em;text-align:center;font-size:var(--font-size-xs);color:var(--color-text-secondary);-webkit-user-select:none;user-select:none}.conflict-info{display:flex;flex-direction:column;gap:var(--spacing-xs);flex:1;min-width:0}.conflict-name{font-weight:500;color:var(--color-text-primary)}.conflict-detail{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.conflict-resolution{flex-shrink:0;font-size:var(--font-size-sm);color:var(--color-primary);font-style:italic}.conflict-action-hint{flex-shrink:0;font-size:var(--font-size-xs);color:var(--color-text-muted);margin-left:auto;padding-left:var(--spacing-md)}.conflict-details{padding:var(--spacing-md);background-color:var(--color-bg-secondary);border-top:1px solid var(--color-border)}.conflict-fields-list{display:flex;flex-direction:column;gap:var(--spacing-md)}.diff-field-with-strategy{border:1px solid var(--color-border);border-radius:var(--border-radius);padding:var(--spacing-sm);background-color:var(--color-bg-primary)}.diff-field-with-strategy.has-conflict{border-color:var(--color-warning);background-color:var(--color-warning-alpha-5)}.diff-field-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--spacing-sm);padding-bottom:var(--spacing-xs);border-bottom:1px solid var(--color-border)}.diff-field-label{font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-primary)}.diff-field-content{margin-top:var(--spacing-xs)}.empty-field-value{font-style:italic;color:var(--color-text-muted);opacity:.7}.conflict-item.no-conflict .conflict-header{background-color:var(--color-success-alpha-5)}.conflict-item.no-conflict{opacity:.85}.conflict-status-icon{margin-right:var(--spacing-xs);flex-shrink:0}.diff-field-with-strategy.unresolved-conflict{border-color:var(--color-error);background-color:var(--color-error-alpha-5)}.unresolved-badge{display:inline-block;background-color:var(--color-error);color:#fff;font-size:var(--font-size-xs);font-weight:700;padding:2px 6px;border-radius:50%;margin-left:var(--spacing-xs)}.merge-result-preview{font-size:var(--font-size-sm);color:var(--color-text-primary);padding:var(--spacing-sm);background-color:var(--color-bg-secondary);border-radius:var(--border-radius);min-height:2em;word-break:break-word}.diff-field-strategy-label{font-size:var(--font-size-xs);color:var(--color-text-muted);font-style:italic}.has-conflict-resolved{border-color:var(--color-success);background-color:var(--color-success-alpha-5)}.field-strategy-select-inline{padding:var(--spacing-xs) var(--spacing-sm);border:1px solid var(--color-border);border-radius:var(--border-radius);background-color:var(--color-bg-primary);color:var(--color-text-primary);font-size:var(--font-size-xs);cursor:pointer;min-width:120px}.field-strategy-select-inline:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-primary-alpha-10)}.diff-field-values{display:grid;grid-template-columns:1fr 1fr;gap:var(--spacing-sm)}.diff-field-value-item{display:flex;flex-direction:column;gap:var(--spacing-xs)}.diff-field-value-label{font-size:var(--font-size-xs);color:var(--color-text-secondary);font-weight:500}.diff-field-value-content{font-size:var(--font-size-sm);color:var(--color-text-primary);padding:var(--spacing-xs);background-color:var(--color-bg-secondary);border-radius:var(--border-radius);min-height:2em;word-break:break-word}.diff-field-value-content.has-diff{font-weight:500}@media(max-width:768px){.diff-field-values{grid-template-columns:1fr}.diff-field-header{flex-direction:column;align-items:flex-start;gap:var(--spacing-xs)}.field-strategy-select-inline{width:100%}}.conflict-more{padding:var(--spacing-sm) var(--spacing-md);text-align:center;color:var(--color-text-secondary);font-size:var(--font-size-sm);font-style:italic}.diff-viewer{border:1px solid var(--color-border);border-radius:var(--border-radius);overflow:hidden;margin:var(--spacing-md) 0}.diff-header{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-sm) var(--spacing-md);background:var(--color-bg-secondary);border-bottom:1px solid var(--color-border)}.diff-conflict-count{font-size:var(--font-size-sm);font-weight:500}.diff-mode-toggle{display:flex;gap:var(--spacing-xs)}.diff-mode-btn{padding:var(--spacing-xs) var(--spacing-sm);border:1px solid var(--color-border);border-radius:var(--border-radius);background:var(--color-bg-primary);cursor:pointer;transition:all .2s}.diff-mode-btn:hover{background:var(--color-bg-hover)}.diff-mode-btn.active{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.diff-mode-icon{font-size:var(--font-size-lg)}.diff-body{padding:var(--spacing-md);background:var(--color-bg-primary)}.diff-side-by-side{display:grid;grid-template-columns:1fr 1fr;gap:var(--spacing-md)}.diff-column-header{font-weight:600;font-size:var(--font-size-sm);padding:var(--spacing-xs) var(--spacing-sm);background:var(--color-bg-secondary);border-radius:var(--border-radius);margin-bottom:var(--spacing-sm);text-align:center}.diff-local .diff-column-header{color:var(--color-success)}.diff-imported .diff-column-header{color:var(--color-primary)}.diff-field{padding:var(--spacing-sm);border:1px solid transparent;border-radius:var(--border-radius);margin-bottom:var(--spacing-xs)}.diff-field.diff-conflict{background:var(--color-warning-alpha-10);border-color:var(--color-warning-alpha-20)}.diff-field-label{font-size:var(--font-size-xs);font-weight:500;color:var(--color-text-secondary);margin-bottom:var(--spacing-xs);text-transform:uppercase;letter-spacing:.5px}.diff-inline{display:flex;flex-direction:column;gap:var(--spacing-sm)}.diff-inline .diff-field{padding:var(--spacing-sm)}.diff-inline-line{display:flex;align-items:flex-start;gap:var(--spacing-xs);padding:var(--spacing-xs) var(--spacing-sm);font-size:var(--font-size-sm);font-family:var(--font-mono);line-height:1.5;border-radius:var(--border-radius);word-break:break-word}.diff-inline-marker{flex-shrink:0;width:1em;text-align:center;font-weight:600;-webkit-user-select:none;user-select:none}.diff-inline-content{flex:1;min-width:0}.diff-inline-delete{background-color:#ffebe9;color:#82071e}.diff-inline-delete .diff-inline-marker{color:#cf222e}.diff-inline-insert{background-color:#dafbe1;color:#055d20}.diff-inline-insert .diff-inline-marker{color:#1a7f37}.diff-inline-equal{background-color:transparent;color:var(--color-text-primary)}.diff-inline-equal .diff-inline-marker{color:var(--color-text-muted)}@media(prefers-color-scheme:dark){.diff-inline-delete{background-color:#f8514926;color:#ffd1cc}.diff-inline-delete .diff-inline-marker{color:#ff7b72}.diff-inline-insert{background-color:#2ea04326;color:#aff5b4}.diff-inline-insert .diff-inline-marker{color:#7ee89b}}.diff-empty{color:var(--color-text-muted);font-style:italic}.diff-field-value{font-size:var(--font-size-sm);color:var(--color-text-primary);word-break:break-word}.diff-delete{background-color:#ffd7d5;color:#82071e;text-decoration:none;padding:0;border-radius:2px}.diff-insert{background-color:#dafbe1;color:#055d20;text-decoration:none;padding:0;border-radius:2px}.diff-char-delete{background-color:#ffb3ae;color:#6e0016;font-weight:500}.diff-char-insert{background-color:#b7f3c4;color:#024912;font-weight:500}@media(prefers-color-scheme:dark){.diff-delete{background-color:#f8514940;color:#ffd1cc}.diff-insert{background-color:#2ea04340;color:#aff5b4}.diff-char-delete{background-color:#f8514973;color:#ffb3ae;font-weight:600}.diff-char-insert{background-color:#2ea04373;color:#d1ffd9;font-weight:600}}@media(max-width:768px){.diff-side-by-side{display:none}.diff-viewer[data-mode=side-by-side]:before{content:"💡 Switch to inline mode for better mobile experience";display:block;padding:var(--spacing-sm);background:var(--color-warning-alpha-10);color:var(--color-warning);font-size:var(--font-size-sm);text-align:center}}
