:root{--bg:#16161f;--bg-elev:#1e1e2a;--bg-elev-2:#262636;--border:#33334a;--text:#e8e8f0;--text-dim:#9a9ab0;--accent:#7c6cff;--accent-hover:#8f80ff;--user-bubble:#2a2a5a;--danger:#e5484d;--radius:12px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;-webkit-font-smoothing:antialiased;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);overscroll-behavior:none}button{cursor:pointer;color:inherit;background:0 0;border:none;font-family:inherit}input,textarea,select{color:var(--text);background:var(--bg-elev-2);border:1px solid var(--border);border-radius:8px;outline:none;padding:9px 11px;font-family:inherit;font-size:15px}input:focus,textarea:focus,select:focus{border-color:var(--accent)}textarea{resize:vertical;line-height:1.6}.loading{height:100%;color:var(--text-dim);place-items:center;display:grid}.app{height:100dvh;display:flex;overflow:hidden}.sidebar-overlay{display:none}.sidebar{background:var(--bg-elev);border-right:1px solid var(--border);width:264px;padding:12px;padding-top:max(12px, env(safe-area-inset-top));flex-direction:column;flex-shrink:0;display:flex}.sidebar-header{padding:6px 6px 12px}.brand{font-size:18px;font-weight:700}.empty-hint{color:var(--text-dim);text-align:center;margin:16px 0;font-size:13px;line-height:1.6}.novel-switch{text-align:left;background:var(--bg-elev-2);border:1px solid var(--border);border-radius:10px;align-items:center;gap:8px;width:100%;padding:10px;display:flex}.novel-switch:hover{border-color:var(--accent)}.novel-switch-main{flex:1;min-width:0}.novel-switch-title{white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:600;display:block;overflow:hidden}.novel-switch-sub{color:var(--text-dim);margin-top:2px;font-size:11px;display:block}.chevron{color:var(--text-dim);flex-shrink:0;font-size:11px}.novel-list{background:var(--bg);border:1px solid var(--border);border-radius:10px;max-height:240px;margin-top:6px;padding:4px;overflow-y:auto}.novel-item{cursor:pointer;border-radius:8px;align-items:center;gap:6px;padding:8px 10px;font-size:14px;display:flex}.novel-item:hover{background:var(--bg-elev-2)}.novel-item.active{color:var(--accent)}.novel-item-title{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.novel-add{text-align:left;width:100%;color:var(--accent);border-radius:8px;padding:8px 10px;font-size:13px}.novel-add:hover{background:var(--bg-elev-2)}.bible-btn{text-align:left;background:var(--bg-elev-2);border-radius:10px;align-items:center;gap:8px;width:100%;margin-top:10px;padding:10px;font-size:14px;display:flex}.bible-btn:hover{background:var(--border)}.badge{color:var(--text-dim);background:var(--bg);border-radius:999px;margin-left:auto;padding:2px 7px;font-size:11px}.section-label{color:var(--text-dim);justify-content:space-between;align-items:center;padding:16px 4px 8px;font-size:12px;display:flex}.chapter-list{flex-direction:column;flex:1;gap:2px;display:flex;overflow-y:auto}.chapter-item{cursor:pointer;border-radius:10px;align-items:center;gap:6px;padding:9px 10px;display:flex}.chapter-item:hover,.chapter-item.active{background:var(--bg-elev-2)}.chapter-item.active .chapter-title{color:var(--accent);font-weight:600}.chapter-main{flex:1;min-width:0}.chapter-title{white-space:nowrap;text-overflow:ellipsis;font-size:14px;overflow:hidden}.chapter-meta{color:var(--text-dim);align-items:center;gap:6px;margin-top:2px;font-size:11px;display:flex}.warn-dot{color:#d9a441;font-size:8px}.icon-mini{opacity:.5;flex-shrink:0;padding:4px;font-size:13px}.chapter-item:hover .icon-mini,.novel-item:hover .icon-mini{opacity:.7}.icon-mini:hover{opacity:1}.mini-btn.danger{color:var(--danger)}.sidebar-footer{border-top:1px solid var(--border);padding-top:8px;padding-bottom:env(safe-area-inset-bottom);margin-top:8px}.footer-btn{text-align:left;width:100%;color:var(--text-dim);border-radius:10px;padding:10px;font-size:14px;display:block}.footer-btn:hover{background:var(--bg-elev-2);color:var(--text)}.chat{flex-direction:column;flex:1;min-width:0;display:flex}.chat-header{padding:10px 14px;padding-top:max(10px, env(safe-area-inset-top));border-bottom:1px solid var(--border);background:var(--bg-elev);align-items:center;gap:8px;display:flex}.icon-btn{color:var(--text-dim);border-radius:8px;padding:6px 8px;font-size:18px}.icon-btn:hover{background:var(--bg-elev-2);color:var(--text)}.menu-btn{display:none}.chat-title{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.chat-title-main{white-space:nowrap;text-overflow:ellipsis;font-size:15px;font-weight:600;overflow:hidden}.model-chip{color:var(--text-dim);background:var(--bg-elev-2);white-space:nowrap;text-overflow:ellipsis;border-radius:999px;align-self:flex-start;max-width:100%;padding:2px 8px;font-size:12px;overflow:hidden}.model-chip:hover{color:var(--text)}.tabs{border-bottom:1px solid var(--border);background:var(--bg-elev);gap:4px;padding:8px 14px 0;display:flex}.tab{color:var(--text-dim);border-bottom:2px solid #0000;margin-bottom:-1px;padding:8px 16px;font-size:14px}.tab:hover{color:var(--text)}.tab.active{color:var(--text);border-bottom-color:var(--accent);font-weight:600}.error-bar{color:#ff9ba0;cursor:pointer;background:#e5484d26;border-bottom:1px solid #e5484d4d;padding:10px 14px;font-size:13px}.messages{flex-direction:column;flex:1;gap:18px;padding:20px 16px;display:flex;overflow-y:auto}.welcome{text-align:center;color:var(--text-dim);max-width:340px;margin:auto}.welcome-emoji{font-size:44px}.welcome h2{color:var(--text);margin:12px 0 8px}.welcome-tip{opacity:.8;margin-top:18px;font-size:13px}.msg{gap:10px;width:100%;max-width:760px;margin:0 auto;display:flex}.msg-avatar{background:var(--bg-elev-2);border-radius:8px;flex-shrink:0;place-items:center;width:30px;height:30px;font-size:16px;display:grid}.msg-body{flex-direction:column;gap:6px;min-width:0;display:flex}.msg-content{border-radius:var(--radius);white-space:pre-wrap;word-break:break-word;padding:10px 14px;font-size:15.5px;line-height:1.75}.msg-user{flex-direction:row-reverse}.msg-user .msg-body{align-items:flex-end}.msg-user .msg-content{background:var(--user-bubble)}.msg-assistant .msg-content{background:var(--bg-elev)}.msg-content.adopted{border-left:3px solid var(--accent)}.msg-actions{opacity:0;flex-wrap:wrap;align-items:center;gap:4px;transition:opacity .15s;display:flex}.msg:hover .msg-actions,.msg-actions:focus-within{opacity:1}.msg-action{color:var(--text-dim);border-radius:6px;padding:3px 8px;font-size:12px}.msg-action:hover:not(:disabled){background:var(--bg-elev-2);color:var(--text)}.msg-action:disabled{opacity:.4;cursor:not-allowed}.msg-action.primary{color:var(--accent)}.msg-action.done{color:#4caf7d}.msg-action.danger:hover:not(:disabled){color:var(--danger)}.msg-meta{color:var(--text-dim);margin-left:2px;font-size:11px}@media (hover:none){.msg-actions{opacity:1}}.cursor{color:var(--accent);margin-left:1px;animation:1s steps(2,end) infinite blink}@keyframes blink{50%{opacity:0}}.composer-wrap{border-top:1px solid var(--border);background:var(--bg-elev)}.quick-actions{flex-wrap:wrap;gap:6px;padding:10px 16px 0;display:flex}.quick-chip{background:var(--bg-elev-2);border:1px solid var(--border);color:var(--text-dim);border-radius:999px;padding:5px 12px;font-size:12px}.quick-chip:hover:not(:disabled){border-color:var(--accent);color:var(--text)}.quick-chip:disabled{opacity:.4;cursor:not-allowed}.composer{padding:10px 16px;padding-bottom:max(12px, env(safe-area-inset-bottom));align-items:flex-end;gap:8px;display:flex}.composer-input{resize:none;flex:1;min-height:44px;max-height:180px}.composer-btn{border-radius:10px;flex-shrink:0;height:44px;padding:0 18px;font-size:15px;font-weight:600}.composer-btn.send{background:var(--accent);color:#fff}.composer-btn.send:disabled{opacity:.4;cursor:not-allowed}.composer-btn.stop{background:var(--bg-elev-2);border:1px solid var(--border)}.modal-overlay{z-index:30;background:#0009;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal{background:var(--bg-elev);border:1px solid var(--border);border-radius:16px;flex-direction:column;width:100%;max-width:560px;max-height:90dvh;display:flex}.modal-header,.modal-footer{align-items:center;padding:16px 20px;display:flex}.modal-header{border-bottom:1px solid var(--border);justify-content:space-between}.modal-header h2{margin:0;font-size:17px}.modal-body{flex-direction:column;gap:24px;padding:20px;display:flex;overflow-y:auto}.settings-section h3{color:var(--text-dim);margin:0 0 12px;font-size:14px}.section-head{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.section-head h3{margin:0}.field{flex-direction:column;gap:6px;margin-bottom:12px;display:flex}.field>span{color:var(--text-dim);font-size:13px}.provider-tabs{flex-wrap:wrap;gap:6px;margin-bottom:14px;display:flex}.provider-tab{background:var(--bg-elev-2);border:1px solid var(--border);color:var(--text-dim);border-radius:999px;padding:6px 12px;font-size:13px}.provider-tab.active{border-color:var(--accent);color:var(--text)}.prompt-editor{width:100%;line-height:1.7}.mini-btn{color:var(--accent);font-size:13px}.danger-btn{color:var(--danger);text-align:left;padding:8px 0;font-size:13px}.modal-footer{border-top:1px solid var(--border);justify-content:flex-end;gap:10px}.ghost-btn{color:var(--text-dim);border-radius:9px;padding:9px 16px}.primary-btn{background:var(--accent);color:#fff;border-radius:9px;padding:9px 20px;font-weight:600}.primary-btn:hover{background:var(--accent-hover)}.manuscript{flex-direction:column;flex:1;gap:12px;width:100%;max-width:820px;min-height:0;margin:0 auto;padding:16px;display:flex}.manuscript-head{align-items:center;gap:10px;display:flex}.chapter-title-input{background:0 0;border-color:#0000;flex:1;padding:6px 8px;font-size:17px;font-weight:600}.chapter-title-input:hover{border-color:var(--border)}.manuscript-count{color:var(--text-dim);flex-shrink:0;font-size:12px}.manuscript-text{resize:none;flex:1;min-height:200px;padding:16px;font-size:16px;line-height:2}.summary-block{flex-shrink:0}.summary-head{color:var(--text-dim);justify-content:space-between;align-items:center;gap:10px;margin-bottom:6px;font-size:13px;display:flex}.warn-text{color:#d9a441}.summary-text{width:100%;font-size:14px}.modal.wide{max-width:720px}.hint{color:var(--text-dim);margin:0;font-size:13px;line-height:1.7}.autosave-hint{color:var(--text-dim);margin-right:auto;font-size:12px}.char-card{border:1px solid var(--border);border-radius:10px;margin-bottom:8px;overflow:hidden}.char-card.expanded{border-color:var(--accent)}.char-head{cursor:pointer;background:var(--bg-elev-2);align-items:center;gap:8px;padding:10px 12px;display:flex}.char-name{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;font-size:14px;font-weight:600;overflow:hidden}.char-role{color:var(--text-dim);background:var(--bg);border-radius:999px;flex-shrink:0;padding:2px 8px;font-size:11px}.char-body{padding:14px 12px 6px}.char-body textarea,.char-body input{width:100%}.manuscript-preview{flex-direction:column;gap:28px;display:flex}.preview-chapter h3{margin:0 0 12px;font-size:16px}.preview-text{white-space:pre-wrap;color:var(--text);font-size:15px;line-height:2}@media (width<=768px){.menu-btn{display:block}.sidebar{z-index:20;transition:transform .25s;position:fixed;top:0;bottom:0;left:0;transform:translate(-100%);box-shadow:2px 0 20px #0006}.sidebar.open{transform:translate(0)}.sidebar-overlay.show{z-index:15;background:#00000080;display:block;position:fixed;inset:0}}.gate{place-items:center;height:100dvh;padding:24px;display:grid}.gate-card{text-align:center;background:var(--bg-elev);border:1px solid var(--border);border-radius:16px;width:100%;max-width:320px;padding:32px 24px}.gate-emoji{font-size:44px}.gate-card h1{margin:12px 0 8px;font-size:20px}.gate-card p{color:var(--text-dim);margin:0 0 20px;font-size:13px;line-height:1.6}.gate-input{text-align:center;width:100%;margin-bottom:12px}.gate-error{color:var(--danger);margin:0 0 12px;font-size:13px}.gate-btn{background:var(--accent);color:#fff;border-radius:10px;width:100%;padding:11px;font-size:15px;font-weight:600}.gate-btn:hover{background:var(--accent-hover)}.gate-btn:disabled{opacity:.4;cursor:not-allowed}
