:root{color-scheme:dark;--bg:#0d1117;--bg-panel:#11161d;--bg-elevated:#161c25;--bg-hover:#1c242f;--code-bg:#0a0e13;--border:#232c38;--border-strong:#2e3a49;--text:#e6e9ee;--text-dim:#8b95a3;--text-faint:#5c6675;--accent:#4f8ef7;--accent-hover:#6ba1f8;--accent-contrast:#ffffff;--danger:#e5534b;--success:#57ab5a;--warning:#c69026;--user-bubble:#1f3a5f;--font-sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--font-mono:ui-monospace,"SF Mono",SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace;--sidebar-width:280px;--radius:10px;--radius-small:7px}*{box-sizing:border-box}body,html{margin:0;padding:0;height:100%}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button{font-family:inherit}::selection{background:rgba(79,142,247,.35)}.button{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;border:1px solid transparent;border-radius:var(--radius-small);padding:.55rem 1.1rem;font-size:.95rem;font-weight:500;cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease}.button:disabled{opacity:.5;cursor:not-allowed}.button-primary{background:var(--accent);color:var(--accent-contrast)}.button-primary:hover:not(:disabled){background:var(--accent-hover)}.button-secondary{background:var(--bg-elevated);border-color:var(--border);color:var(--text)}.button-secondary:hover:not(:disabled){background:var(--bg-hover)}.button-danger{background:transparent;border-color:var(--danger);color:var(--danger)}.button-danger:hover:not(:disabled){background:rgba(229,83,75,.12)}.button-small{padding:.25rem .7rem;font-size:.82rem;background:var(--bg-elevated);border-color:var(--border-strong);color:var(--text)}.spinner{display:inline-block;width:13px;height:13px;border:2px solid var(--text-faint);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite;vertical-align:-2px}@keyframes spin{to{transform:rotate(1turn)}}.banner{padding:.6rem 1rem;font-size:.9rem;border-bottom:1px solid var(--border)}.banner-error{background:rgba(229,83,75,.1);color:#f0a9a5}.center-screen{min-height:100dvh;justify-content:center;padding:1.5rem}.center-screen,.loading-note{display:flex;align-items:center}.loading-note{color:var(--text-dim);gap:.6rem}.card{width:100%;max-width:420px;background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);padding:2rem}.auth-logo{font-size:1.35rem;font-weight:700;letter-spacing:-.02em;color:var(--accent);margin-bottom:.35rem}.auth-title{margin:0 0 .75rem;font-size:1.15rem;font-weight:600}.auth-hint{margin:0 0 1.25rem;color:var(--text-dim);font-size:.9rem}.auth-form{display:flex;flex-direction:column;gap:1rem}.auth-form .banner{border:1px solid rgba(229,83,75,.35);border-radius:var(--radius-small)}.auth-notice{display:flex;flex-direction:column;gap:1.25rem;color:var(--text-dim);font-size:.95rem}.auth-notice p{margin:0}.auth-back{text-align:center;text-decoration:none}.field{display:flex;flex-direction:column;gap:.4rem}.field-label{font-size:.85rem;color:var(--text-dim)}.field input,.field select{background:var(--bg);border:1px solid var(--border-strong);border-radius:var(--radius-small);color:var(--text);padding:.6rem .8rem;font-size:.95rem;font-family:inherit;outline:none}.field input:focus,.field select:focus{border-color:var(--accent)}.connection-list{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1.25rem}.connection-item{display:flex;align-items:center;gap:.75rem;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-small);padding:.55rem .8rem;font-size:.88rem}.connection-provider{font-weight:600}.connection-model{color:var(--text-dim);flex:1 1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.connection-status{font-size:.8rem;color:var(--text-dim)}.connection-status-connected{color:var(--success)}.connection-status-error,.connection-status-expired{color:var(--danger)}.chat-shell{display:flex;height:100dvh;overflow:hidden}.sidebar{width:var(--sidebar-width);flex-shrink:0;display:flex;flex-direction:column;background:var(--bg-panel);border-right:1px solid var(--border)}.sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.1rem .6rem}.sidebar-logo{font-size:1.15rem;font-weight:700;letter-spacing:-.02em;color:var(--accent)}.sidebar-close{display:none;background:none;border:none;color:var(--text-dim);font-size:1.4rem;cursor:pointer;line-height:1}.sidebar-new-chat{margin:.4rem 1.1rem .9rem}.sidebar-list{flex:1 1;overflow-y:auto;padding:0 .6rem;display:flex;flex-direction:column;gap:2px}.sidebar-note{color:var(--text-faint);font-size:.85rem;padding:.8rem .5rem}.sidebar-item{display:flex;flex-direction:column;gap:.15rem;width:100%;text-align:left;background:none;border:none;border-radius:var(--radius-small);color:var(--text);padding:.55rem .65rem;cursor:pointer}.sidebar-item:hover{background:var(--bg-hover)}.sidebar-item-active{background:var(--bg-elevated)}.sidebar-item-title{font-size:.92rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-item-date{font-size:.78rem;color:var(--text-faint)}.sidebar-footer{border-top:1px solid var(--border);padding:.8rem 1.1rem;display:flex;flex-direction:column;gap:.5rem}.sidebar-user{font-size:.85rem;color:var(--text-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-footer-actions{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.sidebar-link{font-size:.82rem;color:var(--accent);background:none;border:none;padding:0;cursor:pointer}.sidebar-link:hover{text-decoration:underline}.sidebar-logout{color:var(--text-dim)}.sidebar-backdrop{display:none}.chat-main{flex:1 1;min-width:0;display:flex;flex-direction:column;background:var(--bg)}.chat-header{display:flex;align-items:center;gap:.9rem;padding:.7rem 1.2rem;border-bottom:1px solid var(--border);background:var(--bg-panel)}.chat-menu-button{display:none;background:none;border:none;color:var(--text);font-size:1.2rem;cursor:pointer;padding:.2rem .4rem}.chat-title{font-weight:600;font-size:.98rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1 1;min-width:0}.chat-status{display:flex;align-items:center;gap:.9rem;font-size:.83rem;color:var(--text-dim);flex-shrink:0}.chat-status-live{display:inline-flex;align-items:center;gap:.45rem;color:var(--accent)}.chat-status-connection{display:inline-flex;align-items:center;gap:.5rem}.chat-status-lost{color:var(--danger)}.message-list{flex:1 1;overflow-y:auto;padding:1.2rem 0}.message-list-inner{max-width:820px;margin:0 auto;padding:0 1.25rem;gap:1rem}.message-list-empty,.message-list-inner{display:flex;flex-direction:column}.empty-state{margin:auto;text-align:center;max-width:460px;padding:2rem 1.5rem}.empty-state-title{font-size:1.1rem;font-weight:600;margin:0 0 .5rem}.empty-state-hint{color:var(--text-dim);font-size:.9rem;margin:0}.message-row{display:flex}.message-row-user{justify-content:flex-end}.message-bubble{max-width:75%;padding:.6rem .95rem;border-radius:var(--radius);white-space:pre-wrap;word-break:break-word}.message-user{background:var(--user-bubble);border-bottom-right-radius:4px}.message-assistant{max-width:100%;min-width:0;flex:1 1;display:flex;flex-direction:column;gap:.5rem}.assistant-pending{color:var(--text-dim);display:inline-flex;align-items:center;gap:.5rem;font-size:.92rem}.message-system{width:100%;text-align:center;font-size:.84rem;color:var(--text-dim);padding:.3rem 0}.message-system-error{color:var(--danger)}.thinking-block{border:1px solid var(--border);border-radius:var(--radius-small);background:var(--bg-panel);max-width:100%}.thinking-block-header{display:flex;align-items:center;gap:.5rem;width:100%;background:none;border:none;color:var(--text-dim);font-size:.85rem;padding:.45rem .7rem;cursor:pointer;text-align:left}.thinking-block-header:hover{color:var(--text)}.thinking-block-chevron{margin-left:auto}.thinking-block-body{border-top:1px solid var(--border);padding:.6rem .8rem;color:var(--text-dim);font-size:.86rem;white-space:pre-wrap;word-break:break-word;max-height:320px;overflow-y:auto}.tool-card{border:1px solid var(--border);border-radius:var(--radius-small);background:var(--bg-panel);max-width:640px}.tool-card-running{border-color:rgba(79,142,247,.45)}.tool-card-error{border-color:rgba(229,83,75,.45)}.tool-card-header{display:flex;align-items:center;gap:.55rem;width:100%;background:none;border:none;color:var(--text);padding:.5rem .75rem;cursor:pointer;text-align:left;font-size:.9rem}.tool-card-header:hover{background:var(--bg-hover)}.tool-card-icon{flex-shrink:0}.tool-card-name{font-family:var(--font-mono);font-size:.86rem;font-weight:600}.tool-card-status{display:inline-flex;align-items:center;gap:.4rem;font-size:.8rem;color:var(--text-dim)}.tool-card-status-success{color:var(--success)}.tool-card-status-error{color:var(--danger)}.tool-card-chevron{margin-left:auto;color:var(--text-faint)}.tool-card-body{border-top:1px solid var(--border);padding:.6rem .75rem;display:flex;flex-direction:column;gap:.7rem}.tool-card-section-title{font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint);margin-bottom:.3rem}.tool-card-section pre{margin:0;background:var(--code-bg);border:1px solid var(--border);border-radius:var(--radius-small);padding:.55rem .7rem;font-family:var(--font-mono);font-size:.8rem;line-height:1.5;overflow-x:auto;white-space:pre-wrap;word-break:break-word;max-height:300px;overflow-y:auto}.tool-card-empty{color:var(--text-faint);font-size:.85rem}.composer{border-top:1px solid var(--border);background:var(--bg-panel);padding:.85rem 1.2rem 1rem;display:flex;flex-direction:column;gap:.6rem}.composer-input{width:100%;max-width:820px;margin:0 auto;background:var(--bg);border:1px solid var(--border-strong);border-radius:var(--radius);color:var(--text);padding:.7rem .9rem;font-size:.95rem;font-family:inherit;line-height:1.5;resize:none;outline:none;max-height:200px;display:block}.composer-input:focus{border-color:var(--accent)}.composer-actions{max-width:820px;width:100%;margin:0 auto;display:flex;justify-content:flex-end;gap:.6rem}.markdown-body{font-size:.95rem;line-height:1.65;word-break:break-word}.markdown-body>:first-child{margin-top:0}.markdown-body>:last-child{margin-bottom:0}.markdown-body .markdown-code-block,.markdown-body .markdown-table-wrap,.markdown-body blockquote,.markdown-body ol,.markdown-body p,.markdown-body ul{margin:.65rem 0}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4{margin:1rem 0 .5rem;line-height:1.3}.markdown-body h1{font-size:1.35rem}.markdown-body h2{font-size:1.2rem}.markdown-body h3{font-size:1.05rem}.markdown-body ol,.markdown-body ul{padding-left:1.4rem}.markdown-body li+li{margin-top:.2rem}.markdown-body blockquote{border-left:3px solid var(--border-strong);padding-left:.9rem;color:var(--text-dim)}.markdown-body hr{border:none;border-top:1px solid var(--border);margin:1rem 0}.markdown-inline-code{background:var(--bg-elevated);border:1px solid var(--border);border-radius:5px;padding:.1em .35em;font-family:var(--font-mono);font-size:.86em}.markdown-code-block{border:1px solid var(--border);border-radius:var(--radius-small);overflow:hidden}.markdown-code-header{display:flex;align-items:center;justify-content:space-between;background:var(--bg-elevated);border-bottom:1px solid var(--border);padding:.3rem .7rem}.markdown-code-lang{font-size:.75rem;color:var(--text-dim);font-family:var(--font-mono)}.markdown-code-actions{display:flex;gap:.4rem}.markdown-code-action{background:none;border:none;color:var(--text-dim);font-size:.78rem;cursor:pointer;padding:.15rem .3rem}.markdown-code-action:hover{color:var(--text)}.markdown-table-wrap{overflow-x:auto}.markdown-body table{border-collapse:collapse;font-size:.88rem}.markdown-body td,.markdown-body th{border:1px solid var(--border-strong);padding:.4rem .7rem;text-align:left}.markdown-body th{background:var(--bg-elevated)}.markdown-body .katex-display{overflow-x:auto;overflow-y:hidden;padding:.3rem 0}@media (max-width:768px){.sidebar{position:fixed;inset:0 auto 0 0;z-index:40;transform:translateX(-100%);transition:transform .2s ease;width:min(85vw,var(--sidebar-width))}.sidebar.sidebar-open{transform:translateX(0)}.sidebar-close{display:block}.sidebar-backdrop{display:block;position:fixed;inset:0;z-index:30;background:rgba(0,0,0,.5)}.chat-menu-button{display:block}.message-bubble{max-width:88%}.chat-status{gap:.5rem}.chat-status-connection{display:none}.chat-status-lost{display:inline-flex}}