:root{--bg: #f4f4f7;--panel: #ffffff;--panel-2: #f8f8fb;--glass: rgba(255, 255, 255, .82);--border: #e4e4ea;--border-strong: #d2d2db;--text: #18181d;--muted: #6b6b78;--accent: #5b5bd6;--accent-hover: #4f4fc4;--accent-soft: #ededfc;--accent-text: #ffffff;--danger: #d93a3a;--danger-soft: #fdeeee;--warn-bg: #fff8eb;--warn-border: #f5c46b;--ok: #1f9d55;--user-bg: #5b5bd6;--user-text: #ffffff;--tool-bg: #f6f6f9;--status-bg: #fbf7ea;--code-bg: #f3f3f6;--shadow-sm: 0 1px 2px rgba(20, 20, 40, .06);--shadow: 0 1px 2px rgba(20, 20, 40, .05), 0 6px 20px rgba(20, 20, 40, .07);--shadow-lg: 0 12px 40px rgba(20, 20, 40, .18);--radius-sm: 8px;--radius: 12px;--radius-lg: 18px;--touch: 44px;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,sans-serif;font-size:15px;line-height:1.45;color:var(--text);background:var(--bg);-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}@media(prefers-color-scheme:dark){:root{--bg: #0e0e12;--panel: #16161b;--panel-2: #1b1b21;--glass: rgba(22, 22, 27, .82);--border: #26262e;--border-strong: #34343e;--text: #ececf1;--muted: #9a9aa8;--accent: #7b7bf0;--accent-hover: #8d8df5;--accent-soft: #23234a;--danger: #f07070;--danger-soft: #3a1c1f;--warn-bg: #2a2212;--warn-border: #8a6420;--ok: #4ccf86;--user-bg: #4a4ac8;--tool-bg: #1b1b21;--status-bg: #221f14;--code-bg: #0f0f13;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 6px 20px rgba(0, 0, 0, .35);--shadow-lg: 0 12px 40px rgba(0, 0, 0, .6)}}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);overscroll-behavior:none}a{color:var(--accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid var(--border);background:var(--panel);border-radius:10px;padding:6px 14px;min-height:var(--touch);font-weight:500;touch-action:manipulation;transition:background .15s,border-color .15s,color .15s,transform .1s}@media(hover:hover){button:hover:not(:disabled){border-color:var(--border-strong);background:var(--panel-2)}button.primary:hover:not(:disabled){background:var(--accent-hover);border-color:transparent}button.ghost:hover:not(:disabled),.list-item:hover:not(:disabled),.file-row.dir:hover:not(:disabled),.title-button:hover:not(:disabled),.model-row:hover:not(:disabled){background:var(--tool-bg);border-color:transparent}button.danger:hover:not(:disabled){background:var(--danger-soft);border-color:transparent}.list-item.active:hover:not(:disabled){background:var(--accent-soft)}.model-row.selected:hover:not(:disabled){background:var(--accent-soft);border-color:var(--accent)}}button:active:not(:disabled){transform:scale(.97)}button:disabled{opacity:.45;cursor:not-allowed}button.primary{background:var(--accent);color:var(--accent-text);border-color:transparent;box-shadow:var(--shadow-sm)}button.ghost{background:transparent;border-color:transparent}button.danger{color:var(--danger)}button.danger-fill{background:var(--danger);border-color:transparent;color:#fff}button.with-icon{padding-left:10px}button.icon{width:var(--touch);padding:0;flex:0 0 auto}button.icon.active{background:var(--accent-soft);color:var(--accent)}button.round{border-radius:999px}.svg-icon{flex:0 0 auto;display:block}input,select,textarea{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:8px 12px;min-height:var(--touch);max-width:100%;font-size:16px;transition:border-color .15s,box-shadow .15s}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}input[type=checkbox]{min-height:0;width:16px;height:16px;accent-color:var(--accent);margin:0}textarea{resize:none;width:100%}code,pre{font-family:var(--mono);font-size:12.5px}pre{background:var(--code-bg);border:1px solid var(--border);padding:10px 12px;border-radius:var(--radius-sm);overflow-x:auto;white-space:pre-wrap;word-break:break-word;margin:6px 0 0}h2{margin:0;font-size:16px;font-weight:650}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.spacer{flex:1}.hint{color:var(--muted);font-size:12.5px}.error-text{color:var(--danger);font-size:13px}.warn{background:var(--warn-bg);border:1px solid var(--warn-border);border-radius:var(--radius-sm);padding:10px 12px;font-size:13px}.empty{padding:28px 16px;color:var(--muted);text-align:center}.empty-hero{margin:auto;display:flex;flex-direction:column;align-items:center;gap:14px;max-width:340px}.brand{display:flex;align-items:center;gap:10px;min-width:0}.brand-mark{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:9px;background:linear-gradient(135deg,var(--accent),#9b6bf2);color:#fff;font-weight:700;font-size:17px;flex:0 0 auto;box-shadow:var(--shadow-sm)}.brand-mark.large{width:52px;height:52px;border-radius:16px;font-size:28px}.header-actions,.button-row{display:flex;gap:6px;align-items:center}.badge{display:inline-flex;align-items:center;gap:6px;padding:2px 10px;min-height:26px;border-radius:999px;background:var(--tool-bg);border:1px solid var(--border);font-size:12px;font-weight:500;color:var(--muted);white-space:nowrap}.badge.running{background:var(--accent-soft);border-color:transparent;color:var(--accent)}.badge.running:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;animation:blink 1s infinite}.badge.ok{color:var(--ok)}.badge.error{background:var(--danger-soft);border-color:transparent;color:var(--danger)}.dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px;vertical-align:middle;background:var(--muted);flex:0 0 auto}.dot.running{background:var(--accent);animation:blink 1s infinite}.dot.ok{background:var(--ok)}.dot.bad{background:var(--danger)}@keyframes blink{50%{opacity:.3}}.layout{height:100vh;height:100dvh;display:flex;flex-direction:column}.sidebar,.chatlist,.chat{display:none;flex-direction:column;min-height:0;height:100%;background:var(--panel)}.layout[data-view=projects] .sidebar,.layout[data-view=chats] .chatlist,.layout[data-view=chat] .chat{display:flex;animation:slide-in .18s ease-out}@keyframes slide-in{0%{opacity:0;transform:translate(12px)}}.chat{background:var(--bg)}.sidebar>header,.chatlist>header,.chat-header,.files header{padding:calc(8px + var(--safe-top)) 12px 8px;display:flex;gap:8px;align-items:center;min-height:calc(60px + var(--safe-top));flex:0 0 auto;background:var(--glass);backdrop-filter:saturate(180%) blur(14px);-webkit-backdrop-filter:saturate(180%) blur(14px);border-bottom:1px solid var(--border)}.sidebar>header{justify-content:space-between}.sidebar h1{font-size:20px;font-weight:700;letter-spacing:-.01em;margin:0}.header-title{display:flex;flex-direction:column;min-width:0}.header-title strong{font-size:17px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.create-panel{padding:12px;margin:10px 12px 0;border:1px solid var(--border);border-radius:var(--radius);background:var(--panel-2);display:flex;flex-direction:column;gap:8px}.search-wrap{padding:10px 12px 4px}.search{width:100%;background:var(--tool-bg);border-color:transparent}.list{overflow-y:auto;flex:1;padding:6px 8px;-webkit-overflow-scrolling:touch}.list-item{display:grid;grid-template-columns:34px minmax(0,1fr);grid-template-rows:auto auto;column-gap:10px;align-items:center;justify-content:stretch;width:100%;text-align:left;border:none;background:transparent;padding:10px;border-radius:var(--radius);margin-bottom:2px;min-height:60px;font-weight:400}.list-item.active{background:var(--accent-soft)}.list-icon{grid-row:1 / span 2;display:grid;place-items:center;width:34px;height:34px;border-radius:10px;background:var(--tool-bg);color:var(--muted)}.list-item.active .list-icon{background:var(--accent);color:var(--accent-text)}.list-item .list-title{display:block;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.list-item small{display:block;color:var(--muted);font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-footer{padding:8px 8px calc(8px + var(--safe-bottom)) 16px;border-top:1px solid var(--border);display:flex;align-items:center;gap:8px}.runner-status{display:flex;align-items:center;flex:1;min-width:0}.chatlist-body{flex:1;min-height:0;display:flex;flex-direction:column;overflow-y:auto;padding-bottom:var(--safe-bottom)}.chatlist-body .list.chats{flex:0 0 auto;overflow:visible}.files{display:flex;flex-direction:column;margin:8px 12px 12px;border:1px solid var(--border);border-radius:var(--radius);background:var(--panel-2);flex:0 0 auto;overflow:hidden}.files header{min-height:48px;padding:6px 6px 6px 14px;border-bottom:none;background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none}.crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:0 2px;padding:0 10px 6px;font-size:13px}.crumb{border:none;background:transparent;padding:4px 6px;min-height:32px;color:var(--accent);border-radius:6px;max-width:40vw;font-weight:500;display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.crumb.current,.crumb:disabled{color:var(--text);opacity:1;cursor:default;font-weight:650}.crumb-wrap{display:inline-flex;align-items:center}.crumb-sep{color:var(--muted)}.file-list{display:flex;flex-direction:column;padding:0 6px 6px}.file-row{display:grid;grid-template-columns:20px minmax(0,1fr) auto auto;gap:0 10px;align-items:center;justify-content:stretch;width:100%;text-align:left;border:none;background:transparent;padding:6px 8px;min-height:42px;border-radius:var(--radius-sm);font-size:14px;font-weight:400}.file-row:disabled{opacity:1;cursor:default}.file-row.symlink,.file-row.other{color:var(--muted)}.file-row .file-icon{color:var(--muted);display:grid;place-items:center}.file-row.dir .file-icon{color:var(--accent)}.file-row .file-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px}.file-row.dir .file-name{font-weight:600}.file-row .file-meta{color:var(--muted);font-size:12px;white-space:nowrap;font-variant-numeric:tabular-nums}.file-row .file-date{display:none}.chat-header{position:sticky;top:0;z-index:3}.chat-title{flex:0 1 auto;min-width:0}.chat-header .edit-title{display:none}.title-button{display:block;border:none;background:transparent;padding:4px 6px;min-height:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:inherit;font-weight:650;text-align:left;border-radius:6px}.title-input{flex:1;min-width:0;font-weight:600}.mobile-only{display:inline-flex;align-items:center;justify-content:center}.toolbar{display:none;flex-direction:column;align-items:stretch;gap:10px;padding:12px;border-bottom:1px solid var(--border);background:var(--panel);flex:0 0 auto;box-shadow:var(--shadow);position:relative;z-index:2}.toolbar.open{display:flex;animation:drop-in .15s ease-out}@keyframes drop-in{0%{opacity:0;transform:translateY(-6px)}}.toolbar>.spacer{display:none}.model-button{justify-content:flex-start;min-width:0;background:var(--tool-bg);border-color:transparent}.model-button .truncate{flex:1;text-align:left}.toggle{display:inline-flex;align-items:center;gap:8px;min-height:var(--touch);padding:0 12px;border-radius:10px;background:var(--tool-bg);font-weight:500}.toolbar-actions{display:flex;gap:6px}.toolbar-actions button{flex:1}.usage-strip{display:flex;align-items:baseline;gap:8px;padding:6px 14px;border-bottom:1px solid var(--border);background:var(--panel);font-size:12.5px;flex:0 0 auto;cursor:help}.usage-cost{font-weight:650;font-variant-numeric:tabular-nums}.chat>.warn{margin:10px 12px 0!important}.messages{flex:1;overflow-y:auto;padding:16px 12px 8px;display:flex;flex-direction:column;gap:14px;-webkit-overflow-scrolling:touch}.msg{max-width:100%;min-width:0}.msg .meta{display:flex;flex-wrap:wrap;align-items:center;gap:2px 10px;font-size:11.5px;color:var(--muted);margin-bottom:4px}.msg .meta .role{display:inline-flex;align-items:center;gap:5px;font-weight:600;color:var(--text)}.msg .content{white-space:pre-wrap;word-break:break-word;line-height:1.55}.msg.user{align-self:flex-end;max-width:88%;background:var(--user-bg);color:var(--user-text);padding:10px 14px;border-radius:var(--radius-lg) var(--radius-lg) 6px var(--radius-lg);box-shadow:var(--shadow-sm)}.msg.user .meta{color:#ffffffbf;justify-content:flex-end}.msg.user .meta .role{display:none}.msg.assistant{padding:2px}.msg.assistant .meta .role .svg-icon{color:var(--accent)}.msg.tool,.msg.status{border:1px solid var(--border);border-radius:var(--radius);padding:8px 12px;font-size:13px;background:var(--tool-bg)}.msg.status{background:var(--status-bg)}.msg.error{border-color:var(--danger);background:var(--danger-soft)}.msg.tool .meta .role .svg-icon{color:var(--muted)}.thinking-live pre{max-height:260px;overflow-y:auto}.typing{animation:blink 1.2s infinite}details summary{cursor:pointer;color:var(--muted);min-height:28px;display:flex;align-items:center;font-size:12.5px;font-weight:500}details summary::-webkit-details-marker{display:none}details summary:before{content:"›";display:inline-block;width:14px;font-size:16px;transition:transform .15s}details[open] summary:before{transform:rotate(90deg)}.scroll-hint{position:sticky;bottom:4px;align-self:center;border-radius:999px;box-shadow:var(--shadow);flex:0 0 auto}.markdown{white-space:normal;overflow-wrap:anywhere}.markdown>:first-child{margin-top:0}.markdown>:last-child{margin-bottom:0}.markdown p,.markdown ul,.markdown ol,.markdown blockquote,.markdown pre,.markdown .table-wrap{margin:0 0 10px}.markdown h1,.markdown h2,.markdown h3,.markdown h4,.markdown h5,.markdown h6{margin:16px 0 6px;font-weight:650;line-height:1.3}.markdown h1{font-size:19px}.markdown h2{font-size:17px}.markdown h3{font-size:15.5px}.markdown h4,.markdown h5,.markdown h6{font-size:14px}.markdown ul,.markdown ol{padding-left:22px}.markdown li{margin:3px 0}.markdown li>p{margin:0}.markdown li.task-list-item{list-style:none;margin-left:-18px}.markdown blockquote{border-left:3px solid var(--accent);color:var(--muted);padding:2px 12px}.markdown code{background:var(--code-bg);border:1px solid var(--border);padding:1px 5px;border-radius:5px;font-size:.88em}.markdown pre{white-space:pre}.markdown pre code{background:none;border:none;padding:0;font-size:inherit}.markdown hr{border:0;border-top:1px solid var(--border);margin:14px 0}.markdown a{text-decoration:underline;text-underline-offset:2px}.markdown .table-wrap{overflow-x:auto;max-width:100%;border:1px solid var(--border);border-radius:var(--radius-sm)}.markdown table{border-collapse:collapse;font-size:13px;width:100%}.markdown th,.markdown td{border-bottom:1px solid var(--border);padding:6px 10px;text-align:left;vertical-align:top}.markdown tr:last-child td{border-bottom:none}.markdown th{background:var(--tool-bg);font-weight:600}.composer{padding:6px 10px calc(10px + var(--safe-bottom));display:flex;flex-direction:column;gap:8px;flex:0 0 auto;background:linear-gradient(to bottom,transparent,var(--bg) 14px)}.composer-box{background:var(--panel);border:1px solid var(--border);border-radius:22px;box-shadow:var(--shadow);padding:6px 6px 6px 4px;transition:border-color .15s,box-shadow .15s}.composer-box:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft),var(--shadow)}.composer-box textarea{border:none;background:transparent;box-shadow:none;min-height:44px;max-height:40vh;padding:10px 12px 4px;overflow-y:auto;line-height:1.45}.composer-box textarea:focus{box-shadow:none}.composer .row{display:flex;gap:6px;align-items:center}.composer-error{display:flex;align-items:center;gap:6px;color:var(--danger);background:var(--danger-soft);border-radius:var(--radius-sm);padding:4px 4px 4px 12px;font-size:13px}.composer-error span{flex:1}.composer-error button.icon{--touch: 32px;color:inherit}button.send{width:40px;min-height:40px}.recorder{display:inline-flex;gap:6px;align-items:center;flex-wrap:wrap;min-width:0}.recorder button.round{width:40px;min-height:40px;color:var(--muted)}.recorder button.unavailable{opacity:.4}.recorder button.danger-fill{color:#fff}.rec-pill{display:inline-flex;align-items:center;padding:4px 12px;border-radius:999px;background:var(--danger-soft);color:var(--danger);font-size:13px;font-weight:600;font-variant-numeric:tabular-nums}.rec-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--danger);animation:blink 1s infinite;margin-right:8px}.modal-backdrop{position:fixed;inset:0;background:#0a0a1473;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:stretch;justify-content:center;z-index:10}.modal{background:var(--panel);border:none;width:100%;height:100%;max-height:100%;display:flex;flex-direction:column;overflow:hidden;padding-top:var(--safe-top);padding-bottom:var(--safe-bottom)}.modal header{padding:10px 8px 10px 16px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;gap:8px;min-height:60px}.modal header .hint{display:block}.modal .filters{display:flex;gap:8px;flex-wrap:wrap;padding:12px 16px;border-bottom:1px solid var(--border)}.modal .filters input[type=search]{flex:1 1 100%;min-width:160px}.modal .filters select{flex:1 1 140px}.chip{display:inline-flex;align-items:center;gap:6px;min-height:34px;padding:0 12px;border-radius:999px;border:1px solid var(--border);font-size:13px;font-weight:500;cursor:pointer;-webkit-user-select:none;user-select:none}.chip input{position:absolute;opacity:0;pointer-events:none}.chip.on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.chip:focus-within{outline:2px solid var(--accent);outline-offset:2px}.model-list{overflow-y:auto;padding:8px 10px 16px;-webkit-overflow-scrolling:touch}.model-row{display:grid;grid-template-columns:1fr;justify-content:stretch;align-items:start;gap:6px 12px;padding:12px;border:1px solid transparent;border-radius:var(--radius);width:100%;text-align:left;background:transparent;font-weight:400}.model-row.selected{border-color:var(--accent);background:var(--accent-soft)}.model-row .id{color:var(--muted);font-size:12px;word-break:break-all}.model-row .tags{display:flex;gap:4px;flex-wrap:wrap}.login{max-width:380px;margin:max(10vh,calc(24px + var(--safe-top))) auto 24px;width:calc(100% - 32px);background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:28px 24px 24px;display:flex;flex-direction:column;align-items:center;gap:12px;text-align:center}.login h1{font-size:20px;margin:4px 0 0}.login p{margin:0}.login .field{display:flex;flex-direction:column;gap:6px;width:100%;text-align:left;font-size:13px;font-weight:600}.login .field input,.login button.primary{width:100%}@media(min-width:600px){.file-row .file-date{display:inline}.model-row{grid-template-columns:1fr auto}.model-row .tags{justify-content:flex-end;max-width:380px}.modal .filters input[type=search]{flex-basis:240px}.messages{padding:20px 20px 8px}.composer{padding-left:20px;padding-right:20px}}@media(min-width:900px){:root{font-size:14px;--touch: 36px}input,select,textarea{font-size:14px}.layout{display:grid;grid-template-columns:250px 310px minmax(0,1fr);grid-template-rows:100%}.layout .sidebar,.layout .chatlist,.layout .chat{display:flex;animation:none}.sidebar{background:var(--panel-2)}.sidebar,.chatlist{border-right:1px solid var(--border)}.sidebar>header,.chatlist>header,.chat-header{min-height:60px}.sidebar>header{background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none}.sidebar h1{font-size:16px}.header-title strong{font-size:15px}.list-item{min-height:52px;padding:8px 10px}.mobile-only{display:none!important}.toolbar{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;gap:8px;padding:8px 14px;box-shadow:none;animation:none}.toolbar>.spacer{display:block}.model-button{max-width:360px}.toggle{min-height:var(--touch)}.toolbar-actions button{flex:0 0 auto}.chat-header{position:static}.chat-header .edit-title{display:inline-flex}.chatlist-body{overflow:hidden}.chatlist-body .list.chats{flex:1 1 50%;min-height:120px;overflow-y:auto}.files{flex:1 1 50%;min-height:160px;max-height:55%}.file-list{overflow-y:auto;flex:1;min-height:0}.messages{padding:24px max(24px,calc((100% - 880px)/2)) 8px}.msg.user{max-width:75%}.composer{padding:6px max(24px,calc((100% - 880px)/2)) 18px}.modal-backdrop{align-items:center}.modal{border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);width:min(960px,96vw);height:auto;max-height:88vh;padding:0}}@media(min-width:1400px){.layout{grid-template-columns:280px 340px minmax(0,1fr)}}
