:root{--bg:#fafaf8;--bg2:#f3f0eb;--bg3:#eae5dd;--surface:#fff;--border:#00000012;--border2:#00000021;--text:#1c1a18;--text2:#68625c;--text3:#b0a89f;--accent:#4ab5ad;--accent2:#39a39b;--accent-fg:#fff;--accent-subtle:#4ab5ad1a;--accent-glow:#4ab5ad33;--user-bg:#1e1c1a;--user-text:#f2edea;--cot-bg:#f7f3ee;--cot-border:#e4ddd5;--danger:#d14b4b;--danger-bg:#d14b4b17;--success:#3b8b55;--success-bg:#3b8b551a;--blue:#4788b8;--blue-bg:#4788b81a;--pink:#bf4b77;--purple:#7650c2;--purple-bg:#7650c21a;--shadow-xs:0 1px 2px #0000000a;--shadow-sm:0 1px 4px #0000000f, 0 0 0 1px #00000006;--shadow:0 2px 8px #00000014, 0 0 0 1px #00000009;--shadow-md:0 4px 18px #0000001a, 0 1px 4px #0000000f;--shadow-lg:0 12px 40px #00000021, 0 3px 8px #00000012;--r-xs:6px;--r-sm:8px;--r:12px;--r-md:16px;--r-lg:22px;--r-xl:28px;--r-full:9999px;--nav-h:54px;--font:"DM Sans", system-ui, -apple-system, sans-serif;--font-serif:"Noto Serif TC", Georgia, serif;--glass:#fafaf8e6;--glass-border:#ffffffb3}@media (prefers-color-scheme:dark){:root{--bg:#1a1917;--bg2:#201d1b;--bg3:#272421;--surface:#232120;--border:#ffffff12;--border2:#ffffff21;--text:#ede7e1;--text2:#a09890;--text3:#625c56;--accent:#5cbfb7;--accent2:#4bada5;--accent-subtle:#5cbfb71f;--accent-glow:#5cbfb733;--user-bg:#e8e2da;--user-text:#1a1917;--cot-bg:#1e1c19;--cot-border:#302c27;--glass:#1a1917eb;--glass-border:#ffffff12;--shadow-sm:0 1px 4px #0000004d, 0 0 0 1px #ffffff0a;--shadow:0 2px 10px #00000059, 0 0 0 1px #ffffff0a;--shadow-md:0 4px 20px #0006, 0 1px 6px #0003;--shadow-lg:0 16px 48px #0000008c, 0 4px 10px #00000040}}*,:before,:after{box-sizing:border-box;-webkit-tap-highlight-color:transparent;margin:0;padding:0}html,body,#root{background:var(--bg);height:100%;color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;font-size:16px;line-height:1.6;overflow:hidden}.nav{height:var(--nav-h);background:var(--glass);-webkit-backdrop-filter:blur(20px)saturate(1.5);border-bottom:1px solid var(--glass-border);z-index:10;flex-shrink:0;align-items:center;gap:4px;padding:0 12px 0 4px;display:flex;position:relative}.nav-title{font-family:var(--font-serif);letter-spacing:.025em;font-size:17px;font-weight:500}.nav-status{color:var(--text3);align-items:center;gap:5px;font-size:11px;display:flex}.dot{background:var(--text3);border-radius:50%;flex-shrink:0;width:6px;height:6px;transition:background .3s}.dot.on{background:#5db870}.dot.loading{background:var(--accent);animation:1s infinite pulse}.icon-btn{border-radius:var(--r-full);width:36px;height:36px;color:var(--text2);cursor:pointer;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;transition:background .15s,color .15s;display:flex}.icon-btn:hover{background:var(--bg3);color:var(--text)}.icon-btn:active{background:var(--border2)}.btn-sm{border-radius:var(--r-sm);font-family:var(--font);cursor:pointer;border:none;padding:7px 14px;font-size:13px;font-weight:500;transition:background .15s,opacity .15s}.btn-ghost{background:var(--bg3);color:var(--text2)}.btn-ghost:hover{background:var(--border2);color:var(--text)}.btn-accent{background:var(--accent);color:var(--accent-fg)}.btn-accent:hover{background:var(--accent2)}.btn-primary{background:var(--accent);width:100%;color:var(--accent-fg);border-radius:var(--r);font-family:var(--font);cursor:pointer;border:none;margin-top:4px;padding:12px;font-size:15px;font-weight:500;transition:background .15s,transform .1s}.btn-primary:hover{background:var(--accent2)}.btn-primary:active{transform:scale(.98)}.btn-danger{background:var(--danger-bg);color:var(--danger)}.btn-danger:hover{background:#d14b4b29}.backdrop{z-index:50;pointer-events:none;background:0 0;transition:background .25s;position:fixed;inset:0}.backdrop.open{pointer-events:all;background:#0000006b}.drawer{background:var(--bg);z-index:51;width:272px;box-shadow:var(--shadow-lg);flex-direction:column;transition:transform .28s cubic-bezier(.32,.72,0,1);display:flex;position:fixed;top:0;bottom:0;left:0;transform:translate(-100%)}.drawer.open{transform:translate(0)}.drawer-head{border-bottom:1px solid var(--border);flex-shrink:0;padding:52px 20px 18px}.drawer-logo{font-family:var(--font-serif);color:var(--accent);letter-spacing:.02em;font-size:28px;font-weight:500}.drawer-sub{color:var(--text3);margin-top:3px;font-size:12px}.drawer-nav{flex-direction:column;flex:1;gap:2px;padding:10px 8px;display:flex;overflow-y:auto}.drawer-nav::-webkit-scrollbar{width:0}.drawer-footer{border-top:1px solid var(--border);flex-shrink:0;padding:10px 8px 28px}.d-item{border-radius:var(--r);cursor:pointer;text-align:left;width:100%;color:var(--text2);font-size:14.5px;font-family:var(--font);background:0 0;border:none;align-items:center;gap:11px;padding:11px 12px;transition:background .15s,color .15s;display:flex}.d-item:hover{background:var(--bg3);color:var(--text)}.d-item.active{background:var(--accent-subtle);color:var(--accent);font-weight:500}.d-item svg{opacity:.6;flex-shrink:0;width:17px;height:17px}.d-item:hover svg{opacity:.85}.d-item.active svg{opacity:1}.d-divider{background:var(--border);height:1px;margin:6px 12px}.chat-area{flex-direction:column;flex:1;min-height:0;display:flex;position:relative;overflow:hidden}.chat-dark-overlay{display:none}@media (prefers-color-scheme:dark){.chat-dark-overlay{pointer-events:none;z-index:1;background:#00000073;display:block;position:absolute;inset:0}}.chat-msgs{z-index:2;flex:1;padding:20px 16px 12px;position:relative;overflow-y:auto}.chat-msgs::-webkit-scrollbar{width:0}.msg-user{justify-content:flex-end;margin-bottom:14px;animation:.2s ease-out both msgIn;display:flex}.msg-user-inner{flex-direction:column;align-items:flex-end;max-width:80%;display:flex}.bubble-user{background:var(--user-bg);color:var(--user-text);border-radius:var(--r-lg);white-space:pre-wrap;word-break:break-word;box-shadow:var(--shadow-sm);opacity:.9;border-bottom-right-radius:5px;padding:10px 15px;font-size:15px;line-height:1.65}.msg-time-user{color:var(--text3);align-items:center;gap:4px;margin-top:4px;font-size:10px;display:flex}.msg-ai{margin-bottom:20px;animation:.2s ease-out both msgIn}.ai-label{flex-wrap:wrap;align-items:center;gap:7px;margin-bottom:6px;display:flex}.ai-name{font-family:var(--font-serif);color:var(--accent);letter-spacing:.03em;font-size:12px;font-weight:500}.ai-time,.ai-tokens{color:var(--text3);font-size:10px}.ai-tokens{background:var(--bg3);border-radius:var(--r-full);opacity:.65;padding:1px 7px;font-size:10px}.ai-text{color:var(--text);white-space:pre-wrap;word-break:break-word;font-size:15.5px;line-height:1.7}.novel-content{color:var(--text);word-break:break-word;font-size:15.5px;line-height:1.85}.novel-para{text-indent:2em;margin:0 0 .65em}.novel-para:last-child{margin-bottom:0}.novel-quote{border-left:2.5px solid var(--accent);color:var(--text2);text-indent:0;margin:.45em 0;padding:.2em 0 .2em 12px}.novel-mono{opacity:.65;font-style:italic}.ai-read{color:var(--text3);margin-top:4px;font-size:10px;font-style:italic}.cot-wrap{margin-bottom:8px}.cot-pill{background:var(--bg2);border:1px solid var(--border2);border-radius:var(--r-full);cursor:pointer;color:var(--text3);font-size:11.5px;font-family:var(--font);opacity:.72;align-items:center;gap:5px;padding:4px 10px 4px 8px;transition:background .15s,border-color .15s,color .15s,opacity .15s;display:inline-flex}.cot-pill:hover{background:var(--bg3);color:var(--text2);opacity:1}.cot-pill svg{flex-shrink:0}.cot-pill-chevron{transition:transform .2s}.cot-pill.open .cot-pill-chevron{transform:rotate(180deg)}.cot-pill.open{opacity:1}.cot-body{background:var(--cot-bg);border:1px solid var(--cot-border);border-left:2.5px solid var(--accent);border-radius:0 var(--r) var(--r) 0;flex-direction:column;gap:6px;margin-top:6px;padding:10px 12px;animation:.15s ease-out fadeIn;display:flex}.cot-text-block{color:var(--text2);white-space:pre-wrap;word-break:break-word;font-size:12.5px;line-height:1.72}.cot-tool-count-badge{background:var(--accent-subtle);color:var(--accent);border-radius:var(--r-full);padding:1px 6px;font-size:10px;font-weight:600}.cot-sub-outer{flex-direction:column;display:flex}.cot-sub-row{cursor:pointer;font-family:var(--font);color:var(--text3);opacity:.75;background:0 0;border:none;border-radius:6px;align-items:center;gap:5px;padding:3px 6px 3px 2px;transition:opacity .12s,background .12s;display:inline-flex}.cot-sub-row:hover{background:var(--bg3);opacity:1}.cot-sub-label{color:var(--text3);white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:11.5px;overflow:hidden}.cot-sub-tool-name{color:var(--text2);background:0 0;font-family:Menlo,Monaco,monospace;font-size:10.5px}.cot-sub-chevron{opacity:.5;flex-shrink:0;transition:transform .15s}.cot-sub-chevron.open{opacity:1;transform:rotate(90deg)}.cot-sub-body{color:var(--text2);white-space:pre-wrap;word-break:break-word;border-left:1.5px solid var(--cot-border);margin:4px 0 4px 16px;padding-left:10px;font-size:12px;line-height:1.7}.cot-sub-tool-body{color:var(--text3);font-family:Menlo,Monaco,monospace;font-size:11px}.typing-row{align-items:center;gap:5px;padding:2px 0 14px;display:flex}.typing-dot{background:var(--text3);border-radius:50%;width:5px;height:5px;animation:1.4s infinite bounce}.typing-dot:nth-child(2){animation-delay:.18s}.typing-dot:nth-child(3){animation-delay:.36s}.preview-strip{flex-wrap:wrap;gap:8px;padding:0 14px 10px;display:flex}.preview-item{border-radius:var(--r);border:1.5px solid var(--border2);width:58px;height:58px;box-shadow:var(--shadow-xs);position:relative;overflow:hidden}.preview-item img{object-fit:cover;width:100%;height:100%}.preview-file{border-radius:var(--r);border:1.5px solid var(--border2);background:var(--bg3);flex-direction:column;justify-content:center;align-items:center;gap:3px;width:58px;height:58px;display:flex}.preview-file-name{color:var(--text3);text-align:center;text-overflow:ellipsis;white-space:nowrap;max-width:100%;padding:0 4px;font-size:9px;overflow:hidden}.preview-rm{color:#fff;cursor:pointer;background:#0009;border:none;border-radius:50%;justify-content:center;align-items:center;width:16px;height:16px;font-size:10px;display:flex;position:absolute;top:3px;right:3px}.input-area{flex-shrink:0;padding:8px 14px 22px}.input-row{background:var(--surface);border:1.5px solid var(--border2);border-radius:var(--r-xl);box-shadow:var(--shadow-md);align-items:flex-end;gap:6px;padding:7px;transition:border-color .15s,box-shadow .15s;display:flex}.input-row:focus-within{border-color:var(--accent);box-shadow:var(--shadow-md), 0 0 0 3px var(--accent-glow)}textarea{color:var(--text);font-family:var(--font);resize:none;background:0 0;border:none;outline:none;flex:1;min-height:28px;max-height:120px;padding:4px;font-size:15px;line-height:1.5}textarea::placeholder{color:var(--text3)}.send-btn{background:var(--accent);width:36px;height:36px;color:var(--accent-fg);cursor:pointer;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;transition:background .15s,transform .1s,box-shadow .15s;display:flex}.send-btn:not(:disabled):hover{background:var(--accent2);box-shadow:0 2px 12px var(--accent-glow)}.send-btn:not(:disabled):active{transform:scale(.88)}.send-btn:disabled{background:var(--bg3);opacity:.5;cursor:not-allowed}.panel-page{-webkit-backdrop-filter:blur(20px)saturate(1.4);z-index:40;background:#fafaf8eb;flex-direction:column;animation:.22s cubic-bezier(.32,.72,0,1) slideIn;display:flex;position:fixed;inset:0}@media (prefers-color-scheme:dark){.panel-page{background:#1a1917ed}}.panel-nav{height:var(--nav-h);border-bottom:1px solid var(--glass-border);background:var(--glass);-webkit-backdrop-filter:blur(20px)saturate(1.5);flex-shrink:0;align-items:center;gap:8px;padding:0 12px;display:flex}.panel-title{font-family:var(--font-serif);letter-spacing:.025em;flex:1;font-size:17px;font-weight:500}.panel-body{flex:1;padding:16px;animation:.2s ease-out pageIn;overflow-y:auto}.panel-body::-webkit-scrollbar{width:0}.panel-section{margin-bottom:8px}.panel-section-title{color:var(--text3);letter-spacing:.08em;text-transform:uppercase;margin-bottom:8px;padding:0 4px;font-size:10.5px;font-weight:600}.panel-grid{grid-template-columns:1fr 1fr;gap:10px;display:grid}.panel-list{flex-direction:column;gap:6px;display:flex}.panel-row{border:1px solid var(--border);border-radius:var(--r-md);cursor:pointer;-webkit-backdrop-filter:blur(8px);text-align:left;width:100%;font-family:var(--font);background:#ffffffc2;align-items:center;gap:14px;padding:14px 12px;transition:transform .2s cubic-bezier(.32,.72,0,1),box-shadow .2s,background .15s;display:flex}@media (prefers-color-scheme:dark){.panel-row{background:#232120c2}}.panel-row:hover{box-shadow:var(--shadow-sm);transform:translateY(-1px)}.panel-row:active{transform:scale(.98)}.panel-row-text{flex:1;min-width:0}.chat-mode-menu{top:calc(var(--nav-h) - 4px);background:var(--surface);border:1px solid var(--border2);border-radius:var(--r);box-shadow:var(--shadow-md);z-index:100;flex-direction:column;gap:2px;min-width:140px;padding:4px;animation:.12s ease-out fadeIn;display:flex;position:absolute;left:50%;transform:translate(-50%)}.chat-mode-opt{border-radius:var(--r-sm);cursor:pointer;font-family:var(--font);color:var(--text2);white-space:nowrap;background:0 0;border:none;align-items:center;gap:8px;padding:10px 14px;font-size:14px;transition:background .12s,color .12s;display:flex}.chat-mode-opt:hover{background:var(--bg3);color:var(--text)}.chat-mode-opt.active{background:var(--accent-subtle);color:var(--accent);font-weight:500}.panel-item{border:1px solid var(--border);border-radius:var(--r-md);cursor:pointer;-webkit-backdrop-filter:blur(8px);background:#ffffffc2;flex-direction:column;align-items:flex-start;gap:10px;padding:16px;transition:transform .2s cubic-bezier(.32,.72,0,1),box-shadow .2s,background .15s;display:flex}@media (prefers-color-scheme:dark){.panel-item{background:#232120c2}}.panel-item:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.panel-item:active{transform:scale(.97)}.panel-item-icon{border-radius:var(--r);flex-shrink:0;justify-content:center;align-items:center;width:42px;height:42px;display:flex}.panel-item-label{color:var(--text);font-size:14.5px;font-weight:500}.panel-item-desc{color:var(--text3);margin-top:1px;font-size:11.5px}.panel-arrow{color:var(--text3);margin-left:auto}.form-group{margin-bottom:16px}.form-label{color:var(--text2);letter-spacing:.06em;text-transform:uppercase;margin-bottom:6px;font-size:10.5px;font-weight:600;display:block}.form-input{background:var(--surface);border:1.5px solid var(--border2);border-radius:var(--r);width:100%;color:var(--text);font-family:var(--font);outline:none;padding:10px 13px;font-size:14px;transition:border-color .15s,box-shadow .15s}.form-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-subtle)}.form-textarea{background:var(--surface);border:1.5px solid var(--border2);border-radius:var(--r);width:100%;color:var(--text);font-family:var(--font);resize:vertical;outline:none;min-height:90px;padding:10px 13px;font-size:14px;line-height:1.6;transition:border-color .15s,box-shadow .15s}.form-textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-subtle)}.form-select{background:var(--surface);border:1.5px solid var(--border2);border-radius:var(--r);width:100%;color:var(--text);font-family:var(--font);-webkit-appearance:none;outline:none;padding:10px 13px;font-size:14px;transition:border-color .15s}.form-select:focus{border-color:var(--accent)}.form-hint{color:var(--text3);margin-top:5px;font-size:11.5px}.divider{background:var(--border);height:1px;margin:14px 0}.toggle-label{cursor:pointer;flex-shrink:0;position:relative}.toggle-label input[type=checkbox]{opacity:0;width:0;height:0;position:absolute}.toggle-track{background:var(--border2);border-radius:13px;width:44px;height:25px;transition:background .2s;display:block;position:relative}.toggle-thumb{background:#fff;border-radius:50%;width:18px;height:18px;transition:transform .2s;position:absolute;top:3.5px;left:3.5px;box-shadow:0 1px 4px #00000040}.toggle-label input:checked~.toggle-track{background:var(--accent)}.toggle-label input:checked~.toggle-track .toggle-thumb{transform:translate(19px)}.setting-row{justify-content:space-between;align-items:center;gap:12px;padding:10px 0;display:flex}.loading-row{color:var(--text3);justify-content:center;align-items:center;padding:40px;font-size:13px;display:flex}.empty-state{color:var(--text3);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:8px;display:flex}.toast{background:var(--text);color:var(--bg);border-radius:var(--r-full);z-index:200;white-space:nowrap;pointer-events:none;box-shadow:var(--shadow-lg);padding:9px 20px;font-size:13px;font-weight:500;animation:.2s ease-out toastIn;position:fixed;bottom:36px;left:50%;transform:translate(-50%)}.modal-bg{z-index:60;-webkit-backdrop-filter:blur(4px);background:#00000085;align-items:flex-end;display:flex;position:fixed;inset:0}.modal{background:var(--bg);border-radius:var(--r-xl) var(--r-xl) 0 0;width:100%;max-height:88vh;padding:16px 20px 44px;animation:.25s cubic-bezier(.32,.72,0,1) slideUp;overflow-y:auto;box-shadow:0 -8px 40px #0003}.modal-handle{background:var(--border2);border-radius:2px;width:36px;height:4px;margin:0 auto 18px}.modal-title{font-size:16px;font-weight:500;font-family:var(--font-serif);margin-bottom:16px}.tag{border-radius:var(--r-full);background:var(--accent-subtle);color:var(--accent);padding:2px 9px;font-size:10.5px;font-weight:600}.lightbox{z-index:300;cursor:pointer;background:#000000e6;justify-content:center;align-items:center;animation:.15s ease-out fadeIn;display:flex;position:fixed;inset:0}.lightbox img{border-radius:var(--r);object-fit:contain;max-width:94vw;max-height:90vh;box-shadow:var(--shadow-lg)}@keyframes msgIn{0%{opacity:0;transform:translateY(6px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}@keyframes bounce{0%,60%,to{opacity:.4;transform:translateY(0)}30%{opacity:1;transform:translateY(-5px)}}@keyframes toastIn{0%{opacity:0;transform:translate(-50%)translateY(10px)}to{opacity:1;transform:translate(-50%)translateY(0)}}@keyframes slideIn{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes pageIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes danmuIn{0%{opacity:0;transform:translateY(8px)scale(.95)}to{opacity:1;transform:translateY(0)scale(1)}}
