*,:before,:after{box-sizing:border-box}html,body{background:#0f1419;height:100%;margin:0;padding:0}#root{height:100%}.auth-loading{background:#1e1e1e;justify-content:center;align-items:center;height:100vh;display:flex}.auth-spinner{border:3px solid #3c3c3c;border-top-color:#0098ff;border-radius:50%;width:32px;height:32px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.auth-wall{background:#1e1e1e;justify-content:center;align-items:center;height:100vh;display:flex}.auth-card{background:#252526;border:1px solid #3c3c3c;border-radius:12px;flex-direction:column;align-items:center;gap:12px;padding:40px;display:flex;box-shadow:0 24px 64px #00000080}.auth-logo{color:#e0e0e0;letter-spacing:-.02em;font-size:2rem;font-weight:700}.auth-subtitle{color:#8c8c8c;margin:0 0 8px;font-size:13px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{background:#1e1e1e;height:100%}:root{--bg:#1e1e1e;--bg-darker:#141414;--sidebar-bg:#252526;--sidebar-border:#3c3c3c;--panel-bg:#252526;--editor-bg:#1e1e1e;--chat-bg:#252526;--border:#3c3c3c;--text:#ccc;--text-dim:#8c8c8c;--text-bright:#e0e0e0;--accent:#0098ff;--accent-dim:#0078cc;--green:#4ec9b0;--yellow:#dcdcaa;--red:#f44747;--selection:#264f78;--hover:#2a2d2e;--active:#37373d;color:var(--text);-webkit-font-smoothing:antialiased;font-family:-apple-system,Segoe UI,system-ui,Noto Sans TC,sans-serif;font-size:13px;line-height:1.5}.app{grid-template-rows:30px 1fr;grid-template-columns:48px auto 1fr 320px;height:100vh;display:grid;overflow:hidden}.titlebar{border-bottom:1px solid var(--border);-webkit-user-select:none;user-select:none;background:#323233;grid-column:1/-1;align-items:center;gap:8px;padding:0 12px;display:flex}.titlebar-name{color:var(--text-dim);font-size:12px;font-weight:500}.titlebar-sep{flex:1}.titlebar-info{color:var(--text-dim);font-size:11px}.activity-bar{border-right:1px solid var(--border);background:#333;flex-direction:column;grid-area:2/1;align-items:center;gap:2px;padding:4px 0;display:flex}.activity-btn{cursor:pointer;width:40px;height:40px;color:var(--text-dim);background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;font-size:18px;transition:color .1s;display:flex;position:relative}.activity-btn:hover{color:var(--text)}.activity-btn.active{color:var(--text-bright)}.activity-btn.active:before{content:"";background:var(--accent);border-radius:0 2px 2px 0;width:2px;position:absolute;top:8px;bottom:8px;left:0}.side-panel{background:var(--panel-bg);border-right:1px solid var(--border);flex-direction:column;grid-area:2/2;width:260px;display:flex;overflow:hidden}.side-panel.collapsed{border:none;width:0;overflow:hidden}.panel-title{letter-spacing:.08em;text-transform:uppercase;color:var(--text-dim);flex-shrink:0;padding:10px 16px 6px;font-size:11px;font-weight:700}.panel-section{flex-direction:column;display:flex;overflow:hidden}.panel-section+.panel-section{border-top:1px solid var(--border)}.panel-scroll{flex:1;padding:4px 0;overflow-y:auto}.panel-scroll::-webkit-scrollbar{width:6px}.panel-scroll::-webkit-scrollbar-track{background:0 0}.panel-scroll::-webkit-scrollbar-thumb{background:#424242;border-radius:3px}.search-box{flex-shrink:0;align-items:center;gap:4px;padding:6px 8px;display:flex}.search-input{background:var(--bg-darker);border:1px solid var(--border);color:var(--text);font:inherit;border-radius:3px;outline:none;flex:1;padding:4px 8px;font-size:12px}.search-input:focus{border-color:var(--accent)}.search-input::placeholder{color:var(--text-dim)}.result-item{cursor:pointer;border-left:2px solid #0000;padding:6px 12px}.result-item:hover{background:var(--hover)}.result-item-title{color:var(--text-bright);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.result-item-sub{color:var(--text-dim);white-space:nowrap;text-overflow:ellipsis;margin-top:1px;font-size:11px;overflow:hidden}.result-item-actions{flex-wrap:wrap;gap:4px;margin-top:4px;display:flex}.pill{background:var(--active);color:var(--text-dim);cursor:pointer;border:none;border-radius:10px;padding:1px 6px;font-size:10px}.pill:hover{background:var(--accent);color:#fff}.pill.insert{color:var(--accent);background:#264f78}.pill.insert:hover{background:var(--accent);color:#fff}.source-badge{text-transform:uppercase;letter-spacing:.04em;border-radius:3px;margin-right:4px;padding:1px 4px;font-size:9px;font-weight:600;display:inline-block}.badge-statute{color:var(--green);background:#1a3a2a}.badge-judgment{color:var(--accent);background:#1a2a3a}.badge-firm{color:var(--yellow);background:#2a2a1a}.matter-list{padding:4px 0}.matter-item{cursor:pointer;color:var(--text);align-items:center;gap:6px;padding:5px 12px;font-size:12px;display:flex}.matter-item:hover{background:var(--hover)}.matter-item.selected{background:var(--active);color:var(--text-bright)}.matter-icon{font-size:12px}.new-matter{flex-shrink:0;gap:4px;padding:6px 8px;display:flex}.new-matter input{font:inherit;background:var(--bg-darker);color:var(--text);border:1px solid var(--border);border-radius:3px;outline:none;flex:1;padding:4px 7px;font-size:12px}.new-matter input:focus{border-color:var(--accent)}.icon-btn{border:1px solid var(--border);color:var(--text-dim);cursor:pointer;background:0 0;border-radius:3px;padding:3px 7px;font-size:13px}.icon-btn:hover{color:var(--text);border-color:var(--text-dim)}.editor-area{background:var(--editor-bg);flex-direction:column;grid-area:2/3;display:flex;overflow:hidden}.tab-bar{border-bottom:1px solid var(--border);background:#2d2d2d;flex-shrink:0;align-items:center;min-height:35px;display:flex}.tab{background:var(--editor-bg);border-right:1px solid var(--border);height:35px;color:var(--text);cursor:default;-webkit-user-select:none;user-select:none;align-items:center;gap:6px;padding:0 16px;font-size:12px;display:flex}.tab-icon{font-size:13px}.tab-actions{gap:4px;margin-left:auto;padding-right:8px;display:flex}.tab-btn{border:1px solid var(--border);color:var(--text-dim);cursor:pointer;background:0 0;border-radius:3px;padding:2px 8px;font-size:11px}.tab-btn:hover{color:var(--text-bright);border-color:var(--text-dim)}.toolbar{border-bottom:1px solid var(--border);background:#2d2d2d;flex-wrap:wrap;flex-shrink:0;align-items:center;gap:1px;padding:2px 8px;display:flex}.toolbar-btn{color:var(--text-dim);font:inherit;cursor:pointer;text-align:center;background:0 0;border:1px solid #0000;border-radius:3px;min-width:24px;padding:2px 6px;font-size:12px}.toolbar-btn:hover{background:var(--hover);color:var(--text)}.toolbar-btn.active{background:var(--active);color:var(--text-bright);border-color:var(--border)}.toolbar-btn:disabled{opacity:.3;cursor:default}.toolbar-sep{background:var(--border);width:1px;height:14px;margin:0 3px}.toolbar-spacer{flex:1}.char-count{color:var(--text-dim);padding:0 4px;font-size:11px}.editor-scroll{background:var(--editor-bg);flex:1;padding:32px 60px;overflow-y:auto}.editor-scroll::-webkit-scrollbar{width:8px}.editor-scroll::-webkit-scrollbar-track{background:0 0}.editor-scroll::-webkit-scrollbar-thumb{background:#424242;border-radius:4px}.tiptap-editor{max-width:720px;color:var(--text);outline:none;min-height:100%;margin:0 auto;font-size:14px;line-height:1.75}.tiptap-editor h1{color:var(--text-bright);border-bottom:1px solid var(--border);margin:1.4em 0 .5em;padding-bottom:6px;font-size:1.6em;font-weight:600}.tiptap-editor h2{color:var(--text-bright);margin:1.2em 0 .4em;font-size:1.2em;font-weight:600}.tiptap-editor h3{color:var(--yellow);margin:1em 0 .3em;font-size:1em;font-weight:600}.tiptap-editor p{margin:.4em 0}.tiptap-editor ul,.tiptap-editor ol{padding-left:1.8em}.tiptap-editor li{margin:.2em 0}.tiptap-editor strong{color:var(--text-bright)}.tiptap-editor em{color:#ce9178}.tiptap-editor code{color:var(--green);background:#2d2d2d;border-radius:3px;padding:1px 5px;font-family:Cascadia Code,Fira Code,monospace;font-size:.9em}.tiptap-editor blockquote{border-left:3px solid var(--accent);color:var(--text-dim);margin:8px 0;padding-left:12px}.tiptap-editor p.is-editor-empty:first-child:before{content:attr(data-placeholder);color:var(--text-dim);pointer-events:none;float:left;height:0}.citation-mark{color:#79b8ff;cursor:help;background:#1f3a5f;border-bottom:1px solid #4a8fd4;border-radius:3px;padding:1px 4px;font-size:.85em}.chat-panel{background:var(--chat-bg);border-left:1px solid var(--border);flex-direction:column;grid-area:2/4;display:flex;overflow:hidden}.chat-header{border-bottom:1px solid var(--border);letter-spacing:.08em;text-transform:uppercase;color:var(--text-dim);flex-shrink:0;align-items:center;gap:6px;padding:8px 14px;font-size:11px;font-weight:700;display:flex}.chat-dot{background:var(--green);border-radius:50%;width:6px;height:6px}.chat-messages{flex-direction:column;flex:1;gap:12px;padding:12px;display:flex;overflow-y:auto}.chat-messages::-webkit-scrollbar{width:6px}.chat-messages::-webkit-scrollbar-thumb{background:#424242;border-radius:3px}.msg{flex-direction:column;gap:4px;display:flex}.msg-role{letter-spacing:.06em;text-transform:uppercase;font-size:10px;font-weight:700}.msg.user .msg-role{color:var(--accent)}.msg.assistant .msg-role{color:var(--green)}.msg-content{background:var(--active);white-space:pre-wrap;word-break:break-word;border-radius:6px;padding:8px 10px;font-size:12px;line-height:1.65}.msg.user .msg-content{color:#cce0ff;background:#1f3a5f}.msg.assistant .msg-content{color:#d4edda;background:#1e2a1e}.chat-sources{flex-direction:column;gap:3px;margin-top:4px;display:flex}.chat-source{color:var(--text-dim);background:var(--bg-darker);cursor:pointer;border-radius:3px;align-items:baseline;gap:6px;padding:3px 8px;font-size:11px;display:flex}.chat-source:hover{color:var(--accent)}.chat-source-label{color:var(--text);font-weight:500}.chat-input-area{border-top:1px solid var(--border);flex-direction:column;flex-shrink:0;gap:6px;padding:10px 12px;display:flex}.chat-input-row{gap:6px;display:flex}.chat-textarea{resize:none;background:var(--bg-darker);border:1px solid var(--border);color:var(--text);font:inherit;border-radius:5px;outline:none;flex:1;min-height:36px;max-height:120px;padding:7px 10px;font-size:12px;overflow-y:auto}.chat-textarea:focus{border-color:var(--accent)}.chat-textarea::placeholder{color:var(--text-dim)}.chat-send{background:var(--accent);color:#fff;cursor:pointer;font:inherit;border:none;border-radius:5px;align-self:flex-end;padding:7px 14px;font-size:12px}.chat-send:hover{background:var(--accent-dim)}.chat-send:disabled{opacity:.4;cursor:default}.chat-hint{color:var(--text-dim);font-size:10px}.files-panel{flex-direction:column;flex:1;display:flex;overflow:hidden}.drop-zone{border:1.5px dashed var(--border);text-align:center;cursor:pointer;border-radius:6px;flex-shrink:0;margin:8px;padding:16px 10px;transition:border-color .15s,background .15s}.drop-zone:hover,.drop-zone.dragging{border-color:var(--accent);background:#1a2a3a}.drop-hint{color:var(--text-dim);pointer-events:none;font-size:11px;line-height:1.6}.file-tree{flex:1;overflow-y:auto}.file-tree::-webkit-scrollbar{width:4px}.file-tree::-webkit-scrollbar-thumb{background:#424242;border-radius:2px}.file-folder{cursor:pointer;color:var(--text-dim);-webkit-user-select:none;user-select:none;align-items:center;gap:4px;padding:4px 10px;font-size:12px;display:flex}.file-folder:hover{color:var(--text);background:var(--hover)}.file-folder-arrow{width:10px;font-size:10px}.file-item{color:var(--text);border-radius:3px;align-items:center;gap:4px;padding:3px 8px 3px 12px;font-size:11px;display:flex}.file-item:hover{background:var(--hover)}.file-icon{flex-shrink:0;font-size:12px}.file-name{white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:12px;overflow:hidden}.file-meta{color:var(--text-dim);flex-shrink:0;font-size:10px}.file-insert{border:1px solid var(--border);color:var(--accent);cursor:pointer;opacity:0;background:0 0;border-radius:3px;flex-shrink:0;padding:0 4px;font-size:12px;line-height:1.4}.file-delete{color:var(--text-dim);cursor:pointer;opacity:0;background:0 0;border:none;flex-shrink:0;padding:0 2px;font-size:13px;line-height:1}.file-item:hover .file-insert,.file-item:hover .file-delete{opacity:1}.file-delete:hover{color:var(--red)}.apply-overlay{z-index:300;background:#000000a6;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.apply-modal{background:#252526;border:1px solid #555;border-radius:8px;flex-direction:column;width:560px;max-width:90vw;max-height:80vh;display:flex;overflow:hidden;box-shadow:0 20px 60px #0009}.apply-modal-header{border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:center;padding:10px 16px;display:flex}.apply-modal-title{color:var(--text-bright);font-size:13px;font-weight:600}.apply-draft-badge{color:var(--green);background:#1a3a2a;border:1px solid #2a5a2a;border-radius:3px;margin-left:8px;padding:1px 6px;font-size:10px;font-weight:400}.apply-explanation{color:var(--text-dim);border-bottom:1px solid var(--border);background:var(--bg-darker);white-space:pre-wrap;word-break:break-word;max-height:100px;padding:8px 16px;font-size:11px;overflow-y:auto}.apply-preview{white-space:pre-wrap;word-break:break-word;color:var(--text);background:var(--bg-darker);flex:1;margin:0;padding:14px 16px;font-size:12px;line-height:1.7;overflow-y:auto}.apply-preview::-webkit-scrollbar{width:6px}.apply-preview::-webkit-scrollbar-thumb{background:#424242;border-radius:3px}.apply-actions{border-top:1px solid var(--border);flex-shrink:0;gap:8px;padding:12px 16px;display:flex}.apply-btn-replace{background:var(--accent);color:#fff;font:inherit;cursor:pointer;border:none;border-radius:4px;padding:6px 14px;font-size:12px;font-weight:600}.apply-btn-replace:hover{background:var(--accent-dim)}.apply-btn-insert{color:var(--green);border:1px solid var(--green);font:inherit;cursor:pointer;background:#1a3a2a;border-radius:4px;padding:6px 14px;font-size:12px}.apply-btn-insert:hover{background:#254d38}.apply-btn-discard{color:var(--text-dim);border:1px solid var(--border);font:inherit;cursor:pointer;background:0 0;border-radius:4px;margin-left:auto;padding:6px 14px;font-size:12px}.apply-btn-discard:hover{color:var(--text);border-color:var(--text-dim)}.apply-hint{color:var(--text-dim);flex-shrink:0;padding:0 16px 10px;font-size:11px}.tool-calls{flex-direction:column;gap:2px;margin-bottom:4px;display:flex}.tool-call-row{color:var(--text-dim);background:var(--bg-darker);border-left:2px solid var(--accent);border-radius:3px;align-items:center;gap:5px;padding:3px 8px;font-size:11px;display:flex}.tool-call-icon{font-size:12px}.tool-call-name{color:var(--accent);font-weight:600}.tool-call-query{color:var(--text);font-style:italic}.tool-call-count{color:var(--green);margin-left:auto}.msg-apply-row{margin-top:6px}.apply-trigger-btn{color:var(--green);font:inherit;cursor:pointer;background:#1a2d1a;border:1px solid #2a5a2a;border-radius:4px;padding:4px 10px;font-size:11px;font-weight:600}.apply-trigger-btn:hover{border-color:var(--green);background:#1e3d1e}.attach-btn{border:1px solid var(--border);color:var(--text-dim);cursor:pointer;background:0 0;border-radius:4px;flex-shrink:0;align-self:flex-end;padding:6px 8px;font-size:14px}.attach-btn:hover{color:var(--text);border-color:var(--text-dim)}.attached-files{flex-wrap:wrap;gap:4px;padding-bottom:4px;display:flex}.attached-chip{color:#79b8ff;background:#1f3a5f;border-radius:4px;align-items:center;gap:4px;padding:2px 6px;font-size:11px;display:flex}.chip-remove{color:#79b8ff;cursor:pointer;background:0 0;border:none;padding:0;font-size:13px;line-height:1}.chip-remove:hover{color:var(--red)}.msg-attachments{flex-wrap:wrap;gap:4px;margin-bottom:4px;display:flex}.msg-attachment-chip{color:#79b8ff;background:#1f3a5f;border-radius:3px;padding:1px 6px;font-size:10px}.drawer-overlay{z-index:200;background:#0009;justify-content:flex-end;display:flex;position:fixed;inset:0}.drawer{border-left:1px solid var(--border);background:#1e1e1e;flex-direction:column;width:680px;max-width:90vw;display:flex;overflow:hidden}.drawer-header{border-bottom:1px solid var(--border);color:var(--text-bright);flex-shrink:0;justify-content:space-between;align-items:center;padding:10px 16px;font-size:12px;font-weight:600;display:flex}.close-btn{color:var(--text-dim);cursor:pointer;background:0 0;border:none;border-radius:3px;padding:2px 6px;font-size:16px}.close-btn:hover{background:var(--hover);color:var(--text)}.judgment-preview{white-space:pre-wrap;word-break:break-word;color:var(--text);flex:1;padding:16px;font-size:12px;line-height:1.8;overflow-y:auto}.drawer-actions{border-top:1px solid var(--border);gap:6px;padding:10px 16px;display:flex}.err{color:var(--red);padding:4px 12px;font-size:12px}.muted{color:var(--text-dim);font-size:11px}.loading{color:var(--text-dim);padding:8px 12px;font-size:12px}
