@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-cyrillic-ext-400-normal-g30qAdWV.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-ext-400-normal-Dsrv2Tcn.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-cyrillic-400-normal-DZqxrq2p.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-400-normal-BTotfTJu.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-greek-400-normal-_efipK4i.woff2) format("woff2"),url(/assets/ibm-plex-sans-greek-400-normal-D9ESIMu3.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-vietnamese-400-normal-DG4YqDda.woff2) format("woff2"),url(/assets/ibm-plex-sans-vietnamese-400-normal-fK1oJ5dG.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-latin-ext-400-normal-C5H60-Va.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-ext-400-normal-RBey6euL.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-cyrillic-ext-500-normal-Cs5J6C77.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-ext-500-normal-DB5PtV2g.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-cyrillic-500-normal-CocWQlwt.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-500-normal-ByOcLdNv.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-greek-500-normal-JMMifIXV.woff2) format("woff2"),url(/assets/ibm-plex-sans-greek-500-normal-CuWXN6rf.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-vietnamese-500-normal-e4dixQRQ.woff2) format("woff2"),url(/assets/ibm-plex-sans-vietnamese-500-normal-BEb3_waV.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-latin-ext-500-normal-DakdToA3.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-ext-500-normal-D0aIdm-b.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-500-normal-BgVn5rGT.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-cyrillic-ext-600-normal-DUMzJB7m.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-ext-600-normal-Bz0x94Yp.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-cyrillic-600-normal-71GNu3SW.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-600-normal-BGq0mW3O.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-greek-600-normal-DzTrcv_p.woff2) format("woff2"),url(/assets/ibm-plex-sans-greek-600-normal-D-CqTdkO.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-vietnamese-600-normal-DpPYBSTl.woff2) format("woff2"),url(/assets/ibm-plex-sans-vietnamese-600-normal-DgdngZtN.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-latin-ext-600-normal-DOrvGEcy.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-ext-600-normal-DIrixKbi.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--lv-bg: #ffffff;--lv-panel: #ffffff;--lv-muted-bg: #f5f7f8;--lv-border: #dfe3e6;--lv-input: #cbd1d6;--lv-row-border: #e8eaed;--lv-text: #000000;--lv-muted: #a1a8b3;--lv-primary: #fd5108;--lv-primary-text: #ffffff;--lv-hover-bg: #000000;--lv-hover-text: #ffffff;--lv-danger: #dc2626;--lv-ring: #fd5108;--lv-tint: #fff5ed;--lv-tint-strong: #ffe8d4;--lv-accent: var(--lv-primary);--lv-accent-text: var(--lv-primary-text);--radius-sm: .25rem;--radius-md: .375rem;--radius-lg: .5rem;font-family:IBM Plex Sans,system-ui,-apple-system,Noto Sans TC,Microsoft JhengHei,PingFang TC,sans-serif;font-size:13px;color:var(--lv-text)}*{box-sizing:border-box}html,body,#root{margin:0;height:100%;background:var(--lv-bg)}input[type=checkbox],input[type=radio]{accent-color:var(--lv-primary)}a{color:var(--lv-primary);cursor:pointer}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--lv-ring);outline-offset:1px}.app-shell{display:flex;flex-direction:column;height:100vh}.topbar{display:flex;align-items:center;gap:10px;padding:8px 14px;background:var(--lv-panel);border-bottom:1px solid var(--lv-border);flex:0 0 auto}.brand{display:flex;align-items:center;gap:7px}.topbar h1{font-size:15px;margin:0;font-weight:600;letter-spacing:-.01em}.changelog-btn{display:inline-flex;align-items:center;gap:4px;font-size:11px;padding:2px 8px;margin-left:2px;border-radius:var(--radius-sm);border:1px solid var(--lv-border);background:var(--lv-bg);color:var(--lv-muted);cursor:pointer}.changelog-btn svg{flex:0 0 auto}.changelog-btn:hover{color:var(--lv-text);border-color:var(--lv-input)}.icon-btn{display:inline-flex;align-items:center;gap:5px}.icon-btn svg{flex:0 0 auto}.btn.danger:hover{background:var(--lv-danger);border-color:var(--lv-danger);color:#fff}.badge{font-size:11px;padding:1px 8px;border-radius:var(--radius-sm);border:1px solid var(--lv-border);color:var(--lv-muted);background:var(--lv-muted-bg);white-space:nowrap}.badge.persistent{color:#000;border-color:var(--lv-border);background:var(--lv-muted-bg)}.badge.memory{color:#92400e;border-color:#fcd34d;background:#fef3c7}.btn{font-size:13px;padding:4px 10px;border-radius:var(--radius-sm);border:1px solid var(--lv-input);background:var(--lv-bg);color:var(--lv-text);cursor:pointer;transition:background .1s,color .1s,border-color .1s}.btn:hover{background:var(--lv-hover-bg);color:var(--lv-hover-text);border-color:var(--lv-hover-bg)}.btn.primary{background:var(--lv-primary);color:var(--lv-primary-text);border-color:var(--lv-primary)}.btn.primary:hover{background:var(--lv-primary);border-color:var(--lv-primary);color:var(--lv-primary-text);opacity:.9}.btn.active{background:var(--lv-primary);color:var(--lv-primary-text);border-color:var(--lv-primary)}.btn.active:hover{opacity:.9;background:var(--lv-primary);color:var(--lv-primary-text)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:disabled:hover{background:var(--lv-bg);color:var(--lv-text);border-color:var(--lv-input)}.spacer{flex:1 1 auto}.tabs{display:flex;gap:0;padding:0 8px;background:var(--lv-panel);border-bottom:1px solid var(--lv-border);flex:0 0 auto;overflow-x:auto}.tab{font-size:13px;padding:8px 12px;border:none;border-bottom:2px solid transparent;cursor:pointer;color:var(--lv-muted);white-space:nowrap;display:flex;align-items:center;gap:6px}.tab:hover:not(.active){color:var(--lv-text)}.tab.active{color:var(--lv-text);border-bottom-color:var(--lv-primary);font-weight:600}.tab .close{font-size:14px;color:var(--lv-muted);border-radius:var(--radius-sm);padding:0 3px}.tab .close:hover{background:var(--lv-hover-bg);color:var(--lv-hover-text)}.content{flex:1 1 auto;position:relative;overflow:hidden;display:flex}.grid-wrap{flex:1 1 auto;height:100%}.statusbar{flex:0 0 auto;display:flex;align-items:center;gap:16px;padding:5px 14px;background:var(--lv-muted-bg);border-top:1px solid var(--lv-border);font-size:12px;color:var(--lv-muted)}.statusbar label{color:var(--lv-text)}.statusbar .btn{padding:2px 8px;font-size:12px}.empty{margin:auto;text-align:center;color:var(--lv-text);max-width:480px;line-height:1.7}.empty p{color:var(--lv-text)}.empty-formats{margin-top:14px;text-align:left;border:1px solid var(--lv-border);border-radius:var(--radius-md);background:var(--lv-muted-bg);padding:12px 16px;display:inline-block;font-size:13px}.empty-formats-title{font-weight:600;margin-bottom:6px}.empty-formats ul{margin:0;padding-left:18px}.empty-formats li{margin:4px 0}.center-screen{position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:24px;text-align:center;color:var(--lv-muted)}.toasts{position:fixed;right:16px;bottom:16px;display:flex;flex-direction:column;gap:8px;z-index:1000}.toast{min-width:240px;max-width:380px;padding:10px 14px;border-radius:var(--radius-md);font-size:13px;box-shadow:0 6px 18px #00000024;background:var(--lv-bg);color:var(--lv-text);border:1px solid var(--lv-border);border-left:4px solid var(--lv-muted);cursor:pointer}.toast.success{border-left-color:var(--lv-primary)}.toast.error{border-left-color:var(--lv-danger);background:#fef2f2}.modal-backdrop{position:fixed;inset:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:900}.modal{background:var(--lv-panel);border:1px solid var(--lv-border);border-radius:var(--radius-lg);box-shadow:0 12px 32px #0000002e;width:min(880px,94vw);max-height:90vh;display:flex;flex-direction:column;overflow:hidden}.modal-header{padding:14px 18px;border-bottom:1px solid var(--lv-border);font-weight:600}.modal-body{padding:16px 18px;overflow:auto}.modal-footer{padding:12px 18px;border-top:1px solid var(--lv-border);display:flex;justify-content:flex-end;gap:8px}.changelog{display:flex;flex-direction:column;gap:18px}.changelog-entry{border-left:2px solid var(--lv-primary);padding-left:14px}.changelog-head{display:flex;align-items:baseline;gap:10px;margin-bottom:6px}.changelog-version{font-weight:600;font-size:14px}.changelog-date{font-size:12px;color:var(--lv-muted)}.changelog-entry ul{margin:0;padding-left:18px}.changelog-entry li{margin:3px 0;line-height:1.6}.preview-table{border-collapse:collapse;font-size:12px;width:100%}.preview-table td,.preview-table th{border:1px solid var(--lv-row-border);padding:3px 6px;white-space:nowrap;max-width:200px;overflow:hidden;text-overflow:ellipsis}.preview-table tr.header-row{background:var(--lv-tint);font-weight:600}.field-row{display:flex;align-items:center;gap:8px;margin-bottom:10px;flex-wrap:wrap}.field-row label{font-size:13px;min-width:90px}select,input[type=text]:not(.ag-input-field-input),input[type=number]:not(.ag-input-field-input){font-size:13px;padding:4px 8px;border:1px solid var(--lv-input);border-radius:var(--radius-sm);background:var(--lv-bg);color:var(--lv-text)}select:focus,input[type=text]:not(.ag-input-field-input):focus,input[type=number]:not(.ag-input-field-input):focus{outline:none;border-color:var(--lv-primary);box-shadow:0 0 0 2px #fd510840}::placeholder{color:var(--lv-muted)}.side-panel{flex:0 0 auto;min-height:0;position:relative;border-left:1px solid var(--lv-border);background:var(--lv-panel);display:flex;flex-direction:column;overflow:hidden}.side-panel .resizer{position:absolute;left:-3px;top:0;bottom:0;width:6px;cursor:col-resize;z-index:5}.side-panel .resizer:hover{background:var(--lv-tint-strong)}.side-panel h2{height:41px;box-sizing:border-box;font-size:13px;font-weight:600;margin:0;padding:0 14px;border-bottom:1px solid var(--lv-border);background:var(--lv-muted-bg)}.side-panel-head{display:flex;align-items:center;justify-content:space-between}.side-panel-head .close{cursor:pointer;color:var(--lv-muted);padding:0 6px;border-radius:var(--radius-sm);font-weight:400}.side-panel-head .close:hover{background:var(--lv-hover-bg);color:var(--lv-hover-text)}.main-area{flex:1 1 auto;display:flex;min-width:0;min-height:0;height:100%}.tab-badge{font-size:10px;padding:0 6px;border-radius:var(--radius-sm);margin-left:2px;white-space:nowrap}.tab-badge.snapshot{background:var(--lv-muted-bg);color:var(--lv-muted);border:1px solid var(--lv-border)}.tab-badge.unsaved{background:#fef3c7;color:#92400e;border:1px solid #fcd34d}.snap-list{overflow:auto;flex:1 1 auto}.snap-item{padding:10px 14px;border-bottom:1px solid var(--lv-border);font-size:13px}.snap-item:hover{background:var(--lv-muted-bg)}.snap-name-btn{display:block;width:100%;text-align:left;background:none;border:none;padding:0;font:inherit;font-weight:600;color:var(--lv-text);cursor:pointer}.snap-name-btn:hover{color:var(--lv-primary);text-decoration:underline}.snap-item .desc{color:var(--lv-muted);font-size:12px;margin:3px 0;word-break:break-all}.snap-actions{display:flex;gap:4px;flex-wrap:wrap;margin-top:6px}.snap-actions .btn{padding:2px 8px;font-size:12px}.distinct-filter{width:240px;padding:8px;display:flex;flex-direction:column;gap:6px;background:var(--lv-bg)}.distinct-filter>input{width:100%}.distinct-list{max-height:240px;overflow:auto;border:1px solid var(--lv-border);border-radius:var(--radius-sm)}.distinct-row{display:flex;align-items:center;gap:6px;padding:3px 8px;font-size:13px}.distinct-row:hover{background:var(--lv-tint)}.distinct-master{display:flex;align-items:center;gap:6px;padding:2px 2px 6px;border-bottom:1px solid var(--lv-border);font-size:12px}.distinct-master a{color:var(--lv-primary);cursor:pointer}.distinct-count{color:var(--lv-muted)}.text-column-filter{display:flex;flex-direction:column;background:var(--lv-bg)}.array-filter{width:240px;padding:8px;display:flex;flex-direction:column;gap:8px;background:var(--lv-bg)}.array-filter .array-error{color:var(--lv-danger)}.array-filter .btn{align-self:flex-start;padding:4px 10px;font-size:12px}.filter-switch{display:flex;gap:14px;padding:6px 8px;font-size:12px;border-top:1px solid var(--lv-border)}.filter-switch a{color:var(--lv-primary);cursor:pointer}.text-cond{width:240px;padding:8px;display:flex;flex-direction:column;gap:6px;background:var(--lv-bg)}.text-cond select,.text-cond>input{width:100%}.text-cond-join{display:flex;gap:12px;font-size:12px;align-items:center}.text-cond-join label{display:inline-flex;align-items:center;gap:4px}.filter-footer{display:flex;justify-content:flex-end;gap:6px;padding:8px;border-top:1px solid var(--lv-border)}.filter-footer .btn{padding:4px 12px;font-size:13px}.hint{font-size:12px;color:var(--lv-muted)}.ag-cell.lv-rownum{color:var(--lv-muted);background:var(--lv-muted-bg);justify-content:flex-end}.ag-header-cell.lv-rownum{color:var(--lv-muted)}.col-picker-wrap{position:relative;display:inline-flex}.col-picker{position:absolute;top:calc(100% + 4px);left:0;width:230px;max-height:360px;display:flex;flex-direction:column;background:var(--lv-bg);border:1px solid var(--lv-border);border-radius:var(--radius-sm);box-shadow:0 12px 32px #0000002e;z-index:1200}.col-picker-head{display:flex;align-items:center;justify-content:space-between;padding:8px 10px;border-bottom:1px solid var(--lv-border);font-size:12px;font-weight:600}.col-picker-actions{display:flex;gap:8px;font-weight:400}.col-picker-actions button{background:none;border:none;padding:0;color:var(--lv-primary);cursor:pointer;font-size:12px}.col-picker-list{overflow:auto;padding:4px 0}.col-picker-item{display:flex;align-items:center;gap:7px;padding:4px 10px;font-size:13px;cursor:pointer}.col-picker-item:hover{background:var(--lv-tint)}.row-height-picker{width:150px}.rh-item{width:100%;background:none;border:none;text-align:left;font:inherit;color:var(--lv-text)}.rh-item.active{background:var(--lv-tint-strong);font-weight:600}.rh-check{width:14px;color:var(--lv-primary)}.cell-menu{position:fixed;min-width:160px;background:var(--lv-bg);border:1px solid var(--lv-border);border-radius:var(--radius-sm);box-shadow:0 8px 24px #00000029;z-index:1300;padding:4px;display:flex;flex-direction:column}.cell-menu-item{text-align:left;background:none;border:none;padding:6px 10px;font-size:13px;border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap}.cell-menu-item:hover{background:var(--lv-tint)}.task-overlay{position:fixed;inset:0;background:#00000059;display:flex;align-items:center;justify-content:center;z-index:1100}.task-card{background:var(--lv-bg);border:1px solid var(--lv-border);border-radius:var(--radius-lg);box-shadow:0 12px 32px #0000002e;padding:18px 22px;width:min(420px,88vw)}.task-label{font-size:13px;font-weight:600;margin-bottom:10px}.task-bar{height:8px;border-radius:999px;background:var(--lv-muted-bg);overflow:hidden}.task-bar-fill{height:100%;background:var(--lv-primary);transition:width .2s ease}.query-indicator{position:fixed;left:14px;bottom:14px;display:flex;align-items:center;gap:8px;padding:6px 12px;font-size:12px;color:var(--lv-text);background:var(--lv-bg);border:1px solid var(--lv-border);border-radius:var(--radius-md);box-shadow:0 4px 14px #0000001f;z-index:1050}.spinner{width:12px;height:12px;border-radius:50%;border:2px solid var(--lv-border);border-top-color:var(--lv-primary);animation:lv-spin .7s linear infinite}@keyframes lv-spin{to{transform:rotate(360deg)}}@media(max-width:820px){.topbar .icon-btn .label,.changelog-btn .label,.statusbar .icon-btn .label{display:none}}
