:root{--bg:#f7f8fb;--panel:#fff;--panel-subtle:#f9fafb;--panel-strong:#f3f4f6;--text:#111827;--muted:#4b5563;--accent:#2563eb;--border:#e5e7eb;--divider-weak:#e5e7eb;--hover:#eef2ff;--accent-row:#dbeafe}:root[data-theme=dark]{--bg:#0f1220;--panel:#161a2b;--panel-subtle:#0c0f1a;--panel-strong:#12162a;--text:#e6e8ef;--muted:#9aa0b4;--accent:#5b8cff;--border:#2b3050;--divider-weak:#1b2238;--hover:#161b31;--accent-row:#2b3968}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif}.app{grid-template-rows:auto 1fr;height:100%;display:grid}.header{border-bottom:1px solid var(--border);background:var(--panel);align-items:center;gap:12px;padding:12px 16px;display:flex;position:relative}.header h1{margin:0;font-size:16px;font-weight:600}.url-input{border:1px solid var(--border);background:var(--panel-subtle);color:var(--text);border-radius:6px;flex:1;padding:8px 10px}.main{min-height:0;display:flex}.map-panel{flex:auto;min-height:0;display:flex}.map-panel>div{flex:1;min-height:0}.data-table-wrapper{background:var(--panel);position:relative}.odl-popup .maplibregl-popup-close-button{color:#fff;background:#000000a6;border-radius:50%;width:26px;height:26px;font-size:18px;line-height:20px;top:6px;right:6px}.odl-popup .maplibregl-popup-content{box-shadow:none;background:0 0;border-radius:0;padding:0}.odl-popup .maplibregl-popup-tip{display:none}.sidebar-resizer{touch-action:none;z-index:5;position:relative}.sidebar-resizer:after{content:"";background:var(--border);border-radius:2px;width:2px;height:56px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}@media (hover:hover){.sidebar-resizer:hover:after{background:var(--muted)}}@media (width<=768px){.header h1{font-size:14px}.sidebar-resizer{width:24px!important}}@media (pointer:coarse){.sidebar-resizer{width:24px!important}.edge-open-zone{width:28px}.sidebar-swipe-close-zone{width:32px}}.edge-open-zone{touch-action:none;width:16px}.sidebar-swipe-close-zone{touch-action:none;width:20px}@media (width<=768px){.edge-open-zone{width:24px}.sidebar-swipe-close-zone{width:28px}}.sidebar-close-btn{display:none}@media (width<=768px){.sidebar-close-btn{display:inline-flex}}.sidebar-mobile-header{display:none}@media (width<=768px){.sidebar-mobile-header{z-index:15;background:var(--panel);justify-content:flex-start;padding-bottom:8px;display:flex;position:sticky;top:0}}.open-tab-handle{z-index:1450;border:1px solid var(--border);background:var(--panel);width:28px;height:52px;color:var(--text);cursor:pointer;border-right:none;border-top-left-radius:8px;border-bottom-left-radius:8px;justify-content:center;align-items:center;animation:2.2s ease-in-out infinite nudge;display:inline-flex;position:absolute;top:50%;right:0;transform:translateY(-50%);box-shadow:-2px 0 6px #0000001f}@keyframes nudge{0%,60%,to{transform:translate(2px,-50%)}30%{transform:translateY(-50%)}}@media (prefers-reduced-motion:reduce){.open-tab-handle{animation:none}}.sidebar-resizer:active:after{background:var(--text)}.data-table-scroll{font-variant-numeric:tabular-nums;scrollbar-width:thin;scrollbar-color:var(--muted) var(--panel-subtle);scrollbar-gutter:stable;overflow:auto}.data-table-scroll::-webkit-scrollbar{width:12px;height:12px}.data-table-scroll::-webkit-scrollbar-track{background:var(--panel-subtle)}.data-table-scroll::-webkit-scrollbar-thumb{background:var(--muted);border:2px solid var(--panel-subtle);border-radius:6px}.data-table-scroll::-webkit-scrollbar-thumb:hover{background:var(--text)}.data-table{border-collapse:collapse;table-layout:fixed;min-width:100%;font-size:12px}.data-table thead th{background:var(--panel-strong);z-index:2;white-space:nowrap;text-overflow:ellipsis;-webkit-user-select:none;user-select:none;border-right:1px solid var(--border);width:auto;min-width:120px;max-width:300px;position:sticky;top:0;overflow:hidden}.data-table thead th:last-child{border-right:none}.data-table thead th.sortable{cursor:pointer;padding-right:20px;position:relative}.data-table thead th.sortable:hover{background:var(--hover)}.data-table thead th.sortable.active{background:var(--accent-row);color:var(--text)}.data-table thead th .sort-indicator{color:var(--muted);font-size:10px;position:absolute;top:50%;right:4px;transform:translateY(-50%)}.data-table tbody tr{transition:background .12s,box-shadow .12s}.data-table tbody tr:nth-child(odd){background:0 0}.data-table tbody tr:nth-child(2n){background:var(--panel-subtle)}.data-table tbody tr:hover{background:var(--hover)}.data-table tbody tr.is-clickable{cursor:pointer}.data-table tbody tr.is-selected{box-shadow:inset 3px 0 0 var(--accent);background:var(--accent-row)!important}.data-table tbody tr.is-selected:hover{background:var(--accent-row)!important}.data-table td{border-bottom:1px solid var(--divider-weak);border-right:1px solid var(--divider-weak);white-space:nowrap;text-overflow:ellipsis;vertical-align:top;min-width:120px;max-width:300px;padding:6px 8px;overflow:hidden}.data-table td:last-child{border-right:none}.data-table td.is-number{text-align:right}.data-table td.is-long-text{white-space:normal;word-wrap:break-word;max-width:200px}.data-table-toolbar{background:var(--panel-subtle);border-bottom:1px solid var(--border);z-index:1;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding:8px;display:flex;position:sticky;top:0}.data-table-search{border:1px solid var(--border);background:var(--panel);color:var(--text);border-radius:4px;min-width:200px;padding:4px 8px;font-size:12px}.data-table-info{color:var(--muted);white-space:nowrap;font-size:11px}.tabs{gap:4px;padding:0 6px;position:relative}@media (width<=768px){.tabs{-webkit-overflow-scrolling:touch;overflow-x:auto}}.tabs:before,.tabs:after{content:"";pointer-events:none;z-index:1;width:12px;height:100%;position:sticky;top:0}.tabs:before{background:linear-gradient(90deg,#0000002e,#0000);left:0}.tabs:after{background:linear-gradient(270deg,#0000002e,#0000);right:0}.tab-button{font-size:12px;line-height:1}.tab-button .tab-label{padding-bottom:4px;display:inline-block}.tab-button.is-active .tab-label{border-bottom:2px solid var(--accent)}.tab-button:not(.is-active):hover{background:var(--hover);color:var(--text)}.tab-button+.tab-button{margin-left:4px}.tab-panels{border:1px solid var(--border);background:var(--panel);-webkit-overflow-scrolling:touch;overscroll-behavior:contain;scrollbar-gutter:stable;border-top:none;border-bottom-right-radius:8px;border-bottom-left-radius:8px;width:100%;min-width:0;padding:8px}#panel-query{min-width:0}.icon-button{background:var(--panel-subtle);border:1px solid var(--border);color:var(--muted);cursor:pointer;border-radius:9999px;justify-content:center;align-items:center;width:30px;height:30px;transition:background-color .16s,border-color .16s,color .16s,box-shadow .16s;display:inline-flex}@media (width<=640px){.icon-button{width:26px;height:26px}}.icon-button:hover{background:var(--hover);color:var(--text)}.icon-button:focus{box-shadow:0 0 0 2px var(--accent);outline:none}.icon-button:active{background:var(--panel-strong)}.url-history-button{border:1px solid var(--border);background:var(--panel);width:26px;height:26px;color:var(--muted);cursor:pointer;border-radius:6px;justify-content:center;align-items:center;font-size:12px;transition:background-color .16s,border-color .16s,color .16s,box-shadow .16s;display:inline-flex;position:absolute;top:50%;right:8px;transform:translateY(-50%)}.url-history-button:hover{background:var(--hover);color:var(--text)}.url-history-button:focus{box-shadow:0 0 0 2px var(--accent);outline:none}.url-history-menu{background:var(--panel);border:1px solid var(--border);z-index:2000;border-radius:8px;flex-direction:column;gap:4px;max-height:240px;padding:6px;display:flex;position:absolute;top:calc(100% + 6px);left:0;right:0;overflow:auto;box-shadow:0 6px 18px #0000002e}.url-history-row{align-items:center;gap:6px;display:flex}.url-history-item{cursor:pointer;text-align:left;color:var(--text);background:0 0;border:1px solid #0000;border-radius:6px;flex:1;align-items:center;padding:6px 8px;font-size:12px;display:flex}.url-history-item:hover{background:var(--hover);border-color:var(--border)}.url-history-item-url{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.url-history-remove{border:1px solid var(--border);background:var(--panel-subtle);width:22px;height:22px;color:var(--muted);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;font-size:12px;transition:background-color .16s,border-color .16s,color .16s;display:inline-flex}.url-history-remove:hover{background:var(--hover);color:var(--text);border-color:var(--muted)}.url-history-empty{color:var(--muted);padding:8px;font-size:12px}.scroll-shadow-x{position:relative}.scroll-shadow-x:before,.scroll-shadow-x:after{content:"";pointer-events:none;z-index:1;width:14px;height:100%;position:sticky;top:0}.scroll-shadow-x:before{background:linear-gradient(90deg,#0000002e,#0000);left:0}.scroll-shadow-x:after{background:linear-gradient(270deg,#0000002e,#0000);right:0}.more-info-overlay{scrollbar-gutter:stable}.export-card{border:1px solid var(--border);background:var(--panel);border-radius:8px;gap:8px;padding:10px;display:grid}.export-card-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.export-card-title{font-weight:600}.export-card-row{justify-content:space-between;align-items:center;gap:8px;display:flex}.export-card-note{gap:4px;display:grid}.export-card-actions{background:var(--panel);border-top:1px solid var(--border);gap:6px;padding-top:4px;display:grid;position:sticky;bottom:0}.export-advanced{gap:8px;margin-top:6px;display:grid}.export-fields{gap:6px;display:grid}.export-field-list{border:1px solid var(--border);border-radius:6px;grid-template-columns:1fr 1fr;gap:6px;max-height:160px;padding:6px;display:grid;overflow:auto}.export-field-item{color:var(--text);font-size:12px}.basemap-chooser .bm-ctl{position:relative}.basemap-chooser .bm-toggle{background:var(--panel);color:var(--text);border:1px solid var(--border);cursor:pointer;border-radius:4px;align-items:center;gap:6px;padding:4px 6px;font-size:12px;display:inline-flex}.basemap-chooser .bm-panel{background:var(--panel);border:1px solid var(--border);z-index:400;border-radius:8px;grid-template-columns:1fr;gap:8px;width:220px;max-height:60vh;margin-top:6px;padding:8px;display:grid;position:absolute;top:100%;left:auto;right:0;overflow:auto;box-shadow:0 6px 20px #00000040}.basemap-chooser .bm-option{background:var(--panel-subtle);color:var(--text);border:1px solid var(--border);cursor:pointer;text-align:left;border-radius:6px;grid-template-columns:48px 1fr;align-items:center;gap:6px;padding:4px;display:grid}.basemap-chooser .bm-option span{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}.basemap-chooser .bm-option.is-active{outline:2px solid var(--accent)}.basemap-chooser .bm-option img{border-radius:4px;width:48px;height:48px;display:block}.basemap-chooser .bm-form{grid-template-columns:1fr;gap:6px;margin-top:6px;display:grid}.basemap-chooser .bm-form .u-input,.basemap-chooser .bm-form .u-btn{width:100%}.cm-editor{color:var(--text);background:var(--panel-subtle)!important}.cm-editor .cm-content{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.cm-editor.cm-focused{outline:none}.cm-editor .cm-placeholder{color:var(--muted)}.cm-tooltip,.cm-tooltip-autocomplete{z-index:3000}.cm-editor .cm-scroller{padding-right:28px}@keyframes spin{0%{transform:translateY(-50%)rotate(0)}to{transform:translateY(-50%)rotate(360deg)}}.u-row{align-items:center;gap:8px;display:flex}.u-muted{color:var(--muted)}.u-panel{border:1px solid var(--border);background:var(--panel);border-radius:6px;padding:8px}.u-input{border:1px solid var(--border);background:var(--panel-subtle);width:100%;color:var(--text);border-radius:6px;padding:6px 8px;font-size:12px}.u-btn{border:1px solid var(--border);background:var(--panel-subtle);color:var(--text);cursor:pointer;border-radius:6px;padding:8px 10px;font-size:12px}.u-btn[disabled]{cursor:not-allowed;opacity:.6}.u-note{color:var(--muted);font-size:11px}.u-small{font-size:12px}.u-label{color:var(--muted);margin-bottom:4px;font-size:12px;display:block}.u-kv{gap:8px;display:flex}.u-kv-label{min-width:92px;color:var(--muted);font-size:12px}.u-kv-value{font-size:12px}.u-htmlbox{border:1px solid var(--border);background:var(--panel-subtle);border-radius:6px;max-height:160px;padding:6px 8px;font-size:12px;line-height:1.4;overflow-y:auto}.odl-fetch-ctrl{box-shadow:none;background:0 0;border:none;padding:0}.fetch-ctrl{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;position:relative}.fetch-ctrl .fetch-ctrl-header{background:var(--panel);border:1px solid var(--border);cursor:pointer;color:var(--text);border-radius:8px;align-items:center;gap:8px;width:100%;height:auto;padding:8px 10px;font-family:inherit;line-height:1;transition:all .12s;display:inline-flex;box-shadow:0 1px 3px #0000000f,0 1px 2px #0000000a}.fetch-ctrl .fetch-ctrl-header:hover{box-shadow:0 2px 6px #00000014,0 1px 3px #0000000f}.fetch-ctrl.is-open .fetch-ctrl-header{border-bottom-color:#0000;border-radius:8px 8px 0 0}.fetch-ctrl-status{justify-content:center;align-items:center;width:14px;height:14px;display:flex}.fetch-ctrl-status svg{width:14px;height:14px}.fetch-ctrl-status.is-live{color:#22c55e}.fetch-ctrl-status.is-live svg circle{filter:drop-shadow(0 0 2px #22c55e)}.fetch-ctrl-status.is-live.is-loading svg circle{animation:1s ease-in-out infinite fetch-pulse}@keyframes fetch-pulse{0%,to{opacity:1;filter:drop-shadow(0 0 2px #22c55e)}50%{opacity:.5;filter:drop-shadow(0 0 6px #22c55e)}}.fetch-ctrl-status.is-paused{color:var(--muted);opacity:.5}.fetch-ctrl-status.is-loading{color:var(--accent)}.fetch-ctrl-spinner{animation:.8s linear infinite fetch-spin}@keyframes fetch-spin{to{transform:rotate(360deg)}}.fetch-ctrl-count{font-variant-numeric:tabular-nums;color:var(--text);font-size:12px;font-weight:600}.fetch-ctrl-chevron{width:12px;height:12px;color:var(--muted);margin-left:2px;transition:transform .15s}.fetch-ctrl.is-open .fetch-ctrl-chevron{transform:rotate(180deg)}.fetch-ctrl-panel{background:var(--panel);border:1px solid var(--border);opacity:0;visibility:hidden;transform-origin:top;border-top:none;border-radius:0 0 8px 8px;flex-direction:column;gap:10px;width:max-content;min-width:180px;padding:10px;transition:all .15s cubic-bezier(.16,1,.3,1);display:flex;position:absolute;top:100%;left:0;transform:translateY(-4px);box-shadow:0 4px 12px #00000014}.fetch-ctrl.is-open .fetch-ctrl-panel{opacity:1;visibility:visible;transform:translateY(0)}.fetch-ctrl-row{justify-content:space-between;align-items:center;gap:16px;display:flex}.fetch-ctrl-label{color:var(--text);white-space:nowrap;font-size:12px;font-weight:500}.fetch-ctrl-divider{background:var(--border);height:1px;margin:0 -10px}.fetch-ctrl .fetch-ctrl-switch{cursor:pointer;box-sizing:content-box;background:#d1d5db;border:none;border-radius:10px;flex-shrink:0;width:28px;height:16px;padding:2px;transition:background .15s;position:relative}.fetch-ctrl .fetch-ctrl-switch.is-on{background:#22c55e}.fetch-ctrl .fetch-ctrl-switch-thumb{background:#fff;border-radius:6px;width:12px;height:12px;margin-left:0;transition:margin-left .15s;display:block;box-shadow:0 1px 2px #0003}.fetch-ctrl .fetch-ctrl-switch.is-on .fetch-ctrl-switch-thumb{margin-left:12px}.fetch-ctrl .fetch-ctrl-switch:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.fetch-ctrl .fetch-ctrl-actions{gap:8px;display:flex}.fetch-ctrl .fetch-ctrl-action{border:1px solid var(--border);background:var(--panel-subtle);width:auto;height:30px;color:var(--muted);cursor:pointer;white-space:nowrap;border-radius:6px;flex:1;justify-content:center;align-items:center;gap:6px;padding:0 10px;font-family:inherit;font-size:12px;font-weight:500;transition:all .1s;display:flex}.fetch-ctrl .fetch-ctrl-action svg{flex-shrink:0;width:12px;height:12px}.fetch-ctrl .fetch-ctrl-action:hover:not(:disabled){background:var(--hover);color:var(--text);border-color:var(--muted)}.fetch-ctrl .fetch-ctrl-action:active:not(:disabled){transform:scale(.96)}.fetch-ctrl .fetch-ctrl-action:disabled{opacity:.3;cursor:not-allowed}@media (prefers-reduced-motion:reduce){.fetch-ctrl-spinner{animation:none}.fetch-ctrl-panel{transition:opacity .1s;transform:none!important}}@media (pointer:coarse){.fetch-ctrl .fetch-ctrl-header{padding:10px 12px}.fetch-ctrl .fetch-ctrl-action{height:34px}.fetch-ctrl .fetch-ctrl-switch{width:32px;height:18px}.fetch-ctrl .fetch-ctrl-switch-thumb{border-radius:7px;width:14px;height:14px}.fetch-ctrl .fetch-ctrl-switch.is-on .fetch-ctrl-switch-thumb{margin-left:14px}.u-btn{padding:10px 12px}}
