:root{color-scheme:light dark;--background: #f7f7f5;--surface: #ffffff;--surface-muted: #efefec;--border: #d9d9d4;--text: #1d1d1b;--text-muted: #63635e;--accent: #1f6feb;--accent-text: #ffffff;--danger: #b42318;--warning: #9a6700;--null: #9a9a94;--radius: 6px;--font-sans: system-ui, -apple-system, "Segoe UI", "Noto Sans TC", "PingFang TC", sans-serif;--font-mono: ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace}@media(prefers-color-scheme:dark){:root{--background: #161615;--surface: #1f1f1e;--surface-muted: #2a2a28;--border: #3a3a37;--text: #ececea;--text-muted: #a3a39e;--accent: #4c8dff;--accent-text: #0b0b0a;--danger: #ff7b72;--warning: #e3b341;--null: #77776f}}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--background);color:var(--text);font-family:var(--font-sans);font-size:14px;line-height:1.45}button,input,select{font:inherit;color:inherit}button{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:4px 12px;cursor:pointer}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{opacity:.5;cursor:default}button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}button.small{padding:1px 8px;font-size:12px}button.link{background:none;border:none;padding:0;color:var(--accent);text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}button.link.code{font-family:var(--font-mono);font-size:12px;color:var(--text)}input,select{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:3px 8px}:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.drop-zone{position:relative;height:100%}.drop-overlay{position:fixed;inset:12px;display:grid;place-items:center;border:3px dashed var(--accent);border-radius:12px;background:color-mix(in srgb,var(--background) 85%,transparent);font-size:20px;z-index:10;pointer-events:none}.app{display:flex;flex-direction:column;height:100%}.app-header{display:flex;align-items:center;gap:16px;padding:8px 16px;background:var(--surface);border-bottom:1px solid var(--border)}.app-header h1{font-size:18px;margin:0}.tagline{margin:0;color:var(--text-muted);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.header-actions{display:flex;gap:8px;align-items:center}.banner{margin:0;padding:6px 16px;border-bottom:1px solid var(--border)}.workspace{display:grid;grid-template-columns:minmax(220px,300px) 1fr;flex:1;min-height:0}.sidebar{border-right:1px solid var(--border);padding:12px;overflow:auto;background:var(--surface)}.sidebar h2,.sidebar h3{font-size:13px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);margin:12px 0 6px}.main{display:flex;flex-direction:column;gap:8px;padding:12px;min-width:0;min-height:0;overflow:auto}.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.inline-form{display:flex;gap:6px}.sql-editor{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);min-height:140px;max-height:40vh;overflow:auto}.sql-editor .cm-editor{min-height:140px;font-size:13px}.sql-editor .cm-editor .cm-scroller{font-family:var(--font-mono)}.table-list,.query-list{list-style:none;margin:0;padding:0}.table-list-item,.query-list li{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:2px 0}.query-list li{flex-direction:column;align-items:stretch}.query-list li.failed button{color:var(--danger)}.table-actions{display:flex;gap:4px;flex-shrink:0}.rename-form{display:flex;flex-wrap:wrap;gap:4px}.rename-form input{flex:1;min-width:100px}.muted{color:var(--text-muted)}.error{color:var(--danger)}.warning{color:var(--warning)}.notice{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);padding:8px 12px}.notice ul{margin:0 0 6px;padding-left:18px}.import-progress{display:flex;align-items:center;gap:8px}.import-progress progress{width:240px}.import-report{margin-top:6px}.import-report h4{margin:8px 0 4px}.report-table{border-collapse:collapse;font-size:12px}.report-table th,.report-table td{border:1px solid var(--border);padding:2px 6px;text-align:left;vertical-align:top}.query-error pre{white-space:pre-wrap;color:var(--danger);margin:4px 0 0}.result-panel{display:flex;flex-direction:column;gap:6px;min-height:0;flex:1}.result-summary{margin:0;color:var(--text-muted)}.result-scroll{overflow:auto;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.result-table{border-collapse:collapse;font-family:var(--font-mono);font-size:12px}.result-table th,.result-table td{border-bottom:1px solid var(--border);padding:3px 8px;text-align:left;white-space:nowrap}td.number{text-align:right}td.null{color:var(--null);font-style:italic}@media(max-width:720px){.workspace{grid-template-columns:1fr}.sidebar{border-right:none;border-bottom:1px solid var(--border);max-height:40vh}}.table-entry summary{cursor:pointer;padding:2px 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.table-entry .table-actions{margin:4px 0 4px 16px}.column-list{list-style:none;margin:0 0 6px 16px;padding:0;font-size:12px}.column-list li{display:flex;justify-content:space-between;gap:8px}.column-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.column-type{font-family:var(--font-mono);color:var(--text-muted);white-space:nowrap}.grid-wrapper{display:flex;flex-direction:column;gap:6px;flex:1;min-height:280px}.grid-scroll{position:relative;flex:1;min-height:240px;overflow:auto;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);font-family:var(--font-mono);font-size:12px}.grid-head{position:sticky;top:0;z-index:1;background:var(--surface-muted)}.grid-row{display:grid}.grid-head .grid-row{height:30px}.grid-body{position:relative}.grid-body .grid-row{position:absolute;top:0;left:0;border-bottom:1px solid var(--border)}.grid-header{position:relative;display:flex;align-items:center;border-right:1px solid var(--border);min-width:0}.grid-sort{display:flex;align-items:center;justify-content:space-between;gap:4px;width:100%;height:100%;border:none;border-radius:0;background:none;padding:0 10px 0 8px;font-family:var(--font-sans);font-weight:600;min-width:0}.grid-header-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.grid-resize{position:absolute;top:0;right:-3px;width:6px;height:100%;cursor:col-resize;z-index:2}.grid-resize:hover,.grid-resize:focus-visible{background:var(--accent)}.grid-filters>div{padding:2px 4px;border-right:1px solid var(--border)}.grid-filter{width:100%;padding:1px 6px;font-size:12px}.grid-cell{padding:4px 8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-right:1px solid var(--border)}.grid-cell.number{text-align:right}.grid-cell.null{color:var(--null);font-style:italic}.options-menu{position:relative}.options-menu summary{cursor:pointer;list-style:none;border:1px solid var(--border);border-radius:var(--radius);padding:4px 12px;background:var(--surface)}.options-panel{position:absolute;right:0;top:calc(100% + 4px);z-index:5;display:flex;flex-direction:column;gap:8px;width:260px;padding:12px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 6px 20px #00000026}.options-panel label{display:flex;justify-content:space-between;align-items:center;gap:8px}.options-panel p{margin:0;font-size:12px}.result-toolbar{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}.tabs{display:flex;gap:2px}.tabs [role=tab]{border-radius:var(--radius) var(--radius) 0 0}.tabs [role=tab][aria-selected=true]{border-color:var(--accent);color:var(--accent);font-weight:600}.result-view{display:flex;flex-direction:column;flex:1;min-height:0}.result-view[hidden]{display:none}.export-buttons{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.chart-panel{display:flex;flex-direction:column;gap:8px}.chart-controls{display:flex;gap:16px;flex-wrap:wrap}.chart-controls label{display:flex;gap:6px;align-items:center}.chart{width:100%;max-height:420px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);font-family:var(--font-sans)}.chart text{fill:var(--text-muted);font-size:11px}.chart-legend text{fill:var(--text);font-size:13px}.chart-grid{stroke:var(--border);stroke-width:1}.chart-bar{fill:var(--accent)}.chart-bar:hover,.chart-point:hover{opacity:.75}.chart-line{fill:none;stroke:var(--accent);stroke-width:2}.chart-point{fill:var(--accent)}.chart-slice{stroke:var(--surface);stroke-width:1.5}.slice-0{fill:#1f6feb}.slice-1{fill:#e8590c}.slice-2{fill:#2f9e44}.slice-3{fill:#ae3ec9}.slice-4{fill:#f08c00}.slice-5{fill:#0c8599}.slice-6{fill:#e64980}.slice-7{fill:#5c940d}.slice-8{fill:#7048e8}.slice-9{fill:#868e96}.offline-badge{font-size:12px;color:var(--text-muted);white-space:nowrap}.offline-badge.ready{color:var(--accent)}.offline-badge.failed{color:var(--warning)}
