@import"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;600&family=Space+Grotesk:wght@400;600;700&display=swap";:root{--bg: #f3ede6;--surface: #ffffff;--surface-strong: #fbf7f2;--ink: #1b1a17;--muted: #6a655f;--accent: #e07a5f;--accent-strong: #b85c45;--accent-cool: #3d5a80;--accent-mint: #81b29a;--border: 1px solid rgba(27, 26, 23, .08);--shadow-lg: 0 24px 50px rgba(27, 26, 23, .14);--shadow-md: 0 16px 36px rgba(27, 26, 23, .1);--shadow-sm: 0 8px 18px rgba(27, 26, 23, .08);--radius-lg: 22px;--radius-md: 16px;--radius-sm: 12px}*{box-sizing:border-box}body{margin:0;font-family:Space Grotesk,Segoe UI,sans-serif;color:var(--ink);background:linear-gradient(160deg,#fff7ee,#f3ede6 45%,#eef0f4);min-height:100vh;position:relative;overflow:hidden}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at 10% 10%,rgba(224,122,95,.18),transparent 45%),radial-gradient(circle at 85% 15%,rgba(61,90,128,.12),transparent 40%),radial-gradient(circle at 20% 85%,rgba(129,178,154,.18),transparent 45%);z-index:-2}body:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;background-image:repeating-linear-gradient(120deg,rgba(27,26,23,.03) 0,rgba(27,26,23,.03) 1px,transparent 1px,transparent 6px);opacity:.4;z-index:-1;pointer-events:none}#root{min-height:100vh;display:flex}.app-shell{display:grid;grid-template-columns:320px 1fr;width:100%;gap:28px;padding:32px;min-height:100vh;height:100vh}.sidebar{background:#ffffffe6;border-radius:var(--radius-lg);padding:24px;box-shadow:var(--shadow-lg);display:flex;flex-direction:column;gap:24px;border:var(--border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);height:100%;overflow:auto}.brand{display:flex;gap:14px;align-items:center}.brand-mark{display:inline-flex;height:54px;width:54px;border-radius:18px;align-items:center;justify-content:center;background:linear-gradient(135deg,#e07a5f,#f2cc8f);color:#fff;font-size:24px;font-family:JetBrains Mono,monospace;box-shadow:var(--shadow-sm)}.brand h1{margin:0;font-size:24px}.brand p{margin:2px 0 0;color:var(--muted);font-size:14px}.sidebar-panel{background:var(--surface);border-radius:var(--radius-md);padding:16px;border:var(--border);box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:12px}.panel-header{display:flex;justify-content:space-between;align-items:center;gap:12px}.panel-label{font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);font-weight:600}.session-card{background:var(--surface-strong);border:var(--border);border-radius:var(--radius-md);padding:14px;display:flex;flex-direction:column;gap:8px}.session-card.active{border-color:#e07a5f66;background:#e07a5f14}.session-id{font-family:JetBrains Mono,monospace;font-size:13px;color:var(--accent-cool);word-break:break-all}.session-status,.session-time{font-size:12px;color:var(--muted)}.pill-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.pill{background:#3d5a801f;color:var(--accent-cool);font-size:12px;font-weight:600;padding:6px 10px;border-radius:999px;text-align:center}.tips-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px;color:var(--muted);font-size:13px}.tips-list li{position:relative;padding-left:16px}.tips-list li:before{content:"";position:absolute;left:0;top:7px;width:6px;height:6px;border-radius:50%;background:var(--accent)}.main-panel{display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:20px;min-width:0;min-height:0;height:100%}.hero{display:grid;grid-template-columns:1.2fr .8fr;gap:20px;background:var(--surface);border-radius:var(--radius-lg);padding:24px;box-shadow:var(--shadow-lg);border:var(--border);animation:fadeIn .4s ease}.hero-text h2{margin:8px 0 12px;font-size:28px;line-height:1.2}.eyebrow{font-size:12px;letter-spacing:.3em;text-transform:uppercase;color:var(--accent-strong);margin:0;font-weight:700}.hero-card{background:var(--surface-strong);border-radius:var(--radius-md);padding:18px;border:var(--border);box-shadow:var(--shadow-sm)}.hero-metrics{display:grid;gap:12px}.metric-label{font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:var(--muted)}.metric-value{font-size:14px;font-weight:600;color:var(--ink);display:block;margin-top:6px}.metric-value.connected{color:var(--accent-mint)}.metric-value.disconnected{color:var(--accent)}.metric-value.connecting{color:#d2a754}.mono{font-family:JetBrains Mono,monospace;font-size:12px}.status-pill,.connection-pill{padding:6px 12px;border-radius:999px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.14em}.status-pill{background:#e07a5f24;color:var(--accent-strong)}.status-pill.loading{background:#d2a75433;color:#8a6a2a}.status-pill.ready{background:#81b29a33;color:#2f6c56}.status-pill.error{background:#e07a5f33;color:#8b3f30}.model-form{display:flex;flex-direction:column;gap:10px;font-size:13px}.model-form label{display:flex;flex-direction:column;gap:6px;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.08em}.model-form select,.model-form input{font-family:Space Grotesk,sans-serif;font-size:13px;padding:8px 10px;border-radius:10px;border:var(--border);background:#ffffffe6;color:var(--ink)}.model-form select:disabled,.model-form input:disabled{background:#fff9;color:var(--muted)}.model-description{margin:4px 0 0;font-size:12px;line-height:1.4}.connection-pill.connected{background:#81b29a33;color:#2f6c56}.connection-pill.connecting{background:#d2a75433;color:#8a6a2a}.connection-pill.disconnected,.connection-pill.error{background:#e07a5f33;color:#8b3f30}.chat-stream{flex:1;background:var(--surface);border-radius:var(--radius-lg);padding:24px;box-shadow:var(--shadow-lg);border:var(--border);overflow-y:auto;min-height:0;display:flex;flex-direction:column;gap:16px}.empty-state{text-align:center;padding:40px 20px;border-radius:var(--radius-md);border:1px dashed rgba(27,26,23,.12);background:#fff9}.empty-state h3{margin:0 0 8px}.message{padding:16px 18px;border-radius:var(--radius-md);background:var(--surface-strong);border:var(--border);max-width:72ch;box-shadow:var(--shadow-sm);animation:fadeUp .28s ease}.message.user{align-self:flex-end;background:#81b29a24;border-color:#81b29a59}.message.assistant{align-self:flex-start;background:#3d5a801f;border-color:#3d5a8040}.message.system{align-self:center;background:#e07a5f29;border-color:#e07a5f66}.message.streaming,.message.thinking{border-style:dashed;box-shadow:none}.thinking-dots{display:flex;gap:6px;padding:4px 0}.thinking-dots .dot{width:8px;height:8px;border-radius:50%;background:var(--accent-cool);opacity:.4;animation:dotBounce 1.4s ease-in-out infinite}.thinking-dots .dot:nth-child(2){animation-delay:.2s}.thinking-dots .dot:nth-child(3){animation-delay:.4s}@keyframes dotBounce{0%,80%,to{opacity:.4;transform:scale(1)}40%{opacity:1;transform:scale(1.3)}}.message-meta{display:flex;justify-content:space-between;font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);margin-bottom:10px}.message-body{margin:0;line-height:1.6;font-size:15px}.composer{background:var(--surface);border-radius:var(--radius-lg);padding:20px 24px;box-shadow:var(--shadow-lg);border:var(--border);display:flex;flex-direction:column;gap:16px}.error-banner{display:flex;gap:10px;align-items:center;padding:10px 14px;border-radius:12px;background:#e07a5f2e;color:#8b3f30;font-size:13px;font-weight:600;border:1px solid rgba(224,122,95,.4)}.composer-header{display:flex;justify-content:space-between;align-items:center;gap:16px}.composer-header h3{margin:0 0 6px}.input-row{display:flex;gap:12px}.input-row textarea{flex:1;padding:14px 16px;border-radius:var(--radius-md);border:var(--border);font-size:15px;font-family:Space Grotesk,sans-serif;background:#fffc;transition:border-color .2s ease,box-shadow .2s ease;resize:vertical}.input-row textarea:focus{outline:none;border-color:#e07a5f80;box-shadow:0 0 0 3px #e07a5f33}.btn{padding:12px 20px;border-radius:var(--radius-md);border:none;background:linear-gradient(135deg,#e07a5f,#f2cc8f);color:#fff;font-weight:700;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease;box-shadow:var(--shadow-sm)}.btn:hover{transform:translateY(-1px);box-shadow:var(--shadow-md)}.btn:active{transform:translateY(0)}.muted{color:var(--muted);font-size:13px}@keyframes fadeUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.agent-info{display:flex;flex-direction:column;gap:6px}.agent-type-badge{display:inline-block;padding:4px 10px;border-radius:999px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.12em;width:fit-content}.agent-type-badge.chat{background:#3d5a8026;color:var(--accent-cool)}.agent-type-badge.etl{background:#e07a5f26;color:var(--accent-strong)}.agent-type-badge.document_extraction{background:#06d6a026;color:#06d6a0}.create-agent-form{display:flex;flex-direction:column;gap:10px;padding:12px;background:var(--surface-strong);border-radius:var(--radius-sm);border:var(--border)}.form-error{margin:0;font-size:12px;color:#8b3f30;background:#e07a5f1f;padding:6px 10px;border-radius:8px}.btn-secondary{background:var(--surface-strong);color:var(--ink);border:var(--border);box-shadow:none}.btn-secondary:hover{background:#1b1a170f;box-shadow:var(--shadow-sm)}.btn-sm{padding:8px 14px;font-size:12px;border-radius:var(--radius-sm)}.btn-danger{color:#8b3f30}.btn-danger:hover{background:#e07a5f1f}.etl-panel{background:var(--surface);border-radius:var(--radius-lg);padding:24px;box-shadow:var(--shadow-lg);border:var(--border);display:flex;flex-direction:column;gap:20px;overflow-y:auto;min-height:0}.etl-header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.etl-header h3{margin:0 0 6px}.etl-upload-form{display:flex;flex-direction:column;gap:12px;padding:16px;background:var(--surface-strong);border-radius:var(--radius-md);border:var(--border)}.file-input-label{display:flex;flex-direction:column;gap:6px;font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.file-input-label input[type=file]{font-family:Space Grotesk,sans-serif;font-size:13px;padding:8px 10px;border-radius:10px;border:var(--border);background:#ffffffe6;color:var(--ink)}.file-name{font-size:12px;color:var(--accent-cool);font-family:JetBrains Mono,monospace}.etl-jobs-list{display:flex;flex-direction:column;gap:12px}.etl-jobs-list h4{margin:0;font-size:14px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted)}.etl-job-card{padding:14px;background:var(--surface-strong);border:var(--border);border-radius:var(--radius-md);display:flex;flex-direction:column;gap:8px;animation:fadeUp .28s ease}.etl-job-header{display:flex;justify-content:space-between;align-items:center}.etl-job-id{font-size:13px;color:var(--accent-cool)}.etl-status-badge{padding:4px 10px;border-radius:999px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.1em}.etl-status-badge.pending{background:#d2a75433;color:#8a6a2a}.etl-status-badge.running{background:#3d5a8026;color:var(--accent-cool)}.etl-status-badge.completed{background:#81b29a33;color:#2f6c56}.etl-status-badge.failed{background:#e07a5f33;color:#8b3f30}.etl-job-meta{display:flex;gap:16px;font-size:12px;color:var(--muted)}.etl-job-error{margin:0;font-size:12px;color:#8b3f30;background:#e07a5f1a;padding:6px 10px;border-radius:8px}.etl-job-actions{display:flex;gap:8px}.etl-progress-bar-track{position:relative;height:22px;background:#1b1a170f;border-radius:999px;overflow:hidden}.etl-progress-bar-fill{height:100%;border-radius:999px;background:linear-gradient(90deg,var(--accent-cool),var(--accent-mint));transition:width .5s ease}.etl-progress-text{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:var(--ink);letter-spacing:.06em}@media (max-width: 1100px){body{overflow:auto}.app-shell{grid-template-columns:1fr;height:auto}.sidebar{position:static;height:auto}.hero{grid-template-columns:1fr}}@media (max-width: 720px){.app-shell{padding:20px}.sidebar{gap:16px}.input-row{flex-direction:column}.btn{width:100%}}.pdf-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:#1b1a1780;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;animation:fadeIn .2s ease}.pdf-modal-container{width:92vw;height:88vh;background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);border:var(--border);display:flex;flex-direction:column;overflow:hidden;animation:fadeUp .28s ease}.pdf-modal-header{display:flex;justify-content:space-between;align-items:center;padding:16px 24px;border-bottom:var(--border);background:var(--surface-strong);flex-shrink:0}.pdf-modal-title{display:flex;align-items:center;gap:12px}.pdf-modal-job-label{font-size:14px;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:var(--ink)}.pdf-modal-job-id{font-size:12px;color:var(--accent-cool)}.pdf-modal-close{flex-shrink:0}.pdf-modal-body{display:grid;grid-template-columns:1fr 320px;flex:1;min-height:0;overflow:hidden}.pdf-viewer-main{display:flex;flex-direction:column;align-items:center;overflow-y:auto;padding:20px;gap:16px;background:#1b1a1708}.pdf-viewer-loading,.pdf-viewer-error{padding:20px;text-align:center;font-size:14px;color:var(--muted)}.pdf-viewer-error{color:#8b3f30;background:#e07a5f1f;border-radius:var(--radius-sm)}.pdf-canvas-wrapper{position:relative;display:inline-block;box-shadow:var(--shadow-md);border-radius:4px;overflow:hidden}.pdf-canvas{display:block}.bbox-overlay-container{position:absolute;top:0;left:0;pointer-events:none}.bbox-overlay{position:absolute;border:2px solid rgba(224,122,95,.6);background:#e07a5f14;cursor:pointer;pointer-events:auto;transition:border-color .15s ease,background .15s ease;border-radius:2px}.bbox-overlay.hovered{border-color:#e07a5fe6;background:#e07a5f2e}.bbox-overlay.selected{border-color:var(--accent-cool);background:#3d5a802e;border-width:2px;box-shadow:0 0 0 2px #3d5a804d}.bbox-label{position:absolute;bottom:100%;left:0;margin-bottom:2px;padding:2px 6px;background:#1b1a17d9;color:#fff;font-size:10px;font-family:JetBrains Mono,monospace;border-radius:4px;white-space:nowrap;pointer-events:none;z-index:10}.pdf-page-nav{display:flex;align-items:center;gap:12px;flex-shrink:0}.pdf-page-indicator{font-size:13px;font-weight:600;color:var(--muted);font-family:JetBrains Mono,monospace}.pdf-viewer-sidebar{display:flex;flex-direction:column;border-left:var(--border);background:var(--surface);overflow:hidden}.pdf-sidebar-header{display:flex;justify-content:space-between;align-items:center;padding:14px 16px;border-bottom:var(--border);flex-shrink:0}.pdf-field-count{font-size:11px;font-weight:700;color:var(--accent-cool);background:#3d5a801a;padding:3px 8px;border-radius:999px}.pdf-field-list{flex:1;overflow-y:auto;padding:8px;display:flex;flex-direction:column;gap:4px}.pdf-no-fields{text-align:center;padding:20px 12px}.field-list-item{padding:8px 10px;border-radius:var(--radius-sm);cursor:pointer;border:1px solid transparent;transition:background .15s ease,border-color .15s ease;display:flex;flex-direction:column;gap:3px}.field-list-item:hover{background:#e07a5f0f;border-color:#e07a5f33}.field-list-item.selected{background:#3d5a801a;border-color:#3d5a804d}.field-list-name{font-size:11px;color:var(--accent-strong);font-weight:600}.field-list-text{font-size:12px;color:var(--ink);line-height:1.3;word-break:break-word}@media (max-width: 900px){.pdf-modal-body{grid-template-columns:1fr}.pdf-viewer-sidebar{border-left:none;border-top:var(--border);max-height:200px}}
