:root{--bg: #0d1117;--surface: #161b22;--border: #30363d;--text: #c9d1d9;--text-muted: #8b949e;--accent: #58a6ff;--green: #3fb950;--red: #f85149;--yellow: #d29922;--user-bg: #1f6feb;--assistant-bg:#161b22;--tool-bg: #161b22}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}.hidden{display:none!important}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--text);height:100vh;display:flex;flex-direction:column}#app{display:flex;flex-direction:column;height:100vh;width:100%}header{padding:.5rem 1.15rem;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border);flex-shrink:0;background:var(--bg)}.header-left{display:flex;align-items:center}.pane-header-toggle{padding:.22rem .6rem;background:var(--surface);border:1px solid var(--border);border-radius:.25rem;color:var(--text-muted);font-size:.68rem;cursor:pointer;display:inline-flex;align-items:center;gap:.3rem;transition:all .15s}.header-left .pane-header-toggle{margin-right:.75rem}.pane-header-toggle:hover,.pane-header-toggle.is-active{border-color:var(--accent);color:var(--text);background:#58a6ff1a}.btn-pane-collapse{padding:.15rem .4rem;background:transparent;border:1px solid transparent;border-radius:.25rem;color:var(--text-muted);font-size:.75rem;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:all .15s}.btn-pane-collapse:hover{background:#ffffff0f;border-color:var(--border);color:var(--text)}header h1.app-title{font-size:1.15rem;font-weight:600;display:inline-flex;align-items:baseline;gap:.35rem;letter-spacing:-.01em;margin:0;line-height:1.2}.title-bobby{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif;font-weight:600;color:#f0f6fc}.title-tables{font-family:Roboto Mono,SF Mono,Cascadia Code,Fira Code,Menlo,Consolas,monospace;font-weight:500;color:var(--accent);background:#58a6ff1a;padding:.08rem .35rem;border-radius:4px;border:1px solid rgba(88,166,255,.2);font-size:.95rem;letter-spacing:-.02em}#header-actions{display:flex;align-items:center;justify-content:flex-end;gap:.45rem;margin-top:0}#header-actions button{padding:.22rem .6rem;background:var(--surface);border:1px solid var(--border);border-radius:.25rem;color:var(--text-muted);font-size:.68rem;cursor:pointer;display:inline-flex;align-items:center;gap:.3rem;transition:all .15s}#header-actions button:hover,#header-actions button.is-active{border-color:var(--accent);color:var(--text);background:#58a6ff14}#workstation{flex:1;display:flex;min-height:0;overflow:hidden}.pane-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.5rem .75rem;border-bottom:1px solid var(--border);flex-shrink:0;background:var(--surface)}.pane-header h2{font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted)}#explorer-pane{width:260px;flex-shrink:0;display:flex;flex-direction:column;min-height:0;background:var(--surface);border-right:1px solid var(--border);position:relative;transition:width .18s cubic-bezier(.4,0,.2,1)}.pane-full-content{display:flex;flex-direction:column;flex:1;min-height:0;min-width:0;width:100%}.collapsed-rail{display:none;flex-direction:column;align-items:center;width:100%;height:100%;padding:.4rem 0;background:var(--surface);-webkit-user-select:none;user-select:none}.rail-section{display:flex;flex-direction:column;align-items:center;width:100%;flex:1;padding:.5rem 0;gap:.4rem;cursor:pointer;transition:background .15s ease}.rail-section:hover{background:#58a6ff14}.rail-divider{width:22px;height:1px;background:var(--border);margin:.2rem 0;flex-shrink:0}.btn-rail-icon{width:28px;height:28px;display:flex;align-items:center;justify-content:center;background:transparent;border:1px solid transparent;border-radius:.35rem;color:var(--text-muted);cursor:pointer;padding:0;transition:all .15s ease}.rail-section:hover .btn-rail-icon,.collapsed-rail:hover .btn-rail-icon,.btn-rail-icon:hover{background:#58a6ff24;border-color:#58a6ff4d;color:var(--accent)}.rail-title{writing-mode:vertical-rl;transform:rotate(180deg);font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.12em;color:var(--text-muted);margin-top:.3rem;transition:color .15s}.rail-section:hover .rail-title,.collapsed-rail:hover .rail-title{color:#f0f6fc}#explorer-pane.is-collapsed,#canvas-pane.is-collapsed{width:38px!important;min-width:38px!important;max-width:38px!important;flex:0 0 38px!important;overflow:hidden!important}#explorer-pane.is-collapsed .pane-full-content,#canvas-pane.is-collapsed .pane-full-content{display:none!important}#explorer-pane.is-collapsed .collapsed-rail,#canvas-pane.is-collapsed .collapsed-rail{display:flex!important}.pane-divider.is-hidden{display:none!important}.accordion-section{display:flex;flex-direction:column;min-height:0;border-bottom:1px solid var(--border);transition:flex .2s ease-in-out;background:var(--bg)}.accordion-section:last-child{border-bottom:none}.accordion-section.is-open{flex:1;min-height:120px}.accordion-section:not(.is-open){flex:0 0 auto}.accordion-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.45rem .65rem;background:var(--surface);border-bottom:1px solid var(--border);cursor:pointer;-webkit-user-select:none;user-select:none;flex-shrink:0;transition:background .15s}.accordion-header:hover{background:#ffffff0a}.accordion-title-wrap{display:flex;align-items:center;gap:.45rem}.accordion-chevron{font-size:.65rem;color:var(--text-muted);transition:transform .18s ease;display:inline-block;-webkit-user-select:none;user-select:none}.accordion-section:not(.is-open) .accordion-chevron{transform:rotate(-90deg)}.accordion-header h2{font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin:0}.accordion-content{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}.accordion-section:not(.is-open) .accordion-content{display:none!important}.session-list{flex:1;overflow-y:auto;padding:.4rem .5rem;display:flex;flex-direction:column;gap:.3rem;min-height:0}.session-item{display:flex;align-items:center;justify-content:space-between;padding:.35rem .55rem;background:var(--surface);border:1px solid var(--border);border-radius:.35rem;cursor:pointer;-webkit-user-select:none;user-select:none;transition:all .15s ease;gap:.4rem}.session-item:hover{background:#58a6ff0f;border-color:#58a6ff4d}.session-item.active{background:#58a6ff1f;border-color:var(--accent);color:#f0f6fc}.session-item-main{display:flex;align-items:center;gap:.45rem;min-width:0;flex:1}.session-item-icon{font-size:.65rem;color:var(--text-muted);flex-shrink:0}.session-item.active .session-item-icon{color:var(--accent)}.session-item-name{font-size:.72rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--text)}.session-item.active .session-item-name{font-weight:600;color:#fff}.session-item-actions{display:flex;align-items:center;gap:.2rem;flex-shrink:0}.btn-session-item-action{padding:.1rem .28rem;font-size:.65rem;background:transparent;border:1px solid transparent;border-radius:.2rem;color:var(--text-muted);cursor:pointer;opacity:.6;transition:all .15s;line-height:1}.session-item:hover .btn-session-item-action{opacity:1}.btn-session-item-rename:hover{color:var(--accent);border-color:#58a6ff66;background:#58a6ff1a}.btn-session-item-delete:hover{color:var(--red);border-color:#f8514966;background:#f851491a}.pane-divider{flex:0 0 6px;cursor:col-resize;touch-action:none;position:relative;z-index:5}.pane-divider:before{content:"";position:absolute;top:0;bottom:0;left:50%;width:1px;transform:translate(-50%);background:var(--border)}.pane-divider:hover:before,.pane-divider.active:before{width:3px;background:var(--accent)}body.pane-resizing{cursor:col-resize;user-select:none;-webkit-user-select:none}body.pane-resizing #workstation>*{pointer-events:none}body.pane-resizing .pane-divider{pointer-events:auto}#explorer-body{flex:1;overflow-y:auto;padding:.5rem .6rem;display:flex;flex-direction:column;gap:.6rem;min-height:0}.explorer-header-actions{display:flex;align-items:center;gap:.3rem}.explorer-header-actions button{padding:.18rem .45rem;background:var(--surface);border:1px solid var(--border);border-radius:.25rem;color:var(--text-muted);font-size:.65rem;cursor:pointer;transition:all .15s}.explorer-header-actions button:hover{border-color:var(--accent);color:var(--text)}.explorer-header-actions #btn-new-table{border-color:var(--accent);color:var(--accent);font-weight:500}.explorer-search-bar{padding:.4rem .6rem .2rem;flex-shrink:0}.explorer-search-bar input{width:100%;padding:.25rem .5rem;background:var(--bg);border:1px solid var(--border);border-radius:.3rem;color:var(--text);font-size:.68rem;outline:none}.explorer-search-bar input:focus{border-color:var(--accent)}#table-list{display:flex;flex-direction:column;gap:.5rem}.explorer-section{display:flex;flex-direction:column;gap:.25rem}.explorer-section-header{display:flex;align-items:center;justify-content:space-between;padding:.2rem .25rem;cursor:pointer;-webkit-user-select:none;user-select:none;font-size:.66rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);transition:color .15s}.explorer-section-header:hover{color:var(--text)}.explorer-section-title{display:flex;align-items:center;gap:.3rem}.explorer-count-badge{font-size:.6rem;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:0 .35rem;color:var(--text-muted);font-family:SF Mono,Fira Code,monospace}.explorer-item-list{display:flex;flex-direction:column;gap:.25rem}.explorer-item-list.collapsed{display:none}.explorer-empty-msg{font-size:.65rem;color:var(--text-muted);font-style:italic;padding:.2rem .4rem}.explorer-item{border:1px solid var(--border);border-radius:.35rem;background:var(--surface);overflow:hidden;transition:border-color .15s}.explorer-item:hover{border-color:#58a6ff66}.explorer-item.expanded{border-color:var(--accent)}.explorer-item-summary{display:flex;align-items:center;justify-content:space-between;padding:.3rem .45rem;cursor:pointer;-webkit-user-select:none;user-select:none;gap:.35rem}.explorer-item-main{display:flex;align-items:center;gap:.35rem;min-width:0;flex:1}.explorer-chevron{font-size:.65rem;color:var(--text-muted);width:10px;flex-shrink:0}.explorer-item-name{font-family:SF Mono,Fira Code,monospace;font-size:.72rem;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.explorer-row-badge{font-size:.6rem;color:var(--accent);background:#58a6ff14;padding:.05rem .3rem;border-radius:.25rem;white-space:nowrap;font-family:SF Mono,Fira Code,monospace;flex-shrink:0}.explorer-item-details{border-top:1px solid var(--border);background:var(--bg);animation:fadeIn .1s ease-out}.explorer-item-details.hidden{display:none}.explorer-details-content{padding:.45rem;display:flex;flex-direction:column;gap:.4rem}.explorer-subheading{font-size:.6rem;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);font-weight:600;margin-top:.15rem}.explorer-subheading.flex-between{display:flex;justify-content:space-between;align-items:center}.explorer-col-list,.explorer-idx-list,.explorer-fk-list{display:flex;flex-direction:column;gap:.15rem}.explorer-col-row{display:flex;align-items:center;justify-content:space-between;font-size:.68rem;padding:.12rem .25rem;border-radius:.2rem;background:#ffffff05}.explorer-col-name-wrap{display:flex;align-items:center;gap:.25rem;min-width:0}.explorer-col-name{font-family:SF Mono,Fira Code,monospace;color:var(--text);font-size:.68rem}.explorer-badge{font-size:.55rem;font-weight:700;padding:0 .25rem;border-radius:.2rem;line-height:1.2}.badge-pk{background:#d2992233;color:#e3b341;border:1px solid rgba(210,153,34,.4)}.badge-nn{background:#f8514926;color:#f85149}.badge-unique{background:#3fb95026;color:#3fb950;border:1px solid rgba(63,185,80,.3);font-size:.55rem;padding:0 .2rem}.explorer-type-tag{font-family:SF Mono,Fira Code,monospace;font-size:.6rem;color:var(--text-muted)}.explorer-dflt{font-family:SF Mono,Fira Code,monospace;font-size:.58rem;color:var(--text-muted)}.explorer-idx-row,.explorer-fk-row{font-size:.62rem;color:var(--text-muted);padding:.1rem .2rem;font-family:SF Mono,Fira Code,monospace}.explorer-ddl-block{font-family:SF Mono,Fira Code,monospace;font-size:.6rem;color:var(--text);background:#00000059;padding:.35rem;border-radius:.25rem;border:1px solid var(--border);max-height:110px;overflow:auto;white-space:pre-wrap;word-break:break-all;margin:0}.btn-copy-ddl{padding:.08rem .35rem;background:transparent;border:1px solid var(--border);border-radius:.2rem;color:var(--text-muted);font-size:.58rem;cursor:pointer;transition:all .15s}.btn-copy-ddl:hover{border-color:var(--accent);color:var(--text)}.explorer-actions-bar{display:flex;flex-wrap:wrap;gap:.25rem;margin-top:.2rem;padding-top:.3rem;border-top:1px solid var(--border)}.explorer-actions-bar button{flex:1;min-width:50px;padding:.2rem .35rem;background:var(--surface);border:1px solid var(--border);border-radius:.25rem;color:var(--text-muted);font-size:.62rem;cursor:pointer;text-align:center;transition:all .15s}.explorer-actions-bar button:hover{border-color:var(--accent);color:var(--text);background:#58a6ff14}.explorer-actions-bar .btn-action-drop:hover{border-color:var(--red);color:var(--red);background:#f851491a}#center-pane{flex:1;display:flex;flex-direction:column;min-width:0;min-height:0}#center-pane #config-panel{border-left:none;border-right:none}#canvas-pane{width:440px;flex-shrink:0;display:flex;flex-direction:column;min-height:0;border-left:1px solid var(--border);position:relative;transition:width .18s cubic-bezier(.4,0,.2,1)}#canvas-pane.disabled,#canvas-pane.disabled *{pointer-events:none;opacity:.55}.canvas-actions{display:flex;gap:.35rem}.canvas-actions button{padding:.2rem .55rem;background:var(--bg);border:1px solid var(--border);border-radius:.3rem;color:var(--text-muted);font-size:.65rem;cursor:pointer;transition:all .15s}.canvas-actions button:hover{border-color:var(--accent);color:var(--text)}.canvas-actions #btn-add-card{border-color:var(--accent);color:var(--accent)}.dashboard-grid{flex:1;display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:10px;min-height:0;overflow-y:auto;align-content:start}.grid-cell{border:1px dashed rgba(48,54,61,.6);border-radius:6px;min-height:180px;transition:all .15s ease-in-out}.grid-cell.drag-target-hover{border-color:#58a6ff;background:#58a6ff14;box-shadow:inset 0 0 0 1px #58a6ff66}.grid-cell.drag-target-invalid{border-color:#f85149;background:#f851491f;box-shadow:inset 0 0 0 1px #f8514966}.dashboard-grid.is-dragging .dash-card{opacity:.65;transition:opacity .15s ease-in-out}.dashboard-grid.is-dragging .dash-card.is-being-dragged{opacity:.3;border:1px dashed var(--accent)}.grid-empty{grid-column:1 / -1;grid-row:1 / span 3;display:flex;align-items:center;justify-content:center;color:var(--text-muted);font-size:.75rem;font-style:italic;text-align:center;padding:1rem}.dash-card{position:relative;display:flex;flex-direction:column;min-height:180px;min-width:0;background:var(--surface);border:1px solid var(--border);border-radius:6px;overflow:hidden;animation:fadeIn .2s ease-out;box-shadow:0 2px 6px #0003}.dash-card.card-live-flash{animation:liveFlash 1.2s ease-out}@keyframes liveFlash{0%{border-color:var(--green);box-shadow:0 0 0 2px #3fb95059}to{border-color:var(--border);box-shadow:0 0 #3fb95000}}.dash-card-header{display:flex;align-items:center;justify-content:space-between;gap:.4rem;padding:.3rem .5rem;border-bottom:1px solid var(--border);background:#ffffff05;flex-shrink:0;cursor:grab;-webkit-user-select:none;user-select:none}.dash-card-header:active{cursor:grabbing}.dash-card-drag-handle{cursor:grab;color:var(--text-muted);font-size:.8rem;margin-right:.25rem;opacity:.6}.dash-card-header:hover .dash-card-drag-handle{opacity:1;color:var(--accent)}.dash-card-title{font-size:.7rem;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.dash-card-actions{display:flex;gap:.15rem;flex-shrink:0}.card-resize-handle{position:absolute;bottom:0;right:0;width:16px;height:16px;font-size:10px;color:var(--text-muted);opacity:.4;cursor:nwse-resize;display:flex;align-items:flex-end;justify-content:flex-end;padding:1px;-webkit-user-select:none;user-select:none;transition:opacity .15s}.dash-card:hover .card-resize-handle{opacity:.9;color:var(--accent)}.draggable-chat-asset{position:relative;cursor:grab;transition:transform .15s,box-shadow .15s}.draggable-chat-asset:active{cursor:grabbing}.drag-pin-badge{display:inline-flex;align-items:center;gap:.3rem;font-size:.65rem;font-weight:500;color:var(--text-muted);background:#ffffff0a;border:1px dashed var(--border);border-radius:4px;padding:.1rem .4rem;margin-bottom:.35rem;cursor:grab;-webkit-user-select:none;user-select:none;transition:all .15s}.draggable-chat-asset:hover .drag-pin-badge{color:var(--accent);border-color:var(--accent);background:#58a6ff14}.card-btn{padding:.05rem .3rem;background:transparent;border:1px solid transparent;border-radius:.25rem;color:var(--text-muted);font-size:.68rem;line-height:1.2;cursor:pointer;transition:all .15s}.card-btn:hover{border-color:var(--border);color:var(--text);background:var(--bg)}.card-btn.card-delete:hover{border-color:var(--red);color:var(--red)}.dash-card-body{flex:1;overflow:auto;padding:.45rem .55rem;min-height:0}.dash-card-footer{padding:.2rem .5rem;border-top:1px solid var(--border);font-size:.58rem;color:var(--text-muted);font-family:SF Mono,Fira Code,monospace;flex-shrink:0}.card-metric{font-size:1.9rem;font-weight:700;color:var(--accent);text-align:center;padding:.6rem .2rem .2rem;letter-spacing:-.02em;word-break:break-word;line-height:1.2}.card-metric-label{text-align:center;font-size:.62rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;padding-bottom:.3rem}.card-table th,.card-table td{padding:.2rem .4rem;font-size:.66rem}.card-truncated{font-size:.6rem;color:var(--text-muted);font-style:italic;padding-top:.25rem}.card-loading,.card-empty{font-size:.68rem;color:var(--text-muted)}.card-error{font-size:.66rem;word-break:break-word}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0d1117b3;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;z-index:100;animation:fadeIn .12s ease-out}.modal-backdrop.hidden{display:none}.modal-card{width:460px;max-width:calc(100vw - 2rem);max-height:calc(100vh - 2rem);overflow-y:auto;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:1rem 1.1rem;box-shadow:0 12px 40px #00000080}.modal-card h3{font-size:.85rem;font-weight:600;margin-bottom:.75rem;color:var(--text)}#card-form{display:flex;flex-direction:column;gap:.65rem}#card-form .config-row input,#card-form .config-row textarea,#card-form .config-row select{font-family:inherit}#card-sql{font-family:SF Mono,Fira Code,monospace;font-size:.72rem;resize:vertical;min-height:70px}.placement-selects{display:flex;gap:.5rem}.placement-selects select{flex:1}.card-dialog-error{font-size:.7rem;color:var(--red);background:#f8514914;border:1px solid rgba(248,81,73,.3);border-radius:.35rem;padding:.4rem .6rem;line-height:1.4}.card-dialog-error.hidden{display:none}.modal-actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:.2rem}.modal-actions button{padding:.45rem .9rem;border-radius:.35rem;font-size:.75rem;cursor:pointer;transition:opacity .15s}#card-cancel{background:var(--bg);border:1px solid var(--border);color:var(--text-muted)}#card-cancel:hover{color:var(--text);border-color:var(--text-muted)}#card-submit{background:var(--accent);border:none;color:#fff;font-weight:500}#card-submit:hover{opacity:.85}.modal-card-medium{width:560px}.modal-card-large{width:860px;height:82vh;display:flex;flex-direction:column}.modal-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:.75rem}.modal-close-btn{background:transparent;border:none;color:var(--text-muted);font-size:1rem;cursor:pointer;padding:.2rem .4rem;line-height:1;transition:color .15s}.modal-close-btn:hover{color:var(--text)}.preview-header-info{display:flex;align-items:baseline;gap:.6rem}.preview-count-tag{font-size:.68rem;color:var(--accent);background:#58a6ff14;padding:.1rem .4rem;border-radius:4px;font-family:SF Mono,Fira Code,monospace}.preview-toolbar{display:flex;justify-content:space-between;align-items:center;gap:.75rem;padding-bottom:.6rem;flex-shrink:0}.preview-search-wrap{flex:1;max-width:320px}.preview-search-wrap input{width:100%;padding:.3rem .6rem;background:var(--bg);border:1px solid var(--border);border-radius:.3rem;color:var(--text);font-size:.72rem;outline:none}.preview-search-wrap input:focus{border-color:var(--accent)}.preview-limit-wrap{display:flex;align-items:center;gap:.4rem;font-size:.7rem;color:var(--text-muted)}.preview-limit-wrap select{padding:.25rem .5rem;background:var(--bg);border:1px solid var(--border);border-radius:.3rem;color:var(--text);font-size:.7rem;outline:none}.preview-scroll-container{flex:1;overflow:auto;border:1px solid var(--border);border-radius:4px;background:var(--bg);min-height:0}.preview-loading,.preview-empty,.preview-error{padding:2rem;text-align:center;font-size:.78rem;color:var(--text-muted)}.preview-error{color:var(--red)}.preview-grid{width:100%;border-collapse:collapse;font-family:SF Mono,Fira Code,monospace;font-size:.7rem}.preview-grid th{position:sticky;top:0;background:var(--surface);border-bottom:1px solid var(--border);border-right:1px solid var(--border);padding:.35rem .55rem;text-align:left;font-weight:600;color:var(--text);-webkit-user-select:none;user-select:none;cursor:pointer;z-index:2;white-space:nowrap}.preview-grid th:hover{background:#58a6ff14}.th-content{display:flex;align-items:center;gap:.3rem}.th-name{color:var(--text)}.th-type{font-size:.58rem;color:var(--text-muted);font-weight:400}.th-sort{color:var(--accent);font-size:.65rem}.preview-grid td{padding:.3rem .55rem;border-bottom:1px solid rgba(255,255,255,.04);border-right:1px solid rgba(255,255,255,.04);color:var(--text);white-space:nowrap;max-width:250px;overflow:hidden;text-overflow:ellipsis}.preview-grid tr:hover td{background:#ffffff05}.cell-null{color:var(--text-muted);font-style:italic}.cell-num{color:#79c0ff;text-align:right}.preview-footer{display:flex;justify-content:space-between;align-items:center;padding-top:.6rem;flex-shrink:0}.preview-page-btn{padding:.3rem .7rem;background:var(--bg);border:1px solid var(--border);border-radius:.3rem;color:var(--text-muted);font-size:.72rem;cursor:pointer;transition:all .15s}.preview-page-btn:hover:not(:disabled){border-color:var(--accent);color:var(--text)}.preview-page-btn:disabled{opacity:.35;cursor:not-allowed}.preview-page-label{font-size:.72rem;color:var(--text-muted);font-family:SF Mono,Fira Code,monospace}.columns-builder-container{display:flex;flex-direction:column;gap:.35rem;max-height:180px;overflow-y:auto;padding:.3rem 0}.column-builder-row{display:flex;align-items:center;gap:.35rem}.col-input-name{flex:1.5;padding:.25rem .45rem;background:var(--bg);border:1px solid var(--border);border-radius:.25rem;color:var(--text);font-size:.7rem;font-family:SF Mono,Fira Code,monospace}.col-select-type{width:90px;padding:.25rem .35rem;background:var(--bg);border:1px solid var(--border);border-radius:.25rem;color:var(--text);font-size:.68rem;font-family:SF Mono,Fira Code,monospace}.col-checkbox-label{display:flex;align-items:center;gap:.2rem;font-size:.65rem;color:var(--text-muted);cursor:pointer;-webkit-user-select:none;user-select:none}.col-input-dflt{width:80px;padding:.25rem .35rem;background:var(--bg);border:1px solid var(--border);border-radius:.25rem;color:var(--text);font-size:.68rem;font-family:SF Mono,Fira Code,monospace}.btn-remove-col{padding:.15rem .35rem;background:transparent;border:1px solid transparent;color:var(--text-muted);font-size:.75rem;cursor:pointer;border-radius:.25rem}.btn-remove-col:hover{color:var(--red);border-color:var(--border)}.table-ddl-preview-box{font-family:SF Mono,Fira Code,monospace;font-size:.65rem;color:#e3b341;background:#0006;padding:.5rem;border:1px solid var(--border);border-radius:.3rem;max-height:90px;overflow:auto;white-space:pre-wrap;word-break:break-all;margin:0}.chat-asset-actions{display:flex;align-items:center;gap:.35rem;margin-bottom:.35rem}.btn-save-view-chat{display:inline-flex;align-items:center;gap:.3rem;font-size:.65rem;font-weight:500;color:var(--text-muted);background:#ffffff0a;border:1px solid var(--border);border-radius:4px;padding:.1rem .4rem;cursor:pointer;-webkit-user-select:none;user-select:none;transition:all .15s}.btn-save-view-chat:hover{color:#58a6ff;border-color:#58a6ff;background:#58a6ff14}@media(max-width:1100px){#explorer-pane{width:190px}#canvas-pane{width:360px}}@media(max-width:900px){#explorer-pane,#divider-explorer{display:none}#canvas-pane{width:320px}}#config-modal .modal-card{width:480px;max-width:calc(100vw - 2rem)}#config-form{display:flex;flex-direction:column;gap:.75rem}.config-row{display:flex;flex-direction:column;gap:.25rem}.config-row label{font-size:.7rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.config-row .optional{font-weight:400;text-transform:none;letter-spacing:0;opacity:.7}.config-row .required{font-weight:400;text-transform:none;letter-spacing:0;color:var(--yellow)}.config-row .hint{font-size:.65rem;color:var(--text-muted);margin-top:.15rem;line-height:1.3}.config-row input,.config-row select{padding:.5rem .7rem;background:var(--bg);border:1px solid var(--border);border-radius:.35rem;color:var(--text);font-size:.8rem;outline:none;font-family:inherit}.config-row input:focus,.config-row select:focus{border-color:var(--accent)}.config-row input::placeholder{color:var(--text-muted);opacity:.6}#config-apply{margin-top:.25rem;padding:.55rem 1rem;background:var(--accent);border:none;border-radius:.35rem;color:#fff;font-size:.8rem;font-weight:500;cursor:pointer;transition:opacity .15s}#config-apply:hover{opacity:.85}#chat-container{flex:1;overflow-y:auto;padding:1rem 1.25rem;display:flex;flex-direction:column;gap:.6rem;scroll-behavior:smooth;min-height:0;position:relative}#chat-container::-webkit-scrollbar{width:6px}#chat-container::-webkit-scrollbar-track{background:transparent}#chat-container::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}.message{padding:.6rem .85rem;border-radius:.5rem;max-width:85%;white-space:pre-wrap;word-break:break-word;font-size:.83rem;line-height:1.55;animation:fadeIn .2s ease-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.compaction-divider{display:flex;align-items:center;gap:.6rem;width:100%;margin:.4rem 0;color:#8b949e;font-size:.68rem;letter-spacing:.08em;-webkit-user-select:none;user-select:none;animation:fadeIn .2s ease-out}.compaction-divider:before,.compaction-divider:after{content:"";flex:1;height:1px;background:var(--border, #30363d)}.message.user{align-self:flex-end;background:var(--user-bg);color:#fff;border-bottom-right-radius:.15rem}.message.assistant{align-self:flex-start;background:var(--assistant-bg);border:1px solid var(--border);border-bottom-left-radius:.15rem;position:relative}.message.assistant.streaming:after{content:"▋";display:inline-block;margin-left:3px;color:var(--accent);animation:cursorBlink .8s infinite step-start;font-size:.85em;vertical-align:baseline}@keyframes cursorBlink{0%,50%{opacity:1}51%,to{opacity:0}}.thinking-dots{display:inline-flex;gap:3px;align-items:center;color:var(--text-muted);font-size:.85rem;padding:.1rem 0}.thinking-dots span{animation:pulse 1.2s infinite ease-in-out}.thinking-dots span:nth-child(1){animation-delay:0s}.thinking-dots span:nth-child(2){animation-delay:.2s}.thinking-dots span:nth-child(3){animation-delay:.4s}.tool-indicator{align-self:flex-start;background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--yellow);border-radius:.4rem;padding:.5rem .75rem;display:flex;flex-direction:column;gap:.35rem;max-width:90%;animation:fadeIn .15s ease-out}.tool-indicator-header{display:flex;align-items:center;gap:.45rem;font-size:.73rem;font-weight:500;color:var(--text)}.tool-indicator-header code{font-family:SF Mono,Fira Code,monospace;color:#e3b341;background:#0000004d;padding:.1rem .3rem;border-radius:.2rem}.tool-spinner{width:12px;height:12px;border:2px solid rgba(227,179,65,.25);border-top-color:#e3b341;border-radius:50%;animation:spin .7s linear infinite;flex-shrink:0}@keyframes spin{to{transform:rotate(360deg)}}.tool-indicator .tool-detail{font-family:SF Mono,Fira Code,monospace;font-size:.68rem;color:var(--text-muted);background:#0003;padding:.3rem .5rem;border-radius:.25rem;overflow-x:auto;white-space:pre-wrap;word-break:break-all;max-height:120px}.message.tool,.message.tool_result{align-self:flex-start;background:var(--tool-bg);border:1px solid var(--yellow);font-family:SF Mono,Fira Code,Cascadia Code,Consolas,monospace;font-size:.76rem;line-height:1.5;color:#e3b341;max-width:95%;overflow:auto}.message.tool .message-label,.message.tool_result .message-label{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:.62rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.25rem}.search-results-list{display:flex;flex-direction:column;gap:.4rem;margin-top:.3rem}.search-result-item{padding:.35rem .5rem;background:#ffffff05;border:1px solid rgba(255,255,255,.05);border-radius:.3rem;border-left:2px solid var(--accent)}.search-result-title{font-weight:600;font-size:.74rem;color:var(--accent);text-decoration:none}.search-result-title:hover{text-decoration:underline}.search-result-snippet{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:.7rem;color:var(--text);margin-top:.15rem;line-height:1.35}.fetch-url-preview{display:flex;flex-direction:column;gap:.3rem;margin-top:.2rem}.fetch-url-title{font-size:.74rem;color:var(--text)}.fetch-url-title a{color:var(--accent);text-decoration:none;font-family:SF Mono,Fira Code,monospace;font-size:.68rem}.fetch-url-title a:hover{text-decoration:underline}.fetch-url-body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:.72rem;color:var(--text);line-height:1.4;background:#0003;padding:.4rem .6rem;border-radius:.25rem;max-height:150px;overflow-y:auto}.tool-error{color:var(--red);font-size:.72rem}.json-dump{font-family:SF Mono,Fira Code,monospace;font-size:.7rem;color:var(--text-muted);white-space:pre-wrap;word-break:break-all}.result-table{width:100%;border-collapse:collapse;font-size:.72rem;margin-top:.25rem}.result-table th,.result-table td{padding:.3rem .5rem;border:1px solid var(--border);text-align:left}.result-table th{background:var(--surface);color:var(--text-muted);font-weight:600;text-transform:uppercase;font-size:.62rem;letter-spacing:.04em}.result-table tr:nth-child(2n) td{background:#ffffff05}#loading{display:flex;gap:.3rem;padding:.5rem .25rem;align-self:flex-start}#loading.hidden{display:none}.dot{width:7px;height:7px;border-radius:50%;background:var(--accent);animation:pulse 1.4s infinite ease-in-out}.dot:nth-child(1){animation-delay:0s}.dot:nth-child(2){animation-delay:.2s}.dot:nth-child(3){animation-delay:.4s}@keyframes pulse{0%,80%,to{opacity:.25;transform:scale(.8)}40%{opacity:1;transform:scale(1.1)}}footer{padding:.6rem 1.25rem .8rem;border-top:1px solid var(--border);flex-shrink:0}#status-bar{font-size:.62rem;color:var(--text-muted);margin-bottom:.4rem;font-family:SF Mono,Fira Code,monospace}#input-form{display:flex;gap:.5rem}.input-wrapper{flex:1;position:relative;display:flex;align-items:center;min-width:0}.bang-badge{position:absolute;left:8px;display:inline-flex;align-items:center;gap:.3rem;padding:.2rem .5rem;border-radius:4px;font-size:.68rem;font-weight:600;font-family:SF Mono,Fira Code,monospace;background:#58a6ff29;border:1px solid rgba(88,166,255,.45);color:#58a6ff;pointer-events:none;-webkit-user-select:none;user-select:none;z-index:2;box-shadow:0 0 10px #58a6ff33;transition:all .15s ease-in-out;animation:fadeIn .15s ease-out}.bang-badge.bang-private{background:#bc8cff2e;border-color:#bc8cff80;color:#d2a8ff;box-shadow:0 0 12px #bc8cff40}.bang-badge.hidden{display:none!important}#user-input{width:100%;flex:1;padding:.6rem .85rem;background:var(--surface);border:1px solid var(--border);border-radius:.5rem;color:var(--text);font-size:.83rem;outline:none;transition:all .15s ease}#user-input.has-bang-badge{padding-left:124px}#user-input.has-bang-badge.bang-private{padding-left:136px}#user-input:focus{border-color:var(--accent)}#user-input:disabled{opacity:.4;cursor:not-allowed}#user-input::placeholder{color:var(--text-muted)}#user-input.bang-mode{font-family:SF Mono,Fira Code,Cascadia Code,monospace;font-size:.8rem;background:#090d13;border-color:#58a6ff8c;box-shadow:0 0 0 1px #58a6ff33,0 2px 10px #0006;color:#e6edf3;letter-spacing:.01em}#user-input.bang-mode:focus{border-color:#58a6ff;box-shadow:0 0 0 2px #58a6ff59,0 2px 12px #00000080}#user-input.bang-mode.bang-private{border-color:#bc8cff8c;box-shadow:0 0 0 1px #bc8cff33,0 2px 10px #0006}#user-input.bang-mode.bang-private:focus{border-color:#bc8cff;box-shadow:0 0 0 2px #bc8cff59,0 2px 12px #00000080}.sql-autocomplete-dropdown{position:fixed;background:#161b22;border:1px solid var(--border);border-radius:6px;box-shadow:0 8px 24px #0009,0 0 0 1px #ffffff0f;max-height:260px;overflow-y:auto;z-index:9999;padding:4px 0;display:flex;flex-direction:column;animation:fadeIn .12s ease-out}.sql-autocomplete-dropdown.hidden{display:none!important}.sql-autocomplete-item{display:flex;align-items:center;gap:.45rem;padding:.3rem .55rem;cursor:pointer;font-family:SF Mono,Fira Code,monospace;font-size:.72rem;color:var(--text);-webkit-user-select:none;user-select:none;transition:background .08s ease}.sql-autocomplete-item:hover,.sql-autocomplete-item.selected{background:#58a6ff29;color:#fff}.sql-item-badge{font-size:.58rem;font-weight:700;padding:.08rem .3rem;border-radius:3px;text-transform:uppercase;letter-spacing:.03em;flex-shrink:0}.badge-tbl{background:#388bfd33;color:#58a6ff;border:1px solid rgba(56,139,253,.35)}.badge-view{background:#39d3532e;color:#3fb950;border:1px solid rgba(57,211,83,.35)}.badge-col{background:#a371f733;color:#d2a8ff;border:1px solid rgba(163,113,247,.35)}.badge-kw{background:#d2992233;color:#e3b341;border:1px solid rgba(210,153,34,.35)}.badge-fn{background:#79c0ff2e;color:#79c0ff;border:1px solid rgba(121,192,255,.35)}.badge-sys{background:#f778ba2e;color:#f778ba;border:1px solid rgba(247,120,186,.4)}.sql-item-label{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sql-item-detail{font-size:.62rem;color:var(--text-muted);margin-left:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sql-autocomplete-item.selected .sql-item-detail{color:#ffffffb3}#send-btn{padding:.6rem 1.3rem;background:var(--accent);border:none;border-radius:.5rem;color:#fff;font-size:.83rem;font-weight:500;cursor:pointer;transition:opacity .15s}#send-btn:hover{opacity:.85}#send-btn:disabled{opacity:.35;cursor:not-allowed}#send-btn.stop-btn{background:#f85149;animation:stopPulse 1.2s ease-in-out infinite}@keyframes stopPulse{0%,to{box-shadow:0 0 #f8514980}50%{box-shadow:0 0 0 6px #f8514900}}.rewind-btn{margin-left:.5rem;padding:.05rem .4rem;background:#ffffff2e;border:1px solid rgba(255,255,255,.35);border-radius:.35rem;color:#fff;font-size:.8rem;line-height:1;cursor:pointer;vertical-align:middle;transition:background .15s,transform .1s}.rewind-btn:hover{background:#ffffff59;transform:scale(1.1)}.message.user.scratchpad{font-family:SF Mono,Fira Code,Cascadia Code,Consolas,monospace;font-size:.78rem;border:1px solid rgba(255,255,255,.25)}.message.assistant.scratchpad-result{display:flex;flex-direction:column;gap:.35rem;white-space:normal}.scratchpad-header{display:flex;align-items:baseline;gap:.4rem;flex-wrap:wrap}.scratchpad-badge{font-size:.8rem;flex-shrink:0}.scratchpad-sql{font-family:SF Mono,Fira Code,Cascadia Code,Consolas,monospace;font-size:.72rem;color:#e3b341;background:#0000004d;padding:.15rem .4rem;border-radius:.25rem;word-break:break-all;white-space:pre-wrap}.scratchpad-info{color:#3fb950;font-size:.72rem;font-family:SF Mono,Fira Code,Cascadia Code,Consolas,monospace}.scratchpad-truncated{color:var(--text-muted);font-style:italic}.scratchpad-footer{color:var(--text-muted);font-size:.6rem;font-family:SF Mono,Fira Code,Cascadia Code,Consolas,monospace}.message.assistant.scratchpad-result .result-table{max-height:320px;overflow:auto}.footer-status-row{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-top:.2rem;margin-bottom:.35rem;font-size:.65rem;color:var(--text-muted)}.footer-status-row #status-bar{font-size:.65rem;color:var(--text-muted)}.token-usage{margin-left:auto;font-size:.62rem;color:var(--text-muted);font-family:SF Mono,Fira Code,monospace}.drag-overlay{position:absolute;top:.5rem;right:.5rem;bottom:.5rem;left:.5rem;background:#0d1117eb;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);border:2px dashed var(--accent);border-radius:.75rem;display:flex;align-items:center;justify-content:center;z-index:50;pointer-events:none;animation:fadeIn .15s ease-out}.drag-overlay.hidden{display:none}.drag-overlay-box{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.4rem;padding:1.5rem}.drag-icon{font-size:2.2rem;margin-bottom:.2rem;filter:drop-shadow(0 2px 8px rgba(88,166,255,.3));animation:floatIcon 2s ease-in-out infinite}@keyframes floatIcon{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}.drag-title{font-size:1rem;font-weight:600;color:var(--text);letter-spacing:-.01em}.drag-subtitle{font-size:.72rem;color:var(--text-muted);max-width:240px;line-height:1.4}.ingestion-progress{background:var(--surface);border:1px solid var(--border);border-radius:.5rem;padding:.7rem 1rem;display:flex;flex-direction:column;gap:.4rem;margin-bottom:.5rem;animation:fadeIn .2s ease-out;flex-shrink:0}.ingestion-progress.hidden{display:none}.progress-header{display:flex;justify-content:space-between;align-items:center}.progress-title{font-size:.75rem;font-weight:500;color:var(--text);display:flex;align-items:center;gap:.35rem}.progress-count{font-size:.68rem;color:var(--accent);font-family:SF Mono,Fira Code,monospace;font-weight:500}.progress-bar-track{width:100%;height:6px;background:var(--bg);border-radius:3px;overflow:hidden;position:relative}.progress-bar-fill{height:100%;width:0%;background:linear-gradient(90deg,var(--accent),var(--green));border-radius:3px;transition:width .15s ease-out}.progress-bar-fill.indeterminate{width:100%!important;background:linear-gradient(90deg,var(--accent) 0%,var(--green) 50%,var(--accent) 100%);background-size:200% 100%;animation:shimmer 1.5s infinite linear}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}#btn-toggle-config.config-glow{border-color:#d29922;color:#f0883e;background:#d299221f;box-shadow:0 0 8px #d2992259;animation:pulseConfigGlow 2s infinite ease-in-out}@keyframes pulseConfigGlow{0%,to{box-shadow:0 0 4px #d2992233;border-color:#d29922}50%{box-shadow:0 0 12px #d299228c;border-color:#f0883e;color:#ffd33d}}.welcome-card{margin:1.5rem auto;max-width:580px;background:var(--surface);border:1px solid var(--border);border-radius:.5rem;padding:1.25rem 1.5rem;color:var(--text);box-shadow:0 4px 16px #0003}.welcome-card .welcome-header{display:flex;align-items:center;gap:.6rem;margin-bottom:.75rem}.welcome-card .welcome-icon{font-size:1.4rem}.welcome-card h3{margin:0;font-size:1.05rem;font-weight:600;color:var(--text)}.welcome-card p{margin:.5rem 0;font-size:.85rem;line-height:1.45;color:var(--text-muted)}.welcome-card .welcome-actions{display:flex;gap:.75rem;margin:1rem 0 .75rem}.welcome-card .welcome-config-btn{padding:.45rem 1rem;background:var(--accent);color:#fff;border:1px solid transparent;border-radius:.35rem;font-size:.82rem;font-weight:500;cursor:pointer;display:inline-flex;align-items:center;gap:.4rem;transition:background .15s}.welcome-card .welcome-config-btn:hover{background:#409eff}.welcome-card .welcome-hint{font-size:.76rem;color:var(--text-muted);border-top:1px solid var(--border);padding-top:.65rem;margin-top:.75rem}.welcome-card .welcome-hint code{background:var(--bg);padding:.15rem .35rem;border-radius:.25rem;font-size:.72rem;color:var(--accent);border:1px solid var(--border)}
