:root{--bg: #0d1117;--panel: #131922;--panel-2: #182029;--border: #262d38;--text: #d7dee8;--muted: #8b97a8;--accent: #4c93ff;--accent-dim: #1f3a63;--good: #3fb950;--warn: #d29922;--bad: #f85149;--mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font:14px/1.5 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}code,pre,.mono{font-family:var(--mono);font-size:12.5px}.muted{color:var(--muted)}.spacer{flex:1}button{background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:5px 11px;font-size:13px;cursor:pointer}button:hover:not(:disabled){border-color:#3a4553;background:#1e2732}button:disabled{opacity:.45;cursor:default}button.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}button.primary:hover:not(:disabled){background:#3d84f0}button.ghost{background:transparent}kbd{font-family:var(--mono);font-size:10px;opacity:.7;margin-left:4px}input,select{background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:5px 9px;font-size:13px}input:focus,select:focus{outline:none;border-color:var(--accent)}label.check{display:flex;align-items:center;gap:5px;font-size:12.5px;color:var(--muted);cursor:pointer}.segmented{display:flex}.segmented button{border-radius:0;border-right-width:0}.segmented button:first-child{border-radius:6px 0 0 6px}.segmented button:last-child{border-radius:0 6px 6px 0;border-right-width:1px}.segmented button.active{background:var(--accent);border-color:var(--accent);color:#fff}.boot,.empty{display:flex;align-items:center;justify-content:center;height:100%;color:var(--muted);padding:24px;text-align:center}.empty.big{font-size:15px}.app{display:flex;flex-direction:column;height:100%}.topbar{display:flex;align-items:center;gap:8px;padding:9px 14px;background:var(--panel);border-bottom:1px solid var(--border);flex:none}.brand{font-weight:700;letter-spacing:.2px;margin-right:6px}.toast{color:var(--good);font-size:12.5px;background:#3fb9501a;padding:3px 9px;border-radius:5px}.panes{display:flex;flex:1;min-height:0}.pane.left{display:flex;flex-direction:column;width:48%;min-width:340px;border-right:1px solid var(--border)}.tabs{display:flex;align-items:center;gap:6px;padding:7px 10px;background:var(--panel);border-bottom:1px solid var(--border);flex:none}.tabs>button{background:transparent;border-color:transparent;color:var(--muted)}.tabs>button.active{color:var(--text);background:var(--panel-2);border-color:var(--border)}.tabs>button.primary{color:#fff}.editor-wrap{flex:1;min-height:0;overflow:hidden}.editor,.cm-editor{height:100%}.cm-editor{font-size:13px}.cm-scroller{font-family:var(--mono)!important}.hint{flex:none;padding:7px 12px;font-size:12px;color:var(--muted);background:var(--panel);border-top:1px solid var(--border)}.results{display:flex;flex-direction:column;flex:1;min-width:0}.results-body{flex:1;overflow:auto;padding:12px}.running{color:var(--accent);font-size:12.5px}.timing{color:var(--muted);font-size:12.5px;font-family:var(--mono)}.notice{color:var(--warn);font-size:12px;margin-bottom:8px}.grid-wrap{overflow:auto}table.grid{border-collapse:collapse;font-size:12.5px;width:100%}table.grid th,table.grid td{border:1px solid var(--border);padding:4px 9px;text-align:left;vertical-align:top;max-width:420px;overflow-wrap:anywhere}table.grid th{background:var(--panel-2);position:sticky;top:0;font-weight:600}table.grid td{font-family:var(--mono)}table.grid tr:nth-child(2n) td{background:#ffffff04}.rownum{color:var(--muted);text-align:right!important;width:1%}.null{color:var(--muted);font-style:italic}.lazy{color:var(--warn)}.json{color:#a5d6ff}.log-summary,.plan-summary{display:flex;gap:18px;padding:8px 12px;background:var(--panel-2);border:1px solid var(--border);border-radius:6px;margin-bottom:10px;font-size:12.5px}.nplusone{border:1px solid var(--warn);background:#d2992214;border-radius:6px;padding:10px 12px;margin-bottom:10px;font-size:12.5px}.nplusone pre{margin:8px 0 0;white-space:pre-wrap;color:var(--muted)}ol.statements{list-style:none;padding:0;margin:0;counter-reset:stmt}ol.statements>li{border:1px solid var(--border);border-radius:6px;padding:8px 10px;margin-bottom:8px;background:var(--panel)}.stmt-head{display:flex;align-items:center;gap:10px;font-size:12px}.stmt-time{font-family:var(--mono);color:var(--accent);min-width:74px}.stmt-bar-wrap{flex:1;height:4px;background:var(--panel-2);border-radius:2px}.stmt-bar{height:100%;background:var(--accent);border-radius:2px}.stmt-sql,.stmt-params,.plan-sql,.stdout{white-space:pre-wrap;overflow-wrap:anywhere;margin:7px 0 0;color:#c9d7e6}.stmt-params{color:var(--muted)}.stdout{margin:0}.plan-tabs{display:flex;gap:6px;margin-bottom:10px;flex-wrap:wrap}.plan-tabs button.active{background:var(--accent);border-color:var(--accent);color:#fff}.plan-sql{background:var(--panel);border:1px solid var(--border);border-radius:6px;padding:9px 11px;margin:0 0 10px;max-height:160px;overflow:auto}ul.warnings{list-style:none;padding:0;margin:0 0 12px;font-size:12.5px}ul.warnings li{padding:6px 10px;border-radius:5px;margin-bottom:5px}ul.warnings li.warn{background:#d299221a;color:#e3b341}ul.warnings li.info{background:#4c93ff14;color:#79b0ff}.plan-node{margin-top:2px}.plan-row{display:flex;align-items:center;gap:8px;padding:4px 6px;border-radius:5px;border-left:2px solid transparent}.plan-row:hover{background:var(--panel)}.plan-row.hot{border-left-color:var(--bad);background:#f851490f}.plan-toggle{background:none;border:none;color:var(--muted);padding:0 2px;width:18px}.plan-bar-wrap{width:70px;height:5px;background:var(--panel-2);border-radius:3px;flex:none}.plan-bar{height:100%;background:var(--warn);border-radius:3px}.plan-main{flex:1;min-width:0;font-size:12.5px}.plan-type{font-weight:600}.plan-rel{color:var(--muted);margin-left:6px}.plan-metrics{display:flex;gap:12px;font-family:var(--mono);font-size:11.5px;color:var(--muted);flex:none}.plan-metrics .estimate.bad{color:var(--bad)}.plan-detail{margin:2px 0 4px 32px;font-size:11.5px;color:var(--muted)}.plan-detail code{color:#a5d6ff}.tag{font-size:10px;background:var(--panel-2);border:1px solid var(--border);border-radius:3px;padding:0 4px;margin-left:6px;color:var(--muted)}.schema-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.table-card{border:1px solid var(--border);border-radius:7px;background:var(--panel);margin-bottom:12px;overflow:hidden}.table-card-head{display:flex;justify-content:space-between;padding:8px 11px;background:var(--panel-2);border-bottom:1px solid var(--border);font-size:13px}table.cols{width:100%;border-collapse:collapse;font-size:12px}table.cols td{padding:3px 11px;border-bottom:1px solid rgba(38,45,56,.5)}.col-name{font-family:var(--mono)}.col-type{color:var(--muted);font-family:var(--mono)}.col-flag{color:var(--muted);text-align:right;font-size:11px}.pk{font-size:9px;background:var(--accent);color:#fff;border-radius:3px;padding:1px 4px;margin-right:6px}.table-meta{padding:7px 11px;font-size:11.5px;color:var(--muted);font-family:var(--mono)}.idx{color:var(--good)}.error-box{border:1px solid var(--bad);background:#f8514912;border-radius:6px;padding:11px 13px}.error-title{color:var(--bad);font-weight:600;margin-bottom:8px;font-family:var(--mono)}.error-box pre{margin:0;white-space:pre-wrap;color:var(--muted);font-size:12px}.error-text{color:var(--bad);font-size:12.5px}.login-screen{display:flex;align-items:center;justify-content:center;height:100%}.login-card{display:flex;flex-direction:column;gap:11px;width:320px;padding:28px;background:var(--panel);border:1px solid var(--border);border-radius:10px}.login-card h1{margin:0;font-size:19px}.login-card p{margin:0;font-size:12.5px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:20}.modal{width:520px;max-width:calc(100vw - 32px);background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:20px 22px}.modal h2{margin:0 0 4px;font-size:16px}.modal p{margin:0 0 14px;font-size:12.5px}.preset-list{display:flex;flex-direction:column;gap:8px;margin-bottom:14px}.preset{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border:1px solid var(--border);border-radius:7px;cursor:pointer;font-size:13px}.preset.selected{border-color:var(--accent);background:#4c93ff0f}.preset .muted{font-size:12px;margin-top:2px}.field{display:flex;flex-direction:column;gap:5px;font-size:12.5px;color:var(--muted)}.field input{color:var(--text)}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}
