:root{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,sans-serif;line-height:1.5;font-weight:400;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;min-width:320px;min-height:100vh}.upload-zone{border:2px dashed #ccc;border-radius:12px;padding:3rem;text-align:center;cursor:pointer;transition:all .2s ease;background:#f9f9f9}.upload-zone:hover{border-color:#999;background:#f0f0f0}.upload-zone.dragging{border-color:#4a90d9;background:#e8f4ff}.upload-zone.uploading{pointer-events:none;opacity:.7}.upload-zone-content{display:flex;flex-direction:column;align-items:center;gap:1rem;color:#666}.upload-zone-content svg{color:#999}.upload-spinner{width:24px;height:24px;border:3px solid #ddd;border-top-color:#4a90d9;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.book-card{display:flex;flex-direction:column;gap:.5rem;border-radius:8px;overflow:hidden;background:#fff;box-shadow:0 2px 8px #0000001a;transition:transform .2s ease,box-shadow .2s ease}.book-card:hover{transform:translateY(-2px);box-shadow:0 4px 16px #00000026}.book-cover{position:relative;aspect-ratio:2/3;background:#f0f0f0;cursor:pointer;overflow:hidden}.book-cover img{width:100%;height:100%;object-fit:cover}.book-cover-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:#999}.book-progress{position:absolute;bottom:0;left:0;right:0;height:4px;background:#0003}.book-progress-bar{height:100%;background:#4a90d9;transition:width .3s ease}.book-info{padding:.75rem}.book-title{font-size:.9rem;font-weight:600;margin:0 0 .25rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.book-author{font-size:.8rem;color:#666;margin:0 0 .5rem;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}.book-delete{padding:.25rem .5rem;font-size:.75rem;background:#f0f0f0;border:none;border-radius:4px;cursor:pointer;transition:background .2s ease}.book-delete:hover{background:#e0e0e0}.library{max-width:1200px;margin:0 auto;padding:2rem}.library-title{font-size:2rem;font-weight:700;margin:0 0 2rem}.library-loading{text-align:center;padding:3rem;color:#666}.library-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:1.5rem;margin-top:2rem}.library-empty{text-align:center;color:#999;margin-top:2rem}.library-footer{margin-top:3rem;padding-top:1rem;text-align:center}.library-updated{font-size:.75rem;color:#999;font-weight:400}.reader-menu{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:min(90vw,320px);max-width:320px;background:#fffffffa;border:1px solid #e0e0e0;border-radius:16px;box-shadow:0 8px 32px #0000001f;z-index:100;overflow:hidden;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.reader-menu-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;background:linear-gradient(135deg,#667eea,#764ba2);border-bottom:1px solid rgba(0,0,0,.05)}.reader-menu-title-container{flex:1}.reader-menu-title{margin:0;font-size:1rem;font-weight:600;color:#fff;line-height:1.2}.reader-menu-subtitle{margin:.25rem 0 0;font-size:.75rem;font-weight:400;color:#ffffffd9;line-height:1.2}.reader-menu-close{display:flex;align-items:center;justify-content:center;width:32px;height:2.4rem;padding:0;background:#ffffff26;border:none;border-radius:8px;cursor:pointer;color:#fff;transition:all .2s ease;flex-shrink:0}.reader-menu-close:hover{background:#ffffff40;transform:scale(1.05)}.reader-menu-content{padding:1rem;max-height:min(60vh,400px);overflow-y:auto}.reader-menu-section{margin-bottom:1rem}.reader-menu-section:last-child{margin-bottom:0}.reader-menu-section-title{margin:0 0 .75rem;font-size:.8rem;font-weight:600;color:#666;text-transform:uppercase;letter-spacing:.05em}.reader-font-size-controls{display:flex;align-items:center;justify-content:center;gap:.75rem;padding:.5rem;background:#f8f9fa;border-radius:10px}.reader-font-size-btn{display:flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;background:#fff;border:1px solid #e0e0e0;border-radius:8px;cursor:pointer;color:#333;transition:all .2s ease}.reader-font-size-btn:hover:not(:disabled){background:#667eea;border-color:#667eea;color:#fff;transform:scale(1.05)}.reader-font-size-btn:disabled{opacity:.4;cursor:not-allowed}.reader-font-size-indicator{font-size:1rem;font-weight:600;min-width:2rem;text-align:center;color:#333}.reader-progress{display:flex;align-items:center;gap:.75rem}.reader-progress-bar{flex:1;height:8px;background:#e9ecef;border-radius:4px;overflow:hidden}.reader-progress-fill{height:100%;background:linear-gradient(90deg,#667eea,#764ba2);transition:width .3s ease;border-radius:4px}.reader-progress-text{min-width:3rem;text-align:right;font-size:.875rem;font-weight:600;color:#667eea}.reader-nav{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;margin-bottom:.5rem}.reader-nav-btn{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.75rem .5rem;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:10px;cursor:pointer;font-size:.875rem;font-weight:500;transition:all .2s ease}.reader-nav-btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 12px #667eea66}.reader-nav-btn:active:not(:disabled){transform:translateY(0)}.reader-nav-btn:disabled{opacity:.4;cursor:not-allowed}.reader-nav-btn svg{flex-shrink:0}.reader-toc-btn{display:flex;align-items:center;justify-content:center;gap:.5rem;width:100%;padding:.75rem 1rem;background:#f8f9fa;color:#333;border:1px solid #e0e0e0;border-radius:10px;cursor:pointer;font-size:.875rem;font-weight:500;transition:all .2s ease}.reader-toc-btn:hover:not(:disabled){background:#667eea;border-color:#667eea;color:#fff;transform:translateY(-1px);box-shadow:0 4px 12px #667eea66}.reader-toc-btn:active:not(:disabled){transform:translateY(0)}.reader-toc-btn:disabled{opacity:.4;cursor:not-allowed}.reader-toc-btn svg{flex-shrink:0}.reader-toc-count{margin-left:auto;padding:.125rem .5rem;background:#667eea33;border-radius:12px;font-size:.75rem;font-weight:600;color:inherit}.reader-library-btn{display:flex;align-items:center;justify-content:center;gap:.5rem;width:100%;padding:.75rem 1rem;background:#f8f9fa;color:#666;border:1px solid #e0e0e0;border-radius:10px;cursor:pointer;font-size:.875rem;font-weight:500;transition:all .2s ease}.reader-library-btn:hover{background:#e9ecef;color:#333}.reader-library-btn svg{flex-shrink:0}.reader-toc{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:min(90vw,400px);max-width:400px;max-height:min(80vh,600px);background:#fffffffa;border:1px solid #e0e0e0;border-radius:16px;box-shadow:0 8px 32px #0000001f;z-index:100;overflow:hidden;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;flex-direction:column}.reader-toc-header{display:flex;align-items:center;gap:.75rem;padding:1rem 1.25rem;background:linear-gradient(135deg,#667eea,#764ba2);border-bottom:1px solid rgba(0,0,0,.05);flex-shrink:0}.reader-toc-close{display:flex;align-items:center;justify-content:center;width:32px;height:2.4rem;padding:0;background:#ffffff26;border:none;border-radius:8px;cursor:pointer;color:#fff;transition:all .2s ease;flex-shrink:0}.reader-toc-close:hover{background:#ffffff40;transform:scale(1.05)}.reader-toc-title{margin:0;font-size:1rem;font-weight:600;color:#fff;line-height:1.2;flex:1}.reader-toc-content{flex:1;padding:1rem;overflow-y:auto}.reader-toc-empty{margin:2rem 0;text-align:center;color:#666;font-size:.875rem}.reader-toc-list{list-style:none;margin:0;padding:0}.reader-toc-item{border-bottom:1px solid #f0f0f0}.reader-toc-item:last-child{border-bottom:none}.reader-toc-link{width:100%;padding:.875rem 1rem;background:transparent;border:none;text-align:left;font-size:.875rem;color:#333;cursor:pointer;transition:all .2s ease;font-family:inherit;line-height:1.4}.reader-toc-link:hover{background:#f8f9fa;color:#667eea;padding-left:1.25rem}.reader-toc-link:active{background:#f0f0f0}.ai-panel{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:min(90vw,400px);max-width:400px;max-height:min(80vh,600px);background:#fffffffa;border:1px solid #e0e0e0;border-radius:16px;box-shadow:0 8px 32px #0000001f;z-index:100;overflow:hidden;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;flex-direction:column}.ai-panel-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;background:linear-gradient(135deg,#667eea,#764ba2);border-bottom:1px solid rgba(0,0,0,.05);flex-shrink:0}.ai-panel-close{display:flex;align-items:center;justify-content:center;width:32px;height:2.4rem;padding:0;background:#ffffff26;border:none;border-radius:8px;cursor:pointer;color:#fff;transition:all .2s ease;flex-shrink:0}.ai-panel-close:hover{background:#ffffff40;transform:scale(1.05)}.ai-panel-title{margin:0;font-size:1rem;font-weight:600;color:#fff;line-height:1.2}.ai-panel-context{display:flex;align-items:center;gap:.5rem;padding:.75rem 1rem;border-bottom:1px solid #e0e0e0;background:#fafafa;flex-shrink:0}.ai-panel-context-chip{padding:.375rem .875rem;font-size:.75rem;font-weight:500;border:1px solid #e0e0e0;border-radius:16px;background:#fff;color:#666;cursor:pointer;transition:all .2s ease;white-space:nowrap}.ai-panel-context-chip:hover:not(:disabled){background:#f0f0f0;border-color:#d0d0d0}.ai-panel-context-chip:disabled{opacity:.4;cursor:not-allowed}.ai-panel-context-chip-active{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border-color:transparent}.ai-panel-context-chip-active:hover{background:linear-gradient(135deg,#667eea,#764ba2);transform:scale(1.02)}.ai-panel-content{flex:1;display:flex;flex-direction:column;overflow:hidden}.ai-panel-messages{flex:1;padding:1rem;overflow-y:auto;display:flex;flex-direction:column;gap:.75rem}.ai-panel-empty{display:flex;align-items:center;justify-content:center;height:100%;color:#999;text-align:center;padding:2rem}.ai-panel-empty p{margin:0;font-size:.875rem}.ai-panel-message{padding:.75rem 1rem;border-radius:12px;font-size:.875rem;line-height:1.5;max-width:85%}.ai-panel-message-user{align-self:flex-end;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.ai-panel-message-assistant{align-self:flex-start;background:#f8f9fa;color:#333}.ai-panel-input{display:flex;align-items:center;gap:.5rem;padding:1rem;border-top:1px solid #e0e0e0;background:#f8f9fa;flex-shrink:0}.ai-panel-input-field{flex:1;padding:.75rem 1rem;font-size:.875rem;border:1px solid #e0e0e0;border-radius:24px;outline:none;transition:all .2s ease}.ai-panel-input-field:focus{border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.ai-panel-input-field::placeholder{color:#999}.ai-panel-send{display:flex;align-items:center;justify-content:center;width:44px;height:44px;padding:0;background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:50%;cursor:pointer;color:#fff;transition:all .2s ease;flex-shrink:0}.ai-panel-send:hover:not(:disabled){transform:scale(1.05);box-shadow:0 4px 12px #667eea66}.ai-panel-send:active:not(:disabled){transform:scale(.95)}.ai-panel-send:disabled{opacity:.4;cursor:not-allowed}.reader{position:fixed;inset:0;background:#f5f5f5;z-index:50}.reader-toolbar-toggle{position:fixed;top:0;left:0;width:100%;height:48px;background:transparent;border:none;outline:none;cursor:pointer;z-index:51}.reader-view{width:100%;height:100%}.reader-view::part(view){height:100%}.reader-ai-toggle{position:fixed;bottom:0;left:0;width:100%;height:48px;background:transparent;border:none;outline:none;cursor:pointer;z-index:51}*{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#fafafa}#root{min-height:100vh}foliate-view{display:block;width:100%;height:100%}
