:root{--bg: #0f172a;--panel: #1e293b;--panel-2: #273449;--border: #334155;--text: #e2e8f0;--muted: #94a3b8;--accent: #38bdf8;--accent-2: #0ea5e9;--green: #22c55e;--red: #ef4444;--yellow: #eab308;--danger: #ef4444;--warn: #eab308;--accent-2-badge: #22c55e}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text)}a{color:var(--accent);text-decoration:none}.topbar{display:flex;align-items:center;justify-content:space-between;padding:14px 22px;border-bottom:1px solid var(--border);background:var(--panel)}.brand{font-weight:700;letter-spacing:.3px;color:var(--text)}.container{max-width:1000px;margin:0 auto;padding:32px 22px}.card{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:20px;margin-bottom:20px}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px}.stat{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:20px}.stat .value{font-size:32px;font-weight:700}.stat .label{color:var(--muted);font-size:13px;margin-top:4px}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--border);font-size:14px}th{color:var(--muted);font-weight:600}input,button,select{font:inherit}input{width:100%;padding:10px 12px;border-radius:8px;border:1px solid var(--border);background:var(--panel-2);color:var(--text);margin-bottom:10px}label{display:block;font-size:13px;color:var(--muted);margin:12px 0 6px}button{cursor:pointer;border:none;border-radius:8px;padding:10px 16px;background:var(--accent-2);color:#fff;font-weight:600}button:hover{background:var(--accent)}button.secondary{background:var(--panel-2);border:1px solid var(--border);color:var(--text)}button.secondary:hover{background:var(--border)}button.ghost{background:transparent;color:var(--muted)}button.danger{background:var(--red)}button.danger:hover{opacity:.9}button:disabled{opacity:.5;cursor:not-allowed}.badge{display:inline-block;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600}.badge.ACTIVE,.badge.SUCCEEDED{background:#22c55e26;color:var(--green)}.badge.ERROR,.badge.FAILED{background:#ef444426;color:var(--red)}.badge.DRAFT,.badge.PENDING,.badge.RUNNING{background:#eab30826;color:var(--yellow)}.badge.DISABLED{background:#94a3b826;color:var(--muted)}.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;gap:12px;flex-wrap:wrap}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center}.login-card{width:360px}.error{color:var(--red);font-size:13px;margin-bottom:8px}.muted{color:var(--muted);font-size:13px}code{font-size:12px;background:var(--panel-2);padding:2px 6px;border-radius:4px}.chat-card{display:flex;flex-direction:column;gap:12px}.chat-layout{display:grid;grid-template-columns:1fr;gap:16px}@media(min-width:960px){.chat-layout{grid-template-columns:1.4fr 1fr}}.chat-thread{max-height:420px;overflow-y:auto;padding:8px;border:1px solid var(--border);border-radius:10px;background:var(--bg)}.chat-empty{padding:16px 8px;line-height:1.5}.chat-bubble{margin-bottom:12px;padding:10px 12px;border-radius:10px;border:1px solid var(--border);background:var(--panel)}.chat-bubble.user{background:#0ea5e91f;border-color:#0ea5e959}.chat-role{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:4px}.chat-content{white-space:pre-wrap;font-size:14px;line-height:1.45}.chat-sql{margin:10px 0 0;padding:10px;border-radius:8px;background:var(--panel-2);color:var(--muted);font-size:11px;overflow-x:auto;white-space:pre-wrap}.chat-side{max-height:420px;overflow:auto;border:1px solid var(--border);border-radius:10px;padding:10px;background:var(--bg)}.chat-table-wrap{margin-top:10px;overflow-x:auto}.chat-table{font-size:12px}.chat-table th,.chat-table td{padding:6px 8px;white-space:nowrap;max-width:220px;overflow:hidden;text-overflow:ellipsis}.chat-form{display:flex;gap:10px;align-items:flex-start}.chat-form input{margin-bottom:0;flex:1}
