*{margin:0;padding:0;box-sizing:border-box}:root{--bg-deep: #0d1117;--bg-panel: #161b22;--bg-input: #1c2128;--border: #2d333b;--text-primary: #e6edf3;--text-dim: #8b949e;--accent: #4f8cff;--accent-dim: #2d4a7c;--user-bubble: #1f6feb}html,body,#root{height:100%;font-family:Segoe UI,system-ui,-apple-system,sans-serif;background:var(--bg-deep);color:var(--text-primary)}.app{display:flex;height:100vh;overflow:hidden}.sidebar{width:260px;background:var(--bg-panel);border-right:1px solid var(--border);display:flex;flex-direction:column;flex-shrink:0}.sidebar-header{padding:20px;border-bottom:1px solid var(--border)}.sidebar-header h1{font-size:16px;font-weight:600;letter-spacing:.2px}.sidebar-header .status{font-size:12px;color:var(--text-dim);margin-top:4px;display:flex;align-items:center;gap:6px}.status-dot{width:6px;height:6px;border-radius:50%;background:#3fb950}.new-chat-btn{margin:12px 16px;padding:10px 14px;background:var(--accent);border:none;border-radius:8px;color:#fff;font-size:14px;font-weight:500;cursor:pointer;transition:background .15s}.new-chat-btn:hover{background:#3a7ae0}.conv-list{flex:1;overflow-y:auto;padding:8px 12px}.conv-item{padding:10px 12px;border-radius:8px;cursor:pointer;font-size:13px;color:var(--text-dim);margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:background .15s}.conv-item:hover{background:var(--bg-input)}.conv-item.active{background:var(--accent-dim);color:var(--text-primary)}.main{flex:1;display:flex;flex-direction:column;min-width:0}.chat-area{flex:1;overflow-y:auto;padding:24px 0}.empty-state{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--text-dim);gap:8px}.empty-state .glyph{font-size:32px;margin-bottom:8px;opacity:.6}.msg-row{max-width:720px;margin:0 auto;padding:10px 24px;display:flex}.msg-row.user{justify-content:flex-end}.bubble{max-width:75%;padding:12px 16px;border-radius:12px;line-height:1.5;font-size:15px;white-space:pre-wrap}.bubble.user{background:var(--user-bubble);color:#fff;border-radius:12px 12px 2px}.bubble.assistant{background:var(--bg-panel);border:1px solid var(--border);border-radius:12px 12px 12px 2px}.bubble.thinking{color:var(--text-dim);font-style:italic}.input-area{border-top:1px solid var(--border);padding:16px 24px}.input-wrap{max-width:720px;margin:0 auto;display:flex;gap:10px;align-items:flex-end;background:var(--bg-input);border:1px solid var(--border);border-radius:12px;padding:8px 8px 8px 16px}.input-wrap textarea{flex:1;background:transparent;border:none;color:var(--text-primary);font-size:15px;font-family:inherit;resize:none;outline:none;max-height:160px;padding:8px 0;line-height:1.4}.input-wrap textarea::placeholder{color:var(--text-dim)}.send-btn{background:var(--accent);border:none;border-radius:8px;width:36px;height:36px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:#fff;flex-shrink:0;transition:background .15s,opacity .15s}.send-btn:hover{background:#3a7ae0}.send-btn:disabled{opacity:.4;cursor:not-allowed}.model-select{font-size:12px;color:var(--text-dim);text-align:center;margin-top:8px}.login-screen{height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg-deep)}.login-card{width:340px;background:var(--bg-panel);border:1px solid var(--border);border-radius:14px;padding:32px}.login-card h1{font-size:18px;margin-bottom:6px}.login-card p{font-size:13px;color:var(--text-dim);margin-bottom:24px}.login-card input{width:100%;padding:11px 14px;margin-bottom:12px;background:var(--bg-input);border:1px solid var(--border);border-radius:8px;color:var(--text-primary);font-size:14px;outline:none}.login-card input:focus{border-color:var(--accent)}.login-card button{width:100%;padding:11px;background:var(--accent);border:none;border-radius:8px;color:#fff;font-size:14px;font-weight:500;cursor:pointer;margin-top:4px}.login-card .error{color:#f85149;font-size:13px;margin-bottom:12px}.login-card .toggle{text-align:center;margin-top:16px;font-size:13px;color:var(--text-dim);cursor:pointer}.login-card .toggle:hover{color:var(--accent)}
