*{box-sizing:border-box}:root{--bg:#f6f4ef;--surface:#fff;--surface-2:#faf9f5;--text:#2b2b2b;--muted:#757068;--border:#e3ded4;--accent:#8a6d4f;--shadow:#1e190f1a}:root[data-theme=dark]{--bg:#141416;--surface:#1b1b1e;--surface-2:#232326;--text:#d8d5cf;--muted:#8f8b83;--border:#333338;--accent:#c9a97f;--shadow:#00000073}body{background:var(--bg);color:var(--text);margin:0;font-family:system-ui,-apple-system,Segoe UI,Noto Sans TC,sans-serif}#root{height:100dvh}button,select,input,textarea{font:inherit;color:inherit}button{cursor:pointer;border:1px solid var(--border);background:var(--surface);white-space:nowrap;touch-action:manipulation;border-radius:8px;padding:.4rem .85rem;transition:background .15s,border-color .15s}button:hover{background:var(--surface-2);border-color:var(--muted)}button:disabled{opacity:.5;cursor:default}button.ghost{background:0 0;border-color:#0000}button.ghost:hover{background:var(--surface-2)}button.ghost.active{background:var(--surface-2);border-color:var(--border);color:var(--accent)}select{border:1px solid var(--border);background:var(--surface);border-radius:8px;padding:.3rem .5rem}.error{color:#7a2020;background:#fdd;border:1px solid #e99;border-radius:8px;margin:0 2rem;padding:.5rem 1rem}.empty{color:var(--muted);text-align:center;padding:3rem 1rem}.library{min-height:100dvh;padding-bottom:2rem}.library-header{border-bottom:1px solid var(--border);background:var(--surface);flex-wrap:wrap;align-items:center;gap:1rem;padding:1.25rem 2rem;display:flex}.library-header h1{letter-spacing:.04em;color:var(--accent);margin:0 auto 0 0;font-size:1.4rem}.library-actions{gap:.5rem;display:flex}.book-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:2rem 1.5rem;padding:2rem;display:grid}.book-card{flex-direction:column;gap:.6rem;display:flex}.book-cover{aspect-ratio:2/3;border:1px solid var(--border);background:var(--surface);width:100%;box-shadow:0 2px 8px var(--shadow);border-radius:6px;justify-content:center;align-items:center;padding:0;transition:transform .15s,box-shadow .15s;display:flex;overflow:hidden}.book-cover:hover{box-shadow:0 6px 16px var(--shadow);transform:translateY(-3px)}.book-cover img{object-fit:cover;width:100%;height:100%}.book-cover span{padding:.5rem;font-weight:600}.book-info{flex-direction:column;gap:.15rem;display:flex}.book-info strong{font-size:.95rem;line-height:1.3}.book-info small{color:var(--muted)}.book-card-actions{gap:.4rem;margin-top:.3rem;display:flex}.book-card-actions button{padding:.2rem .55rem;font-size:.78rem}.reader{flex-direction:column;height:100dvh;display:flex}.reader-header{border-bottom:1px solid var(--border);background:var(--surface);align-items:center;gap:.5rem;padding:.5rem 1rem;display:flex}.reader-title{text-overflow:ellipsis;white-space:nowrap;margin:0 auto 0 .5rem;font-size:.95rem;overflow:hidden}.reader-progress{color:var(--muted);font-variant-numeric:tabular-nums;margin-right:.5rem;font-size:.85rem}.panel-backdrop{z-index:9;position:fixed;inset:0}.settings-panel{z-index:10;background:var(--surface);border:1px solid var(--border);box-shadow:0 8px 24px var(--shadow);border-radius:12px;flex-direction:column;gap:.75rem;min-width:240px;padding:1rem 1.25rem;display:flex;position:absolute;top:3.2rem;right:1rem}.settings-panel label{color:var(--muted);flex-direction:column;gap:.3rem;font-size:.85rem;display:flex}.settings-panel select,.settings-panel input{color:var(--text)}.reader-body{flex:1;min-height:0;display:flex;position:relative}.sidebar{background:var(--surface);flex-direction:column;flex-shrink:0;gap:.5rem;width:300px;padding:.75rem;display:flex;overflow-y:auto}.sidebar-left{border-right:1px solid var(--border)}.sidebar-right{border-left:1px solid var(--border)}.sidebar-title{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:.25rem .4rem;font-size:.8rem;font-weight:600}.toc-item{text-align:left;background:0 0;border:none;border-radius:6px;padding:.35rem .5rem;font-size:.9rem;line-height:1.4}.toc-item:hover{background:var(--surface-2);border:none}.viewer-wrap{background:var(--surface);flex:1;align-items:stretch;min-width:0;display:flex}.viewer{flex:1;min-width:0}.page-btn{color:var(--muted);background:0 0;border:none;border-radius:0;width:3rem;font-size:2rem}.page-btn:hover{color:var(--text);background:0 0;border:none}.highlight-toolbar{background:var(--surface);border:1px solid var(--border);box-shadow:0 8px 24px var(--shadow);border-radius:12px;align-items:center;gap:.5rem;padding:.5rem .75rem;display:flex;position:fixed;bottom:1.5rem;left:50%;transform:translate(-50%)}.swatch{border:1px solid #00000026;border-radius:50%;width:1.6rem;height:1.6rem;padding:0}.swatch:hover{transform:scale(1.1)}.annotation-item{background:var(--surface-2);border-left:3px solid #f7e463;border-radius:0 8px 8px 0;padding:.5rem .7rem}.annotation-item blockquote{cursor:pointer;margin:0 0 .3rem;font-size:.88rem;line-height:1.5}.annotation-item blockquote:hover{text-decoration:underline}.note-text{color:var(--muted);margin:.2rem 0;font-size:.85rem}.note-editor{flex-direction:column;gap:.3rem;display:flex}.note-editor textarea{resize:vertical;background:var(--surface);border:1px solid var(--border);border-radius:6px;min-height:4rem;padding:.4rem;font-size:.85rem}.annotation-actions{gap:.4rem;margin-top:.3rem;display:flex}.annotation-actions button{padding:.15rem .45rem;font-size:.75rem}.auth-panel{flex-wrap:wrap;align-items:center;gap:.5rem;margin-left:auto;font-size:.85rem;display:flex}.sync-status{color:var(--muted)}.auth-forms{flex-wrap:wrap;gap:.5rem;display:flex}.auth-forms form{gap:.3rem;display:flex}.auth-forms input,.recovery-codes input[type=text]{background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:.3rem .5rem;font-size:.85rem}.recovery-codes{flex-direction:column;align-items:flex-start;width:100%}.recovery-codes pre{background:var(--surface);border:1px solid var(--border);-webkit-user-select:all;user-select:all;border-radius:6px;padding:.6rem .8rem;font-size:.9rem;line-height:1.5}@media (width<=700px){.library-header{gap:.5rem .75rem;padding:.75rem 1rem}.book-grid{grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:1.25rem 1rem;padding:1rem}.reader-header{gap:.25rem;padding:.4rem .5rem}.reader-header button{padding:.35rem .5rem;font-size:.85rem}.reader-progress{display:none}.sidebar{z-index:5;border:none;width:auto;position:absolute;inset:0}.page-btn{display:none}.settings-panel{min-width:0;left:.5rem;right:.5rem}.highlight-toolbar{flex-wrap:wrap;justify-content:center;max-width:calc(100vw - 1.5rem)}.error{margin:0 1rem}}
