body{margin:0;padding:0}:root,[data-theme=dark]{--bg:#0d1117;--surface:#161b22;--surface2:#1c2128;--border:#30363d;--text:#e6edf3;--text-dim:#8b949e;--accent:#58a6ff;--accent-hover:#79c0ff;--green:#3fb950;--red:#f85149;--orange:#d29922;--llm:#c084fc;--usage:#34d399}[data-theme=light]{--bg:#fff;--surface:#f6f8fa;--surface2:#eaeef2;--border:#d0d7de;--text:#1f2328;--text-dim:#656d76;--accent:#0969da;--accent-hover:#0550ae;--green:#1a7f37;--red:#cf222e;--orange:#9a6700;--llm:#8250df;--usage:#0e8a5f}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.app{flex-direction:column;height:100vh;display:flex;overflow:hidden}.header{background:var(--surface);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;height:48px;padding:0 16px;display:flex}.header-left{align-items:center;gap:12px;display:flex}.header-left h1{font-size:16px;font-weight:600}.subtitle{color:var(--text-dim);font-size:12px}.status-dot{background:var(--text-dim);border-radius:50%;width:8px;height:8px}.status-dot.online{background:var(--green)}.status-dot.offline{background:var(--red)}.status-dot.checking{background:var(--orange);animation:1.5s infinite pulse}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.header-right{align-items:center;gap:12px;display:flex}.github-star-link{color:var(--text-dim);border:1px solid var(--border);border-radius:6px;align-items:center;gap:5px;padding:4px 10px;font-size:12px;font-weight:500;text-decoration:none;transition:all .2s;display:flex}.github-star-link:hover{color:var(--text);border-color:var(--text-dim);background:var(--surface2)}.github-star-link .star-icon{color:var(--orange)}.github-star-link:hover .star-icon{color:#f0c040}.shortcut-hint{color:var(--text-dim);background:var(--surface2);border:1px solid var(--border);border-radius:4px;align-items:center;gap:4px;padding:3px 8px;font-size:11px;display:flex}.theme-toggle{color:var(--text-dim);border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:6px;align-items:center;gap:5px;padding:4px 10px;font-size:11px;font-weight:500;transition:all .2s;display:flex}.theme-toggle:hover{color:var(--text);border-color:var(--text-dim);background:var(--surface2)}.theme-label{font-size:11px}.run-btn{background:var(--green);color:#fff;cursor:pointer;border:none;border-radius:6px;align-items:center;gap:6px;padding:6px 16px;font-size:13px;font-weight:600;transition:all .15s;display:flex}.run-btn:hover:not(:disabled){filter:brightness(1.1)}.run-btn:disabled{opacity:.5;cursor:not-allowed}.run-btn.running{background:var(--orange);cursor:default}.stop-btn{background:var(--red);color:#fff;cursor:pointer;border:none;border-radius:6px;justify-content:center;align-items:center;width:32px;height:32px;padding:0;transition:filter .15s;display:flex}.stop-btn:hover{filter:brightness(1.15)}.spin{animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.main{flex:1;display:flex;overflow:hidden}.sidebar{background:var(--surface);border-right:1px solid var(--border);flex-shrink:0;width:260px;overflow-y:auto}.sidebar-header{text-transform:uppercase;color:var(--text-dim);border-bottom:1px solid var(--border);align-items:center;gap:8px;padding:12px 16px;font-size:12px;font-weight:600;display:flex}.example-count{background:var(--surface2);border-radius:8px;margin-left:auto;padding:1px 6px;font-size:10px}.category{padding:2px 0}.category-toggle{width:100%;color:var(--accent);cursor:pointer;text-transform:uppercase;letter-spacing:.5px;text-align:left;background:0 0;border:none;align-items:center;gap:4px;padding:8px 12px;font-size:11px;font-weight:600;transition:background .1s;display:flex}.category-toggle:hover{background:var(--surface2)}.category-toggle .category-name{flex:1}.category-count{color:var(--text-dim);background:var(--surface2);letter-spacing:0;text-transform:none;border-radius:8px;padding:1px 6px;font-size:10px;font-weight:500}.example-btn{width:100%;color:var(--text);cursor:pointer;text-align:left;background:0 0;border:none;align-items:flex-start;gap:8px;padding:8px 16px;transition:background .1s;display:flex}.example-btn:hover{background:var(--surface2)}.example-btn.active{background:var(--surface2);border-left:2px solid var(--accent)}.example-name{font-size:13px;font-weight:500}.example-desc{color:var(--text-dim);margin-top:2px;font-size:11px}.editor-area{flex-direction:column;flex:1;min-width:0;display:flex}.editor-toolbar{background:var(--surface2);border-bottom:1px solid var(--border);align-items:center;gap:8px;height:36px;padding:0 12px;font-size:12px;display:flex}.toggle-sidebar{color:var(--text-dim);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:4px}.toggle-sidebar:hover{background:var(--border)}.file-name{color:var(--text-dim)}.file-tag{color:var(--accent);background:color-mix(in srgb, var(--accent) 10%, transparent);border-radius:4px;padding:1px 8px;font-size:11px}.duration{color:var(--text-dim);align-items:center;gap:4px;margin-left:auto;display:flex}.editor-container{flex:1}.output-area{border-left:1px solid var(--border);flex-direction:column;flex-shrink:0;width:480px;display:flex}.output-tabs{background:var(--surface2);border-bottom:1px solid var(--border);align-items:center;gap:0;height:36px;padding:0 8px;display:flex}.output-tab{height:100%;color:var(--text-dim);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;align-items:center;gap:5px;padding:0 12px;font-size:12px;font-weight:600;transition:all .15s;display:flex}.output-tab:hover{color:var(--text)}.output-tab.active{color:var(--text);border-bottom-color:var(--accent)}.trace-count{background:var(--accent);color:#fff;text-align:center;border-radius:8px;min-width:16px;padding:0 5px;font-size:10px;font-weight:600}.success-icon{color:var(--green)}.error-icon{color:var(--red)}.clear-btn{border:1px solid var(--border);color:var(--text-dim);cursor:pointer;background:0 0;border-radius:4px;margin-left:auto;padding:2px 8px;font-size:11px}.clear-btn:hover{background:var(--surface);color:var(--text)}.output-content{background:var(--bg);flex:1;padding:12px;overflow:auto}.summary-bar{background:var(--surface);border:1px solid var(--border);border-radius:6px;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:8px;padding:6px 10px;font-family:SF Mono,Fira Code,monospace;font-size:11px;display:flex}.summary-bar.success{border-left:2px solid var(--green)}.summary-bar.error{border-left:2px solid var(--red)}.summary-item{color:var(--text-dim);align-items:center;gap:3px;display:flex}.summary-label{color:var(--text-dim);text-transform:uppercase;font-size:10px}.summary-value{color:var(--text);font-weight:600}.summary-model{color:var(--accent);font-weight:500}.summary-sep{color:var(--text-dim);opacity:.5;margin:0 1px}.summary-cost{color:var(--green);margin-left:auto}.summary-cost .summary-value{color:var(--green)}.summary-item svg{opacity:.6}.output-placeholder{height:100%;color:var(--text-dim);justify-content:center;align-items:center;gap:8px;font-size:13px;display:flex}.output-placeholder.offline{text-align:center;flex-direction:column;gap:12px}.output-placeholder.offline code{background:var(--surface);color:var(--accent);border-radius:4px;padding:4px 8px;font-size:11px}.output-placeholder.running{text-align:center;flex-direction:column;gap:8px}.output-sub{color:var(--text-dim);opacity:.7;font-size:11px}.output-text{white-space:pre-wrap;word-break:break-word;font-family:SF Mono,Fira Code,monospace;font-size:13px;line-height:1.5}.streaming-output{flex-direction:column;height:100%;display:flex}.streaming-status{background:var(--surface2);border-bottom:1px solid var(--border);color:var(--accent);align-items:center;gap:6px;padding:6px 12px;font-size:12px;display:flex}.streaming-output .output-text{flex:1;overflow:auto}.stdout{color:var(--text)}.stderr,.output-text.error .stderr{color:var(--red)}.output-markdown{color:var(--text);height:100%;padding:16px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px;line-height:1.6;overflow:auto}.output-markdown.error{color:var(--red)}.output-markdown p{margin:0 0 12px}.output-markdown p:last-child{margin-bottom:0}.output-markdown h1,.output-markdown h2,.output-markdown h3,.output-markdown h4,.output-markdown h5,.output-markdown h6{color:var(--text);margin:20px 0 8px;font-weight:600}.output-markdown h1{border-bottom:1px solid var(--border);padding-bottom:6px;font-size:1.4em}.output-markdown h2{font-size:1.2em}.output-markdown h3{font-size:1.1em}.output-markdown pre{background:var(--surface2);border:1px solid var(--border);border-radius:6px;margin:12px 0;padding:12px 16px;font-family:SF Mono,Fira Code,Cascadia Code,monospace;font-size:13px;line-height:1.5;overflow-x:auto}.output-markdown code{font-family:SF Mono,Fira Code,Cascadia Code,monospace;font-size:.9em}.output-markdown :not(pre)>code{background:var(--surface2);border:1px solid var(--border);border-radius:4px;padding:2px 6px}.output-markdown blockquote{border-left:3px solid var(--accent);color:var(--text-dim);background:var(--surface2);border-radius:0 6px 6px 0;margin:12px 0;padding:4px 16px}.output-markdown ul,.output-markdown ol{margin:8px 0;padding-left:24px}.output-markdown li{margin:4px 0}.output-markdown table{border-collapse:collapse;width:100%;margin:12px 0}.output-markdown th,.output-markdown td{border:1px solid var(--border);text-align:left;padding:8px 12px}.output-markdown th{background:var(--surface2);font-weight:600}.output-markdown hr{border:none;border-top:1px solid var(--border);margin:16px 0}.output-markdown strong{font-weight:600}.output-markdown em{font-style:italic}.output-markdown a{color:var(--accent);text-decoration:none}.output-markdown a:hover{text-decoration:underline}.output-markdown .katex-display{margin:16px 0;overflow-x:auto}.output-markdown .katex{font-size:1.1em}.output-markdown .hljs{color:var(--text);background:0 0}.output-markdown .hljs-keyword{color:#c678dd}.output-markdown .hljs-string{color:#98c379}.output-markdown .hljs-number{color:#d19a66}.output-markdown .hljs-comment{color:#5c6370;font-style:italic}.output-markdown .hljs-function,.output-markdown .hljs-title{color:#61afef}.output-markdown .hljs-built_in,.output-markdown .hljs-type{color:#e5c07b}.output-markdown .hljs-attr{color:#d19a66}.output-markdown .hljs-variable{color:#e06c75}.output-markdown .hljs-literal{color:#d19a66}[data-theme=light] .output-markdown .hljs-keyword{color:#a626a4}[data-theme=light] .output-markdown .hljs-string{color:#50a14f}[data-theme=light] .output-markdown .hljs-number{color:#986801}[data-theme=light] .output-markdown .hljs-comment{color:#a0a1a7;font-style:italic}[data-theme=light] .output-markdown .hljs-function,[data-theme=light] .output-markdown .hljs-title{color:#4078f2}[data-theme=light] .output-markdown .hljs-built_in,[data-theme=light] .output-markdown .hljs-type{color:#c18401}[data-theme=light] .output-markdown .hljs-attr{color:#986801}[data-theme=light] .output-markdown .hljs-variable{color:#e45649}[data-theme=light] .output-markdown .hljs-literal{color:#986801}.stderr-block{color:var(--red);white-space:pre-wrap;word-break:break-word;background:var(--surface2);border:1px solid var(--red);opacity:.8;border-radius:6px;margin:12px 0 0;padding:12px;font-family:SF Mono,Fira Code,monospace;font-size:13px}.no-output{color:var(--text-dim);font-style:italic}.streaming-output .output-markdown{flex:1;overflow:auto}.audio-block{background:var(--surface);border:1px solid var(--border);border-radius:8px;margin:16px 0;padding:16px}.audio-block .audio-label{color:var(--accent);align-items:center;gap:6px;margin-bottom:10px;font-size:12px;font-weight:600;display:flex}.audio-block audio{border-radius:6px;width:100%;height:36px}@media (max-width:900px){.app{height:100vh;height:100dvh}.header{flex-wrap:wrap;gap:8px;height:auto;padding:8px 12px}.header-left{flex:1;min-width:0}.header-left h1{white-space:nowrap;font-size:14px}.subtitle,.shortcut-hint,.github-star-link,.theme-label{display:none}.header-right{gap:8px}.run-btn{padding:6px 12px;font-size:12px}.sponsor-banner{padding:6px 12px;font-size:11px}.sponsor-text a{white-space:nowrap}.main{flex-direction:column;position:relative}.sidebar{z-index:100;border-right:none;width:100%;display:none;position:fixed;top:0;bottom:0;left:0;right:0;overflow-y:auto}.sidebar.mobile-open{flex-direction:column;display:flex}.sidebar .sidebar-header{background:var(--surface);z-index:1;position:sticky;top:0}.editor-area{flex:1;min-height:0}.editor-toolbar{height:32px;padding:0 8px;font-size:11px}.output-area{border-left:none;border-top:1px solid var(--border);flex-shrink:0;width:100%;min-height:120px;max-height:45vh}.output-tabs{height:32px;padding:0 6px}.output-tab{padding:0 8px;font-size:11px}.output-content{padding:8px}.output-markdown{padding:8px;font-size:13px}.summary-bar{gap:8px;padding:4px 8px;font-size:10px}.trace-tree{padding:4px;font-size:11px}.trace-row{gap:4px;padding:4px 6px}.trace-detail-panel{margin-left:12px;font-size:10px}.trace-children{margin-left:10px}.mode-badge{padding:1px 6px;font-size:9px}}@media (max-width:480px){.header-left h1{font-size:13px}.mode-badge,.status-dot{display:none}.theme-toggle{padding:4px 6px}.run-btn{gap:4px;padding:5px 10px;font-size:11px}.output-area{max-height:40vh}.editor-toolbar .file-tag,.editor-toolbar .duration{display:none}}.sponsor-banner{background:linear-gradient(90deg, color-mix(in srgb, var(--orange) 8%, var(--surface)), var(--surface));border-bottom:1px solid var(--border);color:var(--text-dim);align-items:center;gap:8px;padding:6px 16px;font-size:12px;display:flex}.sponsor-heart{color:#e5534b;flex-shrink:0;animation:2s ease-in-out infinite heartbeat}@keyframes heartbeat{0%,to{transform:scale(1)}14%{transform:scale(1.2)}28%{transform:scale(1)}42%{transform:scale(1.15)}56%{transform:scale(1)}}.sponsor-text{flex:1}.sponsor-text a{color:var(--orange);margin:0 2px;font-weight:600;text-decoration:none}.sponsor-text a:hover{color:#f0c040;text-decoration:underline}.sponsor-dismiss{color:var(--text-dim);cursor:pointer;opacity:.5;background:0 0;border:none;border-radius:4px;flex-shrink:0;padding:2px;transition:opacity .15s}.sponsor-dismiss:hover{opacity:1;background:var(--surface2)}.mode-badge{text-transform:uppercase;letter-spacing:.5px;border-radius:4px;align-items:center;gap:4px;padding:2px 8px;font-size:10px;font-weight:600;display:flex}.mode-badge.public{color:var(--orange);background:#d2992226;border:1px solid #d299224d}.mode-badge.local{color:var(--green);background:#3fb95026;border:1px solid #3fb9504d}.trace-tree{padding:8px;font-family:SF Mono,Fira Code,monospace;font-size:12px}.trace-empty{height:100%;color:var(--text-dim);justify-content:center;align-items:center;font-size:13px;display:flex}.trace-node{margin-bottom:2px}.trace-row{border-radius:4px;align-items:center;gap:6px;padding:5px 8px;line-height:1.4;transition:background .1s;display:flex}.trace-row:hover{background:var(--surface2)}.trace-spacer{flex-shrink:0;width:12px}.trace-label{color:var(--text);white-space:nowrap;flex-shrink:0;font-weight:600}.trace-msg{color:var(--text-dim);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.trace-detail-inline{color:var(--text-dim);opacity:.7;text-overflow:ellipsis;white-space:nowrap;max-width:120px;font-size:11px;overflow:hidden}.trace-timing{color:var(--text-dim);background:var(--surface2);font-variant-numeric:tabular-nums;border-radius:3px;flex-shrink:0;padding:1px 5px;font-size:10px}.trace-row-selected{outline:1px solid var(--border);border-radius:4px;background:var(--surface2)!important}.trace-detail-panel{background:var(--surface);border:1px solid var(--border);border-radius:6px;margin:2px 0 6px 30px;padding:10px 12px;font-size:11px;animation:.15s ease-out traceDetailIn}@keyframes traceDetailIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.trace-detail-grid{grid-template-columns:auto 1fr;align-items:baseline;gap:3px 12px;display:grid}.trace-detail-key{color:var(--text-dim);text-transform:uppercase;letter-spacing:.3px;font-size:10px;font-weight:600}.trace-detail-val{color:var(--text);word-break:break-all}.trace-target-val{color:var(--text-dim);font-family:SF Mono,Fira Code,monospace;font-size:10px}.trace-duration-val{color:var(--accent);font-weight:600}.trace-kind-tag{text-transform:uppercase;letter-spacing:.3px;border-radius:3px;padding:0 6px;font-size:10px;font-weight:600;display:inline-block}.trace-kind-tag-agent{color:var(--accent);background:#58a6ff26}.trace-kind-tag-llm{color:var(--llm);background:#c084fc26}.trace-kind-tag-tool_call{color:var(--orange);background:#d2992226}.trace-kind-tag-tool_result{color:var(--green);background:#3fb95026}.trace-kind-tag-tool_error{color:var(--red);background:#f8514926}.trace-kind-tag-info{color:var(--text-dim);background:#8b949e26}.trace-kind-tag-warn{color:var(--orange);background:#d2992226}[data-theme=light] .trace-kind-tag-agent{background:#0969da1a}[data-theme=light] .trace-kind-tag-llm{background:#8250df1a}[data-theme=light] .trace-kind-tag-tool_call{background:#9a67001a}[data-theme=light] .trace-kind-tag-tool_result{background:#1a7f371a}[data-theme=light] .trace-kind-tag-tool_error{background:#cf222e1a}[data-theme=light] .trace-kind-tag-usage{background:#0e8a5f1a}.trace-detail-section{border-top:1px solid var(--border);margin-top:8px;padding-top:8px}.trace-detail-section-label{color:var(--text-dim);text-transform:uppercase;letter-spacing:.3px;margin-bottom:4px;font-size:10px;font-weight:600}.trace-detail-pre{background:var(--bg);border:1px solid var(--border);color:var(--text);white-space:pre-wrap;word-break:break-all;border-radius:4px;max-height:200px;padding:8px;font-family:SF Mono,Fira Code,monospace;font-size:11px;line-height:1.5;overflow-y:auto}.trace-badge{background:var(--surface);border:1px solid var(--border);color:var(--text-dim);border-radius:8px;flex-shrink:0;padding:0 5px;font-size:10px}.trace-children{border-left:1px solid var(--border);margin-left:18px;padding-left:4px}.trace-child{padding:3px 8px}.trace-kind-agent .trace-label{color:var(--accent)}.trace-kind-llm .trace-label{color:var(--llm)}.trace-kind-tool_call .trace-label{color:var(--orange)}.trace-kind-tool_result .trace-label{color:var(--green)}.trace-kind-tool_error .trace-label{color:var(--red)}.trace-kind-warn .trace-label{color:var(--orange)}.trace-kind-agent svg{color:var(--accent)}.trace-kind-llm svg{color:var(--llm)}.trace-kind-tool_call svg{color:var(--orange)}.trace-kind-tool_result svg{color:var(--green)}.trace-kind-tool_error svg{color:var(--red)}.trace-kind-warn svg{color:var(--orange)}.trace-kind-info svg{color:var(--text-dim)}.trace-kind-usage .trace-label,.trace-kind-usage svg{color:var(--usage)}.trace-kind-tag-usage{color:var(--usage);background:#34d39926}.trace-tokens-badge{color:var(--usage);white-space:nowrap;background:#34d3991f;border-radius:3px;margin-left:4px;padding:1px 6px;font-size:10px}.trace-cost-badge{color:var(--orange);white-space:nowrap;background:#d299221f;border-radius:3px;margin-left:4px;padding:1px 6px;font-size:10px}.trace-cost-val{color:var(--orange);font-weight:600}.trace-thinking-text{border-left:2px solid var(--llm);color:var(--text-dim);font-style:italic}.thinking-block{background:color-mix(in srgb, var(--llm) 8%, transparent);border-left:3px solid var(--llm);border-radius:0 6px 6px 0;margin:8px 0;padding:10px 14px}.thinking-label{color:var(--llm);text-transform:uppercase;letter-spacing:.5px;margin-bottom:4px;font-size:11px;font-weight:600}.thinking-content{color:var(--text-dim);white-space:normal;word-break:break-word;font-size:13px;font-style:italic;line-height:1.6}.user-prompt-block{background:color-mix(in srgb, var(--accent) 8%, transparent);border-left:3px solid var(--accent);border-radius:0 6px 6px 0;margin:8px 0;padding:10px 14px}.user-prompt-label{color:var(--accent);text-transform:uppercase;letter-spacing:.5px;margin-bottom:4px;font-size:11px;font-weight:600}.user-prompt-content{color:var(--text);white-space:pre-wrap;word-break:break-word;font-size:13px;line-height:1.6}.audio-stream-block{background:var(--surface);border:1px solid var(--accent);border-radius:8px;margin:12px 0;padding:12px 16px}.audio-stream-header{color:var(--accent);align-items:center;gap:6px;margin-bottom:8px;font-size:12px;font-weight:600;display:flex}.audio-stream-live{color:var(--red);font-size:10px;font-weight:700;animation:1.5s infinite pulse}.audio-stream-done{color:var(--green);font-size:10px;font-weight:600}.audio-stream-bar{align-items:center;gap:10px;display:flex}.audio-stream-wave{align-items:center;gap:3px;height:24px;display:flex}.audio-wave-bar{background:var(--accent);border-radius:2px;width:3px;height:8px;animation:.6s ease-in-out infinite alternate audioWave}@keyframes audioWave{0%{opacity:.4;height:4px}to{opacity:1;height:20px}}.audio-stream-time{color:var(--text-dim);font-variant-numeric:tabular-nums;font-family:SF Mono,Fira Code,monospace;font-size:12px}
