*{box-sizing:border-box}:root{--bg:#212121;--bg-sidebar:#171717;--bg-input:#2f2f2f;--bg-hover:#2a2a2a;--border:#3e3e3e;--text:#ececec;--text-dim:#9ca3af;--accent:#10a37f;--accent-hover:#0d8a6c;--danger:#ef4444;--radius:8px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Roboto,Helvetica,Arial,sans-serif}html,body,#root{background:var(--bg);height:100%;color:var(--text);margin:0}button{font:inherit;cursor:pointer;color:inherit;background:0 0;border:none}input,textarea{font:inherit;color:var(--text)}.boot-screen{height:100%;color:var(--text-dim);flex-direction:column;justify-content:center;align-items:center;gap:16px;display:flex}.boot-spinner{border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:32px;height:32px;animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.auth-page{background:var(--bg);justify-content:center;align-items:center;height:100%;display:flex}.auth-card{background:var(--bg-sidebar);border:1px solid var(--border);text-align:center;border-radius:12px;width:min(400px,92vw);padding:40px 36px}.auth-logo{font-size:40px}.auth-card h1{margin:12px 0 4px;font-size:22px}.auth-sub{color:var(--text-dim);margin:0 0 24px}.auth-form{text-align:left;flex-direction:column;gap:14px;display:flex}.auth-form label{color:var(--text-dim);flex-direction:column;gap:6px;font-size:13px;display:flex}.auth-form input{background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius);outline:none;padding:10px 12px}.auth-form input:focus{border-color:var(--accent)}.btn-primary{background:var(--accent);color:#fff;border-radius:var(--radius);margin-top:6px;padding:11px;font-size:15px;font-weight:600}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.auth-error{color:#fca5a5;border-radius:var(--radius);background:#ef444426;border:1px solid #ef444466;padding:8px 10px;font-size:13px}.auth-alt{color:var(--text-dim);margin-top:20px;font-size:13px}.auth-alt a{color:var(--accent);text-decoration:none}.chat-layout{height:100vh;display:flex}.sidebar{background:var(--bg-sidebar);border-right:1px solid var(--border);flex-direction:column;width:260px;min-width:260px;display:flex}.sidebar-head{padding:12px}.btn-new-chat{border:1px solid var(--border);border-radius:var(--radius);width:100%;color:var(--text);background:0 0;align-items:center;gap:8px;padding:11px 12px;transition:background .15s;display:flex}.btn-new-chat:hover{background:var(--bg-hover)}.plus{font-size:16px;font-weight:600}.conv-list{flex:1;padding:0 8px;overflow-y:auto}.conv-item{border-radius:var(--radius);cursor:pointer;color:var(--text-dim);justify-content:space-between;align-items:center;gap:6px;margin-bottom:2px;padding:9px 10px;display:flex}.conv-item:hover,.conv-item.active{background:var(--bg-hover);color:var(--text)}.conv-title{text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:14px;overflow:hidden}.conv-actions{gap:2px;display:none}.conv-item:hover .conv-actions,.conv-item.active .conv-actions{display:inline-flex}.conv-actions button{color:var(--text-dim);border-radius:4px;padding:2px 4px;font-size:12px}.conv-actions button:hover{color:var(--text);background:var(--bg-input)}.conv-empty{color:var(--text-dim);text-align:center;padding:24px 0;font-size:13px}.sidebar-foot{border-top:1px solid var(--border);padding:12px}.user-chip{border-radius:var(--radius);align-items:center;gap:10px;padding:6px;display:flex}.user-chip:hover{background:var(--bg-hover)}.avatar{color:#fff;background:linear-gradient(135deg,#10a37f,#0ea5e9);border-radius:50%;justify-content:center;align-items:center;width:32px;min-width:32px;height:32px;font-size:15px;font-weight:700;display:inline-flex}.avatar.sm{width:30px;min-width:30px;height:30px;font-size:14px}.user-meta{flex:1;overflow:hidden}.user-name{white-space:nowrap;text-overflow:ellipsis;font-size:14px;overflow:hidden}.user-role{color:var(--text-dim);font-size:12px}.btn-logout{border:1px solid var(--border);border-radius:var(--radius);width:100%;color:var(--text-dim);background:0 0;justify-content:center;align-items:center;gap:6px;margin-top:8px;padding:8px 0;font-size:13px;transition:all .15s;display:flex}.btn-logout:hover{color:#fca5a5;background:#ef444414;border-color:#ef444473}.chat-main{flex-direction:column;flex:1;min-width:0;display:flex}.chat-toolbar{border-bottom:1px solid var(--border);background:var(--bg);justify-content:space-between;align-items:center;gap:12px;min-height:58px;padding:12px 20px;display:flex}.toolbar-left{align-items:center;gap:10px;min-width:0;display:flex}.toolbar-title{text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:600;overflow:hidden}.mode-pill{border:1px solid var(--border);color:var(--text-dim);white-space:nowrap;border-radius:999px;padding:3px 10px;font-size:12px}.mode-pill.mode-companion{color:#6ee7b7;border-color:#10a37f80}.mode-pill.mode-practice{color:#93c5fd;border-color:#0ea5e980}.mode-pill.mode-teacher{color:#fcd34d;border-color:#f59e0b80}.mode-picker{color:var(--text-dim);align-items:center;gap:6px;font-size:13px;display:flex}.mode-opt{border:1px solid var(--border);color:var(--text-dim);border-radius:999px;padding:4px 12px;font-size:13px}.mode-opt.active{border-color:var(--accent);color:var(--text);background:#10a37f26}.messages{flex:1;padding:24px 0;overflow-y:auto}.msg-row{gap:14px;max-width:820px;margin:0 auto;padding:14px 20px;display:flex}.msg-avatar{border-radius:50%;justify-content:center;align-items:center;width:32px;min-width:32px;height:32px;margin-top:2px;font-size:12px;font-weight:700;display:inline-flex}.msg-row.assistant .msg-avatar{color:#fff;background:linear-gradient(135deg,#10a37f,#0ea5e9)}.msg-row.user .msg-avatar{background:var(--bg-input);color:var(--text-dim)}.msg-bubble{word-break:break-word;flex:1;min-width:0;font-size:15px;line-height:1.75}.msg-row.user .msg-bubble{text-align:right}.user-text{background:var(--bg-input);text-align:left;white-space:pre-wrap;border-radius:14px 14px 4px;padding:10px 14px;display:inline-block}.markdown-body p{margin:.4em 0}.markdown-body pre{border:1px solid var(--border);border-radius:var(--radius);background:#0d0d0d;padding:12px 14px;overflow-x:auto}.markdown-body code{background:#0d0d0d;border-radius:4px;padding:.15em .4em;font-family:JetBrains Mono,Consolas,Menlo,monospace;font-size:.9em}.markdown-body pre code{background:0 0;padding:0}.markdown-body table{border-collapse:collapse;margin:.6em 0}.markdown-body th,.markdown-body td{border:1px solid var(--border);padding:6px 10px}.markdown-body ul,.markdown-body ol{padding-left:1.6em}.markdown-body li{margin:.2em 0}.markdown-body blockquote{border-left:3px solid var(--accent);color:var(--text-dim);margin:.6em 0;padding-left:12px}.cursor-blink{color:var(--accent);animation:1s step-start infinite blink}@keyframes blink{50%{opacity:0}}.skill-panel{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:8px;padding:8px 24px;display:flex;overflow-x:auto}.skill-panel-label{color:var(--text-dim);white-space:nowrap;font-size:12px}.skill-chip{border:1px solid var(--border);color:var(--text-dim);white-space:nowrap;background:0 0;border-radius:999px;padding:4px 12px;font-size:12px;transition:all .15s}.skill-chip:hover{border-color:var(--accent);color:var(--text);background:#10a37f1f}.tool-steps{flex-direction:column;gap:6px;margin:6px 0 12px;display:flex}.tool-card{background:var(--bg-sidebar);border:1px solid var(--border);border-radius:10px;align-self:flex-start;align-items:center;gap:8px;padding:6px 12px;font-size:13px;display:inline-flex}.tool-card.running{border-style:dashed}.tool-card-icon{text-align:center;width:18px}.tool-card.running .tool-card-icon{animation:1.2s linear infinite spin;display:inline-block}.tool-card.done{border-color:#10a37f73}.tool-card-name{color:var(--text);font-family:JetBrains Mono,Consolas,monospace;font-weight:600}.tool-card-summary{color:var(--text-dim);text-overflow:ellipsis;white-space:nowrap;max-width:420px;overflow:hidden}.composer-relative{max-width:820px;margin:0 auto;position:relative}.slash-menu{background:var(--bg-sidebar);border:1px solid var(--border);z-index:30;border-radius:12px;max-height:260px;position:absolute;bottom:calc(100% + 8px);left:0;right:0;overflow:hidden auto;box-shadow:0 8px 24px #00000073}.slash-item{text-align:left;width:100%;color:var(--text);align-items:baseline;gap:10px;padding:10px 14px;font-size:13px;display:flex}.slash-item:hover{background:var(--bg-hover)}.slash-cmd{color:var(--accent);white-space:nowrap;font-family:JetBrains Mono,Consolas,monospace;font-weight:700}.slash-desc{color:var(--text-dim);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.ask-banner{max-width:820px;color:var(--text);background:#10a37f1a;border:1px solid #10a37f66;border-radius:10px;flex-wrap:wrap;align-items:center;gap:8px;margin:0 auto 8px;padding:8px 14px;font-size:13px;display:flex}.ask-icon{animation:1.2s step-start infinite blink}.ask-options{flex-wrap:wrap;gap:6px;display:inline-flex}.ask-option{border:1px solid var(--accent);color:var(--text);background:0 0;border-radius:999px;padding:3px 10px;font-size:12px}.ask-option:hover{background:#10a37f33}.side-nav{border-bottom:1px solid var(--border);flex-direction:column;gap:2px;margin-bottom:8px;padding:0 8px 8px;display:flex}.side-nav-item{border-radius:var(--radius);color:var(--text-dim);align-items:center;gap:8px;padding:9px 10px;font-size:14px;text-decoration:none;transition:all .15s;display:flex}.side-nav-item:hover{background:var(--bg-hover);color:var(--text)}.page-shell{background:var(--bg);flex-direction:column;height:100vh;display:flex;overflow:hidden}.page-header{border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding:18px 28px;display:flex}.page-header h1{margin:0;font-size:20px}.page-sub{color:var(--text-dim);max-width:640px;margin:6px 0 0;font-size:13px}.page-actions{align-items:center;gap:10px;display:flex}.btn-primary.sm{margin:0;padding:8px 14px;font-size:13px}.btn-ghost{border:1px solid var(--border);border-radius:var(--radius);color:var(--text);background:0 0;padding:8px 14px;font-size:13px;text-decoration:none}.btn-ghost:hover{background:var(--bg-hover)}.info-banner{border-radius:var(--radius);color:var(--text);background:#10a37f1f;border:1px solid #10a37f66;justify-content:space-between;align-items:center;gap:8px;margin:12px 28px 0;padding:8px 14px;font-size:13px;display:flex}.info-banner button{color:var(--text)}.split-layout{flex:1;min-height:0;display:flex}.skill-side{border-right:1px solid var(--border);flex-direction:column;gap:6px;width:320px;min-width:320px;padding:10px;display:flex;overflow-y:auto}.skill-row{border:1px solid var(--border);cursor:pointer;border-radius:10px;padding:10px 12px;transition:border-color .15s;position:relative}.skill-row:hover,.skill-row.active{border-color:var(--accent);background:#10a37f0f}.skill-row-title{align-items:center;gap:8px;font-size:14px;font-weight:600;display:flex}.skill-row-desc{color:var(--text-dim);margin-top:4px;font-size:12px;line-height:1.5}.skill-row-actions{opacity:0;transition:opacity .15s;position:absolute;top:8px;right:8px}.skill-row:hover .skill-row-actions{opacity:1}.skill-row-actions button{color:var(--text-dim);padding:2px 6px}.skill-row-actions button:hover{color:#fca5a5}.tag{border:1px solid var(--border);color:var(--text-dim);white-space:nowrap;border-radius:999px;padding:1px 8px;font-size:11px}.tag.doc{color:#6ee7b7;border-color:#10a37f80}.tag.prim{color:#93c5fd;border-color:#0ea5e980}.skill-editor{flex-direction:column;flex:1;min-width:0;padding:14px 20px;display:flex}.editor-toolbar{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.md-editor{width:100%;min-height:0;color:var(--text);border:1px solid var(--border);resize:none;background:#0d0d0d;border-radius:10px;outline:none;flex:1;padding:14px;font-family:JetBrains Mono,Consolas,Menlo,monospace;font-size:13px;line-height:1.7}.md-editor:focus{border-color:var(--accent)}.editor-empty{color:var(--text-dim);border:1px dashed var(--border);border-radius:10px;flex:1;justify-content:center;align-items:center;display:flex}.file-table{border:1px solid var(--border);border-radius:10px;flex:1;min-height:120px;margin:16px 28px;overflow-y:auto}.file-row{border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:11px 16px;font-size:14px;display:flex}.file-row:last-child{border-bottom:none}.file-row.head{color:var(--text-dim);background:var(--bg-sidebar);font-size:12px;position:sticky;top:0}.file-row.head span{font-weight:600}.col-name{text-overflow:ellipsis;white-space:nowrap;flex:1;align-items:center;gap:8px;min-width:0;display:flex;overflow:hidden}.col-size{width:90px;color:var(--text-dim);font-size:13px}.col-status{width:130px;font-size:13px}.col-time{width:200px;color:var(--text-dim);font-size:12px}.col-op{text-align:right;width:50px}.col-op button{color:var(--text-dim);padding:2px 6px}.col-op button:hover{color:#fca5a5}.status-spin{color:var(--text-dim);animation:1.2s step-start infinite blink}.status-fail{color:#fca5a5}.welcome{text-align:center;max-width:720px;margin:60px auto 0;padding:0 20px}.welcome-logo{font-size:56px}.welcome h2{margin:14px 0 6px;font-size:26px}.welcome p{color:var(--text-dim);margin-bottom:24px}.suggestions{flex-direction:column;align-items:stretch;gap:10px;display:flex}.suggestion{background:var(--bg-sidebar);border:1px solid var(--border);border-radius:var(--radius);text-align:left;color:var(--text);padding:12px 16px;transition:background .15s}.suggestion:hover{background:var(--bg-hover)}.error-banner{color:#fca5a5;border-radius:var(--radius);background:#ef44441f;border:1px solid #ef444466;justify-content:space-between;align-items:center;max-width:780px;margin:10px auto;padding:10px 14px;font-size:13px;display:flex}.error-banner button{color:#fca5a5;padding:0 4px}.composer-wrap{padding:8px 20px 16px}.composer{background:var(--bg-input);border:1px solid var(--border);border-radius:20px;align-items:flex-end;gap:10px;max-width:820px;margin:0 auto;padding:10px 12px;transition:border-color .15s;display:flex}.composer:focus-within{border-color:var(--accent)}.composer textarea{resize:none;background:0 0;border:none;outline:none;flex:1;max-height:200px;padding:4px 6px;line-height:1.5}.composer textarea::placeholder{color:#6b7280}.btn-send,.btn-stop{border-radius:50%;justify-content:center;align-items:center;width:34px;min-width:34px;height:34px;font-size:15px;display:inline-flex}.btn-send{background:var(--accent);color:#fff}.btn-send:hover:not(:disabled){background:var(--accent-hover)}.btn-send:disabled{opacity:.4;cursor:not-allowed}.btn-stop{background:var(--danger);color:#fff;font-size:13px}.composer-hint{text-align:center;max-width:820px;color:var(--text-dim);margin:8px auto 0;font-size:12px}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:#4a4a4a;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#5a5a5a}
