:root{--bg: #f3f1ec;--paper: #fffdfa;--ink: #1e2227;--ink-soft: #4c525a;--muted: #8b9098;--line: #e6e2da;--accent: #c0583f;--accent-soft: #f7e6df;--shadow: 0 1px 2px rgba(31, 35, 40, .06), 0 8px 24px rgba(31, 35, 40, .06);--radius: 16px;--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-top: env(safe-area-inset-top, 0px);color-scheme:light}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Noto Sans SC,Microsoft YaHei,Roboto,sans-serif;-webkit-font-smoothing:antialiased;overscroll-behavior:none}button{font:inherit;color:inherit;border:0;background:none;padding:0;cursor:pointer}input{font:inherit;color:inherit}.app{height:100dvh;display:flex;flex-direction:column;overflow:hidden}.library{height:100%;display:flex;flex-direction:column;padding-top:calc(12px + var(--safe-top))}.library-head{padding:6px 20px 10px;display:flex;align-items:flex-end;justify-content:space-between;gap:12px}.library-title{font-size:28px;font-weight:700;letter-spacing:-.02em;margin:0}.library-sub{color:var(--muted);font-size:13px;margin-top:2px}.icon-btn{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;color:var(--ink-soft);transition:background .15s ease}.icon-btn:active{background:#0000000f}.search{margin:0 20px 14px;display:flex;align-items:center;gap:8px;background:#ece9e3;border-radius:12px;padding:0 12px;height:42px}.search input{flex:1;border:0;outline:none;background:transparent;font-size:15px}.notes-scroll{flex:1;overflow-y:auto;padding:0 16px calc(96px + var(--safe-bottom));-webkit-overflow-scrolling:touch}.notes-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.tabs{display:flex;gap:6px;padding:0 20px 10px}.tab{flex:0 0 auto;padding:8px 14px;border-radius:999px;font-size:13.5px;font-weight:600;color:var(--muted);background:#ebe7e0}.tab.is-active{background:var(--ink);color:#fff}.books-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}@media(min-width:720px){.books-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(min-width:1040px){.books-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}.book-card{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;text-align:left;display:flex;flex-direction:column}.book-card:active{transform:scale(.985)}.book-cover{position:relative;height:140px;background:linear-gradient(160deg,#f0ece4,#e3ddd2);display:flex;align-items:center;justify-content:center;overflow:hidden}.book-cover img{width:100%;height:100%;object-fit:cover;object-position:top center;display:block}.book-glyph{font-size:15px;font-weight:700;letter-spacing:.14em;color:#9a9384}.book-badge{position:absolute;left:8px;top:8px;font-size:10px;font-weight:700;letter-spacing:.06em;padding:3px 7px;border-radius:6px;background:#1e2227b8;color:#fff}.book-meta{padding:10px 12px 12px;display:flex;flex-direction:column;gap:3px}.book-name{font-size:13.5px;font-weight:600;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:break-all}.book-sub{font-size:11px;color:var(--muted)}.book-link{font-size:11px;color:var(--accent);margin-top:2px}.book-link.is-muted{color:#b3ada3}.book-preview{margin:4px 0 12px;border-radius:12px;overflow:hidden;background:#f2efe8;max-height:200px}.book-preview img{width:100%;height:100%;object-fit:contain;display:block}@media(min-width:720px){.notes-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(min-width:1040px){.notes-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}.note-card{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;text-align:left;display:flex;flex-direction:column;transition:transform .12s ease}.note-card:active{transform:scale(.985)}.note-cover{height:132px;background:#f4f1ea;display:flex;align-items:center;justify-content:center;overflow:hidden}.note-cover img{width:100%;height:100%;object-fit:cover;display:block}.note-cover .glyph{font-size:30px;font-weight:700;color:#b9b2a5;letter-spacing:.08em}.note-meta{padding:10px 12px 12px;display:flex;flex-direction:column;gap:4px}.note-name{font-size:15px;font-weight:600;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.note-excerpt{font-size:12px;color:var(--muted);line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:34px}.note-date{font-size:11px;color:#a9a49c}.empty{margin:48px auto;max-width:320px;text-align:center;color:var(--muted);line-height:1.7;font-size:14px}.empty strong{display:block;color:var(--ink);font-size:16px;margin-bottom:8px}.fab{position:fixed;right:20px;bottom:calc(24px + var(--safe-bottom));width:58px;height:58px;border-radius:20px;background:var(--accent);color:#fff;display:grid;place-items:center;box-shadow:0 8px 24px #c0583f59;z-index:20}.fab:active{transform:scale(.96)}.editor-screen{height:100%;display:flex;flex-direction:column;background:var(--bg)}.editor-head{display:flex;align-items:center;gap:6px;padding:calc(6px + var(--safe-top)) 10px 6px;background:#f3f1eceb;backdrop-filter:blur(12px);border-bottom:1px solid var(--line);z-index:5}.editor-head-title{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center}.title-input{width:100%;border:0;outline:none;background:transparent;text-align:center;font-size:16px;font-weight:600;text-overflow:ellipsis}.editor-head-sub{font-size:11px;color:var(--muted);margin-top:1px}.paper-scroll{flex:1;overflow-y:auto;padding:14px 12px 8px;-webkit-overflow-scrolling:touch}.paper{background:var(--paper);border-radius:14px;box-shadow:var(--shadow);min-height:100%;margin:0 auto;max-width:780px;padding:26px 22px 80px}.note-title{font-size:24px;font-weight:700;line-height:1.35;outline:none;margin-bottom:6px}.note-sub{font-size:12px;color:var(--muted);margin-bottom:18px}.ProseMirror{outline:none;font-size:16.5px;line-height:1.85;color:var(--ink);min-height:40vh}.ProseMirror>*+*{margin-top:.85em}.ProseMirror p{margin:0}.ProseMirror h1{font-size:1.55em;line-height:1.35;margin:1.1em 0 .2em}.ProseMirror h2{font-size:1.26em;line-height:1.4;margin:1em 0 .15em}.ProseMirror h3{font-size:1.08em;margin:.9em 0 .1em}.ProseMirror blockquote{margin:.8em 0;padding:2px 0 2px 14px;border-left:3px solid #d8cfc0;color:var(--ink-soft)}.ProseMirror ul,.ProseMirror ol{padding-left:1.4em}.ProseMirror img{max-width:100%;height:auto;border-radius:10px;display:block;margin:.6em auto;box-shadow:0 1px 3px #00000014}.ProseMirror figure{margin:1em 0;text-align:center}.ProseMirror figcaption{font-size:12px;color:var(--muted);margin-top:6px}.ProseMirror hr{border:0;border-top:1px solid var(--line);margin:1.4em 0}.ProseMirror .tts-active{background:#ffe7a8;border-radius:3px;box-shadow:0 0 0 2px #ffe7a8}.ProseMirror p.is-editor-empty:first-child:before{content:attr(data-placeholder);color:#b5b0a6;float:left;height:0;pointer-events:none}.bottom-dock{position:sticky;bottom:0;background:#f3f1ecf5;backdrop-filter:blur(14px);border-top:1px solid var(--line);padding-bottom:var(--safe-bottom);z-index:10}body.has-nl-badge .bottom-dock{padding-bottom:calc(54px + var(--safe-bottom))}body.has-nl-badge .build-tag{display:none}.toolbar{display:flex;gap:2px;overflow-x:auto;padding:8px 10px;scrollbar-width:none}.toolbar::-webkit-scrollbar{display:none}.tool{flex:0 0 auto;min-width:40px;height:40px;padding:0 8px;border-radius:10px;font-size:14px;font-weight:600;color:var(--ink-soft);display:grid;place-items:center}.tool:active{background:#0000000f}.tool.is-active{background:var(--accent-soft);color:var(--accent)}.tool.small{font-size:12px;font-weight:500}.tool-sep{flex:0 0 auto;width:1px;margin:8px 4px;background:var(--line)}.tts-bar{margin:0 10px 8px;background:#fff;border-radius:14px;box-shadow:var(--shadow);padding:10px 12px;display:flex;flex-direction:column;gap:8px}.tts-line{font-size:12.5px;color:var(--ink-soft);line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.tts-controls,.tts-voices{display:flex;align-items:center;gap:6px}.tts-voices .tts-select{flex:1;max-width:100%;min-width:0}.tts-controls .icon-btn{width:36px;height:36px}.tts-play{width:42px;height:42px;border-radius:50%;background:var(--accent);color:#fff;display:grid;place-items:center}.tts-spacer{flex:1}.tts-select{border:1px solid var(--line);border-radius:9px;background:#fff;font-size:12px;padding:6px 8px;max-width:40%}.rate-chip{font-size:12px;color:var(--ink-soft);border:1px solid var(--line);border-radius:9px;padding:5px 9px;background:#fff}.rate-range{width:100%;margin:6px 0 14px;accent-color:var(--accent);height:28px}.rate-presets{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}.rate-preset{padding:8px 12px;border-radius:10px;background:#efeae1;color:var(--ink-soft);font-size:13px;font-weight:600}.rate-preset.is-active{background:var(--accent);color:#fff}.sheet-backdrop{position:fixed;inset:0;background:#181a1d6b;display:flex;align-items:flex-end;justify-content:center;z-index:40;animation:fade .16s ease}.sheet{width:100%;max-width:560px;background:var(--paper);border-radius:20px 20px 0 0;padding:18px 20px calc(20px + var(--safe-bottom));animation:rise .2s ease}.sheet h3{margin:0 0 4px;font-size:17px}.sheet .hint{font-size:12.5px;color:var(--muted);line-height:1.6;margin:0 0 14px}.option-row{display:flex;align-items:center;gap:10px;padding:11px 0;border-top:1px solid var(--line);font-size:14px}.option-row input[type=checkbox]{width:20px;height:20px;accent-color:var(--accent)}.option-row .desc{font-size:12px;color:var(--muted);margin-top:2px}.btn{display:block;width:100%;padding:13px;border-radius:13px;font-size:15px;font-weight:600;text-align:center}.btn.primary{background:var(--accent);color:#fff;margin-top:14px}.btn.ghost{background:#eee9e1;color:var(--ink);margin-top:8px}.btn:disabled{opacity:.5}.progress-screen{position:fixed;inset:0;background:#f3f1ecf7;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:30px;z-index:50}.spinner{width:34px;height:34px;border-radius:50%;border:3px solid #ddd6c9;border-top-color:var(--accent);animation:spin .9s linear infinite}.progress-text{font-size:14px;color:var(--ink-soft);text-align:center}.progress-bar{width:min(300px,70vw);height:5px;background:#e3ddd2;border-radius:99px;overflow:hidden}.progress-bar>span{display:block;height:100%;background:var(--accent);border-radius:99px;transition:width .2s ease}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fade{0%{opacity:0}}@keyframes rise{0%{transform:translateY(16px);opacity:.6}}.toast{position:fixed;left:50%;bottom:calc(100px + var(--safe-bottom));transform:translate(-50%);background:#1e2227eb;color:#fff;font-size:13px;padding:10px 16px;border-radius:999px;z-index:60;max-width:86vw;text-align:center}.build-tag{position:fixed;left:10px;bottom:calc(6px + var(--safe-bottom));font-size:10px;color:#b7b1a6;pointer-events:none;z-index:30}.audio-screen{height:100%;display:flex;flex-direction:column;background:var(--bg)}.audio-title{font-size:15px;font-weight:600;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.audio-body{flex:1;display:flex;flex-direction:column;justify-content:center;gap:24px;padding:24px 22px;overflow-y:auto}.audio-sentence{font-size:22px;line-height:1.7;font-weight:600;color:var(--ink)}.audio-progress{display:flex;flex-direction:column;gap:8px}.audio-bar{height:4px;border-radius:99px;background:#e3ddd2;overflow:hidden}.audio-bar>span{display:block;height:100%;background:var(--accent);transition:width .2s ease}.audio-meta{font-size:12px;color:var(--muted)}.audio-hint{font-size:11px;color:var(--muted)}.audio-card .note-cover{height:110px}::highlight(reading){background-color:#ffe7a8;color:inherit}.audio-paper{cursor:pointer}.audio-paper .ProseMirror{min-height:0}.audio-paper{padding-bottom:210px}.audio-seek{width:100%;margin:4px 0 0;accent-color:var(--accent);height:26px}.toc-layer{position:fixed;inset:0;z-index:60}.toc-backdrop{position:absolute;inset:0;border:0;background:#18140e52}.toc-panel{position:absolute;top:0;left:0;bottom:0;width:78%;max-width:320px;display:flex;flex-direction:column;background:var(--paper);box-shadow:0 0 40px #00000038;animation:toc-in .18s ease}@keyframes toc-in{0%{transform:translate(-100%)}to{transform:none}}.toc-head{display:flex;align-items:center;justify-content:space-between;padding:calc(10px + var(--safe-top)) 14px 8px;font-weight:600;border-bottom:1px solid var(--line)}.toc-list{flex:1;overflow-y:auto;padding:6px 8px calc(24px + var(--safe-bottom));-webkit-overflow-scrolling:touch}.toc-item{display:block;width:100%;padding:8px 10px;border:0;border-radius:8px;background:none;text-align:left;font-size:13px;line-height:1.45;color:var(--ink)}.toc-item.level-2{padding-left:24px;font-size:12.5px;color:var(--muted)}.toc-item.level-3{padding-left:36px;font-size:12px;color:var(--muted)}.toc-item.is-active{background:var(--accent-soft);color:var(--accent);font-weight:600}.toc-empty{padding:18px 12px;font-size:13px;color:var(--muted)}.toc-chip{flex:none;height:30px;padding:0 10px;border:1px solid var(--line);border-radius:999px;background:var(--paper);color:var(--ink);font-size:12px;font-weight:600}.audio-volume{display:flex;align-items:center;gap:8px;padding:2px 0 0;font-size:12px;color:var(--muted)}.audio-volume input[type=range]{flex:1;accent-color:var(--accent);height:24px}.audio-volume-value{width:42px;text-align:right;font-variant-numeric:tabular-nums}.audio-vol{width:96px;flex:none;height:22px;accent-color:var(--accent)}.audio-vol-value{flex:none;min-width:34px;text-align:right;font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums}
