:root{--font-serif:"Source Serif 4", "Literata", "Noto Serif SC", Georgia, serif;--font-sans:"Inter", system-ui, -apple-system, sans-serif;--font-display:"Playfair Display", "Source Serif 4", serif;--transition-smooth:all .3s cubic-bezier(.16, 1, .3, 1);--shadow-subtle:0 4px 20px -2px #0000000d;--shadow-elevated:0 12px 36px -4px #0000001f;--shadow-dock:-8px 0 32px #00000014}[data-theme=linen]{--bg-primary:#fcfbf7;--bg-secondary:#f4f1ea;--bg-tertiary:#ebe6dc;--bg-card:#ffffffd9;--bg-dock:#fbf9f4;--text-primary:#282421;--text-secondary:#6e675f;--text-muted:#9e978e;--border-color:#3c32281a;--border-active:#d97706;--accent-color:#d97706;--accent-light:#d977061a;--dock-shadow:-4px 0 24px #3c322814}[data-theme=obsidian]{--bg-primary:#0f1115;--bg-secondary:#17191f;--bg-tertiary:#222631;--bg-card:#17191fd9;--bg-dock:#14161c;--text-primary:#e6e8ee;--text-secondary:#9da4b4;--text-muted:#626a7c;--border-color:#ffffff14;--border-active:#818cf8;--accent-color:#818cf8;--accent-light:#818cf826;--dock-shadow:-6px 0 30px #0006}[data-theme=slate]{--bg-primary:#1e222b;--bg-secondary:#272c38;--bg-tertiary:#323846;--bg-card:#272c38d9;--bg-dock:#212630;--text-primary:#e2e8f0;--text-secondary:#94a3b8;--text-muted:#64748b;--border-color:#ffffff17;--border-active:#38bdf8;--accent-color:#38bdf8;--accent-light:#38bdf826;--dock-shadow:-6px 0 30px #00000059}[data-theme=bamboo]{--bg-primary:#f3f6f3;--bg-secondary:#e6ece6;--bg-tertiary:#d8e2d8;--bg-card:#ffffffe0;--bg-dock:#f0f4f0;--text-primary:#1c2b21;--text-secondary:#4a6352;--text-muted:#799481;--border-color:#1e3c281a;--border-active:#10b981;--accent-color:#10b981;--accent-light:#10b9811f;--dock-shadow:-4px 0 24px #1e3c2814}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;margin:0;padding:0}html,body{background-color:var(--bg-primary);color:var(--text-primary);font-family:var(--font-sans);text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;min-height:100vh;transition:background-color .4s,color .4s;overflow-x:hidden}.app-container{background-color:var(--bg-primary);flex-direction:column;min-height:100vh;padding-top:64px;display:flex;position:relative}.reader-workspace{width:100%;max-width:1600px;transition:var(--transition-smooth);flex:1;margin:0 auto;display:flex;position:relative}.reading-stream-container{flex-direction:column;flex:1;align-items:center;min-width:0;padding:24px 20px 120px;transition:padding-right .35s cubic-bezier(.16,1,.3,1);display:flex}.reader-workspace.dock-open .reading-stream-container{padding-right:480px}@media (width<=1100px){.reader-workspace.dock-open .reading-stream-container{padding-bottom:460px;padding-right:20px}}.editorial-column{width:100%;max-width:720px;margin:0 auto}.reading-paragraph-wrapper{content-visibility:auto;contain-intrinsic-size:auto none auto 120px;margin-bottom:28px;transition:transform .2s;position:relative}.reading-paragraph-wrapper.is-anchored{background:var(--accent-light);box-shadow:0 0 0 2px var(--accent-color);border-radius:12px;margin-left:-20px;margin-right:-20px;padding:16px 20px;animation:2s ease-in-out infinite alternate anchorGlow}@keyframes anchorGlow{0%{box-shadow:0 0 0 2px var(--accent-color), 0 4px 16px var(--accent-light)}to{box-shadow:0 0 0 3px var(--accent-color), 0 8px 24px var(--accent-light)}}.paragraph-text{font-family:var(--font-serif);letter-spacing:.015em;word-break:break-word;transition:font-size .2s,line-height .2s}.paragraph-text.font-serif{font-family:var(--font-serif)}.paragraph-text.font-sans{font-family:var(--font-sans)}.dashed-annotation{cursor:pointer;border-bottom:2.5px dashed var(--annotation-color,#f59e0b);background-color:var(--annotation-bg,#f59e0b14);border-radius:4px;padding:1px 2px;font-weight:500;transition:all .2s cubic-bezier(.16,1,.3,1);display:inline;position:relative}.dashed-annotation:hover{background-color:var(--annotation-bg-hover,#f59e0b33);border-bottom-style:solid;transform:translateY(-1px)}.dashed-annotation.is-active{background-color:var(--annotation-bg-hover,#f59e0b40);box-shadow:0 0 0 2px var(--annotation-color,#f59e0b);border-bottom-style:solid}.whisper-badge{font-size:12px;font-family:var(--font-sans);vertical-align:middle;background:var(--annotation-color,#f59e0b);color:#fff;cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:12px;align-items:center;gap:4px;margin-left:6px;padding:2px 8px;font-weight:600;transition:transform .2s,opacity .2s;display:inline-flex;box-shadow:0 2px 6px #0000001f}.whisper-badge:hover{transform:scale(1.08)}.margin-whisper-card{border-left:3px solid var(--annotation-color,#f59e0b);background:var(--bg-card);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:var(--shadow-subtle);cursor:pointer;font-family:var(--font-sans);border-radius:10px;align-items:flex-start;gap:10px;margin-top:8px;padding:10px 14px;font-size:13px;line-height:1.5;transition:all .2s;display:flex}.margin-whisper-card:hover{box-shadow:var(--shadow-elevated);border-left-width:5px;transform:translate(4px)}.companion-dock{background-color:var(--bg-dock);border-left:1px solid var(--border-color);width:460px;box-shadow:var(--dock-shadow);z-index:100;flex-direction:column;transition:transform .35s cubic-bezier(.16,1,.3,1);display:flex;position:fixed;top:68px;bottom:0;right:0}.companion-dock.collapsed{pointer-events:none;transform:translate(100%)}@media (width<=1100px){.companion-dock{border-left:none;border-top:1px solid var(--border-color);border-radius:20px 20px 0 0;width:100%;height:440px;inset:auto 0 0;box-shadow:0 -8px 32px #00000026}.companion-dock.collapsed{transform:translateY(100%)}}.dock-header{border-bottom:1px solid var(--border-color);background:var(--bg-card);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.dock-persona-badge{align-items:center;gap:10px;display:flex}.dock-persona-avatar{background:var(--accent-light);border:2px solid var(--accent-color);border-radius:50%;justify-content:center;align-items:center;width:40px;height:40px;font-size:22px;display:flex}.dock-quoted-card{background:var(--bg-secondary);border-left:4px solid var(--accent-color);border-radius:12px;margin:14px 18px 8px;padding:12px 16px;font-size:13px;line-height:1.5}.dock-topic-tag{text-transform:uppercase;color:var(--accent-color);align-items:center;gap:5px;margin-bottom:6px;font-size:11px;font-weight:700;display:inline-flex}.quick-chips-container{scrollbar-width:none;gap:8px;padding:8px 18px;display:flex;overflow-x:auto}.quick-chip{background:var(--bg-secondary);color:var(--text-secondary);border:1px solid var(--border-color);cursor:pointer;border-radius:16px;flex-shrink:0;padding:6px 12px;font-size:12px;font-weight:500;transition:all .2s}.quick-chip:hover{background:var(--accent-light);color:var(--accent-color);border-color:var(--accent-color)}.dock-messages-stream{flex-direction:column;flex:1;gap:16px;padding:14px 18px;display:flex;overflow-y:auto}.chat-bubble{border-radius:14px;max-width:88%;padding:12px 16px;font-size:14px;line-height:1.6}.chat-bubble.assistant{background:var(--bg-card);color:var(--text-primary);border:1px solid var(--border-color);border-bottom-left-radius:4px;align-self:flex-start}.chat-bubble.user{background:var(--accent-color);color:#fff;border-bottom-right-radius:4px;align-self:flex-end}.dock-input-bar{border-top:1px solid var(--border-color);background:var(--bg-card);gap:10px;padding:14px 18px;display:flex}.dock-input-field{background:var(--bg-secondary);border:1px solid var(--border-color);color:var(--text-primary);border-radius:20px;outline:none;flex:1;padding:10px 16px;font-size:14px;transition:border-color .2s}.dock-input-field:focus{border-color:var(--accent-color)}.dock-send-button{background:var(--accent-color);color:#fff;cursor:pointer;border:none;border-radius:50%;justify-content:center;align-items:center;width:40px;height:40px;transition:transform .2s,opacity .2s;display:flex}.dock-send-button:hover:not(:disabled){transform:scale(1.06)}.dock-send-button:disabled{opacity:.5;cursor:not-allowed}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.modal-backdrop{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:1000;background:#000000a6;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal-card{background:var(--bg-dock);border:1px solid var(--border-color);width:100%;box-shadow:var(--shadow-elevated);border-radius:20px;flex-direction:column;animation:.25s cubic-bezier(.16,1,.3,1) modalPop;display:flex;overflow:hidden}@keyframes modalPop{0%{opacity:0;transform:scale(.96)translateY(10px)}to{opacity:1;transform:scale(1)translateY(0)}}.modal-header{border-bottom:1px solid var(--border-color);justify-content:space-between;align-items:center;padding:20px 24px;display:flex}.modal-title-group{align-items:center;gap:12px;display:flex}.modal-icon-badge{background:var(--accent-light);width:40px;height:40px;color:var(--accent-color);border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.modal-title{color:var(--text-primary);margin:0;font-size:16px;font-weight:700}.modal-subtitle{color:var(--text-muted);margin-top:2px;margin-bottom:0;font-size:12px}.modal-close-btn{width:32px;height:32px;color:var(--text-muted);cursor:pointer;transition:var(--transition-smooth);background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;display:flex}.modal-close-btn:hover{background:var(--bg-secondary);color:var(--text-primary)}.lang-switcher-pill{background:var(--bg-secondary);border:1px solid var(--border-color);color:var(--text-secondary);border-radius:20px;align-items:center;gap:4px;padding:4px 10px;font-size:12px;font-weight:600;transition:all .2s;display:inline-flex}.lang-switcher-pill:hover{border-color:var(--accent-color)}.lang-globe-icon{color:var(--accent-color);flex-shrink:0}.lang-divider{color:var(--border-color);-webkit-user-select:none;user-select:none;font-size:11px}.lang-btn{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:2px 4px;font-size:12px;font-weight:600;transition:color .15s,background .15s}.lang-btn:hover{color:var(--text-primary)}.lang-btn.active{color:var(--accent-color);background:var(--accent-light)}
