*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:#f5f5f5;color:#1a1a1a;height:100vh;display:flex;flex-direction:column}#root{display:contents}.app{display:flex;flex-direction:column;height:100vh}.header{background:#18181b;color:#fff;padding:12px 20px;display:flex;align-items:center;gap:10px;flex-shrink:0}.header h1{font-size:16px;font-weight:600;letter-spacing:-.3px}.badge{background:#3b82f6;color:#fff;font-size:11px;padding:2px 8px;border-radius:20px;font-weight:500}.layout{display:flex;flex:1;overflow:hidden}.nav{width:64px;background:#18181b;display:flex;flex-direction:column;align-items:center;padding:12px 0;gap:4px;flex-shrink:0}.nav-item{width:48px;height:48px;border:none;background:transparent;border-radius:10px;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:#a1a1aa;transition:background .15s,color .15s}.nav-item:hover{background:#27272a;color:#d4d4d8}.nav-item.active{background:#27272a;color:#fff}.nav-icon{font-size:18px;line-height:1}.nav-label{font-size:9px;font-weight:500;letter-spacing:.3px;text-transform:uppercase}.view{flex:1;display:flex;overflow:hidden}.sidebar{width:240px;background:#fff;border-right:1px solid #e4e4e7;display:flex;flex-direction:column;overflow:hidden;flex-shrink:0}.sidebar-header{padding:14px 16px 10px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.6px;color:#71717a;border-bottom:1px solid #f4f4f5}.pipeline-list{overflow-y:auto;flex:1}.pipeline-item{padding:10px 16px;cursor:pointer;border-bottom:1px solid #f4f4f5;transition:background .1s}.pipeline-item:hover{background:#f9f9fb}.pipeline-item.active{background:#eff6ff;border-left:3px solid #3b82f6}.pipeline-item.active .pipeline-name{color:#2563eb}.pipeline-name{font-size:14px;font-weight:500;margin-bottom:2px}.pipeline-desc{font-size:12px;color:#71717a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pipeline-meta{font-size:11px;color:#a1a1aa;margin-top:4px}.empty-list{padding:20px 16px;font-size:13px;color:#71717a}.main{flex:1;display:flex;flex-direction:column;overflow:hidden}.run-panel{border-bottom:1px solid #e4e4e7;background:#fff;padding:16px 20px;flex-shrink:0}.run-panel h2{font-size:15px;font-weight:600;margin-bottom:4px}.run-panel .desc{font-size:13px;color:#71717a;margin-bottom:12px}.input-row{display:flex;gap:8px;align-items:flex-end}.input-field{flex:1;padding:8px 12px;border:1px solid #e4e4e7;border-radius:6px;font-size:13px;resize:vertical;min-height:36px;max-height:120px;font-family:inherit;outline:none;transition:border-color .15s}.input-field:focus{border-color:#3b82f6}.output-panel{flex:1;display:flex;flex-direction:column;overflow:hidden;background:#fafafa}.output-header{padding:10px 20px;border-bottom:1px solid #e4e4e7;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:#71717a;display:flex;align-items:center;gap:8px;background:#fff}.output-content{flex:1;overflow-y:auto;padding:16px 20px;font-family:SF Mono,Fira Code,Consolas,monospace;font-size:13px;line-height:1.6;white-space:pre-wrap;word-break:break-word}.status-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.status-dot.running{background:#f59e0b;animation:pulse 1s infinite}.status-dot.completed{background:#22c55e}.status-dot.failed{background:#ef4444}.status-dot.idle{background:#d4d4d8}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.btn-primary{padding:8px 18px;background:#3b82f6;color:#fff;border:none;border-radius:6px;font-size:13px;font-weight:500;cursor:pointer;transition:background .15s;white-space:nowrap;font-family:inherit}.btn-primary:hover:not(:disabled){background:#2563eb}.btn-primary:disabled{background:#93c5fd;cursor:not-allowed}.btn-run{padding:8px 18px;background:#3b82f6;color:#fff;border:none;border-radius:6px;font-size:13px;font-weight:500;cursor:pointer;transition:background .15s;white-space:nowrap}.btn-run:hover:not(:disabled){background:#2563eb}.btn-run:disabled{background:#93c5fd;cursor:not-allowed}.placeholder{color:#a1a1aa;font-style:italic}.no-selection{display:flex;flex:1;align-items:center;justify-content:center;color:#a1a1aa;font-size:14px}.view-placeholder{display:flex;flex:1;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:#71717a;font-size:14px;text-align:center;padding:40px}.view-placeholder-icon{font-size:36px;margin-bottom:8px;color:#d4d4d8}.view-placeholder .hint{font-size:12px;color:#a1a1aa;margin-top:4px}.ingest-layout{flex:1;display:flex;overflow:hidden}.ingest-form{width:380px;flex-shrink:0;background:#fff;border-right:1px solid #e4e4e7;padding:24px 20px;display:flex;flex-direction:column;gap:12px;overflow-y:auto}.view-title{font-size:16px;font-weight:600}.view-desc{font-size:13px;color:#71717a}.field-label{font-size:12px;font-weight:500;color:#52525b}.optional{color:#a1a1aa;font-weight:400}.ingest-textarea{width:100%;padding:8px 12px;border:1px solid #e4e4e7;border-radius:6px;font-size:13px;font-family:inherit;resize:vertical;outline:none;transition:border-color .15s;line-height:1.5}.ingest-textarea:focus{border-color:#3b82f6}.ingest-input{width:100%;padding:8px 12px;border:1px solid #e4e4e7;border-radius:6px;font-size:13px;font-family:inherit;outline:none;transition:border-color .15s}.ingest-input:focus{border-color:#3b82f6}.ingest-output{flex:1;display:flex;flex-direction:column;overflow:hidden;background:#fafafa}.chat-layout{flex:1;display:flex;flex-direction:column;overflow:hidden;background:#f9f9fb}.chat-messages{flex:1;overflow-y:auto;padding:20px;display:flex;flex-direction:column;gap:12px}.chat-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;gap:8px;color:#71717a;font-size:14px;text-align:center}.chat-bubble-wrap{display:flex}.chat-bubble-wrap.user{justify-content:flex-end}.chat-bubble-wrap.assistant{justify-content:flex-start}.chat-bubble{max-width:72%;padding:10px 14px;border-radius:14px;font-size:14px;line-height:1.55;white-space:pre-wrap;word-break:break-word}.chat-bubble.user{background:#3b82f6;color:#fff;border-bottom-right-radius:4px}.chat-bubble.assistant{background:#fff;color:#1a1a1a;border:1px solid #e4e4e7;border-bottom-left-radius:4px;white-space:normal}.chat-bubble.assistant p{margin:0 0 .6em}.chat-bubble.assistant p:last-child{margin-bottom:0}.chat-bubble.assistant h1,.chat-bubble.assistant h2,.chat-bubble.assistant h3{font-weight:600;margin:.8em 0 .3em;line-height:1.3}.chat-bubble.assistant h1{font-size:1.1em}.chat-bubble.assistant h2{font-size:1em}.chat-bubble.assistant h3{font-size:.95em}.chat-bubble.assistant ul,.chat-bubble.assistant ol{margin:.3em 0 .6em;padding-left:1.4em}.chat-bubble.assistant li{margin-bottom:.2em}.chat-bubble.assistant code{font-family:ui-monospace,monospace;font-size:.88em;background:#f4f4f5;border-radius:4px;padding:.1em .35em}.chat-bubble.assistant pre{background:#f4f4f5;border-radius:8px;padding:10px 12px;overflow-x:auto;margin:.5em 0}.chat-bubble.assistant pre code{background:none;padding:0;font-size:.85em;white-space:pre}.chat-bubble.assistant strong{font-weight:600}.chat-bubble.assistant em{font-style:italic}.chat-bubble.assistant blockquote{border-left:3px solid #d4d4d8;margin:.4em 0;padding:.2em 0 .2em .8em;color:#52525b}.chat-bubble.failed{border-color:#fca5a5;background:#fef2f2;color:#b91c1c}.typing-cursor{display:inline-block;animation:blink .8s step-end infinite;opacity:1;color:#a1a1aa;margin-left:1px}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.chat-input-bar{padding:12px 16px;background:#fff;border-top:1px solid #e4e4e7;display:flex;gap:8px;align-items:flex-end}.chat-input{flex:1;padding:9px 12px;border:1px solid #e4e4e7;border-radius:8px;font-size:14px;font-family:inherit;resize:none;outline:none;max-height:120px;overflow-y:auto;transition:border-color .15s;line-height:1.5}.chat-input:focus{border-color:#3b82f6}.chat-send{border-radius:8px}.assistant-toolbar{display:flex;align-items:center;gap:10px;padding:10px 16px;background:#fff;border-bottom:1px solid #e4e4e7;flex-shrink:0}.assistant-toolbar-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:#71717a;white-space:nowrap}.assistant-pipeline-select{padding:5px 10px;border:1px solid #e4e4e7;border-radius:6px;font-size:13px;font-family:inherit;background:#fafafa;color:#1a1a1a;outline:none;cursor:pointer;transition:border-color .15s;max-width:220px}.assistant-pipeline-select:focus{border-color:#3b82f6}.assistant-pipeline-select:disabled{opacity:.5;cursor:not-allowed}.assistant-toolbar-hint{font-size:12px;color:#71717a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
