@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.spin-icon{animation:spin 1.5s linear infinite}:root{--primary: #4f46e5;--primary-hover: #4338ca;--primary-light: #eef2ff;--danger: #dc2626;--danger-hover: #b91c1c;--bg: #f3f4f6;--surface: #ffffff;--border: #e5e7eb;--text: #1e293b;--text-muted: #64748b;--text-extra-muted: #9ca3af;--radius: 8px;--sidebar-width: 260px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .08), 0 2px 4px -2px rgba(0, 0, 0, .05);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .08), 0 4px 6px -4px rgba(0, 0, 0, .05)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,Roboto,sans-serif;background:var(--bg);color:var(--text);line-height:1.6;overflow:hidden;height:100vh}#root{height:100vh;overflow:hidden}.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 18px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);font-size:.875rem;cursor:pointer;text-decoration:none;transition:all .15s;white-space:nowrap;font-family:inherit}.btn:hover{background:#f9fafb;border-color:#d1d5db}.btn-primary{background:var(--primary);color:#fff;border-color:var(--primary)}.btn-primary:hover{background:var(--primary-hover);border-color:var(--primary-hover)}.btn-danger{color:var(--danger);border-color:var(--danger)}.btn-danger:hover{background:#fef2f2}.btn-sm{padding:4px 12px;font-size:.8rem}.btn:disabled{opacity:.6;cursor:not-allowed}.auth-page{min-height:100vh;height:100vh;width:100%;padding:0;overflow:hidden}.auth-card{background:var(--surface);padding:40px;border-radius:12px;box-shadow:var(--shadow-md);width:100%;max-width:420px}.auth-card h1{margin-bottom:20px;text-align:center;font-size:1.5rem}.auth-card label{display:block;margin:12px 0 4px;font-weight:500;font-size:.85rem;color:var(--text-muted)}.auth-card input{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius);font-size:.95rem;font-family:inherit}.auth-card input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #4f46e51a}.auth-card button[type=submit]{width:100%;margin-top:20px;padding:11px;background:var(--primary);color:#fff;border:none;border-radius:var(--radius);font-size:1rem;cursor:pointer;font-weight:600;font-family:inherit}.auth-card button[type=submit]:hover{background:var(--primary-hover)}.auth-link{text-align:center;margin-top:16px;font-size:.9rem}.auth-link a{color:var(--primary);text-decoration:none}.error-msg{background:#fef2f2;color:var(--danger);padding:10px 14px;border-radius:var(--radius);margin-bottom:12px;font-size:.85rem;border:1px solid #fecaca}.success-msg{background:#f0fdf4;color:#16a34a;padding:10px 14px;border-radius:var(--radius);margin-bottom:12px;font-size:.85rem;border:1px solid #bbf7d0}.home-page{text-align:center;padding:80px 24px;min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center}.home-page h1{font-size:2.4rem;margin-bottom:8px}.home-page>p{color:var(--text-muted);font-size:1.1rem;margin-bottom:32px}.home-actions{display:flex;gap:12px;justify-content:center}.features{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:20px;max-width:750px;margin:48px auto 0}.feature-card{background:var(--surface);padding:24px;border-radius:var(--radius);border:1px solid var(--border);text-align:center}.feature-card h3{font-size:1rem;margin-bottom:6px}.feature-card p{font-size:.85rem;color:var(--text-muted)}.app-layout{display:flex;height:100vh;overflow:hidden}.sidebar{width:var(--sidebar-width);min-width:var(--sidebar-width);height:100vh;background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden}.sidebar-brand{flex-shrink:0}.sidebar-body{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden}.sidebar-books{flex:none;overflow:visible;padding:12px}.sidebar-user{flex-shrink:0;display:flex;align-items:center;gap:12px;padding:20px 16px;border-bottom:1px solid var(--border);position:relative}.sidebar-avatar{width:44px;height:44px;border-radius:50%;overflow:hidden;flex-shrink:0}.sidebar-avatar.clickable{cursor:pointer;transition:transform .15s}.sidebar-avatar.clickable:hover{transform:scale(1.08)}.sidebar-avatar img{width:100%;height:100%;object-fit:cover}.avatar-placeholder{width:100%;height:100%;background:var(--primary);color:#fff;display:flex;align-items:center;justify-content:center;font-size:1.2rem;font-weight:700;border-radius:50%}.avatar-placeholder.large{width:72px;height:72px;font-size:1.8rem}.sidebar-user-info{flex:1;min-width:0;display:flex;flex-direction:column}.sidebar-username{font-weight:600;font-size:.95rem;color:var(--text)}.sidebar-user-bio{font-size:.72rem;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:2px}.sidebar-dropdown{position:absolute;top:100%;left:16px;right:16px;margin-top:4px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);z-index:200;overflow:hidden;animation:fadeIn .12s ease}.dropdown-item{display:block;width:100%;text-align:left;padding:10px 14px;border:none;background:none;font-size:.875rem;color:var(--text);cursor:pointer;font-family:inherit;transition:background .1s}.dropdown-item:hover{background:#f3f4f6}.dropdown-item.danger{color:var(--danger)}.dropdown-item.danger:hover{background:#fef2f2}.dropdown-divider{height:1px;background:var(--border);margin:0}.sidebar-nav{padding:12px 12px 8px;border-bottom:1px solid var(--border)}.sidebar-section-title{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);padding:0 8px 8px;display:flex;align-items:center;justify-content:space-between}.sidebar-count{background:var(--primary-light);color:var(--primary);font-size:.65rem;padding:1px 6px;border-radius:10px}.sidebar-nav-item{display:block;width:100%;text-align:left;padding:7px 8px;border:none;background:none;color:var(--text);font-size:.875rem;border-radius:6px;cursor:pointer;font-family:inherit;transition:all .1s}.sidebar-nav-item:hover{background:#f3f4f6}.sidebar-nav-item.active{background:var(--primary-light);color:var(--primary);font-weight:600}.sidebar-groups{padding:12px 12px 8px;border-bottom:1px solid var(--border)}.sidebar-section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px;gap:4px}.sidebar-section-header.clickable{cursor:pointer;padding:4px 8px;margin:0 -8px;border-radius:6px;transition:background .1s}.sidebar-section-header.clickable:hover{background:#f3f4f6}.section-arrow{font-size:.55rem;color:var(--text-muted);transition:transform .2s;display:inline-block;flex-shrink:0}.section-arrow.expanded{transform:rotate(90deg)}.sidebar-add-btn{width:24px;height:24px;border:none;background:var(--primary-light);color:var(--primary);border-radius:4px;font-size:1rem;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;line-height:1}.sidebar-group-list{display:flex;flex-direction:column;gap:2px}.sidebar-group{margin-bottom:2px}.sidebar-group-header{display:flex;align-items:center;gap:6px;width:100%;padding:7px 8px;border:none;background:none;cursor:pointer;font-size:.85rem;font-family:inherit;color:var(--text);border-radius:6px;transition:background .1s}.sidebar-group-header:hover{background:#f3f4f6}.group-arrow{font-size:.55rem;color:var(--text-muted);transition:transform .2s;display:inline-block;flex-shrink:0}.group-arrow.expanded{transform:rotate(90deg)}.group-icon{font-size:.85rem;flex-shrink:0}.group-name{flex:1;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}.group-count{font-size:.7rem;color:var(--text-muted);background:#f3f4f6;padding:1px 6px;border-radius:10px;flex-shrink:0}.sidebar-group-books{padding-left:20px;border-left:2px solid var(--border);margin-left:8px}.sidebar-empty{font-size:.8rem;color:var(--text-extra-muted);padding:8px;text-align:center}.sidebar-book-list{list-style:none;display:flex;flex-direction:column;gap:2px}.sidebar-book-item{display:flex;align-items:center;gap:8px;padding:7px 8px;border-radius:6px;cursor:pointer;font-size:.85rem;transition:all .1s}.sidebar-book-item:hover{background:#f3f4f6}.sidebar-book-item.active{background:var(--primary-light);color:var(--primary);font-weight:500}.book-item-icon{font-size:.9rem;flex-shrink:0}.book-item-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.main-content{flex:1;display:flex;flex-direction:column;overflow-y:auto;min-width:0}.loading-container{display:flex;align-items:center;justify-content:center;height:100%;color:var(--text-muted);font-size:1rem}.main-toolbar{display:flex;align-items:center;justify-content:space-between;padding:20px 28px;background:var(--surface);border-bottom:1px solid var(--border);flex-wrap:wrap;gap:12px;position:sticky;top:0;z-index:10}.toolbar-left{display:flex;align-items:baseline;gap:10px}.page-title{font-size:1.35rem;font-weight:700}.book-count{font-size:.85rem;color:var(--text-muted)}.toolbar-actions{display:flex;align-items:center;gap:10px}.book-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:20px;padding:24px 28px}.book-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;cursor:pointer;transition:all .2s;display:flex;flex-direction:column}.book-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px);border-color:var(--primary)}.book-card-cover{width:100%;height:180px;background:#f3f4f6;display:flex;align-items:center;justify-content:center;overflow:hidden}.book-card-cover img{width:100%;height:100%;object-fit:cover}.cover-placeholder{display:flex;align-items:center;justify-content:center;width:100%;height:100%;background:linear-gradient(145deg,#dbeafe,#eff6ff,#f8fafc)}.cover-placeholder span{font-size:3rem;color:#64748b;opacity:.85}.book-card-body{padding:14px;display:flex;flex-direction:column;gap:8px;flex:1}.book-card-title{font-size:1rem;font-weight:600;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.book-card-desc{font-size:.8rem;color:var(--text-muted);line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;flex:1}.book-card-meta{display:flex;flex-wrap:wrap;gap:4px}.book-category-tag{display:inline-block;padding:2px 8px;background:var(--primary-light);color:var(--primary);border-radius:12px;font-size:.72rem;font-weight:500}.book-tag{display:inline-block;padding:2px 8px;background:#f3f4f6;color:var(--text-muted);border-radius:12px;font-size:.72rem;border:1px solid var(--border)}.book-card-footer{display:flex;align-items:center;justify-content:space-between;padding-top:4px;border-top:1px solid var(--border)}.book-card-date{font-size:.72rem;color:var(--text-extra-muted)}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:80px 24px;color:var(--text-muted);flex:1}.empty-icon{font-size:4rem;margin-bottom:16px;opacity:.5}.empty-state h3{font-size:1.1rem;margin-bottom:6px;color:var(--text)}.empty-state p{font-size:.9rem}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:1000;padding:24px;animation:fadeIn .15s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-card{background:var(--surface);border-radius:12px;box-shadow:var(--shadow-lg);width:100%;max-width:520px;max-height:85vh;overflow-y:auto;animation:slideUp .2s ease}@keyframes slideUp{0%{transform:translateY(16px);opacity:0}to{transform:translateY(0);opacity:1}}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px 16px;border-bottom:1px solid var(--border)}.modal-header h2{font-size:1.15rem;font-weight:700}.modal-close-btn{width:32px;height:32px;border:none;background:none;font-size:1.1rem;cursor:pointer;color:var(--text-muted);border-radius:6px;display:flex;align-items:center;justify-content:center;transition:all .15s}.modal-close-btn:hover{background:#f3f4f6;color:var(--text)}.modal-card form{padding:20px 24px 24px}.form-group{margin-bottom:18px}.form-group label{display:block;font-size:.85rem;font-weight:600;margin-bottom:6px;color:var(--text)}.form-group input[type=text],.form-group input[type=url],.form-group textarea,.form-group select{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius);font-size:.9rem;font-family:inherit;transition:border-color .15s;background:var(--surface);color:var(--text)}.form-group input:focus,.form-group textarea:focus,.form-group select:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #4f46e51a}.form-group textarea{resize:vertical;min-height:80px}.cover-upload-area{width:100%;height:140px;border:2px dashed var(--border);border-radius:var(--radius);display:flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;transition:border-color .15s}.cover-upload-area:hover{border-color:var(--primary)}.cover-preview{width:100%;height:100%;object-fit:cover}.cover-upload-placeholder{display:flex;flex-direction:column;align-items:center;gap:6px;color:var(--text-muted)}.cover-upload-icon{font-size:2rem}.cover-upload-hint{font-size:.7rem;color:var(--text-extra-muted)}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:24px;padding-top:16px;border-top:1px solid var(--border)}.import-tabs{display:flex;border-bottom:1px solid var(--border);padding:0 24px}.import-tab{padding:10px 16px;border:none;background:none;font-size:.85rem;cursor:pointer;color:var(--text-muted);border-bottom:2px solid transparent;font-family:inherit;transition:all .15s}.import-tab:hover{color:var(--text)}.import-tab.active{color:var(--primary);border-bottom-color:var(--primary);font-weight:600}.import-file-actions{display:flex;gap:8px;margin-top:8px}.import-book-modal{max-width:560px}.import-txt-source{padding:20px 24px 8px}.import-txt-dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:36px 24px;border:2px dashed var(--border);border-radius:12px;background:#fafbfc;cursor:pointer;color:var(--text-muted);transition:border-color .15s,background .15s,color .15s}.import-txt-dropzone:hover{border-color:var(--primary);background:#eef2ff;color:var(--primary)}.import-txt-drop-title{font-size:.95rem;font-weight:600;color:var(--text);margin:0}.import-txt-drop-hint{font-size:.8rem;margin:0;text-align:center;line-height:1.5}.import-txt-drop-hint.subtle{color:var(--text-muted);font-size:.75rem}.import-txt-footnote{margin:14px 0 0;text-align:center;font-size:.78rem;color:var(--text-muted)}.import-format-tags{display:flex;gap:6px;margin-top:4px}.import-format-tags span{font-size:.72rem;font-weight:600;padding:2px 8px;border-radius:999px;background:#4f46e51a;color:var(--primary)}.import-format-help{margin:16px 24px 0;font-size:.78rem;color:var(--text-muted)}.import-format-help summary{cursor:pointer;color:var(--text-secondary);font-weight:500;-webkit-user-select:none;user-select:none}.import-format-help ul{margin:8px 0 0;padding-left:18px;line-height:1.6}.import-format-help code{font-size:.72rem;background:#f3f4f6;padding:1px 4px;border-radius:3px}.import-parse-banner{display:flex;align-items:center;gap:10px;margin:16px 24px 0;padding:10px 12px;background:#eef2ff;border:1px solid #c7d2fe;border-radius:8px;font-size:.82rem}.import-parse-banner>div{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.import-parse-banner strong{font-size:.85rem;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.import-parse-banner span{color:var(--text-muted)}.import-outline-preview{max-height:220px;overflow-y:auto;border:1px solid var(--border);border-radius:8px;background:#fafbfc;padding:8px}.import-outline-volume+.import-outline-volume{margin-top:10px;padding-top:10px;border-top:1px dashed var(--border)}.import-outline-volume-head{display:flex;align-items:center;gap:8px;margin-bottom:6px;color:var(--text-muted)}.import-outline-input{flex:1;min-width:0;padding:4px 8px;border:1px solid transparent;border-radius:4px;background:transparent;font-size:.82rem;font-family:inherit;color:var(--text)}.import-outline-input.volume{font-weight:600}.import-outline-input:hover,.import-outline-input:focus{border-color:var(--border);background:var(--surface);outline:none}.import-outline-count{font-size:.72rem;color:var(--text-muted);white-space:nowrap}.import-outline-chapters{list-style:none;margin:0;padding:0 0 0 22px}.import-outline-chapters li{margin-bottom:4px}.import-outline-chapters li:last-child{margin-bottom:0}.search-bar{display:flex;align-items:center;gap:8px;padding:8px 12px;border-bottom:1px solid var(--border);background:#fdf8e7;flex-wrap:wrap;position:relative}.search-bar-row{display:flex;align-items:center;gap:6px}.search-input-wrapper{display:flex;align-items:center;gap:4px;background:var(--surface);border:1px solid var(--border);border-radius:4px;padding:0 6px;height:30px}.search-input-icon{cursor:pointer;font-size:.85rem;opacity:.6}.search-input-icon:hover{opacity:1}.search-input{border:none;outline:none;font-size:.82rem;font-family:inherit;width:160px;background:transparent}.search-input::placeholder{color:var(--text-extra-muted)}.search-input.replace-input{width:140px}.search-match-info{font-size:.7rem;color:var(--text-muted);min-width:30px;text-align:center}.search-nav-btn{width:22px;height:22px;padding:0;border:none;background:transparent;cursor:pointer;font-size:.6rem;color:var(--text-muted);border-radius:3px;display:inline-flex;align-items:center;justify-content:center}.search-nav-btn:hover{background:#e5e7eb;color:var(--text)}.search-close-btn{position:absolute;right:8px;top:8px;width:24px;height:24px;border:none;background:transparent;cursor:pointer;font-size:.9rem;color:var(--text-muted);border-radius:4px;display:flex;align-items:center;justify-content:center}.search-close-btn:hover{background:#e5e7eb;color:var(--text)}.avatar-edit-area{display:flex;flex-direction:column;align-items:center;gap:8px;padding:12px 0}.avatar-edit-preview{width:72px;height:72px;border-radius:50%;overflow:hidden;cursor:pointer;position:relative;border:3px solid var(--border);transition:border-color .15s}.avatar-edit-preview:hover{border-color:var(--primary)}.avatar-edit-preview img{width:100%;height:100%;object-fit:cover}.avatar-edit-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s;border-radius:50%}.avatar-edit-overlay span{color:#fff;font-size:.75rem;font-weight:600}.avatar-edit-preview:hover .avatar-edit-overlay{opacity:1}.avatar-edit-hint{font-size:.75rem;color:var(--text-extra-muted)}.gender-options{display:flex;gap:10px}.gender-btn{flex:1;padding:9px 12px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);font-size:.875rem;cursor:pointer;font-family:inherit;transition:all .15s;text-align:center}.gender-btn:hover{background:#f3f4f6}.gender-btn.active{background:var(--primary-light);border-color:var(--primary);color:var(--primary);font-weight:600}.char-count{display:block;text-align:right;font-size:.7rem;color:var(--text-extra-muted);margin-top:4px}.form-hint{font-size:.78rem;color:var(--text-muted);margin-top:6px}.tag-select-list{display:flex;flex-wrap:wrap;gap:6px}.tag-select-chip{display:inline-block;padding:6px 14px;border:1px solid var(--border);border-radius:20px;background:var(--surface);font-size:.82rem;cursor:pointer;font-family:inherit;transition:all .15s}.tag-select-chip:hover{border-color:var(--primary);background:#f9fafb}.tag-select-chip.active{background:var(--primary);color:#fff;border-color:var(--primary)}.context-menu{position:fixed;z-index:2000;min-width:180px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);animation:fadeIn .1s ease}.context-menu-header{padding:8px 14px;font-size:.8rem;font-weight:600;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:200px}.context-menu-divider{height:1px;background:var(--border)}.context-menu-item{display:block;width:100%;text-align:left;padding:9px 14px;border:none;background:none;font-size:.85rem;color:var(--text);cursor:pointer;font-family:inherit;transition:background .1s;white-space:nowrap}.context-menu-item:hover{background:#f3f4f6}.context-menu-item.has-submenu{position:relative}.context-submenu{position:absolute;left:100%;top:0;min-width:140px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);overflow:hidden;animation:fadeIn .1s ease}.editor-full-layout{display:flex;height:100vh;overflow:hidden;position:relative}.editor-sidebar{width:260px;min-width:260px;height:100%;background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden}.editor-sidebar-header{padding:14px 12px;border-bottom:1px solid var(--border)}.editor-sidebar-actions{display:flex;gap:6px}.editor-sidebar-btn{flex:1;padding:6px 8px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);font-size:.8rem;cursor:pointer;font-family:inherit;white-space:nowrap;transition:all .1s;display:inline-flex;align-items:center;justify-content:center;gap:4px}.editor-sidebar-btn:hover{background:#f3f4f6}.editor-sidebar-btn.sm{flex:none;width:32px;height:32px;padding:0;font-size:.9rem}.editor-sidebar-btn.danger{color:var(--danger);border-color:var(--danger)}.editor-sidebar-btn.danger:hover{background:#fef2f2}.editor-sidebar-btn:disabled{opacity:.35;cursor:not-allowed}.export-btn-wrapper{position:relative}.export-options-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100}.export-options-popover{position:absolute;top:100%;left:0;margin-top:4px;min-width:180px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);z-index:200;overflow:hidden;animation:fadeIn .1s ease}.export-option-btn{display:flex;flex-direction:column;align-items:flex-start;width:100%;padding:10px 14px;border:none;background:none;font-size:.85rem;font-weight:500;color:var(--text);cursor:pointer;font-family:inherit;text-align:left;transition:background .1s}.export-option-btn:hover{background:#f3f4f6}.export-option-btn+.export-option-btn{border-top:1px solid var(--border)}.export-option-hint{font-size:.7rem;font-weight:400;color:var(--text-muted);margin-top:2px}.editor-sidebar-toolbar{display:flex;gap:4px;padding:8px 12px;border-bottom:1px solid var(--border)}.editor-sidebar-tree{flex:1;overflow-y:auto;padding:8px 0}.editor-sidebar-empty{text-align:center;padding:40px 16px;color:var(--text-muted);font-size:.85rem}.editor-sidebar-empty .hint{font-size:.75rem;color:var(--text-extra-muted);margin-top:4px}.editor-tree-volume{margin-bottom:2px}.editor-tree-volume-header{display:flex;align-items:center;gap:4px;padding:8px 12px;cursor:pointer;font-size:.85rem;transition:background .1s;border-left:3px solid transparent}.editor-tree-volume-header:hover{background:#f3f4f6}.editor-tree-volume-header.selected{background:#eef2ff;border-left-color:var(--primary)}.tree-arrow{font-size:.5rem;color:var(--text-muted);transition:transform .2s;flex-shrink:0}.tree-arrow.expanded{transform:rotate(90deg)}.tree-icon{font-size:.9rem;flex-shrink:0}.tree-title{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}.tree-count{font-size:.68rem;color:var(--text-muted);background:#f3f4f6;padding:1px 6px;border-radius:10px;flex-shrink:0}.editor-tree-chapters{padding-left:12px;border-left:2px solid var(--border);margin-left:20px}.tree-empty-chapter{padding:8px 12px;font-size:.75rem;color:var(--text-extra-muted);font-style:italic}.editor-tree-chapter{display:flex;align-items:center;gap:6px;padding:7px 12px;cursor:pointer;font-size:.82rem;border-radius:4px;transition:all .1s;border-left:3px solid transparent}.editor-tree-chapter:hover{background:#f3f4f6}.editor-tree-chapter.active{background:var(--primary-light);color:var(--primary);font-weight:500;border-left-color:var(--primary)}.editor-tree-chapter.selected{background:#eef2ff}.tree-chapter-icon{font-size:.8rem;flex-shrink:0}.tree-chapter-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.drag-handle{flex-shrink:0;cursor:grab;color:var(--text-extra-muted);font-size:.9rem;padding:0 4px;letter-spacing:1px;-webkit-user-select:none;user-select:none;visibility:hidden;transition:color .1s}.editor-tree-chapter:hover .drag-handle{visibility:visible}.drag-handle:active{cursor:grabbing;color:var(--primary)}.editor-tree-chapter.dragging{opacity:.4}.editor-tree-chapter.drag-over{border-top:2px solid var(--primary);background:var(--primary-light)}.tree-checkbox{width:14px;height:14px;cursor:pointer;flex-shrink:0;accent-color:var(--primary)}.editor-main-area{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0;background:var(--bg)}.editor-header{display:flex;align-items:center;gap:16px;padding:12px 24px;background:var(--surface);border-bottom:1px solid var(--border);flex-wrap:wrap;position:sticky;top:0;z-index:10}.title-input{flex:1;min-width:200px;padding:8px 12px;border:1px solid var(--border);border-radius:var(--radius);font-size:1.2rem;font-weight:600;font-family:inherit}.title-input:focus{outline:none;border-color:var(--primary)}.editor-actions{display:flex;gap:8px}.editor-status{display:flex;align-items:center;gap:10px;font-size:.8rem;color:var(--text-muted);flex-shrink:0}.word-count{font-weight:500;color:var(--text-muted);white-space:nowrap}.saving{color:#f59e0b}.saved{color:#22c55e}.editor-statusbar{display:flex;align-items:center;gap:8px;padding:6px 24px;font-size:.72rem;color:var(--text-muted);border-top:1px solid var(--border);background:var(--surface);flex-shrink:0}.status-sep{color:var(--border)}.slate-editor{background:transparent;border:none;border-radius:0;flex:1;display:flex;flex-direction:column;margin:0;overflow:hidden;min-height:0;width:100%}.toolbar{display:flex;align-items:center;gap:2px;padding:6px 10px;border-bottom:1px solid var(--border);background:#fafbfc;flex-wrap:wrap}.toolbar-group{display:flex;align-items:center;gap:2px}.toolbar-spacer{width:12px;flex:1}.toolbar-btn{min-width:30px;height:30px;padding:0 6px;border:1px solid transparent;border-radius:4px;background:transparent;cursor:pointer;font-size:.82rem;font-weight:600;color:var(--text-muted);transition:all .1s;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.toolbar-btn:hover{background:#e2e8f0;color:var(--text)}.heading-btn{min-width:28px;font-size:.74rem;font-weight:700;letter-spacing:-.2px}.toolbar-select{height:30px;padding:0 6px;border:1px solid var(--border);border-radius:4px;background:var(--surface);font-size:.82rem;color:var(--text);cursor:pointer;font-family:inherit;outline:none}.toolbar-select:focus{border-color:var(--primary)}.toolbar-select.sm{width:66px}.color-btn-wrapper{position:relative;display:inline-flex;align-items:center}.color-btn-wrapper .toolbar-btn{position:relative}.color-bar{position:absolute;bottom:3px;left:6px;right:6px;height:3px;border-radius:2px}.color-picker-dropdown{display:none;position:absolute;top:100%;left:0;margin-top:2px;padding:4px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);z-index:300;width:150px;flex-wrap:wrap;gap:2px}.color-btn-wrapper:hover .color-picker-dropdown{display:flex}.color-swatch{width:22px;height:22px;border-radius:3px;cursor:pointer;border:1px solid var(--border);display:inline-block}.color-swatch:hover{transform:scale(1.2);box-shadow:0 0 0 2px var(--primary)}.bracket-btn-wrapper{position:relative;display:inline-flex;align-items:center}.bracket-dropdown{display:none;position:absolute;top:100%;left:0;margin-top:2px;padding:4px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);z-index:300;flex-direction:column;gap:2px}.bracket-btn-wrapper.open .bracket-dropdown{display:flex}.bracket-option{padding:3px 8px;border:1px solid var(--border);border-radius:3px;background:transparent;cursor:pointer;font-size:13px;font-family:monospace;color:var(--text);white-space:nowrap}.bracket-option:hover{background:var(--primary);color:#fff}.bgcolor-btn-wrapper{position:relative;display:inline-flex;align-items:center}.bgcolor-indicator{display:inline-block;width:18px;height:18px;border-radius:3px;border:1px solid #ccc;line-height:18px;font-size:.7rem;text-align:center}.bgcolor-dropdown{display:none;position:absolute;top:100%;left:0;margin-top:4px;background:#fff;border:1px solid var(--border);border-radius:8px;box-shadow:0 4px 16px #0000001f;z-index:100;min-width:180px;padding:6px;flex-direction:column;gap:2px}.bgcolor-btn-wrapper.open .bgcolor-dropdown{display:flex}.bgcolor-option{display:flex;align-items:center;gap:8px;padding:7px 10px;border:none;background:transparent;border-radius:5px;cursor:pointer;font-size:.82rem;color:var(--text);font-family:inherit;width:100%;text-align:left;transition:background .1s}.bgcolor-option:hover{background:#f3f4f6}.bgcolor-option.active{background:var(--primary-light)}.bgcolor-option.bgcolor-none{color:var(--text-muted);font-style:italic}.bgcolor-swatch{display:inline-block;width:22px;height:22px;border-radius:4px;border:1px solid #ddd;flex-shrink:0}.bgcolor-label{flex:1}.bgcolor-hex{font-size:.7rem;color:var(--text-muted);font-family:monospace}.editable{position:relative;padding:24px 32px 48px;flex:1;overflow-x:hidden;overflow-y:auto;font-family:"Noto Serif SC","Source Han Serif SC",PingFang SC,Microsoft YaHei,serif;font-size:17px;line-height:normal;letter-spacing:.04em;outline:none;background:#faf8f5;color:#3d3835;min-height:0;min-width:0}.editable h1{font-size:1.5rem;font-weight:700;margin:0 0 .75em;line-height:1.45;text-indent:0}.editable blockquote{border-left:3px solid var(--border);padding-left:16px;color:var(--text-muted);margin:8px 0}.editable ul,.editable ol{padding-left:24px;margin:4px 0}.editable code{background:#f1f5f9;padding:1px 4px;border-radius:3px;font-family:Fira Code,monospace;font-size:.9em}.editable [data-slate-placeholder],[data-slate-placeholder]{color:var(--text-muted);opacity:.5;font-style:italic;max-width:100%!important;white-space:normal!important;word-break:break-word}.editable-dark,.editable-dark h1,.editable-dark h2,.editable-dark h3,.editable-dark blockquote{color:#e8e8ec!important}.editable-dark [data-slate-placeholder]:before{color:#9ca3af!important;opacity:.6}.editable-dark code{background:#3e3e48;color:#e8e8ec}.editable-dark blockquote{border-left-color:#6b7280}.editable-dark mark{color:#1e1e24!important}[data-slate-placeholder]:before{top:20px!important;left:24px!important}@media (max-width: 768px){:root{--sidebar-width: 200px}.main-toolbar{padding:14px 16px}.toolbar-actions{width:100%;justify-content:flex-start}.book-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px;padding:16px}.book-card-cover{height:140px}.modal-card{max-width:100%;margin:0;border-radius:12px 12px 0 0;max-height:90vh}.modal-card.modal-card-compact{max-height:none;overflow:visible}}@media (max-width: 600px){.app-layout{flex-direction:column}.sidebar{width:100%;min-width:100%;height:auto;max-height:40vh}.editor-header{flex-direction:column;align-items:stretch}.features{grid-template-columns:1fr}.home-page{padding:40px 16px}.home-page h1{font-size:1.6rem}.book-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.plugin-panel{display:none}}.plugin-panel{position:relative;width:300px;min-width:300px;height:100%;display:flex;flex-direction:column;background:#f8f9fa;border-left:1px solid #e5e7eb;overflow:hidden;transition:width .22s ease,min-width .22s ease}.plugin-panel-header{display:flex;align-items:center;gap:6px;padding:12px 14px 0;flex-shrink:0}.plugin-panel-expand-btn{width:24px;height:24px;padding:0;border:none;border-radius:6px;background:transparent;cursor:pointer;color:#9ca3af;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background .15s,color .15s}.plugin-panel-expand-btn:hover{background:#eef2ff;color:#4f46e5}.plugin-tabs{display:flex;gap:0;padding:6px;background:#f0f0f0;border-bottom:1px solid #e5e7eb;flex-shrink:0}.plugin-tab{width:42px;height:36px;padding:0;border:none;background:transparent;font-size:1.1rem;cursor:pointer;border-radius:6px;transition:all .15s;display:flex;align-items:center;justify-content:center;flex-shrink:0}.plugin-tab:hover{background:#e5e7eb}.plugin-tab.active{background:#d4d4d8;box-shadow:inset 0 1px 3px #0000001a}.plugin-content{flex:1;overflow-y:auto;padding:0}.plugin-content-inner{padding:14px}.plugin-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:#9ca3af;text-align:center;padding:20px}.plugin-empty-icon{font-size:2.5rem;margin-bottom:12px;opacity:.5}.plugin-empty p{font-size:.85rem;line-height:1.6}.plugin-section-title{font-size:.95rem;font-weight:700;color:#374151;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid #e5e7eb}.plugin-input{width:100%;padding:7px 10px;border:1px solid #d1d5db;border-radius:4px;font-size:.85rem;font-family:inherit;background:#fff;color:#333;outline:none;margin-bottom:8px;box-sizing:border-box}.plugin-input:focus{border-color:#9ca3af;box-shadow:0 0 0 2px #9ca3af33}.plugin-input.sm{width:auto;flex:1}.plugin-select{padding:7px 8px;border:1px solid #d1d5db;border-radius:4px;font-size:.85rem;font-family:inherit;background:#fff;color:#333;outline:none;cursor:pointer;margin-bottom:8px}.plugin-select.sm{width:auto;flex:1}.plugin-textarea{width:100%;padding:7px 10px;border:1px solid #d1d5db;border-radius:4px;font-size:.85rem;font-family:inherit;background:#fff;color:#333;outline:none;margin-bottom:8px;resize:vertical;box-sizing:border-box}.plugin-textarea:focus{border-color:#9ca3af;box-shadow:0 0 0 2px #9ca3af33}.plugin-row{display:flex;gap:8px}.plugin-row-btns{display:flex;gap:6px;margin-top:4px}.btn-full{width:100%}.btn-danger{color:#c0392b}.btn-danger:hover{background:#fee2e2}.mt-8{margin-top:8px}.names-plugin{padding-bottom:16px}.names-field{margin-bottom:12px;min-width:0}.names-label{display:block;font-size:.72rem;font-weight:600;color:var(--text-muted, #64748b);margin-bottom:6px;letter-spacing:.02em}.names-hint{margin:4px 0 0;font-size:.68rem;color:var(--text-muted, #94a3b8);line-height:1.4}.names-select,.names-count{width:100%;margin-bottom:0;box-sizing:border-box}.names-surname-row{display:flex;align-items:center;gap:8px;min-width:0}.names-surname-row .char-input{flex:1;min-width:0;margin-bottom:0}.names-lock{display:flex;align-items:center;gap:4px;font-size:.72rem;color:var(--text-secondary, #64748b);white-space:nowrap;flex-shrink:0;cursor:pointer;-webkit-user-select:none;user-select:none}.names-lock input{accent-color:var(--primary, #4f46e5)}.names-toast{margin:8px 0 0;padding:8px 10px;background:#ecfdf5;border:1px solid #a7f3d0;border-radius:8px;font-size:.75rem;color:#047857}.names-result-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:14px 0 8px;font-size:.78rem;font-weight:600;color:var(--text-secondary, #64748b)}.gender-tabs{display:flex;gap:4px}.gender-tab{flex:1;padding:7px 0;border:1px solid var(--border, #d1d5db);background:var(--surface, #fff);border-radius:6px;font-size:.78rem;cursor:pointer;color:var(--text-secondary, #374151);font-family:inherit;transition:all .12s;display:flex;align-items:center;justify-content:center;gap:4px}.gender-tab:hover{background:var(--surface-2, #f3f4f6)}.gender-tab.active{background:var(--primary, #4f46e5);color:#fff;border-color:var(--primary, #4f46e5)}.name-list{display:flex;flex-direction:column;gap:6px}.name-item{display:flex;flex-direction:column;gap:6px;padding:8px 10px;background:var(--surface, #fff);border-radius:8px;border:1px solid var(--border, #e5e7eb);min-width:0}.name-item-main{display:flex;flex-direction:column;gap:2px;min-width:0}.name-item-text{font-size:.92rem;font-weight:600;color:var(--text, #111827);word-break:break-word}.name-item-tag{font-size:.65rem;color:var(--text-muted, #94a3b8)}.name-item-actions{display:flex;gap:4px;justify-content:flex-end}.name-icon-btn{width:28px;height:28px;padding:0;border:1px solid var(--border, #e5e7eb);background:var(--surface, #fff);border-radius:6px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--text-secondary, #64748b);font-size:.65rem;transition:all .12s}.name-icon-btn:hover{border-color:var(--primary, #4f46e5);color:var(--primary, #4f46e5);background:var(--primary-light, #eef2ff)}.name-icon-btn.active{border-color:#f59e0b;color:#d97706;background:#fffbeb}.name-fav-list{display:flex;flex-wrap:wrap;gap:6px}.name-fav-chip{display:inline-flex;align-items:center;gap:4px;padding:4px 6px 4px 10px;background:var(--surface-2, #f1f5f9);border:1px solid var(--border, #e2e8f0);border-radius:999px;font-size:.78rem;color:var(--text, #334155);max-width:100%}.name-fav-chip span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:180px}.name-fav-chip .name-icon-btn{width:22px;height:22px;border:none;background:transparent}.name-fav-chip .name-icon-btn:hover{background:#fee2e2;color:#dc2626}.notes-textarea{width:100%;min-height:160px;padding:10px;border:1px solid #d1d5db;border-radius:4px;font-size:.9rem;font-family:宋体,SimSun,serif;background:#fff;color:#333;outline:none;resize:vertical;line-height:1.7;margin-bottom:8px;box-sizing:border-box}.notes-textarea:focus{border-color:#9ca3af;box-shadow:0 0 0 2px #9ca3af33}.notes-divider{border-top:1px solid #e5e7eb;margin:12px 0 8px}.notes-count-label{font-size:.78rem;color:#6b7280;margin-bottom:6px;font-weight:600}.notes-list{display:flex;flex-direction:column;gap:4px}.note-card{border:1px solid #e5e7eb;border-radius:6px;overflow:hidden;background:#fff;transition:border-color .15s}.note-card:hover{border-color:#d1d5db}.note-card-header{display:flex;align-items:center;gap:6px;padding:7px 10px;cursor:pointer;-webkit-user-select:none;user-select:none}.note-arrow{font-size:.5rem;color:#9ca3af;transition:transform .15s;flex-shrink:0;display:inline-block}.note-arrow.open{transform:rotate(90deg)}.note-preview{font-size:.82rem;color:#374151;line-height:1.4;word-break:break-all}.note-card-body{padding:6px 10px 8px 22px;display:flex;align-items:center;justify-content:space-between;border-top:1px solid #f3f4f6}.note-time{font-size:.7rem;color:#9ca3af}.char-plugin{padding-bottom:16px}.char-form{display:flex;flex-direction:column;gap:10px;background:var(--surface-2, #f9fafb);border:1px solid var(--border, #e5e7eb);border-radius:10px;padding:12px;margin-bottom:10px;min-width:0;overflow:hidden}.char-form-inline{margin:8px 0 0;background:var(--surface, #fff);border-color:var(--primary-light, #e0e7ff)}.char-form-label{display:flex;align-items:center;gap:6px;font-size:.82rem;font-weight:700;color:var(--text, #374151)}.char-form-meta{display:grid;grid-template-columns:76px 1fr;gap:8px;min-width:0}.char-field{display:flex;flex-direction:column;gap:4px;min-width:0}.char-field-label{font-size:.72rem;font-weight:600;color:var(--text-muted, #64748b);letter-spacing:.02em}.char-form .char-input,.char-form .char-select{width:100%;min-width:0;margin-bottom:0;box-sizing:border-box}.char-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center;padding-right:28px}.char-list{display:flex;flex-direction:column;gap:8px;margin-top:10px}.char-card-mini{padding:10px 12px;background:var(--surface, #fff);border-radius:10px;border:1px solid var(--border, #e5e7eb);min-width:0;overflow:hidden}.char-card-mini.editing{border-color:var(--primary, #6366f1);box-shadow:0 0 0 2px #6366f11f}.char-card-header{display:flex;align-items:flex-start;gap:6px;min-width:0}.char-card-title{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.char-card-header strong{font-size:.9rem;color:var(--text, #111827);line-height:1.3;word-break:break-word}.char-meta{font-size:.72rem;color:var(--text-muted, #6b7280)}.char-card-summary{margin:6px 0 0 20px;font-size:.72rem;color:var(--text-secondary, #64748b);line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.char-card-actions{display:flex;gap:6px;justify-content:flex-end;padding-top:8px;margin-top:8px;border-top:1px solid var(--border, #f3f4f6)}.char-card-header.clickable{cursor:pointer;-webkit-user-select:none;user-select:none}.char-card-header.clickable:hover .char-card-title strong{color:var(--primary, #4f46e5)}.char-card-mini.expanded{border-color:#d1d5db}.char-card-detail{padding:8px 0 0 20px;display:flex;flex-direction:column;gap:8px}.char-detail-row{font-size:.78rem;color:var(--text-secondary, #4b5563);line-height:1.5;display:flex;flex-direction:column;gap:2px;min-width:0}.char-detail-row span{color:var(--text-muted, #9ca3af);font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em}.char-detail-row p{margin:0;word-break:break-word}.char-empty-hint{margin:4px 0 0 20px;font-size:.72rem;color:var(--text-muted, #94a3b8)}.attr-plugin{padding-bottom:20px}.attr-save-btn{margin-bottom:12px}.attr-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:12px}.attr-card{background:var(--surface, #fff);border:1px solid var(--border, #e5e7eb);border-radius:8px;padding:8px 8px 10px;display:flex;flex-direction:column;gap:8px;min-width:0}.attr-card-head{display:flex;align-items:center;justify-content:space-between;gap:4px;min-width:0}.attr-card-label{font-size:.78rem;font-weight:600;color:var(--text, #374151);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.attr-card-stepper{display:flex;align-items:center;justify-content:center;gap:4px}.attr-btns{display:flex;gap:2px;flex-shrink:0}.attr-btn{width:28px;height:28px;padding:0;border:1px solid var(--border, #d1d5db);background:var(--surface, #fff);border-radius:6px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--text-secondary, #374151);font-family:inherit;transition:all .12s;flex-shrink:0}.attr-btn:hover{background:var(--surface-2, #f3f4f6);border-color:#9ca3af}.attr-num-input{width:100%;max-width:52px;padding:5px 4px;border:1px solid var(--border, #d1d5db);border-radius:6px;font-size:.9rem;font-weight:700;text-align:center;font-family:inherit;background:var(--surface, #fff);color:var(--text, #374151);outline:none;flex:1;min-width:0}.attr-num-input:focus{border-color:var(--primary, #6366f1);box-shadow:0 0 0 2px #6366f126}.attr-num-input::-webkit-inner-spin-button,.attr-num-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.attr-num-input[type=number]{-moz-appearance:textfield}.attr-del-btn{width:20px;height:20px;padding:0;border:none;background:transparent;border-radius:4px;cursor:pointer;color:var(--text-muted, #9ca3af);flex-shrink:0;display:flex;align-items:center;justify-content:center;opacity:.6}.attr-del-btn:hover{background:#fee2e2;color:#dc2626;opacity:1}.attr-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding-top:4px;border-top:1px solid var(--border, #e5e7eb)}.attr-toolbar-btn{flex:1;min-width:0;justify-content:center}.attr-reset-compact{display:flex;align-items:center;gap:4px;flex-shrink:0}.attr-reset-input{width:40px;padding:5px 4px;border:1px solid var(--border, #d1d5db);border-radius:6px;font-size:.82rem;font-weight:600;text-align:center;font-family:inherit;background:var(--surface, #fff);color:var(--text, #374151);outline:none}.attr-reset-input:focus{border-color:var(--primary, #6366f1)}.attr-new-form{flex:1 1 100%;background:var(--surface-2, #f9fafb);border:1px solid var(--border, #e5e7eb);border-radius:8px;padding:8px}.attr-new-val{width:52px!important;flex-shrink:0}.attr-saved-list .note-card-header{flex-wrap:wrap;gap:2px 6px}.attr-current-tag{display:inline-block;margin-left:6px;padding:1px 6px;border-radius:4px;background:var(--primary-light, #eef2ff);color:var(--primary, #4f46e5);font-size:.65rem;font-weight:600;vertical-align:middle}.attr-saved-summary{flex:1 1 100%;font-size:.68rem;color:var(--text-muted, #94a3b8);padding-left:20px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.attr-saved-chips{display:flex;flex-wrap:wrap;gap:6px}.attr-chip{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;background:var(--surface-2, #f1f5f9);border:1px solid var(--border, #e2e8f0);border-radius:999px;font-size:.72rem;white-space:nowrap;max-width:100%}.attr-chip-label{color:var(--text-secondary, #64748b)}.attr-chip-val{font-weight:700;color:var(--primary, #4f46e5);min-width:1ch;text-align:center}.attr-saved-actions{display:flex;gap:6px;margin-top:10px}.attr-row{display:flex;align-items:center;gap:6px;margin-bottom:8px}.attr-label{font-size:.82rem;width:70px;flex-shrink:0;color:#374151}.attr-reset-row{display:flex;align-items:center;gap:6px;margin-top:10px;padding-top:10px;border-top:1px solid #e5e7eb}.attr-reset-label{font-size:.78rem;color:#6b7280;white-space:nowrap}.attr-saved-grid{display:flex;flex-wrap:wrap;gap:6px}.attr-saved-item{display:inline-flex;align-items:center;gap:6px;background:#f9fafb;border-radius:999px;padding:4px 10px;font-size:.72rem;white-space:nowrap}.attr-saved-label{color:var(--text-muted)}.attr-saved-val{font-weight:700;color:var(--primary);font-size:.82rem}.map-list{margin-top:10px;display:flex;flex-direction:column;gap:8px}.map-card{display:flex;align-items:center;gap:12px;padding:10px;background:#fff;border-radius:8px;border:1px solid #e5e7eb;transition:box-shadow .15s}.map-card:hover{box-shadow:0 2px 8px #0000001a}.map-thumb-wrap{width:90px;height:60px;flex-shrink:0;border-radius:5px;overflow:hidden;border:1px solid #e5e7eb;cursor:pointer;background:#f3f4f6;transition:border-color .12s}.map-thumb-wrap:hover{border-color:#6b7280}.map-thumb{width:100%;height:100%;object-fit:cover;display:block}.map-card-body{flex:1;min-width:0;overflow:hidden;display:flex;flex-direction:column;gap:2px;padding:8px 10px 4px}.map-card-name{font-weight:600;font-size:.9rem;color:#1f2937;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;line-height:1.3}.map-card-meta{display:flex;align-items:center;gap:8px;font-size:.75rem;color:#9ca3af;overflow:hidden}.map-card-time{color:#9ca3af;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex-shrink:1}.map-card-actions{display:flex;gap:5px;flex-shrink:0;align-self:center}.map-action-btn{width:32px;height:32px;border-radius:7px;border:1px solid transparent;cursor:pointer;font-size:.9rem;display:flex;align-items:center;justify-content:center;padding:0;transition:all .15s;background:#f3f4f6;line-height:1}.map-action-btn.edit{color:#4b5563}.map-action-btn.edit:hover{background:#e5e7eb;border-color:#9ca3af;color:#1f2937}.map-action-btn.del{color:#9ca3af}.map-action-btn.del:hover{background:#fef2f2;border-color:#fecaca;color:#ef4444}.map-empty{margin-top:24px;text-align:center;color:#9ca3af;font-size:.85rem;line-height:1.6}.map-empty-icon{font-size:2.5rem;margin-bottom:8px;opacity:.6}.tl-range-bar{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.tl-range-label{font-size:.78rem;font-weight:600;color:var(--text-muted)}.tl-settings-form{background:#f3f4f6;border-radius:6px;padding:8px;margin-bottom:10px}.tl-settings-form .plugin-row{display:flex;gap:4px}.tl-settings-form .plugin-input.sm{flex:1;min-width:0;margin-bottom:0}.tl-vtrack-wrap{position:relative;margin-bottom:8px;overflow:hidden;user-select:none;-webkit-user-select:none}.tl-vaxis{position:absolute;left:50%;transform:translate(-50%);width:2px;background:#cbd5e1}.tl-varrow{position:absolute;left:50%;transform:translate(-50%);width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:7px solid #94a3b8}.tl-vlabel{position:absolute;left:50%;transform:translate(-50%,-50%);font-size:.6rem;font-weight:500;white-space:nowrap;background:#f8f9fa;padding:1px 4px;border-radius:2px;z-index:1;pointer-events:none}.tl-vlabel-edge{font-weight:700;color:#374151;font-size:.65rem}.tl-vlabel-mid{color:#94a3b8;font-size:.58rem;font-weight:400}.tl-vevent{position:absolute;left:0;right:0;display:flex;align-items:center;z-index:2;transform:translateY(-50%)}.tl-vevent-left{flex-direction:row-reverse;justify-content:flex-end;padding-right:50%}.tl-vevent-left .tl-vcard{margin-right:14px}.tl-vevent-left .tl-vconn{position:absolute;right:50%;top:50%;width:14px;height:2px;background:#cbd5e1;transform:translateY(-50%)}.tl-vevent-left .tl-vdot{position:absolute;right:50%;top:50%;transform:translate(50%,-50%)}.tl-vevent-right{flex-direction:row;justify-content:flex-start;padding-left:50%}.tl-vevent-right .tl-vcard{margin-left:14px}.tl-vevent-right .tl-vconn{position:absolute;left:50%;top:50%;width:14px;height:2px;background:#cbd5e1;transform:translateY(-50%)}.tl-vevent-right .tl-vdot{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}.tl-vdot{width:7px;height:7px;background:#64748b;border-radius:50%;border:2px solid #f8f9fa;z-index:3}.tl-vcard{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:5px 8px;width:108px;min-width:108px;cursor:grab;box-shadow:0 1px 2px #0000000f;transition:box-shadow .12s;z-index:2;box-sizing:border-box;user-select:none;-webkit-user-select:none}.tl-vcard:active{cursor:grabbing}.tl-vcard:hover{box-shadow:0 2px 6px #0000001a}.tl-vcard-year{font-size:.7rem;font-weight:700;color:var(--primary);margin-bottom:1px;line-height:1.2}.tl-vcard-text{font-size:.72rem;color:var(--text);line-height:1.35;word-break:break-word;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.tl-vevent.expanded .tl-vcard-text{-webkit-line-clamp:unset;display:block}.tl-vcard-actions{display:flex;gap:0;margin-top:5px;padding-top:5px;border-top:1px solid var(--border)}.tl-vcard-actions .btn{flex:1;font-size:.72rem;padding:4px 0;text-align:center;justify-content:center}.tl-vcard-edit{margin-top:5px;padding-top:4px;border-top:1px solid var(--border)}.tl-vcard-edit .plugin-input,.tl-vcard-edit .plugin-textarea{font-size:.7rem;margin-bottom:3px;user-select:text;-webkit-user-select:text}.tl-vcard-edit .plugin-row-btns .btn{font-size:.68rem;padding:2px 7px}.tl-drag-line{position:absolute;left:0;right:0;height:0;border-top:2px dashed var(--primary);z-index:10;pointer-events:none;transform:translateY(-1px)}.tl-drag-label{position:absolute;left:4px;top:-20px;background:var(--primary);color:#fff;font-size:.65rem;font-weight:600;padding:2px 6px;border-radius:4px;white-space:nowrap}.tl-vevent.dragging{z-index:11;opacity:.85}.tl-vevent.dragging .tl-vcard{box-shadow:0 4px 12px #00000026;cursor:grabbing}.tl-add-form{background:#f9fafb;border:1px solid var(--border);border-radius:6px;padding:8px;margin-top:8px}.tl-add-form .plugin-row-btns{margin-top:4px}@media (max-width: 1200px){.plugin-panel{width:260px;min-width:260px}}@media (max-width: 900px){.slate-editor{margin:0 8px 8px}.editable{margin:0 4px 4px}}.map-editor-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;display:flex;align-items:center;justify-content:center;z-index:1100;padding:12px;animation:fadeIn .15s ease}.map-editor-container{background:var(--surface);border-radius:12px;box-shadow:var(--shadow-lg);width:96vw;max-width:1400px;height:93vh;display:flex;flex-direction:column;overflow:hidden;animation:slideUp .2s ease}.map-editor-header{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;border-bottom:1px solid var(--border);flex-shrink:0;position:relative}.map-editor-header h2{font-size:1.05rem;font-weight:700;margin:0;display:flex;align-items:center;gap:8px}.map-zoom-controls{display:flex;align-items:center;gap:4px;position:absolute;left:50%;transform:translate(-50%)}.map-zoom-btn{min-width:30px;padding:4px 8px;font-size:.9rem;font-weight:700;justify-content:center}.map-zoom-btn:disabled{opacity:.35;cursor:not-allowed}.map-zoom-label{font-size:.85rem;font-weight:700;color:#374151;min-width:42px;text-align:center;-webkit-user-select:none;user-select:none}.map-editor-toolbar{display:flex;align-items:center;gap:6px;padding:8px 16px;border-bottom:1px solid var(--border);flex-shrink:0;flex-wrap:wrap;min-height:44px}.map-tool-group{display:flex;align-items:center;gap:4px}.map-tool-divider{width:1px;height:24px;background:var(--border);margin:0 4px}.map-tool-btn{padding:5px 10px;border:1px solid #d1d5db;background:#fff;border-radius:5px;cursor:pointer;font-size:.82rem;font-family:inherit;color:#374151;transition:all .12s;white-space:nowrap;display:flex;align-items:center;gap:3px}.map-tool-btn:hover{background:#f3f4f6;border-color:#9ca3af}.map-tool-btn.active{background:#4b5563;color:#fff;border-color:#4b5563}.map-tool-btn.primary-action{background:var(--primary);color:#fff;border-color:var(--primary);font-weight:600;padding:5px 14px}.map-tool-btn.primary-action:hover{background:var(--primary-hover);border-color:var(--primary-hover)}.map-tool-btn.danger-action{background:none;color:var(--danger);border-color:transparent}.map-tool-btn.danger-action:hover{background:#fef2f2;border-color:#fecaca}.map-color-input{width:30px;height:30px;border:2px solid #d1d5db;border-radius:5px;cursor:pointer;padding:1px;background:none}.map-color-input:hover{border-color:#9ca3af}.map-brush-slider{width:70px;accent-color:var(--primary);cursor:pointer}.map-brush-label{font-size:.75rem;color:var(--text-muted);min-width:32px;text-align:center}.map-editor-canvas-wrap{flex:1;position:relative;background:#e5e7eb;overflow:auto;display:flex;align-items:safe center;justify-content:safe center;padding:16px}.map-canvas-viewport{flex-shrink:0;line-height:0}.map-editor-canvas-wrap canvas{box-shadow:0 2px 12px #00000026;border-radius:4px;cursor:crosshair;display:block}.map-import-toast{position:absolute;top:24px;left:50%;transform:translate(-50%);padding:10px 20px;border-radius:8px;font-size:.85rem;font-weight:600;z-index:10;box-shadow:0 4px 16px #0000002e;animation:slideDown .25s ease;pointer-events:none;white-space:nowrap}.map-import-toast.success{background:#065f46;color:#d1fae5}.map-import-toast.error{background:#991b1b;color:#fee2e2}@keyframes slideDown{0%{opacity:0;transform:translate(-50%) translateY(-12px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.map-pin-colors{display:flex;align-items:center;gap:3px;margin-left:2px}.map-pin-color-btn{width:20px;height:20px;border-radius:50%;cursor:pointer;padding:0;transition:transform .12s;flex-shrink:0}.map-pin-color-btn:hover{transform:scale(1.25)}.map-pin-color-btn.active{transform:scale(1.3);box-shadow:0 0 0 2px var(--primary),0 0 0 4px #3b82f64d}.map-pin-input-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000004d;display:flex;align-items:center;justify-content:center;z-index:1200}.map-pin-input-dialog{background:var(--surface);border-radius:10px;padding:16px 20px;box-shadow:0 8px 30px #00000040;min-width:280px}.map-pin-input-title{font-weight:600;font-size:.9rem;margin-bottom:10px;color:#333}.map-pin-legend{display:flex;align-items:center;gap:6px;flex-wrap:wrap;flex:1;margin-right:12px}.map-pin-legend-item{display:flex;align-items:center;gap:4px;padding:2px 8px;background:#f3f4f6;border-radius:12px;font-size:.75rem;white-space:nowrap}.map-pin-legend-dot{width:10px;height:10px;border-radius:50%;display:inline-block;flex-shrink:0}.map-pin-legend-label{color:#374151;max-width:80px;overflow:hidden;text-overflow:ellipsis}.map-pin-legend-del{font-size:.65rem;padding:0 3px;cursor:pointer;background:none;border:none;color:#9ca3af;line-height:1}.map-pin-legend-del:hover{color:#ef4444}.map-editor-footer{display:flex;align-items:center;justify-content:space-between;padding:8px 16px;border-top:1px solid var(--border);flex-shrink:0;gap:8px;flex-wrap:wrap;min-height:44px}.map-save-row{display:flex;align-items:center;gap:8px}.map-name-input{padding:6px 10px;border:1px solid #d1d5db;border-radius:5px;font-size:.85rem;font-family:inherit;outline:none;width:180px;transition:border-color .12s}.map-name-input:focus{border-color:var(--primary);box-shadow:0 0 0 2px var(--primary-light)}.map-save-dialog{display:flex;align-items:center;gap:8px;background:#f9fafb;border:1px solid var(--border);border-radius:8px;padding:8px 12px}.map-save-dialog input{padding:5px 8px;border:1px solid #d1d5db;border-radius:4px;font-size:.85rem;font-family:inherit;outline:none;width:160px}.map-save-dialog input:focus{border-color:var(--primary)}.map-save-dialog button{padding:4px 12px;border-radius:4px;border:none;cursor:pointer;font-family:inherit;font-size:.82rem;transition:all .12s}.map-section-label{font-size:.78rem;font-weight:600;color:var(--text-muted);margin:14px 0 8px;padding-top:10px;border-top:1px solid var(--border);display:flex;align-items:center;gap:6px}.map-card{background:var(--surface);border:1px solid var(--border);border-radius:8px;overflow:hidden;margin-bottom:8px;transition:box-shadow .12s}.map-card:hover{box-shadow:var(--shadow-sm)}.map-card-thumb{width:100%;height:auto;display:block;cursor:pointer;border-bottom:1px solid var(--border);transition:opacity .15s}.map-card-thumb:hover{opacity:.88}.map-card-info{padding:6px 10px;display:flex;align-items:center;justify-content:space-between;gap:6px}.map-card-name{font-size:.82rem;font-weight:600;color:var(--text);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.map-card-time{font-size:.7rem;color:var(--text-extra-muted);flex-shrink:0}.map-card-actions{display:flex;gap:6px;padding:0 10px 8px}.map-card-actions .btn{font-size:.72rem;padding:2px 10px}.map-editor-container.view-mode .map-editor-canvas-wrap canvas{cursor:default}@media (max-width: 900px){.map-editor-container{width:100vw;height:100vh;border-radius:0}.map-editor-toolbar{gap:3px;padding:6px 8px}.map-tool-btn{padding:4px 7px;font-size:.75rem}}.rg-editor-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;display:flex;align-items:center;justify-content:center;z-index:1100;padding:12px;animation:fadeIn .15s ease}.rg-editor-container{background:var(--surface);border-radius:12px;box-shadow:var(--shadow-lg);width:96vw;max-width:1400px;height:93vh;display:flex;flex-direction:column;overflow:hidden;animation:slideUp .2s ease}.rg-editor-header{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;border-bottom:1px solid var(--border);flex-shrink:0;position:relative}.rg-editor-header h2{font-size:1.05rem;font-weight:700;margin:0;display:flex;align-items:center;gap:8px}.rg-graph-name-sub{font-weight:400;font-size:.9rem;color:var(--text-muted)}.rg-editor-toolbar{display:flex;align-items:center;gap:6px;padding:8px 16px;border-bottom:1px solid var(--border);flex-shrink:0;flex-wrap:wrap;min-height:44px}.rg-editor-body{flex:1;display:flex;overflow:hidden;position:relative}.rg-workspace-wrap{flex:1;position:relative;overflow:hidden;background:#e8eaed;cursor:default}.rg-workspace-bg{position:absolute;top:0;left:0;pointer-events:none}.rg-toolbox{width:220px;min-width:220px;background:var(--surface, #fff);border-right:1px solid var(--border, #e5e7eb);overflow-y:auto;display:flex;flex-direction:column;gap:0;z-index:2}.rg-toolbox-section{padding:14px 12px;border-bottom:1px solid var(--border, #e5e7eb)}.rg-toolbox-section h4{display:flex;align-items:center;gap:6px;margin:0 0 10px;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted, #64748b)}.rg-template-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}.rg-template-card{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 4px;border:1px solid var(--border, #e5e7eb);border-radius:8px;background:var(--surface-2, #f8fafc);cursor:pointer;transition:border-color .15s,background .15s,transform .1s;font-size:.72rem;color:var(--text, #1e293b)}.rg-template-card:hover{border-color:var(--primary, #4f46e5);background:#eef2ff;transform:translateY(-1px)}.rg-template-icon{font-size:1.25rem;line-height:1}.rg-template-name{text-align:center;line-height:1.2}.rg-layout-btns,.rg-theme-btns{display:flex;flex-direction:column;gap:4px}.rg-layout-btn,.rg-theme-btn{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid var(--border, #e5e7eb);border-radius:6px;background:var(--surface, #fff);font-size:.78rem;cursor:pointer;transition:all .15s;color:var(--text, #334155)}.rg-layout-btn:hover,.rg-theme-btn:hover{border-color:var(--primary, #4f46e5);background:#f5f3ff}.rg-theme-btn.active,.rg-layout-btn:active{border-color:var(--primary, #4f46e5);background:#eef2ff;color:var(--primary, #4f46e5);font-weight:600}.rg-theme-dot{width:12px;height:12px;border-radius:50%;flex-shrink:0;box-shadow:0 0 0 1px #00000014}.rg-toolbox-hint{padding:12px;margin-top:auto;font-size:.72rem;color:var(--text-muted, #94a3b8);line-height:1.6}.rg-toolbox-hint p{margin:0 0 4px}.rg-toolbox-hint kbd{display:inline-block;padding:1px 5px;border:1px solid #cbd5e1;border-radius:4px;background:#f1f5f9;font-size:.68rem;font-family:inherit;color:#475569}.rg-template-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:#0f172a73;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:50;animation:rg-fadeIn .2s ease}.rg-template-modal{background:var(--surface, #fff);border-radius:16px;padding:28px 32px;max-width:640px;width:90%;box-shadow:0 24px 48px #0000002e;text-align:center}.rg-template-modal h3{display:flex;align-items:center;justify-content:center;gap:8px;margin:0 0 8px;font-size:1.25rem;color:var(--text, #0f172a)}.rg-template-modal-desc{margin:0 0 20px;color:var(--text-muted, #64748b);font-size:.88rem}.rg-template-modal-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px;margin-bottom:20px}.rg-template-modal-card{display:flex;flex-direction:column;align-items:center;gap:6px;padding:16px 12px;border:2px solid var(--border, #e5e7eb);border-radius:12px;background:var(--surface-2, #f8fafc);cursor:pointer;transition:all .15s;text-align:center}.rg-template-modal-card:hover{border-color:var(--primary, #4f46e5);background:#eef2ff;transform:translateY(-2px);box-shadow:0 8px 20px #4f46e51f}.rg-template-modal-icon{font-size:2rem;line-height:1}.rg-template-modal-card strong{font-size:.88rem;color:var(--text, #1e293b)}.rg-template-modal-card span:last-child{font-size:.72rem;color:var(--text-muted, #94a3b8);line-height:1.3}.rg-svg-layer{position:absolute;top:0;left:0;pointer-events:none;overflow:visible}.rg-svg-layer line,.rg-svg-layer circle{pointer-events:auto}.rg-node-layer{position:absolute;top:0;left:0;pointer-events:none}.rg-node{border-radius:14px;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px #00000026,0 0 0 2px #ffffff1a inset;cursor:move;transition:box-shadow .15s,filter .15s;pointer-events:auto;-webkit-user-select:none;user-select:none;min-width:80px;min-height:40px}.rg-node:hover{box-shadow:0 4px 14px #00000038,0 0 0 2px #ffffff26 inset;filter:brightness(1.08)}.rg-node.selected{box-shadow:0 0 0 3px #fff,0 0 0 5px var(--primary),0 4px 16px #4f46e54d}.rg-node.connect-source{box-shadow:0 0 0 3px #fff,0 0 0 5px #f59e0b,0 4px 16px #f59e0b66;animation:rg-pulse .8s ease-in-out infinite}@keyframes rg-pulse{0%,to{box-shadow:0 0 0 3px #fff,0 0 0 5px #f59e0b,0 4px 16px #f59e0b66}50%{box-shadow:0 0 0 3px #fff,0 0 0 9px #f59e0b33,0 4px 20px #f59e0b80}}.rg-node-text{width:100%;height:100%;display:flex;align-items:center;justify-content:center;padding:8px 12px;overflow:hidden}.rg-node-text-span{color:#fff;font-size:.9rem;font-weight:600;text-align:center;line-height:1.3;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;word-break:break-word;text-shadow:0 1px 2px rgba(0,0,0,.2)}.rg-node-textarea{width:100%;height:100%;background:#fffffff2;border:2px solid var(--primary);border-radius:10px;padding:6px 10px;font-size:.85rem;font-family:inherit;resize:none;outline:none;color:var(--text);text-align:center;line-height:1.3}.rg-node-textarea::placeholder{color:#9ca3af;text-align:center}.rg-resize-handle{position:absolute;width:10px;height:10px;background:#fff;border:2px solid var(--primary);border-radius:50%;z-index:10;pointer-events:auto}.rg-resize-handle.se{bottom:-5px;right:-5px;cursor:nwse-resize}.rg-resize-handle.nw{top:-5px;left:-5px;cursor:nwse-resize}.rg-resize-handle.ne{top:-5px;right:-5px;cursor:nesw-resize}.rg-resize-handle.sw{bottom:-5px;left:-5px;cursor:nesw-resize}.rg-resize-handle.e{top:50%;right:-5px;transform:translateY(-50%);cursor:ew-resize}.rg-resize-handle.s{bottom:-5px;left:50%;transform:translate(-50%);cursor:ns-resize}.rg-resize-handle.w{top:50%;left:-5px;transform:translateY(-50%);cursor:ew-resize}.rg-resize-handle.n{top:-5px;left:50%;transform:translate(-50%);cursor:ns-resize}.rg-connect-indicator{position:absolute;top:-28px;left:50%;transform:translate(-50%);background:#f59e0b;color:#fff;font-size:.72rem;font-weight:600;padding:2px 10px;border-radius:10px;white-space:nowrap;pointer-events:none;animation:rg-fadeInDown .2s ease}@keyframes rg-fadeInDown{0%{opacity:0;transform:translate(-50%) translateY(4px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.rg-tool-hint{position:absolute;bottom:12px;left:50%;transform:translate(-50%);background:#1e293bd9;color:#fff;font-size:.75rem;padding:6px 16px;border-radius:20px;pointer-events:none;white-space:nowrap;z-index:20}.rg-edge-panel{width:240px;min-width:240px;border-left:1px solid var(--border);background:#f8f9fa;display:flex;flex-direction:column;overflow-y:auto;animation:rg-slideInRight .2s ease}@keyframes rg-slideInRight{0%{opacity:0;transform:translate(12px)}to{opacity:1;transform:translate(0)}}.rg-edge-panel-header{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-bottom:1px solid var(--border)}.rg-edge-panel-header h3{font-size:.9rem;font-weight:700;margin:0}.rg-edge-panel-body{padding:14px;flex:1;overflow-y:auto}.rg-edge-panel-body .form-group{margin-bottom:14px}.rg-edge-panel-body .form-group label{display:block;font-size:.8rem;font-weight:600;margin-bottom:5px;color:var(--text)}.rg-style-btns{display:flex;gap:4px;flex-wrap:wrap}.rg-style-btn{padding:4px 10px;border:1px solid #d1d5db;background:#fff;border-radius:4px;cursor:pointer;font-size:.78rem;font-family:inherit;color:#374151;transition:all .12s}.rg-style-btn:hover{background:#f3f4f6}.rg-style-btn.active{background:#4b5563;color:#fff;border-color:#4b5563}.rg-color-btn{width:22px;height:22px;border:2px solid #d1d5db;border-radius:50%;cursor:pointer;transition:all .12s;padding:0}.rg-color-btn:hover{border-color:#9ca3af;transform:scale(1.15)}.rg-color-btn.active{border-color:#1e293b;box-shadow:0 0 0 2px #fff,0 0 0 4px #1e293b}.rg-slider{width:100%;accent-color:var(--primary);cursor:pointer;margin-top:4px}.rg-check-row{display:flex;gap:12px;flex-wrap:wrap}.rg-check-label{display:flex!important;align-items:center;gap:5px;font-size:.82rem!important;font-weight:400!important;cursor:pointer}.rg-check-label input[type=checkbox]{width:auto;margin:0;cursor:pointer;accent-color:var(--primary)}.rg-size-inputs{display:flex;align-items:center;gap:6px}.rg-size-inputs .plugin-input.sm{width:70px;margin-bottom:0}.rg-size-inputs span{color:var(--text-muted);font-weight:600}.rg-editor-footer{display:flex;align-items:center;padding:10px 16px;border-top:1px solid var(--border);flex-shrink:0;gap:12px;min-height:48px}.rg-save-dialog{display:flex;align-items:center;gap:8px}.rg-save-dialog input{padding:7px 10px;border:1px solid var(--border);border-radius:var(--radius);font-size:.85rem;font-family:inherit}.rg-save-dialog input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #4f46e51a}.rg-card-row{display:flex;flex-direction:row;align-items:stretch;gap:0;padding:4px}.rg-card-logo{width:60%;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:opacity .15s;border-radius:6px;flex-shrink:0;overflow:hidden}.rg-card-logo:hover{opacity:.9}.rg-card-logo svg{width:100%;height:auto;display:block}.rg-card-info{flex:1;display:flex;flex-direction:column;justify-content:center;padding:4px 4px 4px 8px;gap:3px;min-width:0}.rg-card-name{font-size:.78rem;font-weight:700;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rg-card-meta{display:flex;flex-direction:column;gap:1px}.rg-card-date{font-size:.65rem;color:var(--text-extra-muted)}.rg-card-count{font-size:.68rem;color:var(--text-muted)}.rg-card-btns{display:flex;gap:4px;margin-top:2px}.rg-card-btns .btn{font-size:.7rem;padding:2px 8px}.rg-split-btn{display:flex;position:relative}.rg-split-main{border-top-right-radius:0!important;border-bottom-right-radius:0!important;flex:7;justify-content:center}.rg-split-drop{border-top-left-radius:0!important;border-bottom-left-radius:0!important;flex:0 0 32px;width:32px;justify-content:center;border-left:1px solid rgba(0,0,0,.1)!important;font-size:.85rem;padding:5px 0}.rg-shape-menu{position:absolute;top:100%;right:0;margin-top:4px;background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:var(--shadow-lg);z-index:100;min-width:130px;padding:4px;animation:rg-fadeIn .12s ease}@keyframes rg-fadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.rg-shape-item{display:flex;align-items:center;gap:8px;width:100%;padding:6px 10px;border:none;background:none;cursor:pointer;border-radius:5px;font-size:.82rem;font-family:inherit;color:var(--text);transition:background .12s}.rg-shape-item:hover{background:#f3f4f6}.rg-shape-item.active{background:var(--primary-light);color:var(--primary);font-weight:600}.rg-shape-icon{font-size:1rem;width:20px;text-align:center}.rg-shape-label{flex:1;text-align:left}.rg-shape-rounded{border-radius:14px}.rg-shape-circle{border-radius:50%}.rg-shape-triangle{border-radius:0;background:transparent!important;box-shadow:none!important}.rg-shape-triangle.selected{box-shadow:none!important;filter:drop-shadow(0 0 0 3px #ffffff) drop-shadow(0 0 0 5px var(--primary))}.rg-shape-triangle .rg-node-text{position:relative;z-index:1;padding-top:10%}.rg-node .rg-triangle-bg{pointer-events:none}.rg-shape-triangle .rg-resize-handle{z-index:2}.rg-minimap{position:absolute;right:12px;bottom:12px;z-index:10;border-radius:8px;box-shadow:0 4px 16px #0000001f;border:1px solid var(--border, #e2e8f0);overflow:hidden;background:var(--surface, #fff)}.rg-minimap-label{font-size:.62rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted, #94a3b8);padding:4px 8px 0}.rg-minimap-svg{display:block;cursor:crosshair}.rg-workspace-wrap.present-mode .rg-minimap{bottom:72px}.rg-workspace-wrap.present-mode .rg-tool-hint{display:none}.rg-selection-box{position:absolute;border:1.5px dashed #4f46e5;background:#4f46e514;pointer-events:none;z-index:5}.rg-present-bar{position:absolute;bottom:16px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:10px;padding:10px 16px;background:#0f172ae0;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:12px;box-shadow:0 8px 24px #0003;z-index:20;color:#fff}.rg-present-counter{font-size:.82rem;min-width:120px;text-align:center;color:#e2e8f0}.rg-node.present-focus{z-index:10;opacity:1!important;box-shadow:0 0 0 4px #fff,0 0 0 7px #4f46e5,0 8px 32px #4f46e573!important;animation:rg-present-pulse 1.2s ease-in-out infinite}@keyframes rg-present-pulse{0%,to{box-shadow:0 0 0 4px #fff,0 0 0 7px #4f46e5,0 8px 32px #4f46e573}50%{box-shadow:0 0 0 4px #fff,0 0 0 11px #4f46e540,0 12px 40px #4f46e58c}}.rg-node-badges{position:absolute;top:4px;right:6px;display:flex;gap:3px;pointer-events:none}.rg-node-badge{display:flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:4px;background:#00000059;color:#fff;font-size:.6rem}.rg-field-hint{margin:6px 0 0;font-size:.72rem;color:var(--text-muted, #94a3b8);line-height:1.4}@media (max-width: 900px){.rg-editor-container{width:100vw;height:100vh;border-radius:0}.rg-toolbox{display:none}.rg-editor-toolbar{gap:3px;padding:6px 8px}.rg-edge-panel{width:200px;min-width:200px}.rg-tool-hint{font-size:.68rem;padding:4px 10px}}:root{--primary: #2563eb;--primary-hover: #1d4ed8;--primary-light: #eff6ff;--primary-muted: #dbeafe;--accent: #b45309;--accent-light: #fef3c7;--accent-hover: #92400e;--bg: #f0f2f5;--bg-subtle: #e8ecf1;--surface: #ffffff;--surface-hover: #f8fafc;--border: #e2e8f0;--border-strong: #cbd5e1;--text: #0f172a;--text-secondary: #334155;--text-muted: #64748b;--text-extra-muted: #94a3b8;--sidebar-bg: #f7f8fa;--sidebar-surface: #ffffff;--sidebar-border: #e2e8f0;--sidebar-text: #0f172a;--sidebar-text-muted: #64748b;--sidebar-hover: rgba(15, 23, 42, .05);--sidebar-active-bg: #eff6ff;--sidebar-active-text: #2563eb;--nav-bg: #0f172a;--nav-surface: #1e293b;--nav-border: #334155;--nav-text: #f1f5f9;--nav-text-muted: #94a3b8;--nav-active-bg: rgba(37, 99, 235, .18);--nav-hover: rgba(255, 255, 255, .06);--paper: #faf8f5;--paper-warm: #f5f0e8;--paper-text: #292524;--paper-border: #e7e0d4;--danger: #dc2626;--danger-hover: #b91c1c;--danger-bg: #fef2f2;--success: #059669;--success-bg: #ecfdf5;--warning: #d97706;--font-ui: "Inter", "PingFang SC", "Microsoft YaHei", system-ui, sans-serif;--font-editor: "Noto Serif SC", "Source Han Serif SC", "PingFang SC", "Microsoft YaHei", serif;--radius: 6px;--radius-md: 8px;--radius-lg: 12px;--sidebar-width: 272px;--topbar-height: 52px;--shadow-sm: 0 1px 2px rgba(15, 23, 42, .05);--shadow-md: 0 4px 16px rgba(15, 23, 42, .08);--shadow-lg: 0 12px 40px rgba(15, 23, 42, .12);--shadow-focus: 0 0 0 3px rgba(37, 99, 235, .15)}body{font-family:var(--font-ui);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.brand{display:inline-flex;align-items:center;gap:10px;text-decoration:none;color:inherit}.brand-mark{width:36px;height:36px;border-radius:var(--radius-md);background:linear-gradient(135deg,var(--primary) 0%,#1e40af 100%);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.95rem;flex-shrink:0;box-shadow:0 2px 8px #2563eb59}.brand-mark.sm{width:28px;height:28px;font-size:.75rem;border-radius:var(--radius)}.brand-mark.lg{width:48px;height:48px;font-size:1.2rem;border-radius:var(--radius-lg)}.brand-text{display:flex;flex-direction:column;line-height:1.2}.brand-name{font-weight:700;font-size:1rem;letter-spacing:-.02em;color:var(--text)}.brand-tagline{font-size:.68rem;color:var(--text-muted);font-weight:500;letter-spacing:.04em;text-transform:uppercase}.brand--dark .brand-name{color:var(--nav-text)}.brand--dark .brand-tagline{color:var(--nav-text-muted)}.btn{border-radius:var(--radius);font-weight:500;letter-spacing:.01em;transition:all .18s ease}.btn:hover{background:var(--surface-hover);border-color:var(--border-strong)}.btn-primary{background:var(--primary);border-color:var(--primary);box-shadow:0 1px 2px #2563eb33}.btn-primary:hover{background:var(--primary-hover);border-color:var(--primary-hover);box-shadow:0 2px 8px #2563eb4d}.btn-accent{background:var(--accent);color:#fff;border-color:var(--accent)}.btn-accent:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.btn-ghost{background:transparent;border-color:transparent;color:var(--text-muted)}.btn-ghost:hover{background:var(--bg-subtle);color:var(--text)}.auth-page{position:relative;display:grid;grid-template-columns:1.05fr .95fr;align-items:stretch;min-height:100vh;height:100vh;width:100%;overflow:hidden;background:linear-gradient(118deg,#080d18,#0f172a,#162033,#1e3050 42%,#3d5278,#8fa3c4 74%,#c5d0e0 86%,#e4eaf2 94%,#eef2f7)}.auth-page:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse 50% 80% at 5% 45%,rgba(37,99,235,.28) 0%,transparent 58%),radial-gradient(ellipse 40% 60% at 95% 55%,rgba(255,255,255,.45) 0%,transparent 52%),radial-gradient(ellipse 30% 40% at 50% 100%,rgba(180,83,9,.06) 0%,transparent 50%);pointer-events:none;z-index:0}.auth-page:after{content:"";position:absolute;top:0;bottom:0;left:38%;width:24%;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.06) 35%,rgba(255,255,255,.14) 50%,rgba(255,255,255,.06) 65%,transparent 100%);pointer-events:none;z-index:0}.auth-brand-panel{background:transparent;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;padding:56px 48px 56px 72px;position:relative;overflow:hidden;z-index:1}.auth-brand-panel:before{display:none}.auth-brand-content{position:relative;z-index:1;max-width:440px}.auth-brand-content .brand-mark.lg{margin-bottom:28px;background:linear-gradient(135deg,var(--primary) 0%,#1e40af 100%);border:none;box-shadow:0 8px 24px #2563eb59}.brand-home-link{display:inline-flex;flex-direction:column;align-items:flex-start;text-decoration:none;color:inherit}.brand-home-link:hover .auth-brand-title{opacity:.9}.auth-mobile-brand a{display:inline-flex;align-items:center;gap:8px;text-decoration:none;color:inherit}.brand--topbar{flex-shrink:0}.brand--topbar .brand-name{font-size:.95rem}.brand--topbar .brand-tagline{font-size:.65rem}.auth-brand-title{font-size:2.125rem;font-weight:800;color:#fff;letter-spacing:-.04em;margin-bottom:14px;line-height:1.2}.auth-brand-desc{font-size:.9875rem;color:#ffffffad;line-height:1.75;margin-bottom:36px}.auth-features-list{list-style:none;display:flex;flex-direction:column;gap:12px}.auth-features-list li{display:flex;align-items:center;gap:12px;font-size:.875rem;color:#ffffffd1}.auth-feature-icon{width:34px;height:34px;border-radius:var(--radius-md);background:#ffffff14;border:1px solid rgba(255,255,255,.1);display:flex;align-items:center;justify-content:center;flex-shrink:0;color:#bfdbfe}.auth-form-panel{display:flex;align-items:center;justify-content:center;padding:48px 64px 48px 32px;background:transparent;position:relative;z-index:1}.auth-card{background:#ffffffe0;backdrop-filter:blur(24px) saturate(1.2);-webkit-backdrop-filter:blur(24px) saturate(1.2);border:1px solid rgba(255,255,255,.75);border-radius:16px;padding:40px 44px 36px;box-shadow:0 1px 2px #0f172a0a,0 8px 32px #0f172a12,0 32px 64px #0f172a0f;max-width:420px;width:100%}.auth-card-header{margin-bottom:32px}.auth-card-header h1{font-size:1.75rem;font-weight:700;text-align:left;margin-bottom:8px;letter-spacing:-.02em;color:var(--text)}.auth-card-header p{font-size:.9rem;color:var(--text-muted);text-align:left}.auth-card label{color:var(--text-secondary);font-size:.8125rem;font-weight:600;margin:16px 0 6px}.auth-card input{border-radius:var(--radius-md);border-color:#cbd5e1e6;background:#ffffffb3;padding:11px 14px;transition:border-color .15s,box-shadow .15s,background .15s}.auth-card input:focus{border-color:var(--primary);background:#fff;box-shadow:var(--shadow-focus)}.auth-card button[type=submit]{border-radius:var(--radius-md);margin-top:28px;padding:12px;font-size:.9375rem;letter-spacing:.02em;background:linear-gradient(180deg,#3b82f6,#2563eb);transition:box-shadow .18s,transform .12s}.auth-card button[type=submit]:hover{background:linear-gradient(180deg,#2563eb,#1d4ed8);box-shadow:0 4px 16px #2563eb59}.auth-mobile-brand{display:none;align-items:center;gap:10px;margin-bottom:28px;padding-bottom:20px;border-bottom:1px solid var(--border)}.auth-mobile-brand span:last-child{font-weight:700;font-size:1rem;color:var(--text);letter-spacing:-.02em}.auth-link{text-align:left;margin-top:24px;font-size:.875rem}.auth-link a{font-weight:600}.landing-page{height:100%;min-height:100%;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch;background:var(--bg)}.landing-nav{display:flex;align-items:center;justify-content:space-between;padding:16px 48px;background:var(--surface);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:100;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#ffffffeb}.landing-nav-actions{display:flex;align-items:center;gap:10px}.landing-hero{max-width:1120px;margin:0 auto;padding:80px 48px 64px;display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:center}.landing-hero-content h1{font-size:2.75rem;font-weight:800;letter-spacing:-.04em;line-height:1.15;color:var(--text);margin-bottom:20px}.landing-hero-content h1 em{font-style:normal;color:var(--primary)}.landing-hero-desc{font-size:1.125rem;color:var(--text-muted);line-height:1.75;margin-bottom:36px}.landing-hero-actions{display:flex;gap:12px;flex-wrap:wrap}.landing-hero-actions .btn{padding:12px 24px;font-size:.9375rem}.landing-hero-visual{background:linear-gradient(145deg,var(--nav-bg) 0%,#1e3a5f 100%);border-radius:var(--radius-lg);padding:32px;box-shadow:var(--shadow-lg);position:relative;overflow:hidden}.landing-hero-visual:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at 70% 30%,rgba(37,99,235,.3) 0%,transparent 50%)}.landing-preview{position:relative;z-index:1;background:var(--paper);border-radius:var(--radius-md);padding:24px 28px;font-family:var(--font-editor);color:var(--paper-text);line-height:2;font-size:.95rem;box-shadow:0 8px 32px #00000040}.landing-preview-title{font-size:.75rem;font-weight:600;color:var(--text-muted);font-family:var(--font-ui);text-transform:uppercase;letter-spacing:.06em;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--paper-border)}.landing-stats{display:flex;gap:32px;margin-top:40px;padding-top:32px;border-top:1px solid var(--border)}.landing-stat-value{font-size:1.75rem;font-weight:800;color:var(--text);letter-spacing:-.03em}.landing-stat-label{font-size:.8125rem;color:var(--text-muted);margin-top:2px}.landing-features{max-width:1120px;margin:0 auto;padding:0 48px 80px}.landing-section-title{font-size:1.5rem;font-weight:700;letter-spacing:-.02em;margin-bottom:8px;text-align:center}.landing-section-desc{text-align:center;color:var(--text-muted);margin-bottom:40px;font-size:.9375rem}.landing-features-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.landing-feature-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:28px 24px;transition:box-shadow .2s,border-color .2s}.landing-feature-card:hover{box-shadow:var(--shadow-md);border-color:var(--primary-muted)}.landing-feature-icon{width:44px;height:44px;border-radius:var(--radius-md);background:var(--primary-light);color:var(--primary);display:flex;align-items:center;justify-content:center;margin-bottom:16px}.landing-feature-card h3{font-size:1rem;font-weight:700;margin-bottom:8px;color:var(--text)}.landing-feature-card p{font-size:.875rem;color:var(--text-muted);line-height:1.65}.landing-footer{text-align:center;padding:24px;border-top:1px solid var(--border);font-size:.8125rem;color:var(--text-extra-muted);background:var(--surface)}.app-topbar{height:var(--topbar-height);min-height:var(--topbar-height);display:flex;align-items:center;justify-content:space-between;padding:0 20px;background:var(--surface);border-bottom:1px solid var(--border);flex-shrink:0;z-index:20}.app-topbar-left{display:flex;align-items:center;gap:16px;min-width:0}.app-topbar-title{font-size:.9375rem;font-weight:600;color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-topbar-divider{width:1px;height:20px;background:var(--border);flex-shrink:0}.app-topbar-right{display:flex;align-items:center;gap:8px;flex-shrink:0}.sidebar{background:var(--sidebar-bg);border-right:1px solid var(--sidebar-border)}.sidebar-brand{padding:18px 16px;border-bottom:1px solid var(--sidebar-border);background:var(--sidebar-bg)}.sidebar-user{border-bottom:1px solid var(--sidebar-border);padding:16px;background:var(--sidebar-bg)}.sidebar-username{color:var(--sidebar-text)}.sidebar-user-bio{color:var(--sidebar-text-muted)}.avatar-placeholder{background:linear-gradient(135deg,var(--primary) 0%,#1e40af 100%)}.sidebar-dropdown{background:var(--sidebar-surface);border-color:var(--sidebar-border);box-shadow:var(--shadow-lg)}.dropdown-item{color:var(--sidebar-text)}.dropdown-item:hover{background:var(--sidebar-hover)}.dropdown-divider{background:var(--sidebar-border)}.sidebar-nav{border-bottom:1px solid var(--sidebar-border);padding:12px 10px 8px}.sidebar-section-title{color:var(--sidebar-text-muted);padding:0 10px 8px}.sidebar-count{background:var(--sidebar-active-bg);color:var(--sidebar-active-text)}.sidebar-nav-item{color:var(--sidebar-text-muted);padding:8px 10px;border-radius:var(--radius);font-weight:500}.sidebar-nav-item:hover{background:var(--sidebar-hover);color:var(--sidebar-text)}.sidebar-nav-item.active{background:var(--sidebar-active-bg);color:var(--sidebar-active-text);font-weight:600;box-shadow:inset 3px 0 0 var(--primary)}.sidebar-groups{border-bottom:1px solid var(--sidebar-border);padding:12px 10px 8px}.sidebar-section-header.clickable:hover{background:var(--sidebar-hover)}.section-arrow,.group-arrow{color:var(--sidebar-text-muted)}.sidebar-add-btn{background:var(--sidebar-active-bg);color:var(--sidebar-active-text);border-radius:var(--radius)}.sidebar-add-btn:hover{background:var(--primary);color:#fff}.sidebar-group-header{color:var(--sidebar-text-muted);border-radius:var(--radius)}.sidebar-group-header:hover{background:var(--sidebar-hover);color:var(--sidebar-text)}.group-name{color:inherit}.group-count{background:var(--bg-subtle);color:var(--sidebar-text-muted)}.sidebar-group-books{border-left-color:var(--sidebar-border)}.sidebar-book-item{color:var(--sidebar-text-muted);border-radius:var(--radius)}.sidebar-book-item:hover{background:var(--sidebar-hover);color:var(--sidebar-text)}.sidebar-book-item.active{background:var(--sidebar-active-bg);color:var(--sidebar-active-text);font-weight:600}.sidebar-empty{color:var(--sidebar-text-muted);opacity:.85}.sidebar-body{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;scrollbar-color:rgba(100,116,139,.45) transparent}.sidebar-body::-webkit-scrollbar{width:5px}.sidebar-body::-webkit-scrollbar-track{background:transparent}.sidebar-body::-webkit-scrollbar-thumb{background:#64748b59;border-radius:999px}.sidebar-body::-webkit-scrollbar-thumb:hover{background:#94a3b88c}.sidebar-books{padding:12px 10px 16px}.editor-sidebar-tree,.plugin-content,.editor-canvas,.editable,.main-content{scrollbar-width:thin;scrollbar-color:rgba(148,163,184,.4) transparent}.editor-sidebar-tree::-webkit-scrollbar,.plugin-content::-webkit-scrollbar,.editor-canvas::-webkit-scrollbar,.editable::-webkit-scrollbar,.main-content::-webkit-scrollbar{width:6px;height:6px}.editor-sidebar-tree::-webkit-scrollbar-track,.plugin-content::-webkit-scrollbar-track,.editor-canvas::-webkit-scrollbar-track,.editable::-webkit-scrollbar-track,.main-content::-webkit-scrollbar-track{background:transparent}.editor-sidebar-tree::-webkit-scrollbar-thumb,.plugin-content::-webkit-scrollbar-thumb,.editor-canvas::-webkit-scrollbar-thumb,.editable::-webkit-scrollbar-thumb,.main-content::-webkit-scrollbar-thumb{background:#94a3b859;border-radius:999px}.editor-sidebar-tree::-webkit-scrollbar-thumb:hover,.plugin-content::-webkit-scrollbar-thumb:hover,.editor-canvas::-webkit-scrollbar-thumb:hover,.editable::-webkit-scrollbar-thumb:hover,.main-content::-webkit-scrollbar-thumb:hover{background:#64748b8c}.main-content{background:var(--bg)}.main-toolbar{background:var(--surface);border-bottom:1px solid var(--border);padding:16px 28px;box-shadow:0 1px #0f172a0a}.page-title{font-size:1.25rem;font-weight:700;letter-spacing:-.02em}.book-count{background:var(--bg-subtle);padding:2px 10px;border-radius:20px;font-size:.8125rem;font-weight:500}.book-grid{padding:24px 28px 40px;gap:16px}.book-card{border-radius:var(--radius-lg);border-color:var(--border);transition:box-shadow .22s ease,transform .22s ease,border-color .22s ease;overflow:hidden}.book-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-md);border-color:var(--primary-muted)}.book-card-cover{height:160px;background:linear-gradient(160deg,#eef2ff,#f8fafc 55%,#f1f5f9)}.cover-placeholder{background:linear-gradient(145deg,#dbeafe,#eff6ff,#f8fafc)}.cover-placeholder span,.cover-placeholder svg{color:#64748b;opacity:.85}.book-card-body{padding:16px;gap:10px}.book-card-title{font-size:.9375rem;font-weight:700;letter-spacing:-.01em}.book-category-tag{background:var(--primary-light);color:var(--primary);font-weight:600;font-size:.6875rem;padding:3px 8px}.book-tag{background:var(--bg);border-color:var(--border);font-size:.6875rem}.book-card-footer{border-top-color:var(--border);padding-top:10px}.book-card-open{font-size:.8125rem;font-weight:600;color:var(--primary);display:flex;align-items:center;gap:4px;opacity:0;transition:opacity .15s}.book-card:hover .book-card-open{opacity:1}:root{--editor-frame: #dfe3ea;--editor-sidebar-bg: #f7f8fa;--editor-toolbar-bg: rgba(255, 255, 255, .96)}.editor-full-layout{display:flex;flex-direction:column;height:100vh;overflow:hidden;background:var(--editor-frame)}.editor-body{display:flex;flex:1;overflow:hidden;min-height:0;gap:0}.app-topbar{background:linear-gradient(180deg,#fff,#f8fafc);border-bottom:1px solid var(--border-strong);box-shadow:0 1px #0f172a0a;padding:0 16px 0 12px}.app-topbar .btn-ghost{color:var(--text-secondary);font-weight:500}.app-topbar .btn-ghost:hover{background:var(--bg-subtle);color:var(--text)}.editor-sidebar{background:var(--editor-sidebar-bg);border-right:1px solid var(--border-strong);width:248px;min-width:248px;height:100%;min-height:0}.editor-sidebar-header{padding:14px 12px 12px;background:var(--editor-sidebar-bg);border-bottom:1px solid var(--border)}.editor-sidebar-label{font-size:.6875rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-extra-muted);margin-bottom:10px}.editor-sidebar-actions{gap:8px}.editor-sidebar-btn{border-radius:var(--radius-md);font-weight:500;font-size:.8125rem;border-color:var(--border);background:var(--surface);box-shadow:var(--shadow-sm)}.editor-sidebar-btn:hover{background:var(--surface);border-color:var(--primary-muted);color:var(--primary)}.editor-sidebar-btn.active{background:var(--primary-light);border-color:var(--primary);color:var(--primary)}.editor-sidebar-btn.danger{color:var(--text-muted);border-color:var(--border)}.editor-sidebar-btn.danger:hover,.editor-sidebar-btn.danger.active{color:var(--danger);border-color:#fecaca;background:var(--danger-bg)}.editor-sidebar-toolbar{padding:8px 12px;background:var(--editor-sidebar-bg);border-bottom:1px solid var(--border);gap:6px}.editor-sidebar-tree{padding:6px 8px}.editor-tree-volume-header{border-radius:var(--radius);border-left:none;padding-left:10px}.editor-tree-volume-header.selected{background:#2563eb14}.editor-tree-chapter{border-left:none;border-radius:var(--radius);margin:1px 0}.editor-tree-chapter.active{background:var(--primary);color:#fff;font-weight:600;box-shadow:0 1px 4px #2563eb40}.editor-tree-chapter.active .tree-chapter-icon{opacity:.9}.editor-main-area{flex:1;display:flex;flex-direction:column;min-width:0;min-height:0;background:var(--paper)}.editor-header{display:flex;align-items:center;gap:20px;background:var(--paper);border-bottom:1px solid var(--paper-border);padding:0 32px;height:48px;min-height:48px;flex-shrink:0}.title-input{flex:1;border:none;background:transparent;font-size:1.0625rem;font-weight:700;padding:0;letter-spacing:-.02em;border-radius:0;min-width:0}.title-input:focus{outline:none;box-shadow:none}.title-input::placeholder{color:var(--text-extra-muted)}.editor-status{gap:12px;font-size:.8125rem;flex-shrink:0}.word-count{color:var(--text-muted);font-variant-numeric:tabular-nums}.editor-canvas{flex:1;display:flex;flex-direction:column;min-height:0;min-width:0;overflow-x:hidden;overflow-y:hidden;background:var(--paper);border:none;box-shadow:none}.editor-statusbar{background:var(--paper);border-top:1px solid var(--paper-border);padding:0 32px;height:32px;min-height:32px;font-size:.75rem;font-weight:500;color:var(--text-muted);flex-shrink:0;font-variant-numeric:tabular-nums}.saving{color:var(--warning);font-weight:600}.saved{color:var(--success);font-weight:600}.slate-editor{border:none;border-radius:0;margin:0;background:transparent;box-shadow:none;flex:1;display:flex;flex-direction:column;min-height:0;width:100%}.toolbar{background:var(--paper);border-bottom:1px solid var(--paper-border);padding:6px 32px;gap:4px;flex-shrink:0;flex-wrap:wrap;max-width:100%;overflow-x:hidden}.toolbar-btn{border-radius:var(--radius);color:var(--text-secondary);height:32px;min-width:32px}.toolbar-btn:hover{background:#0f172a0f;color:var(--text)}.toolbar-btn.active{background:var(--primary);color:#fff}.toolbar-select{border-radius:var(--radius);border-color:var(--border);font-size:.8125rem;height:32px;background:#fffc}.editable{flex:1;width:100%;max-width:none;margin:0;background:var(--paper);color:#3d3835;font-family:var(--font-editor);font-size:17px;line-height:normal;letter-spacing:.04em;padding:24px 32px 48px;border:none;box-shadow:none;overflow-x:hidden;overflow-y:auto;min-height:0;min-width:0}.editable [data-slate-placeholder],[data-slate-placeholder]{max-width:100%!important;white-space:normal!important;word-break:break-word}.editable p{margin:0;text-indent:2em}.editable p+p{margin-top:0}.editable h1{font-size:1.5rem;font-weight:700;margin:0 0 .75em;line-height:1.45;text-indent:0;letter-spacing:.02em}.editable h2{font-size:1.25rem;font-weight:700;margin:.75em 0 .5em;line-height:1.5;text-indent:0}.editable blockquote{margin:.5em 0;padding-left:1em;border-left:3px solid var(--paper-border);color:#6b6560;text-indent:0}.search-bar{background:#fef3c7a6;border-bottom-color:#fbbf2459;flex-shrink:0}.plugin-panel{position:relative;background:var(--surface);border-left:1px solid var(--border-strong);width:300px;min-width:300px;height:100%;min-height:0;display:flex;flex-direction:column;transition:width .22s ease,min-width .22s ease}.plugin-panel.expanded{width:420px;min-width:420px}.plugin-panel-header{display:flex;align-items:center;gap:6px;padding:12px 14px 0;flex-shrink:0;background:var(--editor-sidebar-bg)}.plugin-panel-expand-btn{width:24px;height:24px;padding:0;border:none;border-radius:var(--radius-md);background:transparent;cursor:pointer;color:var(--text-extra-muted);display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background .15s,color .15s}.plugin-panel-expand-btn:hover{background:#0f172a0f;color:var(--primary)}.plugin-panel-expand-btn:active{transform:scale(.94)}.plugin-panel-title{font-size:.6875rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-extra-muted)}.slate-editor-chrome{flex-shrink:0}.plugin-nav{display:flex;flex-direction:column;gap:2px;padding:6px 8px 10px;flex-shrink:0;border-bottom:1px solid var(--border);background:var(--editor-sidebar-bg)}.plugin-nav-item{display:flex;align-items:center;gap:10px;width:100%;padding:9px 10px;border:none;background:transparent;border-radius:var(--radius-md);cursor:pointer;font-family:inherit;font-size:.8125rem;font-weight:500;color:var(--text-secondary);text-align:left;transition:background .15s,color .15s}.plugin-nav-item:hover{background:#0f172a0d;color:var(--text)}.plugin-nav-item.active{background:var(--primary-light);color:var(--primary);font-weight:600;box-shadow:inset 3px 0 0 var(--primary)}.plugin-nav-icon{display:flex;align-items:center;justify-content:center;width:20px;flex-shrink:0;opacity:.85}.plugin-nav-item.active .plugin-nav-icon{opacity:1}.plugin-nav-label{flex:1;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.plugin-tabs{display:none}.plugin-content{background:var(--surface)}.plugin-content-inner{padding:16px}.plugin-section-title{color:var(--text);font-size:.875rem;font-weight:700;border-bottom:1px solid var(--border);padding-bottom:10px;margin-bottom:14px}.plugin-input,.plugin-select,.plugin-textarea{border-color:var(--border);border-radius:var(--radius);background:var(--surface-hover)}.plugin-input:focus,.plugin-textarea:focus{border-color:var(--primary-muted);background:var(--surface);box-shadow:var(--shadow-focus)}.editor-main-area .empty-state{flex:1;background:var(--paper);color:var(--text-muted)}.modal-overlay{background:#0f172a80;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal-card{border-radius:var(--radius-lg);border:1px solid var(--border)}.modal-card.modal-card-compact{max-height:none;overflow:visible}.modal-header{padding:20px 24px 16px}.modal-header h2{font-size:1.0625rem;letter-spacing:-.01em}.empty-state{padding:64px 24px}.empty-icon{color:var(--text-extra-muted);opacity:.4}.empty-state h3{font-weight:700;letter-spacing:-.01em}.loading-container{color:var(--text-muted);font-size:.9375rem}@media (max-width: 960px){.auth-page{grid-template-columns:1fr;background:linear-gradient(180deg,#0f172a,#1a2744 22%,#5a7094 52%,#c5d0e0 78%,#eef2f7)}.auth-page:after{left:0;width:100%;height:18%;top:28%;bottom:auto;background:linear-gradient(180deg,transparent 0%,rgba(255,255,255,.08) 50%,transparent 100%)}.auth-brand-panel{display:none}.auth-form-panel{padding:48px 24px 32px;align-items:flex-start}.auth-card{max-width:100%;background:#ffffffeb}.auth-mobile-brand{display:flex}.landing-hero{grid-template-columns:1fr;padding:48px 24px 40px;gap:40px}.landing-hero-content h1{font-size:2rem}.landing-hero-visual{order:-1}.landing-features-grid{grid-template-columns:1fr}.landing-nav{padding:14px 20px}.landing-features{padding:0 24px 60px}}.tl-preset-chip{padding:4px 10px;font-size:.72rem;font-weight:500;border:1px solid var(--border-subtle, #e5e7eb);border-radius:999px;background:#fff;color:var(--text-muted, #6b7280);cursor:pointer;transition:border-color .15s,color .15s,background .15s}.tl-preset-chip:hover{border-color:var(--brand-primary, #4f46e5);color:var(--brand-primary, #4f46e5)}.tl-preset-chip.active{background:var(--brand-primary-soft, #eef2ff);border-color:var(--brand-primary, #4f46e5);color:var(--brand-primary, #4f46e5);font-weight:600}.tl-settings-sep{color:var(--text-muted);font-weight:600;align-self:center;flex-shrink:0}.tl-grip{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:20px;padding:4px 0;margin:0;border:none;background:transparent;color:#cbd5e1;cursor:grab;border-radius:4px;transition:color .15s,background .15s}.tl-grip:hover{color:#64748b;background:#f1f5f9}.tl-grip:active{cursor:grabbing}.tl-drag-line{position:absolute;left:0;right:0;height:0;border-top:1px dashed var(--brand-primary, #6366f1);z-index:2;pointer-events:none}.tl-editor-snap-guide{position:absolute;left:0;right:0;height:0;border-top:1px solid rgba(99,102,241,.28);z-index:2;pointer-events:none}.tl-empty-hint{margin-top:6px!important;font-size:.78rem!important;color:#94a3b8!important}.tl-plugin-compact{display:flex;flex-direction:column;gap:10px}.tl-compact-range{font-size:.75rem;font-weight:600;color:var(--text-muted, #6b7280);padding:6px 10px;background:#f8fafc;border-radius:6px;text-align:center}.tl-compact-list{display:flex;flex-direction:column;gap:6px}.tl-compact-item{display:flex;gap:8px;align-items:flex-start;padding:8px 10px;background:#fff;border:1px solid var(--border-subtle, #e5e7eb);border-radius:8px}.tl-compact-year{flex-shrink:0;font-size:.68rem;font-weight:700;color:var(--brand-primary, #6366f1);font-variant-numeric:tabular-nums;min-width:36px}.tl-compact-text{font-size:.75rem;line-height:1.4;color:var(--text-primary, #374151);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.tl-compact-more{margin:0;font-size:.68rem;color:#94a3b8;text-align:center}.tl-compact-empty{padding:16px 8px!important}.tl-compact-empty .map-empty-icon{opacity:.35}.tl-editor-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a8c;display:flex;align-items:center;justify-content:center;z-index:1100;padding:16px;animation:fadeIn .15s ease}.tl-editor-container{background:var(--surface, #fff);border-radius:14px;box-shadow:0 24px 48px #0f172a2e;width:min(96vw,1200px);height:min(90vh,820px);display:flex;flex-direction:column;overflow:hidden;animation:slideUp .2s ease}.tl-editor-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 18px;border-bottom:1px solid var(--border-subtle, #e5e7eb);flex-shrink:0}.tl-editor-header h2{margin:0;font-size:1.05rem;font-weight:700;display:flex;align-items:center;gap:8px}.tl-editor-count{font-size:.78rem;font-weight:500;color:var(--text-muted, #6b7280)}.tl-editor-header-actions{display:flex;align-items:center;gap:8px}.tl-editor-range-badge{font-size:.75rem;font-weight:600;color:#475569;padding:4px 10px;background:#f1f5f9;border-radius:6px;font-variant-numeric:tabular-nums}.tl-editor-settings-bar{padding:10px 18px;border-bottom:1px solid var(--border-subtle, #e5e7eb);background:#f8fafc;display:flex;flex-direction:column;gap:10px;flex-shrink:0}.tl-editor-presets{display:flex;flex-wrap:wrap;gap:6px}.tl-editor-settings-row{display:flex;align-items:center;gap:8px}.tl-editor-settings-row .plugin-input.sm{width:100px;margin:0}.tl-editor-body{flex:1;min-height:0;display:flex}.tl-editor-canvas-wrap{flex:1;min-width:0;display:flex;flex-direction:column;min-height:0}.tl-editor-canvas-toolbar{display:flex;align-items:center;justify-content:space-between;padding:8px 14px;border-bottom:1px solid var(--border-subtle, #e5e7eb);background:#fff;flex-shrink:0}.tl-editor-canvas-label{font-size:.75rem;font-weight:600;color:#64748b}.tl-editor-zoom{display:flex;align-items:center;gap:6px}.tl-editor-zoom-val{font-size:.72rem;font-weight:600;color:#475569;min-width:42px;text-align:center;font-variant-numeric:tabular-nums}.tl-editor-fit-hint{display:flex;align-items:center;gap:10px;padding:8px 14px;background:#eef2ff;border-bottom:1px solid #c7d2fe;font-size:.75rem;color:#4338ca;flex-shrink:0}.tl-editor-fit-hint span{flex:1}.tl-editor-fit-dismiss{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border:none;background:transparent;color:#6366f1;border-radius:4px;cursor:pointer}.tl-editor-fit-dismiss:hover{background:#6366f11f}.tl-editor-sidebar{width:280px;flex-shrink:0;border-right:1px solid var(--border-subtle, #e5e7eb);display:flex;flex-direction:column;background:#fafbfc}.tl-editor-search{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--border-subtle, #e5e7eb);color:#94a3b8}.tl-editor-search input{flex:1;border:none;background:transparent;font-size:.82rem;outline:none;color:var(--text-primary, #1f2937)}.tl-editor-list{flex:1;overflow-y:auto;padding:8px;display:flex;flex-direction:column;gap:4px}.tl-editor-list-empty{margin:24px 12px;font-size:.78rem;color:#94a3b8;text-align:center}.tl-editor-list-item{display:flex;gap:10px;align-items:flex-start;width:100%;padding:10px 12px;border:1px solid transparent;border-radius:8px;background:#fff;cursor:pointer;text-align:left;transition:border-color .15s,box-shadow .15s}.tl-editor-list-item:hover{border-color:#e2e8f0}.tl-editor-list-item.active{border-color:var(--brand-primary, #6366f1);box-shadow:0 0 0 1px #6366f126}.tl-editor-list-item.dragging{border-color:#818cf8;background:#eef2ff}.tl-editor-list-year-from{font-weight:500;color:#94a3b8;font-size:.65rem}.tl-editor-list-year{flex-shrink:0;font-size:.72rem;font-weight:700;color:var(--brand-primary, #6366f1);font-variant-numeric:tabular-nums;min-width:42px}.tl-editor-list-text{font-size:.8rem;line-height:1.45;color:#374151}.tl-editor-sidebar-footer{padding:12px;border-top:1px solid var(--border-subtle, #e5e7eb);background:#fff}.tl-editor-form-title{font-size:.75rem;font-weight:600;color:#64748b;margin-bottom:8px}.tl-editor-form .plugin-input,.tl-editor-form .plugin-textarea{margin-bottom:8px}.tl-editor-canvas{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;background:linear-gradient(180deg,#f8fafc,#f1f5f9);scrollbar-width:thin;scrollbar-color:rgba(100,116,139,.3) transparent}.tl-editor-track{position:relative;min-height:100%;user-select:none;-webkit-user-select:none;cursor:crosshair;padding:0 24px;--tl-conn-len: 56px;--tl-card-inset: 20px}.tl-editor-axis{position:absolute;left:50%;transform:translate(-50%);width:2px;background:linear-gradient(180deg,var(--brand-primary, #6366f1) 0%,#94a3b8 55%,#cbd5e1 100%);border-radius:1px;z-index:1}.tl-editor-axis-arrow{position:absolute;left:50%;transform:translate(-50%);width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:8px solid var(--brand-primary, #6366f1)}.tl-editor-tick{position:absolute;transform:translateY(-50%);font-size:.68rem;font-weight:500;color:#94a3b8;white-space:nowrap;pointer-events:none;font-variant-numeric:tabular-nums;z-index:1}.tl-editor-tick-left{right:calc(50% + 14px);text-align:right}.tl-editor-tick-right{left:calc(50% + 14px);text-align:left}.tl-editor-tick.edge{font-weight:700;color:#475569;font-size:.75rem}.tl-editor-canvas-empty{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);text-align:center;color:#94a3b8;pointer-events:none}.tl-editor-canvas-empty p{margin:12px 0 0;font-size:.88rem}.tl-editor-event{position:absolute;left:0;right:0;z-index:3;transform:translateY(-50%);pointer-events:none}.tl-editor-event-left .tl-editor-card{position:absolute;top:50%;right:calc(50% + var(--tl-conn-len));transform:translateY(-50%);width:min(calc(50% - var(--tl-conn-len) - var(--tl-card-inset)),320px)}.tl-editor-event-right .tl-editor-card{position:absolute;top:50%;left:calc(50% + var(--tl-conn-len));transform:translateY(-50%);width:min(calc(50% - var(--tl-conn-len) - var(--tl-card-inset)),320px)}.tl-editor-event-left .tl-editor-card,.tl-editor-event-right .tl-editor-card{margin:0}.tl-editor-conn{position:absolute;top:50%;height:2px;background:#94a3b8;transform:translateY(-50%);z-index:2;pointer-events:none}.tl-editor-conn-left{right:50%;width:var(--tl-conn-len)}.tl-editor-conn-right{left:50%;width:var(--tl-conn-len)}.tl-editor-conn:after{content:"";position:absolute;top:50%;width:10px;height:10px;border-radius:50%;background:#fff;border:2px solid var(--brand-primary, #6366f1);box-sizing:border-box}.tl-editor-conn-left:after{--tl-node-tx: 50%;right:0;transform:translate(50%,-50%)}.tl-editor-conn-right:after{--tl-node-tx: -50%;left:0;transform:translate(-50%,-50%)}.tl-editor-event.dragging .tl-editor-conn{background:repeating-linear-gradient(90deg,var(--brand-primary, #6366f1) 0,var(--brand-primary, #6366f1) 5px,transparent 5px,transparent 9px);height:2px}.tl-editor-event.dragging .tl-editor-conn:after{border-color:#4338ca;box-shadow:0 0 0 4px #6366f138;transform-origin:center;animation:tl-node-pulse .9s ease-in-out infinite}@keyframes tl-node-pulse{0%,to{transform:translate(var(--tl-node-tx, -50%),-50%) scale(1)}50%{transform:translate(var(--tl-node-tx, -50%),-50%) scale(1.15)}}.tl-editor-card{display:flex;align-items:flex-start;gap:6px;padding:10px 12px;background:#fff;border:1px solid #e2e8f0;border-radius:10px;box-shadow:0 2px 8px #0f172a0f;cursor:grab;touch-action:none;pointer-events:auto;transition:border-color .15s,box-shadow .15s;box-sizing:border-box}.tl-editor-card:hover{border-color:#c7d2fe;box-shadow:0 4px 12px #6366f11a}.tl-editor-event.selected .tl-editor-card{border-color:var(--brand-primary, #6366f1);box-shadow:0 0 0 2px #6366f126}.tl-editor-event.dragging{z-index:10}.tl-editor-event.dragging .tl-editor-card{opacity:.98;cursor:grabbing;border-color:var(--brand-primary, #6366f1);box-shadow:0 8px 24px #6366f138}.tl-editor-event-left.dragging .tl-editor-card,.tl-editor-event-right.dragging .tl-editor-card{transform:translateY(-50%)}.tl-editor-card .tl-grip{pointer-events:none;cursor:inherit;color:#94a3b8}.tl-editor-card-body{flex:1;min-width:0}.tl-editor-card-year{font-size:.72rem;font-weight:700;color:var(--brand-primary, #6366f1);margin-bottom:4px;font-variant-numeric:tabular-nums}.tl-editor-card-year-preview{font-weight:500;color:#94a3b8;font-size:.65rem}.tl-editor-year-change{display:inline-flex;align-items:center;gap:4px;flex-wrap:wrap}.tl-editor-year-from{color:#94a3b8;text-decoration:line-through;font-weight:500}.tl-editor-year-arrow{color:var(--brand-primary, #6366f1);font-weight:700}.tl-editor-year-to{color:var(--brand-primary, #6366f1);font-weight:800;font-size:.82rem}.tl-editor-year-unit{color:var(--brand-primary, #6366f1);font-weight:700}.tl-editor-drag-hint{margin-top:6px;font-size:.62rem;color:#94a3b8;letter-spacing:.02em}.tl-editor-card-text{font-size:.85rem;line-height:1.5;color:#1f2937}.tl-editor-card-edit-btn{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:26px;height:26px;border:none;background:#f1f5f9;border-radius:6px;color:#64748b;cursor:pointer;transition:background .15s,color .15s}.tl-editor-card-edit-btn:hover{background:#e0e7ff;color:var(--brand-primary, #6366f1)}@media (max-width: 768px){.editable,.toolbar,.editor-header,.editor-statusbar{padding-left:20px;padding-right:20px}.editable{padding-top:20px;padding-bottom:40px;font-size:16px}.tl-editor-container{width:100vw;height:100vh;max-height:none;border-radius:0}.tl-editor-body{flex-direction:column}.tl-editor-sidebar{width:100%;max-height:38vh;border-right:none;border-bottom:1px solid var(--border-subtle, #e5e7eb)}.tl-editor-event-left .tl-editor-card,.tl-editor-event-right .tl-editor-card{width:min(calc(50% - var(--tl-conn-len) - 12px),200px)}}.modal-card-wide{max-width:560px;width:92vw}.version-list{max-height:360px;overflow-y:auto;padding:.5rem 0}.version-item{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem 1rem;border-bottom:1px solid var(--border-subtle)}.version-info{display:flex;flex-direction:column;gap:.25rem;min-width:0}.version-meta{font-size:.8rem;color:var(--text-muted)}.trash-actions{padding:0 1rem .5rem;display:flex;justify-content:flex-end}.feature-modal-overlay{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.feature-modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding:1.25rem 1.5rem 1rem;border-bottom:1px solid var(--border-subtle, #e5e7eb)}.feature-modal-title{display:flex;align-items:flex-start;gap:.75rem;min-width:0}.feature-modal-title h2{font-size:1.0625rem;font-weight:700;letter-spacing:-.02em;margin:0;line-height:1.3}.feature-modal-subtitle{font-size:.8125rem;color:var(--text-muted, #64748b);margin:.15rem 0 0;font-weight:400}.feature-modal-icon{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:12px;flex-shrink:0}.feature-modal-icon.stats-icon{background:linear-gradient(135deg,#eef2ff,#e0e7ff);color:#4f46e5}.feature-modal-icon.search-icon{background:linear-gradient(135deg,#ecfdf5,#d1fae5);color:#059669}.feature-modal-body{padding:1.25rem 1.5rem}.feature-modal-footer{display:flex;justify-content:flex-end;gap:.5rem;padding:1rem 1.5rem 1.25rem;border-top:1px solid var(--border-subtle, #e5e7eb);background:var(--surface-muted, #f8fafc);border-radius:0 0 var(--radius-lg, 12px) var(--radius-lg, 12px)}.stats-modal{max-width:480px;width:92vw;overflow:hidden}.stats-hero{display:flex;align-items:center;gap:1.25rem;padding:1.25rem;margin-bottom:1rem;background:linear-gradient(135deg,#f8fafc,#eef2ff);border:1px solid #e0e7ff;border-radius:14px}.stats-hero-ring{--progress: 0%;position:relative;width:88px;height:88px;flex-shrink:0;border-radius:50%;background:conic-gradient(#4f46e5 var(--progress),#e2e8f0 var(--progress));display:flex;align-items:center;justify-content:center}.stats-hero-ring:before{content:"";position:absolute;top:6px;right:6px;bottom:6px;left:6px;border-radius:50%;background:#fff}.stats-hero-ring-inner{position:relative;z-index:1;text-align:center;display:flex;flex-direction:column;align-items:center}.stats-hero-value{font-size:1.375rem;font-weight:800;color:#1e293b;line-height:1.1;letter-spacing:-.03em}.stats-hero-unit{font-size:.6875rem;color:#64748b;margin-top:.1rem}.stats-hero-meta{flex:1;min-width:0}.stats-hero-target{display:flex;align-items:center;gap:.4rem;font-size:.8125rem;color:#475569;margin-bottom:.5rem}.stats-hero-target strong{color:#1e293b}.stats-hero-pct{margin-left:auto;font-weight:700;color:#4f46e5;background:#eef2ff;padding:.1rem .45rem;border-radius:999px;font-size:.75rem}.stats-hero-bar{height:6px;background:#e2e8f0;border-radius:999px;overflow:hidden;margin-bottom:.5rem}.stats-hero-bar-fill{height:100%;background:linear-gradient(90deg,#6366f1,#4f46e5);border-radius:999px;transition:width .4s ease}.stats-hero-hint{font-size:.78rem;color:#64748b;margin:0}.stats-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:.625rem;margin-bottom:1.25rem}.stats-metric-card{display:flex;align-items:center;gap:.625rem;padding:.75rem;border-radius:12px;border:1px solid var(--border-subtle, #e5e7eb);background:#fff}.stats-metric-icon{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:10px;flex-shrink:0}.stats-metric-card.streak .stats-metric-icon{background:#fff7ed;color:#ea580c}.stats-metric-card.week .stats-metric-icon{background:#f0fdf4;color:#16a34a}.stats-metric-card.book .stats-metric-icon{background:#eff6ff;color:#2563eb}.stats-metric-value{font-size:1.125rem;font-weight:700;line-height:1.2;letter-spacing:-.02em}.stats-metric-label{font-size:.72rem;color:#64748b;margin-top:.1rem}.stats-goal-panel{padding:1rem;margin-bottom:1.25rem;background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px}.stats-section-label{display:block;font-size:.8125rem;font-weight:600;color:#334155;margin-bottom:.625rem}.stats-section-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem}.stats-section-meta{font-size:.72rem;color:#94a3b8}.stats-goal-control{display:flex;align-items:center;gap:.5rem}.stats-goal-btn{width:36px;height:36px;border:1px solid #cbd5e1;border-radius:10px;background:#fff;color:#475569;font-size:1.125rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s}.stats-goal-btn:hover{border-color:#4f46e5;color:#4f46e5;background:#eef2ff}.stats-goal-input-wrap{flex:1;display:flex;align-items:center;gap:.5rem;background:#fff;border:1px solid #cbd5e1;border-radius:10px;padding:0 .875rem;height:40px}.stats-goal-input-wrap:focus-within{border-color:#4f46e5;box-shadow:0 0 0 3px #4f46e51f}.stats-goal-input-wrap input{flex:1;border:none;outline:none;font-size:1rem;font-weight:600;color:#1e293b;background:transparent;font-family:inherit;min-width:0}.stats-goal-unit{font-size:.8125rem;color:#94a3b8;white-space:nowrap}.stats-chart-panel{padding-top:.25rem}.stats-chart{display:flex;align-items:flex-end;justify-content:space-between;gap:.35rem;height:110px;padding:0 .25rem}.stats-chart-col{flex:1;display:flex;flex-direction:column;align-items:center;min-width:0;height:100%}.stats-chart-col.today .stats-chart-bar{background:linear-gradient(180deg,#6366f1,#4f46e5)}.stats-chart-col.today .stats-chart-label{color:#4f46e5;font-weight:700}.stats-chart-value{font-size:.625rem;color:#64748b;height:14px;line-height:14px;margin-bottom:4px;white-space:nowrap}.stats-chart-bar-wrap{flex:1;display:flex;align-items:flex-end;width:100%;justify-content:center}.stats-chart-bar{width:100%;max-width:28px;min-height:6px;background:linear-gradient(180deg,#a5b4fc,#818cf8);border-radius:6px 6px 2px 2px;transition:height .35s ease}.stats-chart-label{font-size:.6875rem;color:#94a3b8;margin-top:6px}.search-modal{max-width:560px;width:92vw;overflow:hidden;display:flex;flex-direction:column;max-height:min(80vh,640px)}.search-modal-searchbox{display:flex;align-items:center;gap:.625rem;margin:0 1.5rem;padding:.5rem .5rem .5rem 1rem;background:#f8fafc;border:1px solid #e2e8f0;border-radius:14px;transition:border-color .15s,box-shadow .15s}.search-modal-searchbox:focus-within{border-color:#059669;box-shadow:0 0 0 3px #0596691a;background:#fff}.search-modal-search-icon{color:#94a3b8;flex-shrink:0}.search-modal-searchbox:focus-within .search-modal-search-icon{color:#059669}.search-modal-input{flex:1;border:none;outline:none;background:transparent;font-size:.9375rem;color:#1e293b;font-family:inherit;min-width:0}.search-modal-input::placeholder{color:#94a3b8}.search-modal-submit{border-radius:10px!important;padding:.5rem 1.125rem!important;flex-shrink:0}.search-modal-submit:disabled{opacity:.55;cursor:not-allowed}.search-modal-body{flex:1;overflow-y:auto;min-height:220px;padding:1rem 1.5rem 1.25rem;margin-top:1rem}.search-modal-state{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:2.5rem 1rem;color:#64748b}.search-state-icon{margin-bottom:.75rem;color:#059669;opacity:.85}.search-state-icon.muted{color:#cbd5e1}.search-state-title{font-size:.9375rem;font-weight:600;color:#334155;margin:0 0 .35rem}.search-state-desc{font-size:.8125rem;color:#94a3b8;margin:0;max-width:260px;line-height:1.5}.search-results-head{font-size:.8125rem;color:#64748b;margin-bottom:.75rem;padding-bottom:.625rem;border-bottom:1px solid #f1f5f9}.search-results-head strong{color:#059669;font-weight:700}.search-results-list{display:flex;flex-direction:column;gap:.5rem}.search-result-card{display:flex;align-items:flex-start;gap:.75rem;width:100%;text-align:left;padding:.875rem 1rem;border:1px solid #e2e8f0;border-radius:12px;background:#fff;cursor:pointer;transition:all .15s;font-family:inherit}.search-result-card:hover{border-color:#059669;background:#f0fdf4;box-shadow:0 2px 8px #05966914;transform:translateY(-1px)}.search-result-icon{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:8px;background:#f1f5f9;color:#64748b;flex-shrink:0;margin-top:.1rem}.search-result-card:hover .search-result-icon{background:#d1fae5;color:#059669}.search-result-content{flex:1;min-width:0}.search-result-path{display:flex;align-items:center;flex-wrap:wrap;gap:.3rem;font-size:.8125rem;color:#64748b;margin-bottom:.35rem}.search-chapter-name{font-weight:600;color:#1e293b}.search-path-sep{color:#cbd5e1}.search-result-snippet{font-size:.8125rem;color:#475569;line-height:1.6;margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.search-highlight{background:#fef08a;color:#854d0e;padding:0 .1em;border-radius:2px;font-style:normal}.search-badge{font-size:.625rem;font-weight:600;letter-spacing:.02em;background:#ecfdf5;color:#059669;padding:.1rem .4rem;border-radius:4px;border:1px solid #a7f3d0}@media (max-width: 480px){.stats-hero{flex-direction:column;text-align:center}.stats-hero-target{justify-content:center;flex-wrap:wrap}.stats-hero-pct{margin-left:0}.stats-metrics{grid-template-columns:1fr}.search-modal-searchbox{flex-wrap:wrap;margin:0 1rem}.search-modal-submit{width:100%;justify-content:center}}.sidebar-tabs{display:flex;gap:.25rem}.sidebar-tab{display:flex;align-items:center;gap:.25rem;padding:.25rem .5rem;font-size:.78rem;border:none;background:transparent;color:var(--text-muted);cursor:pointer;border-radius:6px}.sidebar-tab.active{background:var(--brand-primary-soft);color:var(--brand-primary);font-weight:600}.outline-view{padding:.5rem}.outline-vol{margin-bottom:1rem}.outline-vol-title{font-size:.78rem;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;padding:.25rem .5rem}.outline-chapter{padding:.35rem .5rem;border-radius:8px;margin-bottom:.35rem}.outline-chapter.active{background:var(--brand-primary-soft)}.outline-chapter-title{display:block;width:100%;text-align:left;border:none;background:transparent;font-weight:600;font-size:.85rem;cursor:pointer;padding:.25rem 0;color:inherit}.outline-summary-input{width:100%;border:1px solid var(--border-subtle);border-radius:6px;padding:.35rem .5rem;font-size:.78rem;resize:vertical;background:var(--surface-base);color:inherit;margin-top:.25rem}.export-options-wide{min-width:200px}.export-mode-row{display:flex;gap:.25rem;padding:.35rem;border-bottom:1px solid var(--border-subtle)}.export-mode-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:.25rem;padding:.35rem;border:none;background:transparent;border-radius:6px;cursor:pointer;font-size:.78rem}.export-mode-btn.active{background:var(--brand-primary-soft);color:var(--brand-primary)}.editor-topbar-actions{display:flex;align-items:center;gap:.35rem}.form-group-row{display:flex;flex-direction:column;gap:.5rem}.share-link-preview{font-size:.82rem;color:var(--brand-primary)}.reader-page{height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch;background:#faf9f6;color:#1a1a1a}.reader-dark{background:#1a1a22;color:#e8e8ec}.reader-header{display:flex;align-items:center;gap:1rem;padding:.75rem 1.5rem;border-bottom:1px solid rgba(0,0,0,.08);background:#ffffffe6;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);position:sticky;top:0;z-index:10}.reader-dark .reader-header{background:#1a1a22f2;border-color:#ffffff14}.reader-book-title{flex:1;font-weight:600;display:flex;align-items:center;gap:.5rem}.reader-body{display:flex;max-width:1200px;margin:0 auto;min-height:calc(100vh - 56px)}.reader-sidebar{width:240px;flex-shrink:0;padding:1.5rem 1rem;border-right:1px solid rgba(0,0,0,.06);overflow-y:auto}.reader-dark .reader-sidebar{border-color:#ffffff0f}.reader-vol{margin-bottom:1rem}.reader-vol-title{font-size:.78rem;font-weight:700;color:#888;margin-bottom:.35rem}.reader-chapter{display:block;width:100%;text-align:left;border:none;background:transparent;padding:.35rem .5rem;border-radius:6px;cursor:pointer;font-size:.85rem;color:inherit}.reader-chapter:hover,.reader-chapter.active{background:#6366f11a;color:#6366f1}.reader-content{flex:1;padding:2rem 3rem;max-width:720px;line-height:2;font-size:17px}.reader-content h1{text-align:center;margin-bottom:2rem;font-size:1.5rem}.reader-content p{text-indent:2em;margin-bottom:1em}.reader-mode-badge{display:inline-flex;align-items:center;gap:.25rem;font-size:.72rem;font-weight:500;color:var(--brand-primary, #6366f1);background:#6366f11a;padding:.15rem .45rem;border-radius:4px;margin-left:.5rem}.reader-chapter-heading{text-align:center;margin-bottom:2rem;font-size:1.25rem;font-weight:600}.reader-readonly{-webkit-user-select:text;user-select:text}.reader-empty-chapter{color:#999;text-align:center;margin-top:3rem}.vol-drag{opacity:.3}.editor-tree-volume-header:hover .vol-drag{opacity:1}.platform-native body,.platform-native #root{padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom)}.platform-native .app-topbar,.platform-native .editor-full-layout .app-topbar{padding-top:max(.5rem,env(safe-area-inset-top))}@media (max-width: 768px){.platform-native .app-layout{flex-direction:column}.platform-native .sidebar{width:100%;max-height:40vh}.platform-native .editor-body{flex-direction:column}.platform-native .editor-sidebar{width:100%;max-height:35vh}.platform-native .plugin-panel{display:none}}
