.app-layout{width:100%;height:100%;display:flex}.sidebar{background:var(--sidebar);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;width:248px;display:flex;overflow:hidden}.sidebar-logo{border-bottom:1px solid var(--border);flex-shrink:0;align-items:center;gap:10px;padding:18px 16px 14px;display:flex}.logo-mark-wide{color:#000;flex-shrink:0;justify-content:center;align-items:center;width:48px;height:32px;font-family:IBM Plex Mono,monospace;font-size:11px;font-weight:600;display:flex}.logo-text{letter-spacing:.1em;font-family:IBM Plex Mono,monospace;font-size:13px;font-weight:600}.logo-sub{color:var(--muted);letter-spacing:.08em;font-family:IBM Plex Mono,monospace;font-size:9px}.model-wrap{border-bottom:1px solid var(--border);flex-shrink:0;padding:10px 12px}.model-label{letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-bottom:6px;font-family:IBM Plex Mono,monospace;font-size:9px}.model-select-row{align-items:center;gap:6px;display:flex}.btn-refresh{background:var(--surface);border:1px solid var(--border2);width:28px;height:28px;color:var(--muted2);cursor:pointer;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;font-size:13px;transition:all .15s;display:flex}.btn-refresh:hover{border-color:var(--muted2);color:var(--text)}.btn-refresh.spinning{animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.sidebar-section{letter-spacing:.12em;text-transform:uppercase;color:var(--muted);flex-shrink:0;justify-content:space-between;align-items:center;padding:12px 12px 5px;font-family:IBM Plex Mono,monospace;font-size:9px;display:flex}.sidebar-section span{color:var(--muted);font-size:9px}.agent-list{flex:1;padding:0 8px 8px;overflow-y:auto}.agent-list::-webkit-scrollbar{width:3px}.agent-list::-webkit-scrollbar-track{background:0 0}.agent-list::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}.agent-item{opacity:.38;border-radius:7px;align-items:center;gap:9px;margin-bottom:1px;padding:7px 9px;transition:background .15s,opacity .3s;display:flex}.agent-item.available{opacity:1}.agent-item.selected-agent{background:var(--surface);opacity:1}.agent-item:hover{background:var(--surface);opacity:.8}.agent-item.selected-agent:hover{opacity:1}.agent-dot{border-radius:50%;flex-shrink:0;width:7px;height:7px;position:relative}.agent-dot.streaming:after{content:"";opacity:.5;border:1.5px solid;border-radius:50%;animation:1s infinite pulse-ring;position:absolute;inset:-3px}@keyframes pulse-ring{0%{opacity:.5;transform:scale(1)}to{opacity:0;transform:scale(1.8)}}.agent-info{flex:1;min-width:0}.agent-name{white-space:nowrap;text-overflow:ellipsis;font-size:12px;font-weight:700;overflow:hidden}.agent-role-tag{color:var(--muted2);white-space:nowrap;text-overflow:ellipsis;margin-top:1px;font-family:IBM Plex Mono,monospace;font-size:9px;overflow:hidden}.agent-status-dot{background:0 0;border-radius:50%;flex-shrink:0;width:5px;height:5px}.agent-status-dot.on{background:#3ddc84}.agent-status-dot.streaming{background:#60efbc;animation:.8s infinite blink}@keyframes blink{0%,to{opacity:1}50%{opacity:.3}}.sidebar-footer{border-top:1px solid var(--border);flex-shrink:0;padding:12px 14px}.ollama-status{color:var(--muted2);align-items:center;gap:8px;font-family:IBM Plex Mono,monospace;font-size:10px;display:flex}.ollama-dot{background:var(--muted);border-radius:50%;width:7px;height:7px;transition:background .3s}.ollama-dot.ok{background:#3ddc84}.ollama-dot.err{background:#ff8c69}.sidebar-overlay{display:none}@media (width<=768px){.sidebar{z-index:1000;height:100%;transition:transform .3s;position:fixed;top:0;left:0;transform:translate(-100%);box-shadow:2px 0 8px #0000004d}.sidebar.open{transform:translate(0)}.chat-header{padding:13px 16px}.btn-clear{padding:5px 8px;font-size:9px}.chat-sub{font-size:10px}.sidebar-overlay{z-index:999;opacity:0;pointer-events:none;background:#00000080;transition:opacity .3s;display:block;position:fixed;inset:0}.sidebar-overlay.visible{opacity:1;pointer-events:auto}}.btn-menu{display:none}@media (width<=768px){.btn-menu{cursor:pointer;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:4px;display:flex}}.hamburger{flex-direction:column;gap:4px;width:20px;display:flex}.hamburger span{background:var(--text);border-radius:1px;height:2px;transition:all .2s;display:block}.hamburger.open span:first-child{transform:translateY(6px)rotate(45deg)}.hamburger.open span:nth-child(2){opacity:0}.hamburger.open span:nth-child(3){transform:translateY(-6px)rotate(-45deg)}@media (device-width<=480px),(device-height<=480px){.chat-sub{display:none}}.btn-clear{border:1px solid var(--border2);color:var(--muted2);cursor:pointer;letter-spacing:.05em;background:0 0;border-radius:6px;padding:5px 11px;font-family:IBM Plex Mono,monospace;font-size:10px;transition:all .15s}.btn-clear:hover{border-color:var(--muted2);color:var(--text)}.main{flex-direction:column;flex:1;display:flex;overflow:hidden}.chat-header{border-bottom:1px solid var(--border);background:var(--bg);flex-shrink:0;align-items:center;gap:14px;padding:13px 22px;display:flex}.chat-title{font-size:15px;font-weight:700}.chat-sub{color:var(--muted2);font-family:IBM Plex Mono,monospace;font-size:11px}.header-actions{align-items:center;gap:8px;margin-left:auto;display:flex}.messages{scroll-behavior:smooth;flex-direction:column;flex:1;gap:16px;padding:26px 22px;display:flex;overflow-y:auto}.messages::-webkit-scrollbar{width:4px}.messages::-webkit-scrollbar-track{background:0 0}.messages::-webkit-scrollbar-thumb{background:var(--scrollbar);border-radius:4px}.empty-state{opacity:.35;color:var(--text);text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:10px;margin:auto;font-family:IBM Plex Mono,monospace;font-size:12px;display:flex}.empty-icon{margin-bottom:6px;font-size:30px}.msg-system{flex-direction:column;gap:4px;animation:.2s both fadeSlideIn;display:flex}.msg-system-inner{color:#60efbca6;background:#60efbc0a;border:1px dashed #60efbc38;border-radius:8px;padding:10px 14px;font-family:IBM Plex Mono,monospace;font-size:11px;line-height:1.6}.routing-agents{flex-wrap:wrap;gap:5px;margin-top:8px;display:flex}.routing-tag{opacity:.85;border:1px solid;border-radius:12px;padding:2px 8px;font-family:IBM Plex Mono,monospace;font-size:10px}.msg{flex-direction:column;gap:5px;animation:.2s both fadeSlideIn;display:flex}@keyframes fadeSlideIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.msg.user{align-items:flex-end}.msg.agent{align-items:flex-start}.msg-meta{color:var(--muted2);align-items:center;gap:7px;font-family:IBM Plex Mono,monospace;font-size:10px;display:flex}.msg-avatar{color:#000;border-radius:5px;flex-shrink:0;justify-content:center;align-items:center;width:21px;height:21px;font-family:IBM Plex Mono,monospace;font-size:8px;font-weight:700;display:flex}.msg-bubble{word-break:break-word;white-space:pre-wrap;border-radius:12px;max-width:74%;padding:11px 15px;font-size:13.5px;line-height:1.65;position:relative}.msg.user .msg-bubble{background:var(--surface);border:1px solid var(--border2);border-radius:12px 12px 4px}.msg.agent .msg-bubble{border-radius:12px 12px 12px 4px}.msg-render{white-space:normal}.msg-render>:first-child{margin-top:0}.msg-render>:last-child{margin-bottom:0}.msg-render p,.msg-render ul,.msg-render ol,.msg-render pre,.msg-render blockquote,.msg-render table{margin:.55em 0}.msg-render ul,.msg-render ol{padding-left:1.35em}.msg-render li+li{margin-top:.15em}.msg-render a{color:inherit;text-underline-offset:2px;text-decoration-color:currentColor}.msg-render code{background:#ffffff12;border:1px solid #ffffff0f;border-radius:4px;padding:.08em .28em;font-family:IBM Plex Mono,monospace;font-size:.9em}.msg-render pre{scrollbar-width:thin;scrollbar-color:var(--scrollbar) transparent;white-space:pre;background:#0000003d;border:1px solid #ffffff14;border-radius:7px;padding:4px 11px;position:relative;overflow-x:auto}.msg-render pre code{background:0 0;border:0;padding:0;font-size:.86em}.code-copy-btn{width:20px;height:20px;color:var(--text);cursor:pointer;opacity:.2;background:0 0;border:0;justify-content:center;align-items:center;padding:0;font-size:20px;line-height:1;transition:color .15s,opacity .15s ease-in,transform .15s;display:flex;position:absolute;top:6px;right:6px}.code-copy-btn svg{width:20px;height:20px;display:block}.code-copy-btn .icon-check{display:none}.msg-render pre:hover .code-copy-btn,.code-copy-btn:focus-visible{opacity:1}.code-copy-btn.copied{color:#60efbc;opacity:1}.code-copy-btn.copied .icon-copy{display:none}.code-copy-btn.copied .icon-check{display:block}.code-copy-btn.copy-failed{color:#ff8f8f;opacity:1}.cursor{vertical-align:text-bottom;background:currentColor;width:2px;height:13px;margin-left:2px;animation:.6s step-end infinite blink-cursor;display:inline-block}@keyframes blink-cursor{0%,to{opacity:1}50%{opacity:0}}.stop-btn{border:2px solid var(--bg);cursor:pointer;color:#000;z-index:10;border-radius:50%;justify-content:center;align-items:center;width:20px;height:20px;font-size:7px;font-weight:700;transition:transform .15s;display:flex;position:absolute;top:-9px;right:-9px}.stop-btn:hover{transform:scale(1.2)}.interrupted-tag{color:var(--muted);border:1px solid var(--border);border-radius:4px;margin-top:4px;padding:2px 6px;font-family:IBM Plex Mono,monospace;font-size:9px;display:inline-block}.thinking-dots span{background:currentColor;border-radius:50%;width:5px;height:5px;margin:0 2px;animation:1.2s infinite bounce-dot;display:inline-block}.thinking-dots span:nth-child(2){animation-delay:.2s}.thinking-dots span:nth-child(3){animation-delay:.4s}@keyframes bounce-dot{0%,80%,to{opacity:.4;transform:translateY(0)}40%{opacity:1;transform:translateY(-5px)}}.input-area{border-top:1px solid var(--border);background:var(--bg);flex-shrink:0;padding:14px 22px 18px}.input-row{align-items:flex-end;gap:10px;display:flex}.input-wrap{background:var(--input-bg);border:1px solid var(--border2);border-radius:11px;flex:1;align-items:flex-end;gap:8px;padding:4px 4px 4px 14px;transition:border-color .2s;display:flex}.input-wrap:focus-within{border-color:#60efbc}.send-btn{cursor:pointer;color:#000;background:#60efbc;border:none;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:34px;height:34px;font-size:14px;transition:all .15s;display:flex}.send-btn:hover{background:#4dd9a6;transform:scale(1.05)}.send-btn:disabled{background:var(--border2);color:var(--muted);cursor:default;transform:none}.hint-row{color:var(--muted);gap:14px;margin-top:7px;font-family:IBM Plex Mono,monospace;font-size:10px;display:flex}@media (device-width<=480px),(device-height<=480px){.hint-row{display:none}.task-input{line-height:unset;min-height:unset;padding:4px 0}.input-area{padding:10px 10px 14px}}.hint-row kbd{background:var(--surface);border:1px solid var(--border2);border-radius:3px;padding:1px 4px;font-family:IBM Plex Mono,monospace;font-size:9px}:root{--bg:#0e0f11;--sidebar:#111318;--surface:#16181d;--border:#222530;--border2:#2a2e3d;--text:#dde1ee;--muted:#4a5068;--muted2:#6b7394;--input-bg:#1a1c24;--scrollbar:#222530}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;overflow:hidden}body{background:var(--bg);color:var(--text);height:100vh;font-family:Cabinet Grotesk,sans-serif;display:flex}#root{width:100%;height:100%;display:flex}select{background:var(--surface);border:1px solid var(--border2);color:var(--text);cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%234a5068'/%3E%3C/svg%3E");background-position:right 8px center;background-repeat:no-repeat;border-radius:6px;outline:none;flex:1;padding:6px 24px 6px 8px;font-family:IBM Plex Mono,monospace;font-size:10px}select:focus{border-color:#60efbc}select option{background:#16181d}textarea{color:var(--text);resize:none;background:0 0;border:none;outline:none;flex:1;min-height:24px;max-height:120px;padding:9px 0;font-family:Cabinet Grotesk,sans-serif;font-size:14px;line-height:1.5}textarea::placeholder{color:var(--muted)}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--scrollbar);border-radius:4px}
