@opencorestack/opengridx 0.1.6 → 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +30 -1
- package/README.md +9 -0
- package/dist/index.d.ts +12 -1
- package/dist/opengridx.css +1 -1
- package/dist/opengridx.es.js +2505 -2450
- package/dist/opengridx.es.js.map +1 -1
- package/dist/opengridx.umd.js +12 -12
- package/dist/opengridx.umd.js.map +1 -1
- package/docs/API_REFERENCE.md +177 -0
- package/docs/README.md +60 -0
- package/docs/components/cell.md +44 -0
- package/docs/components/column-group-header.md +57 -0
- package/docs/components/column-resize.md +63 -0
- package/docs/components/column-visibility.md +61 -0
- package/docs/components/datagrid.md +70 -0
- package/docs/components/filter-panel.md +26 -0
- package/docs/components/header.md +39 -0
- package/docs/components/pagination.md +34 -0
- package/docs/components/row.md +31 -0
- package/docs/components/toolbar.md +40 -0
- package/docs/components/tooltip.md +68 -0
- package/docs/customization/slots-api.md +227 -0
- package/docs/customization/theming.md +293 -0
- package/docs/features/aggregation-pivot.md +79 -0
- package/docs/features/cell-spanning.md +520 -0
- package/docs/features/clipboard.md +76 -0
- package/docs/features/custom-pagination.md +143 -0
- package/docs/features/data-source.md +72 -0
- package/docs/features/editing-reordering.md +99 -0
- package/docs/features/export-guide.md +434 -0
- package/docs/features/filtering.md +83 -0
- package/docs/features/infinite-scroll.md +87 -0
- package/docs/features/list-view.md +65 -0
- package/docs/features/loading-states.md +68 -0
- package/docs/features/master-detail.md +46 -0
- package/docs/features/pinning.md +67 -0
- package/docs/features/selection.md +70 -0
- package/docs/features/sorting-pagination.md +66 -0
- package/docs/features/state-persistence.md +67 -0
- package/docs/features/tree-data-grouping.md +67 -0
- package/docs/features/virtualization.md +188 -0
- package/docs/roadmap.md +71 -0
- package/lib/components/Cell/Cell.css +119 -0
- package/lib/components/Cell/Cell.tsx +264 -0
- package/lib/components/Cell/GridEditInputCell.css +62 -0
- package/lib/components/Cell/GridEditInputCell.tsx +152 -0
- package/lib/components/ColumnGroupHeader/ColumnGroupHeader.css +67 -0
- package/lib/components/ColumnGroupHeader/ColumnGroupHeader.tsx +220 -0
- package/lib/components/ColumnResizeHandle/ColumnResizeHandle.css +31 -0
- package/lib/components/ColumnResizeHandle/ColumnResizeHandle.tsx +85 -0
- package/lib/components/ColumnVisibilityPanel/ColumnVisibilityPanel.css +137 -0
- package/lib/components/ColumnVisibilityPanel/ColumnVisibilityPanel.tsx +190 -0
- package/lib/components/DataGrid/DataGrid.css +224 -0
- package/lib/components/DataGrid/DataGrid.tsx +2269 -0
- package/lib/components/DetailPanel/DetailPanel.css +36 -0
- package/lib/components/DetailPanel/DetailPanel.tsx +34 -0
- package/lib/components/FilterPanel/FilterPanel.css +196 -0
- package/lib/components/FilterPanel/FilterPanel.tsx +214 -0
- package/lib/components/FilterPanel/index.ts +1 -0
- package/lib/components/Header/ColumnMenu.css +68 -0
- package/lib/components/Header/ColumnMenu.tsx +249 -0
- package/lib/components/Header/Header.css +224 -0
- package/lib/components/Header/Header.tsx +516 -0
- package/lib/components/ListView/ListView.css +112 -0
- package/lib/components/ListView/ListViewRow.tsx +63 -0
- package/lib/components/Pagination/Pagination.css +91 -0
- package/lib/components/Pagination/Pagination.tsx +151 -0
- package/lib/components/QuickFilter/QuickFilter.css +23 -0
- package/lib/components/QuickFilter/QuickFilter.tsx +79 -0
- package/lib/components/Row/Row.css +126 -0
- package/lib/components/Row/Row.tsx +377 -0
- package/lib/components/Skeleton/Skeleton.css +55 -0
- package/lib/components/Skeleton/Skeleton.tsx +22 -0
- package/lib/components/SkeletonRow/SkeletonRow.css +32 -0
- package/lib/components/SkeletonRow/SkeletonRow.tsx +89 -0
- package/lib/components/SkeletonRow/index.ts +1 -0
- package/lib/components/Toolbar/GlobalSearch.css +110 -0
- package/lib/components/Toolbar/GlobalSearch.tsx +167 -0
- package/lib/components/Toolbar/GridToolbar.css +221 -0
- package/lib/components/Toolbar/GridToolbar.tsx +658 -0
- package/lib/components/Toolbar/PivotPanel.css +212 -0
- package/lib/components/Toolbar/PivotPanel.tsx +239 -0
- package/lib/components/Tooltip/Tooltip.css +59 -0
- package/lib/components/Tooltip/Tooltip.tsx +106 -0
- package/lib/components/ui/Button.css +89 -0
- package/lib/components/ui/Button.tsx +39 -0
- package/lib/components/ui/Checkbox.css +71 -0
- package/lib/components/ui/Checkbox.tsx +66 -0
- package/lib/components/ui/DragHandleIcon.css +19 -0
- package/lib/components/ui/DragHandleIcon.tsx +18 -0
- package/lib/components/ui/ExpandIcon.css +38 -0
- package/lib/components/ui/ExpandIcon.tsx +75 -0
- package/lib/components/ui/Input.css +59 -0
- package/lib/components/ui/Input.tsx +45 -0
- package/lib/components/ui/index.ts +15 -0
- package/lib/hooks/core/useDataGrid.ts +392 -0
- package/lib/hooks/core/useGridApiRef.ts +10 -0
- package/lib/hooks/features/useAggregation.ts +143 -0
- package/lib/hooks/features/useGridClipboard.ts +133 -0
- package/lib/hooks/features/useGridDataSource.ts +190 -0
- package/lib/hooks/features/useGridEditing.ts +100 -0
- package/lib/hooks/features/useGridSpanning.ts +349 -0
- package/lib/hooks/features/usePivot.ts +174 -0
- package/lib/hooks/useColumnReorder.ts +114 -0
- package/lib/hooks/useRowGrouping.ts +302 -0
- package/lib/hooks/useRowReorder.ts +83 -0
- package/lib/hooks/useTreeData.ts +323 -0
- package/lib/index.ts +106 -0
- package/lib/state/index.ts +17 -0
- package/lib/state/types.ts +48 -0
- package/lib/state/useGridStateStorage.ts +113 -0
- package/lib/styles/base/reset.css +21 -0
- package/lib/styles/base/variables.css +161 -0
- package/lib/styles/opengridx.css +27 -0
- package/lib/styles/opengridx.css.d.ts +4 -0
- package/lib/theme/DataGridThemeProvider.tsx +276 -0
- package/lib/theme/defaultStyles.ts +0 -0
- package/lib/theme/index.ts +21 -0
- package/lib/theme/presets.ts +148 -0
- package/lib/theme/types.ts +155 -0
- package/lib/types/index.ts +764 -0
- package/lib/utils/export/exportToExcelAdvanced.ts +516 -0
- package/lib/utils/export/index.ts +550 -0
- package/lib/utils/filtering/index.ts +240 -0
- package/lib/utils/pinning/index.ts +282 -0
- package/lib/utils/sorting/index.ts +55 -0
- package/lib/utils/virtualization/index.ts +106 -0
- package/lib/vite-env.d.ts +1 -0
- package/llms.txt +2 -1
- package/package.json +12 -4
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,35 @@
|
|
|
5
5
|
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
+
## [0.1.8] — March 18, 2026 🐛✨
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
- **Toolbar Component Identity:** Fixed a major bug where defining the `GridToolbar` within a component's render body produced a new React component reference on every render, causing the toolbar to constantly unmount and remount (destroying all internal states like open panels or typed search text). Replaced `React.createElement` with direct function invocation in the `StableWrapper` to bypass React's component-identity check and persist internal DOM state.
|
|
12
|
+
- **Global Search Focus Preservation:** Refactored `GlobalSearch` into an uncontrolled component to prevent continuous data re-renders from stealing focus. Added a `useLayoutEffect` to automatically restore browser focus to the input field if a React virtual DOM diff incidentally drops it mid-keystroke.
|
|
13
|
+
- **Filter Panel Auto-Dismiss:** The Advanced Filter panel no longer collapses indiscriminately when clicking into numeric filter fields or during parent re-renders. Implemented a stable callback ref that prevents the underlying event listeners from rehooking during typing. Click-outside auto-close has been structurally disabled in favor of an explicit "Close" button.
|
|
14
|
+
- **Pivot Mode Aggregation:** Addressed a critical bug where `aggregationModel` was trying to read base columns (e.g. `revenue`) on pivot rows that use synthetic column keys (e.g. `Q1\u001frevenue\u001fsum`), resulting in broken totals.
|
|
15
|
+
- The aggregation footer now renders synthetic pivot totals correctly.
|
|
16
|
+
- The `GridToolbar` now actively provisions `effectiveColumns` to the `AggregationPanel` to allow users to build summaries on pivot dimensions.
|
|
17
|
+
- Added a built-in "Grand Total" row appended directly to the `usePivot` output to generate automatic baseline column totals.
|
|
18
|
+
- **Exporting Selected Rows:** Corrected data omission in the Demo files where print exports were grabbing the entire dataset instead of respecting active row selection. Used `apiRef.current.getSelectedRows()` to extract standard export data without requiring explicit prop-threading.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## [0.1.7] — March 13, 2026 🐛✨
|
|
23
|
+
|
|
24
|
+
### Added
|
|
25
|
+
- **`exportable` Property**: Added `exportable?: boolean` to `GridColDef`. This allows excluding specific columns (like action buttons, menus, or images) from all export formats (CSV, Excel, JSON, and Print).
|
|
26
|
+
- **AI-Native Integration**: The published npm package now includes raw source code (`lib/`) and full documentation (`docs/`). This allows AI agents (Cursor, Windsurf, Copilot) to "see" the implementation patterns and documentation inside `node_modules`, leading to significantly better code generation for downstream users.
|
|
27
|
+
|
|
28
|
+
### Fixed
|
|
29
|
+
- Fixed an issue where the main wrapper `className` would erroneously include extra whitespace (e.g. `ogx `) when no optional classes were active.
|
|
30
|
+
- Fixed an issue where `onRowOrderChange` drag-and-drop visuals didn't actually update in the `EventsDemo` component examples because it was referencing a static array instead of React State.
|
|
31
|
+
- Corrected a TypeScript regression where `headerClassName` comment structure was accidentally broken during the previous update.
|
|
32
|
+
|
|
33
|
+
### Changed
|
|
34
|
+
- Refined the npm package publication files: `docs/research` and `docs/assets` (large binary images) are now excluded to keep the package size lean while retaining all high-value documentation for humans and AI.
|
|
35
|
+
|
|
36
|
+
|
|
8
37
|
## [0.1.6] — March 12, 2026 🎨
|
|
9
38
|
|
|
10
39
|
### Added
|
|
@@ -163,4 +192,4 @@ This is the initial public release of OpenGridX. All planned v0.1.0 features are
|
|
|
163
192
|
|
|
164
193
|
---
|
|
165
194
|
|
|
166
|
-
*Last Updated: March
|
|
195
|
+
*Last Updated: March 18, 2026*
|
package/README.md
CHANGED
|
@@ -77,9 +77,18 @@ export default function App() {
|
|
|
77
77
|
- **Clipboard**: `Ctrl+C` / `Cmd+C` copies selected rows as TSV for Excel/Sheets.
|
|
78
78
|
- **Accessibility**: WCAG 2.1 AA — full ARIA roles and keyboard navigation.
|
|
79
79
|
- **Theming**: CSS variable API with 5 built-in themes + custom theme support.
|
|
80
|
+
- **AI-Native Integration**: Shipped with raw `lib/` source and `docs/` inside the npm package, allowing AI agents (Cursor, Copilot, Windsurf) to flawlessly implement features by "seeing" the internal logic.
|
|
80
81
|
|
|
81
82
|
---
|
|
82
83
|
|
|
84
|
+
## 🤖 AI-Powered Implementation
|
|
85
|
+
|
|
86
|
+
OpenGridX is built for the era of AI-native development. When you install `@opencorestack/opengridx`, we include the full raw source code and markdown documentation in your `node_modules`.
|
|
87
|
+
|
|
88
|
+
This means that **Cursor**, **GitHub Copilot**, **Windsurf**, and other AI agents can read the actual implementation patterns and docs to accurately help you build complex features like server-side tree data or pivot tables without guessing.
|
|
89
|
+
|
|
90
|
+
> **Tip for Cursor/Copilot users:** If your AI is struggling, tell it to "Read the docs and source in `./node_modules/@opencorestack/opengridx/docs`" for instant context.
|
|
91
|
+
|
|
83
92
|
## 📐 API Reference
|
|
84
93
|
|
|
85
94
|
### Core Props
|
package/dist/index.d.ts
CHANGED
|
@@ -540,6 +540,12 @@ export declare interface GridColDef<R extends GridRowModel = GridRowModel> {
|
|
|
540
540
|
* headerClassName: 'my-header'
|
|
541
541
|
*/
|
|
542
542
|
headerClassName?: string;
|
|
543
|
+
/**
|
|
544
|
+
* If false, this column is excluded from all exports (CSV, Excel, JSON, Print).
|
|
545
|
+
* Useful for action columns with buttons.
|
|
546
|
+
* @default true
|
|
547
|
+
*/
|
|
548
|
+
exportable?: boolean;
|
|
543
549
|
}
|
|
544
550
|
|
|
545
551
|
/**
|
|
@@ -952,10 +958,15 @@ export declare interface GridThemeTypography {
|
|
|
952
958
|
fontSizeXl?: string;
|
|
953
959
|
}
|
|
954
960
|
|
|
955
|
-
export declare function GridToolbar({ columns, aggregationModel, onAggregationModelChange, pivotModel, onPivotModelChange, filterModel, onFilterModelChange, columnVisibilityModel, onColumnVisibilityModelChange, onColumnReorder, forceColumnsOpen, onColumnsPanelClose, children, rightContent, style, }: GridToolbarProps): JSX.Element;
|
|
961
|
+
export declare function GridToolbar({ columns, baseColumns, aggregationModel, onAggregationModelChange, pivotModel, onPivotModelChange, filterModel, onFilterModelChange, columnVisibilityModel, onColumnVisibilityModelChange, onColumnReorder, forceColumnsOpen, onColumnsPanelClose, children, rightContent, style, }: GridToolbarProps): JSX.Element;
|
|
956
962
|
|
|
957
963
|
export declare interface GridToolbarProps {
|
|
958
964
|
columns?: GridColDef[];
|
|
965
|
+
/** Original user-defined columns (before pivot transformation).
|
|
966
|
+
* When provided, the PivotPanel shows these instead of `columns`
|
|
967
|
+
* to prevent pivot-generated synthetic columns from appearing in
|
|
968
|
+
* 'Available Fields' and causing infinite nested aggregations. */
|
|
969
|
+
baseColumns?: GridColDef[];
|
|
959
970
|
aggregationModel?: GridAggregationModel;
|
|
960
971
|
onAggregationModelChange?: (model: GridAggregationModel) => void;
|
|
961
972
|
pivotModel?: GridPivotModel;
|
package/dist/opengridx.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
:root{--ogx-row-height: 52px;--ogx-header-height: 56px;--ogx-cell-padding: 16px;--ogx-color-primary: #3b82f6;--ogx-color-primary-dark: #2563eb;--ogx-color-primary-light: #eff6ff;--ogx-color-primary-focus: rgba(59, 130, 246, .5);--ogx-color-secondary: #8b5cf6;--ogx-color-secondary-dark: #7c3aed;--ogx-color-secondary-light: #f5f3ff;--ogx-color-white: #ffffff;--ogx-color-black: #0f172a;--ogx-color-gray-50: #f8fafc;--ogx-color-gray-100: #f1f5f9;--ogx-color-gray-200: #e2e8f0;--ogx-color-gray-300: #cbd5e1;--ogx-color-gray-400: #94a3b8;--ogx-color-gray-500: #64748b;--ogx-color-gray-600: #475569;--ogx-color-gray-700: #334155;--ogx-color-gray-800: #1e293b;--ogx-color-gray-900: #0f172a;--ogx-color-success: #10b981;--ogx-color-warning: #f59e0b;--ogx-color-error: #ef4444;--ogx-color-info: #0ea5e9;--ogx-font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;--ogx-font-family-mono: "JetBrains Mono", "Fira Code", "Courier New", Courier, monospace;--ogx-font-size-xs: .75rem;--ogx-font-size-sm: .875rem;--ogx-font-size-md: 1rem;--ogx-font-size-lg: 1.125rem;--ogx-font-size-xl: 1.25rem;--ogx-font-weight-light: 300;--ogx-font-weight-regular: 400;--ogx-font-weight-medium: 500;--ogx-font-weight-semibold: 600;--ogx-font-weight-bold: 700;--ogx-line-height-tight: 1.2;--ogx-line-height-normal: 1.5;--ogx-line-height-relaxed: 1.75;--ogx-spacing-xs: .25rem;--ogx-spacing-sm: .5rem;--ogx-spacing-md: 1rem;--ogx-spacing-lg: 1.5rem;--ogx-spacing-xl: 2rem;--ogx-spacing-xxl: 3rem;--ogx-border-width-thin: 1px;--ogx-border-width-medium: 2px;--ogx-border-width-thick: 3px;--ogx-border-radius-sm: 4px;--ogx-border-radius-md: 8px;--ogx-border-radius-lg: 12px;--ogx-border-radius-xl: 16px;--ogx-border-radius-round: 50%;--ogx-border-color: var(--ogx-color-gray-200);--ogx-border-color-hover: var(--ogx-color-gray-300);--ogx-shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .05);--ogx-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .05), 0 2px 4px -1px rgba(0, 0, 0, .03);--ogx-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .05), 0 4px 6px -2px rgba(0, 0, 0, .02);--ogx-shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .05), 0 10px 10px -5px rgba(0, 0, 0, .02);--ogx-z-index-base: 0;--ogx-z-index-dropdown: 1000;--ogx-z-index-sticky: 1020;--ogx-z-index-fixed: 1030;--ogx-z-index-modal-backdrop: 1040;--ogx-z-index-modal: 1050;--ogx-z-index-popover: 1060;--ogx-z-index-tooltip: 1070;--ogx-transition-duration-fast: .15s;--ogx-transition-duration-normal: .25s;--ogx-transition-duration-slow: .35s;--ogx-transition-easing: cubic-bezier(.4, 0, .2, 1);--ogx-grid-row-height-compact: 32px;--ogx-grid-row-height-standard: 52px;--ogx-grid-row-height-comfortable: 72px;--ogx-grid-header-height: 56px;--ogx-grid-cell-padding-x: 10px;--ogx-grid-cell-padding-y: 8px;--ogx-grid-cell-font-size: 13px;--ogx-grid-header-font-size: 13px;--ogx-grid-line-height: var(--ogx-line-height-normal);--ogx-grid-background: var(--ogx-color-white);--ogx-grid-border-color: var(--ogx-color-gray-200);--ogx-grid-header-background: var(--ogx-color-gray-50);--ogx-grid-header-text: var(--ogx-color-gray-700);--ogx-grid-header-hover-background: var(--ogx-color-gray-100);--ogx-grid-header-sorted-background: var(--ogx-color-gray-50);--ogx-grid-row-text: var(--ogx-color-gray-800);--ogx-grid-row-hover-background: var(--ogx-color-gray-50);--ogx-grid-row-alternate-background: var(--ogx-grid-background);--ogx-grid-row-selected-background: var(--ogx-color-primary-light);--ogx-grid-row-selected-hover-background: #dbeafe;--ogx-grid-cell-focus-border: var(--ogx-color-primary);--ogx-grid-pinned-left-shadow: 4px 0 24px -4px rgba(0, 0, 0, .05);--ogx-grid-pinned-right-shadow: -4px 0 24px -4px rgba(0, 0, 0, .05);--ogx-skeleton-base: #f0f0f0;--ogx-skeleton-highlight: #f8f8f8;--ogx-overlay-background: #ffffff;--ogx-overlay-border: #e2e8f0;--ogx-overlay-text: #334155;--ogx-overlay-shadow: 0 4px 6px -1px rgba(0,0,0,.08), 0 2px 4px -1px rgba(0,0,0,.06), 0 0 0 1px rgba(0,0,0,.06);--ogx-overlay-item-hover-bg: #f8fafc;--ogx-overlay-item-hover-text: #0f172a;--ogx-overlay-item-selected-text: var(--ogx-color-primary);--ogx-overlay-item-selected-bg: var(--ogx-color-primary-light)}@media(prefers-color-scheme:dark){:root{--ogx-color-primary: #60a5fa;--ogx-color-primary-dark: #3b82f6;--ogx-color-primary-light: #1e3a5f;--ogx-color-primary-focus: rgba(96, 165, 250, .4);--ogx-color-white: #0f172a;--ogx-color-black: #f8fafc;--ogx-color-gray-50: #1e293b;--ogx-color-gray-100: #334155;--ogx-color-gray-200: #475569;--ogx-color-gray-300: #64748b;--ogx-color-gray-400: #94a3b8;--ogx-color-gray-500: #cbd5e1;--ogx-color-gray-600: #e2e8f0;--ogx-color-gray-700: #e2e8f0;--ogx-color-gray-800: #f1f5f9;--ogx-color-gray-900: #f8fafc;--ogx-border-color: #334155;--ogx-border-color-hover: #475569;--ogx-shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .3);--ogx-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .3);--ogx-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .3);--ogx-grid-background: #0f172a;--ogx-grid-border-color: #334155;--ogx-grid-header-background: #1e293b;--ogx-grid-header-text: #e2e8f0;--ogx-grid-header-hover-background: #334155;--ogx-grid-header-sorted-background: #1e3a5f;--ogx-grid-row-text: #cbd5e1;--ogx-grid-row-hover-background: #1e293b;--ogx-grid-row-alternate-background: #162032;--ogx-grid-row-selected-background: #1e3a5f;--ogx-grid-row-selected-hover-background: #1d4ed8;--ogx-grid-cell-focus-border: #60a5fa;--ogx-checkbox-bg: #1e293b;--ogx-checkbox-border: #64748b;--ogx-grid-pinned-left-shadow: 4px 0 24px -4px rgba(0, 0, 0, .3);--ogx-grid-pinned-right-shadow: -4px 0 24px -4px rgba(0, 0, 0, .3);--ogx-skeleton-base: #2a2a2a;--ogx-skeleton-highlight: #333333;--ogx-overlay-background: #1e293b;--ogx-overlay-border: #334155;--ogx-overlay-text: #cbd5e1;--ogx-overlay-shadow: 0 4px 6px -1px rgba(0,0,0,.4), 0 2px 4px -1px rgba(0,0,0,.3), 0 0 0 1px rgba(0,0,0,.2);--ogx-overlay-item-hover-bg: #334155;--ogx-overlay-item-hover-text: #f1f5f9;--ogx-overlay-item-selected-text: var(--ogx-color-primary);--ogx-overlay-item-selected-bg: #1e3a5f}}*,*:before,*:after{box-sizing:border-box}.ogx--dragging{user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.ogx *:focus{outline:none}.ogx button:not(.ogx-menu-item){background:none;border:none;cursor:pointer;font-family:inherit;font-size:inherit}.ogx{display:flex;flex-direction:column;width:100%;background:var(--ogx-grid-background);border:1px solid var(--ogx-grid-border-color);border-radius:var(--ogx-border-radius-lg);font-family:var(--ogx-font-family);position:relative;box-shadow:var(--ogx-shadow-sm);transition:box-shadow var(--ogx-transition-duration-normal);overflow:hidden}.ogx>:first-child{border-top-left-radius:calc(var(--ogx-border-radius-lg) - 1px);border-top-right-radius:calc(var(--ogx-border-radius-lg) - 1px)}.ogx>:last-child{border-bottom-left-radius:calc(var(--ogx-border-radius-lg) - 1px);border-bottom-right-radius:calc(var(--ogx-border-radius-lg) - 1px)}.ogx:hover{box-shadow:var(--ogx-shadow-md)}.ogx__viewport{flex:1;overflow:auto;position:relative;scrollbar-gutter:stable}.ogx__content{position:relative;min-width:fit-content;display:flex;flex-direction:column;min-height:100%}.ogx__virtual-container{position:relative;flex:1 0 auto}.ogx__rows{position:relative;will-change:transform}.ogx__pinned-rows{position:relative;z-index:3}.ogx__pinned-rows--top{position:sticky;top:var(--ogx-header-height);z-index:10;background:var(--ogx-grid-background);box-shadow:0 4px 6px -1px #0000000d}.ogx__pinned-rows--bottom{position:sticky;bottom:0;z-index:10;background:var(--ogx-grid-background);box-shadow:0 -4px 6px -1px #0000000d;margin-top:auto}.ogx--loading{opacity:.6;pointer-events:none}.ogx--loading:after{content:"";position:absolute;inset:0;background:color-mix(in srgb,var(--ogx-grid-background) 60%,transparent);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;z-index:var(--ogx-z-index-modal)}.ogx--auto-height{height:auto}.ogx--auto-height .ogx__viewport{overflow-y:visible}.ogx__viewport::-webkit-scrollbar{width:8px;height:8px}.ogx__viewport::-webkit-scrollbar-track{background:transparent}.ogx__viewport::-webkit-scrollbar-thumb{background:var(--ogx-color-gray-300);border-radius:4px;border:2px solid transparent;background-clip:content-box}.ogx__viewport::-webkit-scrollbar-thumb:hover{background-color:var(--ogx-border-color-hover)}.ogx__viewport{scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.2) transparent}.ogx__empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--ogx-spacing-xxl);color:var(--ogx-color-gray-500);font-size:var(--ogx-font-size-lg);text-align:center;gap:var(--ogx-spacing-md);min-height:200px}.ogx__empty svg{color:var(--ogx-color-gray-300)}.ogx-error-overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:color-mix(in srgb,var(--ogx-grid-background) 10%,transparent);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:var(--ogx-z-index-modal);gap:var(--ogx-spacing-md);padding:var(--ogx-spacing-xl);text-align:center;border-radius:var(--ogx-border-radius-lg);overflow:hidden}.ogx-error-overlay>svg{flex-shrink:0;overflow:visible;display:block}.ogx-error-overlay__title{font-weight:600;color:var(--ogx-grid-row-text)}.ogx-error-overlay__message{font-size:var(--ogx-font-size-sm);color:var(--ogx-color-gray-500);max-width:400px}.ogx__aggregation-footer{display:flex;align-items:center;border-top:2px solid var(--ogx-grid-border-color);background:var(--ogx-grid-header-background);font-weight:600;font-size:.85em;position:sticky;bottom:0;z-index:2;width:100%}.ogx__aggregation-cell{flex-shrink:0;padding:0 var(--ogx-grid-cell-padding-x);display:flex;flex-direction:column;justify-content:center;overflow:hidden;box-sizing:border-box;border-right:1px solid var(--ogx-grid-border-color)}.ogx__aggregation-label{font-size:.7em;text-transform:uppercase;letter-spacing:.05em;color:var(--ogx-color-gray-500);line-height:1.2}.ogx__aggregation-value{color:var(--ogx-color-primary);line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ogx--density-compact .ogx__cell,.ogx--density-compact .ogx__header-cell{padding:var(--ogx-spacing-xs) var(--ogx-spacing-sm);font-size:var(--ogx-font-size-xs)}.ogx--density-comfortable .ogx__cell,.ogx--density-comfortable .ogx__header-cell{padding:var(--ogx-spacing-md) var(--ogx-spacing-lg);font-size:var(--ogx-font-size-md)}.ogx__group-cell-content{font-weight:500;text-align:left;display:flex;align-items:center;gap:4px}.ogx-aria-live-status{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.ogx__header-wrap{display:flex;flex-direction:column;position:sticky;top:0;z-index:10;flex-shrink:0}.ogx__header{display:flex;align-items:stretch;background:var(--ogx-grid-header-background);border-bottom:1px solid var(--ogx-grid-border-color);min-height:var(--ogx-header-height);box-shadow:var(--ogx-shadow-sm, 0 1px 2px rgba(0, 0, 0, .03))}.ogx__header-cell--expand{width:48px;min-width:48px;flex-shrink:0;border-right:1px solid transparent}.ogx__header-cell{display:flex;align-items:center;padding:var(--ogx-grid-cell-padding-y) var(--ogx-grid-cell-padding-x);position:relative;font-size:var(--ogx-grid-header-font-size);font-weight:600;color:var(--ogx-grid-header-text);overflow:hidden;box-sizing:border-box;flex-shrink:0;-webkit-user-select:none;user-select:none;transition:background-color .2s}.ogx__header-cell:not(:last-child):after{content:"";position:absolute;right:0;top:25%;height:50%;width:1px;background-color:var(--ogx-color-gray-300);opacity:.5}.ogx__header-cell-content{display:flex;align-items:center;gap:var(--ogx-spacing-xs);width:100%;overflow:hidden}.ogx__header-cell-title-wrapper{display:flex;flex-direction:column;align-items:flex-start;flex:1;overflow:hidden}.ogx__header-cell-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%;font-weight:600;letter-spacing:-.01em}.ogx__header-cell-aggregation{font-size:.6rem;font-weight:500;color:var(--ogx-color-gray-500);text-transform:uppercase;letter-spacing:.05em;margin-top:2px}.ogx__header-cell--align-left{justify-content:flex-start}.ogx__header-cell--align-center{justify-content:center}.ogx__header-cell--align-right{justify-content:flex-start}.ogx__header-cell--align-center .ogx__header-cell-content{text-align:center}.ogx__header-cell--align-right .ogx__header-cell-content{flex-direction:row-reverse}.ogx__header-cell--align-right .ogx__header-cell-title-wrapper{align-items:flex-end;text-align:right}.ogx__header-cell--align-right .ogx__menu-icon-btn{margin-left:0;margin-right:auto}.ogx__header-cell--sortable{cursor:pointer}.ogx__header-cell--sortable:hover{background:var(--ogx-grid-header-hover-background)}.ogx__header-cell--sorted{background:var(--ogx-grid-header-sorted-background);color:var(--ogx-color-primary-dark)}.ogx__header-cell--sorted .ogx__header-cell-title{color:var(--ogx-color-primary-dark)}.ogx__sort-icon{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;margin-left:4px;flex-shrink:0;font-size:14px;line-height:1}.ogx__sort-icon:before{transition:all .2s}.ogx__sort-icon--asc:before{content:"↑"}.ogx__sort-icon--desc:before{content:"↓"}.ogx__header-cell--checkbox,.ogx__cell--checkbox{width:48px;min-width:48px;max-width:48px;flex:0 0 48px;justify-content:center;padding:0}.ogx__header-cell--pinned{background:var(--ogx-grid-header-background);z-index:12}.ogx__header-cell--pinned-left{box-shadow:var(--ogx-grid-pinned-left-shadow, 4px 0 12px -4px rgba(0, 0, 0, .05))}.ogx__header-cell--pinned-right{box-shadow:var(--ogx-grid-pinned-right-shadow, -4px 0 12px -4px rgba(0, 0, 0, .05))}.ogx__header-cell--pinned:after{display:none}.ogx__header-cell--dragging{cursor:move!important;opacity:.5;background:var(--ogx-color-gray-200)}.ogx__header-drag-icon{display:flex;align-items:center;justify-content:center;margin-right:8px;color:var(--ogx-color-primary);animation:ogx-pulse 1.5s infinite ease-in-out}@keyframes ogx-pulse{0%{transform:scale(1)}50%{transform:scale(1.1)}to{transform:scale(1)}}.ogx__header-cell--drag-over{border-left:2px solid var(--ogx-color-primary)!important;background:var(--ogx-color-blue-50)}.ogx--kb .ogx__header-cell--focused{outline:2px solid var(--ogx-color-primary, #2563eb);outline-offset:-2px;background-color:var(--ogx-grid-header-hover-background);z-index:6}.ogx__header-cell--focus-visible{outline:2px solid var(--ogx-color-primary);outline-offset:-2px;background-color:var(--ogx-grid-header-hover-background);z-index:6}.ogx__header-cell:focus,.ogx__header-cell:focus-visible{outline:none!important}.ogx__menu-icon-btn{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:26px;height:26px;padding:0;border:none;background:transparent;border-radius:4px;color:var(--ogx-color-gray-500);cursor:pointer;opacity:0;transition:opacity .15s ease,background .15s ease,color .15s ease;margin-left:auto}.ogx__header-cell:hover .ogx__menu-icon-btn,.ogx__header-cell--sorted .ogx__menu-icon-btn{opacity:1}.ogx__menu-icon-btn:hover{background:var(--ogx-grid-header-hover-background);color:var(--ogx-grid-header-text)}.ogx__menu-icon-btn--active{opacity:1;background:var(--ogx-color-primary-light);color:var(--ogx-color-primary)}.ogx__row{display:flex;align-items:stretch;border-bottom:1px solid var(--ogx-grid-border-color);background:var(--ogx-grid-background);position:relative;min-height:var(--ogx-row-height);transition:background-color .15s ease}.ogx__row--even{background:var(--ogx-grid-row-alternate-background, var(--ogx-grid-background))}.ogx__cell--expand{width:48px;min-width:48px;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:inherit}.ogx:not(.ogx--row-spanning) .ogx__row:hover{background:var(--ogx-grid-row-hover-background)}.ogx__row--selected{background:var(--ogx-grid-row-selected-background)}.ogx:not(.ogx--row-spanning) .ogx__row--selected:hover{background:var(--ogx-grid-row-selected-hover-background)}.ogx__row--pinned-top,.ogx__row--pinned-bottom{background:var(--ogx-grid-background)}.ogx:not(.ogx--row-spanning) .ogx__row--pinned-top:hover,.ogx:not(.ogx--row-spanning) .ogx__row--pinned-bottom:hover{background:var(--ogx-grid-row-hover-background)}.ogx__row--pinned-top.ogx__row--selected,.ogx__row--pinned-bottom.ogx__row--selected{background:var(--ogx-grid-row-selected-background)}.ogx__row--dragging{cursor:grabbing;opacity:.8;background:var(--ogx-color-primary-light);box-shadow:var(--ogx-shadow-lg);z-index:20}.ogx__row--drag-over{position:relative;z-index:10}.ogx__row--drag-over:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--ogx-color-primary);z-index:20}.ogx__cell--drag-handle{width:48px;min-width:48px;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:inherit;cursor:grab;color:var(--ogx-grid-header-text)}.ogx__cell--drag-handle:active{cursor:grabbing;color:var(--ogx-grid-row-text)}.ogx__row--group{background:var(--ogx-color-gray-50);font-weight:500}.ogx:not(.ogx--row-spanning) .ogx__row--group:hover{background:var(--ogx-color-gray-100)}.ogx__row--group.ogx__row--selected{background:var(--ogx-grid-row-selected-background)}@keyframes ogx-skeleton-shimmer{0%{background-position:-600px 0}to{background-position:600px 0}}.ogx__row--skeleton{pointer-events:none;border-bottom:1px solid var(--ogx-grid-border-color);background-color:var(--ogx-grid-background)}.ogx__row--skeleton .ogx__skeleton-cell{flex:1;height:100%;display:flex;align-items:center;padding:0 16px}.ogx__row--skeleton .ogx__skeleton-bar{height:14px;border-radius:6px;width:80%;background:linear-gradient(90deg,var(--ogx-skeleton-base) 25%,var(--ogx-skeleton-highlight) 50%,var(--ogx-skeleton-base) 75%);background-size:600px 100%;animation:ogx-skeleton-shimmer 1.4s infinite linear}.ogx__row--skeleton .ogx__skeleton-cell:nth-child(1) .ogx__skeleton-bar{width:40%}.ogx__row--skeleton .ogx__skeleton-cell:nth-child(2) .ogx__skeleton-bar{width:70%}.ogx__row--skeleton .ogx__skeleton-cell:nth-child(3) .ogx__skeleton-bar{width:85%}.ogx__row--skeleton .ogx__skeleton-cell:nth-child(4) .ogx__skeleton-bar{width:55%}.ogx__row--skeleton .ogx__skeleton-cell:nth-child(5) .ogx__skeleton-bar{width:65%}.ogx__row--skeleton .ogx__skeleton-cell:nth-child(n+6) .ogx__skeleton-bar{width:60%}.ogx__cell{position:relative;display:flex;align-items:center;padding:var(--ogx-grid-cell-padding-y) var(--ogx-grid-cell-padding-x);border-right:1px solid var(--ogx-grid-border-color);font-size:var(--ogx-grid-cell-font-size);color:var(--ogx-grid-row-text);line-height:var(--ogx-grid-line-height);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-sizing:border-box;background-color:inherit}.ogx__cell:focus{outline:none}.ogx__cell--focused{z-index:10}.ogx--kb .ogx__cell--focused{outline:2px solid var(--ogx-color-primary, #2563eb);outline-offset:-2px}.ogx__cell--editable{cursor:text}.ogx__cell--editing{padding:0;overflow:visible;z-index:20;outline:2px solid var(--ogx-color-primary);outline-offset:-2px;background-color:var(--ogx-grid-background)}.ogx__cell--align-left{justify-content:flex-start;text-align:left}.ogx__cell--align-center{justify-content:center;text-align:center}.ogx__cell--align-right{justify-content:flex-end;text-align:right}.ogx__cell--pinned-left,.ogx__cell--pinned-right{position:sticky;z-index:2;background:inherit;background-color:var(--ogx-grid-background)}.ogx__cell--pinned-right{border-left:1px solid var(--ogx-grid-border-color)}.ogx:not(.ogx--row-spanning) .ogx__row:hover .ogx__cell--pinned-left,.ogx:not(.ogx--row-spanning) .ogx__row:hover .ogx__cell--pinned-right{background-color:var(--ogx-grid-row-hover-background)}.ogx__row--selected .ogx__cell--pinned-left,.ogx__row--selected .ogx__cell--pinned-right{background-color:var(--ogx-grid-row-selected-background)}.ogx:not(.ogx--row-spanning) .ogx__row--selected:hover .ogx__cell--pinned-left,.ogx:not(.ogx--row-spanning) .ogx__row--selected:hover .ogx__cell--pinned-right{background-color:var(--ogx-grid-row-selected-hover-background)}.ogx__cell--pinned-left-last:after{content:"";position:absolute;top:0;right:-10px;bottom:0;width:10px;pointer-events:none;box-shadow:inset 10px 0 8px -8px #0000001a}.ogx__cell--pinned-right-first:before{content:"";position:absolute;top:0;left:-10px;bottom:0;width:10px;pointer-events:none;box-shadow:inset -10px 0 8px -8px #0000001a}.ogx__cell--hidden{visibility:hidden;border:none;background:transparent}.ogx__cell-content{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.ogx__cell--spanned{background-color:var(--ogx-grid-background);z-index:10}.ogx__row--even .ogx__cell--spanned{background-color:var(--ogx-grid-row-alternate-background, var(--ogx-grid-background))}.ogx:not(.ogx--row-spanning) .ogx__row:hover .ogx__cell--spanned{background-color:var(--ogx-grid-row-hover-background)}.ogx__row--selected .ogx__cell--spanned{background-color:var(--ogx-grid-row-selected-background)}.ogx:not(.ogx--row-spanning) .ogx__row--selected:hover .ogx__cell--spanned{background-color:var(--ogx-grid-row-selected-hover-background)}.ogx__edit-cell{width:100%;height:100%;display:flex;align-items:center;padding:0}.ogx__edit-input,.ogx__edit-select{width:100%;height:100%;padding:0 10px;border:none;border-radius:0;font-family:var(--ogx-font-family, inherit);font-size:var(--ogx-grid-cell-font-size, 14px);color:var(--ogx-grid-row-text, #1e293b);background:var(--ogx-grid-background, #fff);box-sizing:border-box;outline:none}.ogx__edit-input:focus,.ogx__edit-select:focus{outline:none}.ogx__edit-input--number::-webkit-inner-spin-button,.ogx__edit-input--number::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.ogx__edit-input--number{-moz-appearance:textfield;appearance:textfield}.ogx__edit-select{padding:0 6px;cursor:pointer;-webkit-appearance:auto;appearance:auto}.ogx__edit-boolean{width:100%;height:100%;display:flex;align-items:center;justify-content:center;outline:2px solid var(--ogx-color-primary, #2563eb);outline-offset:-2px}.ogx__edit-checkbox{width:18px;height:18px;cursor:pointer;accent-color:var(--ogx-color-primary, #2563eb)}.ogx-pagination{display:flex;align-items:center;justify-content:flex-end;gap:var(--ogx-spacing-lg);padding:12px 16px;border-top:var(--ogx-border-width-thin) solid var(--ogx-grid-border-color);background:var(--ogx-grid-background);font-size:var(--ogx-font-size-sm);color:var(--ogx-grid-row-text);min-height:52px;border-radius:0 0 var(--ogx-border-radius-lg) var(--ogx-border-radius-lg)}.ogx-pagination__page-size{display:flex;align-items:center;gap:8px}.ogx-pagination__label{font-size:var(--ogx-font-size-sm);color:var(--ogx-grid-header-text);white-space:nowrap}.ogx-pagination__select{min-width:55px;padding:0 18px 0 4px!important;font-family:var(--ogx-font-family);font-size:var(--ogx-font-size-sm);font-weight:500;color:var(--ogx-grid-row-text);background:var(--ogx-grid-background);border:1px solid var(--ogx-border-color);border-radius:4px;cursor:pointer;transition:all var(--ogx-transition-duration-fast) var(--ogx-transition-easing);appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='%23666' d='M7 10l5 5 5-5z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right -1px center;background-size:20px;line-height:1.5}.ogx-pagination__select:hover{border-color:var(--ogx-border-color-hover)}.ogx-pagination__select:focus{outline:none;border-color:var(--ogx-color-primary);box-shadow:0 0 0 2px var(--ogx-color-primary-focus)}.ogx-pagination__info{font-size:var(--ogx-font-size-sm);color:var(--ogx-grid-header-text);white-space:nowrap}.ogx-pagination__actions{display:flex;align-items:center;gap:var(--ogx-spacing-xs)}.ogx-pagination__page-info{padding:0 var(--ogx-spacing-sm);font-size:var(--ogx-font-size-sm);color:var(--ogx-grid-header-text);white-space:nowrap}.ogx-pagination .ogx-button{min-width:32px;padding:var(--ogx-spacing-xs)}.ogx-pagination .ogx-button svg{display:block}@media(max-width:768px){.ogx-pagination{flex-wrap:wrap;gap:var(--ogx-spacing-md)}.ogx-pagination__page-size{order:3;width:100%;justify-content:center}.ogx-pagination__info{order:1;flex:1}.ogx-pagination__actions{order:2}}.ogx__skeleton-row{display:flex;align-items:center;border-bottom:1px solid var(--ogx-grid-border-color);background-color:var(--ogx-grid-background)}.ogx__skeleton-cell{display:flex;align-items:center;padding:0 16px;box-sizing:border-box;overflow:hidden}.ogx-skeleton-box{background:linear-gradient(90deg,var(--ogx-skeleton-base) 0%,var(--ogx-skeleton-highlight) 50%,var(--ogx-skeleton-base) 100%);background-size:200% 100%;animation:skeleton-loading 1.5s ease-in-out infinite;border-radius:4px}.ogx__skeleton{display:flex;flex-direction:column;width:100%}.ogx__skeleton-row{display:flex;align-items:center;min-height:var(--ogx-row-height);border-bottom:1px solid var(--ogx-grid-border-color);padding:var(--ogx-grid-cell-padding-y) var(--ogx-grid-cell-padding-x);background-color:var(--ogx-grid-background)}.ogx__skeleton-cell{flex:1;margin-right:16px}.ogx__skeleton-cell:last-child{margin-right:0}.ogx__skeleton-content{height:16px;background:linear-gradient(90deg,var(--ogx-skeleton-base) 0%,var(--ogx-skeleton-highlight) 50%,var(--ogx-skeleton-base) 100%);background-size:200% 100%;border-radius:4px;animation:skeleton-loading 1.5s ease-in-out infinite}.ogx__skeleton-cell:nth-child(1) .ogx__skeleton-content{width:60%}.ogx__skeleton-cell:nth-child(2) .ogx__skeleton-content{width:80%}.ogx__skeleton-cell:nth-child(3) .ogx__skeleton-content{width:70%}.ogx__skeleton-cell:nth-child(4) .ogx__skeleton-content{width:90%}.ogx__skeleton-cell:nth-child(5) .ogx__skeleton-content{width:75%}@keyframes skeleton-loading{0%{background-position:200% 0}to{background-position:-200% 0}}.ogx__detail-panel{display:flex;background:var(--ogx-color-gray-50);border-top:1px solid var(--ogx-border-color);border-bottom:1px solid var(--ogx-border-color);transition:height .2s ease-in-out;position:relative;min-width:fit-content;width:100%;box-sizing:border-box}.ogx__detail-panel-content{padding:var(--ogx-spacing-md);width:100%;min-width:100%;box-sizing:border-box}@keyframes detailPanelExpand{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.ogx__detail-panel{animation:detailPanelExpand .2s ease-out}@media(prefers-color-scheme:dark){.ogx__detail-panel{background:var(--ogx-color-gray-800);border-color:var(--ogx-color-gray-700)}}.ogx-column-resize-handle{position:absolute;top:0;right:-4px;width:8px;height:100%;cursor:col-resize;z-index:10;display:flex;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none}.ogx-column-resize-handle:hover .ogx-column-resize-handle__line,.ogx-column-resize-handle--dragging .ogx-column-resize-handle__line{background:var(--ogx-color-primary);opacity:1}.ogx-column-resize-handle__line{width:2px;height:100%;background:var(--ogx-color-gray-300);opacity:0;transition:opacity var(--ogx-transition-duration-fast) var(--ogx-transition-easing)}.ogx-column-resize-handle--dragging{cursor:col-resize}.ogx__header-cell:hover .ogx-column-resize-handle__line{opacity:.5}.ogx-column-visibility-panel{background:var(--ogx-overlay-background, var(--ogx-color-white));border:var(--ogx-border-width-thin) solid var(--ogx-overlay-border, var(--ogx-border-color));border-radius:var(--ogx-border-radius-sm);min-width:250px;max-width:350px;box-shadow:var(--ogx-shadow-lg);display:flex;flex-direction:column}.ogx-column-visibility-panel__search-section{padding:var(--ogx-spacing-sm) var(--ogx-spacing-md);border-bottom:var(--ogx-border-width-thin) solid var(--ogx-overlay-border, var(--ogx-border-color))}.ogx-column-visibility-panel__search-container{display:flex;align-items:center;padding:6px var(--ogx-spacing-sm);border:2px solid var(--ogx-overlay-border, var(--ogx-color-primary));border-radius:var(--ogx-border-radius-md);gap:var(--ogx-spacing-sm);color:var(--ogx-overlay-text, var(--ogx-color-gray-500));transition:border-color var(--ogx-transition-duration-fast) var(--ogx-transition-easing)}.ogx-column-visibility-panel__search-container:focus-within{border-color:var(--ogx-color-primary-dark)}.ogx-column-visibility-panel__search-input{border:none;background:none;outline:none;font-family:inherit;font-size:var(--ogx-font-size-md);color:var(--ogx-overlay-text, var(--ogx-color-gray-900));flex:1}.ogx-column-visibility-panel__search-input::placeholder{color:var(--ogx-overlay-text, var(--ogx-color-gray-400));opacity:.6}.ogx-column-visibility-panel__list{max-height:350px;overflow-y:auto;padding:var(--ogx-spacing-sm) 0}.ogx-column-visibility-panel__item{display:flex;align-items:center;gap:var(--ogx-spacing-sm);padding:var(--ogx-spacing-xs) var(--ogx-spacing-sm) var(--ogx-spacing-xs) var(--ogx-spacing-xs);transition:background var(--ogx-transition-duration-fast) var(--ogx-transition-easing);-webkit-user-select:none;user-select:none}.ogx-column-visibility-panel__item:hover:not(.ogx-column-visibility-panel__item--disabled){background:var(--ogx-overlay-item-hover-bg, var(--ogx-color-gray-50))}.ogx-column-visibility-panel__item--drag-over{background:var(--ogx-color-primary-light, rgba(59, 130, 246, .08));border-top:2px solid var(--ogx-color-primary)}.ogx-column-visibility-panel__item--disabled{opacity:.5}.ogx-column-visibility-panel__drag-handle-wrapper{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:20px;height:100%;cursor:grab;color:var(--ogx-overlay-text, var(--ogx-color-gray-400));border-radius:3px;opacity:.6;transition:color var(--ogx-transition-duration-fast) var(--ogx-transition-easing),background var(--ogx-transition-duration-fast) var(--ogx-transition-easing),opacity var(--ogx-transition-duration-fast) var(--ogx-transition-easing)}.ogx-column-visibility-panel__drag-handle-wrapper:hover{opacity:1;color:var(--ogx-overlay-text, var(--ogx-color-gray-600));background:var(--ogx-overlay-item-hover-bg, var(--ogx-color-gray-100))}.ogx-column-visibility-panel__drag-handle-wrapper:active{cursor:grabbing;color:var(--ogx-color-primary)}.ogx-column-visibility-panel__drag-handle{display:block;pointer-events:none}.ogx-column-visibility-panel__label{font-size:var(--ogx-font-size-xs);color:var(--ogx-overlay-text, var(--ogx-color-gray-900));-webkit-user-select:none;user-select:none}.ogx-column-visibility-panel__footer{border-top:var(--ogx-border-width-thin) solid var(--ogx-overlay-border, var(--ogx-border-color));padding:var(--ogx-spacing-sm);display:flex;justify-content:space-between;align-items:center}.ogx-column-visibility-panel__reset-btn{color:var(--ogx-overlay-text, var(--ogx-color-gray-400));background:none;border:none;font-family:inherit;font-weight:600;font-size:13px;letter-spacing:.05em;text-transform:uppercase;cursor:pointer;transition:color var(--ogx-transition-duration-fast) var(--ogx-transition-easing)}.ogx-column-visibility-panel__reset-btn:hover{color:var(--ogx-color-primary, var(--ogx-color-gray-600))}.ogx-quick-filter{width:100%;max-width:400px}.ogx-quick-filter__clear{background:none;border:none;padding:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--ogx-color-gray-500);transition:color var(--ogx-transition-duration-fast) var(--ogx-transition-easing);border-radius:var(--ogx-border-radius-sm)}.ogx-quick-filter__clear:hover{color:var(--ogx-color-gray-700);background:var(--ogx-color-gray-100)}.ogx-quick-filter__clear:active{color:var(--ogx-color-gray-900)}.ogx-button{display:inline-flex;align-items:center;justify-content:center;font-family:var(--ogx-font-family);font-weight:var(--ogx-font-weight-medium);line-height:var(--ogx-line-height-normal);border-radius:var(--ogx-border-radius-md);transition:all var(--ogx-transition-duration-fast) var(--ogx-transition-easing);cursor:pointer;-webkit-user-select:none;user-select:none}.ogx-button--small{padding:var(--ogx-spacing-xs) var(--ogx-spacing-sm);font-size:var(--ogx-font-size-sm);min-height:28px}.ogx-button--medium{padding:var(--ogx-spacing-sm) var(--ogx-spacing-md);font-size:var(--ogx-font-size-md);min-height:36px}.ogx-button--large{padding:var(--ogx-spacing-md) var(--ogx-spacing-lg);font-size:var(--ogx-font-size-lg);min-height:44px}.ogx-button--text{background:transparent;border:none;color:var(--ogx-grid-row-text)}.ogx-button--text.ogx-button--primary{color:var(--ogx-color-primary)}.ogx-button--text.ogx-button--secondary{color:var(--ogx-color-secondary)}.ogx-button--text:hover:not(.ogx-button--disabled){background:var(--ogx-grid-header-hover-background, var(--ogx-color-gray-100))}.ogx-button--text.ogx-button--primary:hover:not(.ogx-button--disabled){background:var(--ogx-color-primary-light)}.ogx-button--outlined{background:transparent;border:var(--ogx-border-width-thin) solid var(--ogx-border-color);color:var(--ogx-grid-row-text)}.ogx-button--outlined.ogx-button--primary{border-color:var(--ogx-color-primary);color:var(--ogx-color-primary)}.ogx-button--outlined.ogx-button--secondary{border-color:var(--ogx-color-secondary);color:var(--ogx-color-secondary)}.ogx-button--outlined:hover:not(.ogx-button--disabled){background:var(--ogx-grid-header-hover-background, var(--ogx-color-gray-100));border-color:var(--ogx-border-color-hover)}.ogx-button--contained{background:var(--ogx-color-gray-200);border:none;color:var(--ogx-grid-row-text)}.ogx-button--contained.ogx-button--primary{background:var(--ogx-color-primary);color:var(--ogx-color-white)}.ogx-button--contained.ogx-button--secondary{background:var(--ogx-color-secondary);color:var(--ogx-color-white)}.ogx-button--contained:hover:not(.ogx-button--disabled){background:var(--ogx-color-gray-300)}.ogx-button--contained.ogx-button--primary:hover:not(.ogx-button--disabled){background:var(--ogx-color-primary-dark)}.ogx-button--disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.ogx-button:focus-visible{outline:2px solid var(--ogx-color-primary);outline-offset:2px}.ogx-checkbox-wrapper{display:inline-flex;align-items:center;cursor:pointer;-webkit-user-select:none;user-select:none;font-family:var(--ogx-font-family)}.ogx-checkbox-wrapper--disabled{opacity:.6;cursor:not-allowed}.ogx-checkbox__input{appearance:none;position:absolute;opacity:0;width:0;height:0}.ogx-checkbox__box{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border:1.5px solid var(--ogx-checkbox-border, var(--ogx-color-gray-400));border-radius:4px;background:var(--ogx-checkbox-bg, var(--ogx-color-white));transition:all .2s cubic-bezier(.4,0,.2,1);color:#fff;flex-shrink:0}.ogx-checkbox__icon{width:12px;height:12px;fill:currentColor;transform:scale(0);transition:transform .2s cubic-bezier(.4,0,.2,1)}.ogx-checkbox__label{margin-left:var(--ogx-spacing-sm);font-size:var(--ogx-font-size-sm);color:var(--ogx-grid-row-text, var(--ogx-color-gray-700));line-height:1}.ogx-checkbox__input:checked+.ogx-checkbox__box{background:var(--ogx-color-primary);border-color:var(--ogx-color-primary)}.ogx-checkbox__input:checked+.ogx-checkbox__box .ogx-checkbox__icon{transform:scale(1)}.ogx-checkbox__input:indeterminate+.ogx-checkbox__box{background:var(--ogx-color-primary);border-color:var(--ogx-color-primary)}.ogx-checkbox__input:indeterminate+.ogx-checkbox__box .ogx-checkbox__icon{transform:scale(1)}.ogx-checkbox-wrapper:hover:not(.ogx-checkbox-wrapper--disabled) .ogx-checkbox__box{border-color:var(--ogx-color-primary);box-shadow:0 0 0 4px var(--ogx-color-primary-light)}.ogx-checkbox__input:focus-visible+.ogx-checkbox__box{border-color:var(--ogx-color-primary);box-shadow:0 0 0 4px var(--ogx-color-primary-focus)}.ogx-checkbox-wrapper--disabled .ogx-checkbox__box{background:var(--ogx-color-gray-100);border-color:var(--ogx-color-gray-300);color:var(--ogx-color-gray-400)}.ogx-drag-handle{display:flex;align-items:center;justify-content:center;cursor:grab;color:var(--ogx-grid-header-text);padding:0 4px;opacity:.5;transition:opacity .2s,color .2s}.ogx-drag-handle:hover{opacity:1;color:var(--ogx-grid-row-text)}.ogx-drag-handle:active{cursor:grabbing;color:var(--ogx-color-primary);opacity:1}.ogx-expand-icon{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:none;background:transparent;cursor:pointer;color:var(--ogx-grid-header-text);transition:color .2s ease;border-radius:4px}.ogx-expand-icon:hover{background:transparent;color:var(--ogx-grid-row-text)}.ogx-expand-icon:focus{outline:none}.ogx-expand-icon:focus-visible{outline:2px solid var(--ogx-color-primary);outline-offset:2px}.ogx-expand-icon svg{display:block;transition:transform .2s ease}@media(prefers-color-scheme:dark){.ogx-expand-icon{color:var(--ogx-color-gray-400)}.ogx-expand-icon:hover{background:var(--ogx-color-gray-800);color:var(--ogx-color-gray-100)}}.ogx-input-wrapper{display:inline-flex;align-items:center;position:relative;border:var(--ogx-border-width-thin) solid var(--ogx-border-color);border-radius:var(--ogx-border-radius-md);background:var(--ogx-color-white);transition:all var(--ogx-transition-duration-fast) var(--ogx-transition-easing)}.ogx-input-wrapper--full-width{width:100%}.ogx-input{flex:1;padding:var(--ogx-spacing-sm) var(--ogx-spacing-md);font-family:var(--ogx-font-family);font-size:var(--ogx-font-size-md);line-height:var(--ogx-line-height-normal);color:var(--ogx-color-gray-900);background:transparent;border:none;outline:none}.ogx-input::placeholder{color:var(--ogx-color-gray-400)}.ogx-input__adornment{display:flex;align-items:center;color:var(--ogx-color-gray-600)}.ogx-input__adornment--start{padding-left:var(--ogx-spacing-md)}.ogx-input__adornment--end{padding-right:var(--ogx-spacing-md)}.ogx-input-wrapper:hover:not(.ogx-input-wrapper--disabled){border-color:var(--ogx-border-color-hover)}.ogx-input-wrapper:focus-within:not(.ogx-input-wrapper--disabled){border-color:var(--ogx-color-primary);box-shadow:0 0 0 1px var(--ogx-color-primary)}.ogx-input-wrapper--error{border-color:var(--ogx-color-error)}.ogx-input-wrapper--error:focus-within{box-shadow:0 0 0 1px var(--ogx-color-error)}.ogx-input-wrapper--disabled{background:var(--ogx-color-gray-100);border-color:var(--ogx-color-gray-200);cursor:not-allowed;opacity:.6}.ogx-input-wrapper--disabled .ogx-input{cursor:not-allowed}.ogx-toolbar{display:flex;align-items:center;gap:var(--ogx-spacing-sm);padding:var(--ogx-spacing-sm) var(--ogx-spacing-sm);border-bottom:var(--ogx-border-width-thin) solid var(--ogx-grid-border-color);background:var(--ogx-grid-header-background);min-height:44px;position:relative;z-index:100}.ogx-toolbar__left{display:flex;align-items:center;gap:var(--ogx-spacing-sm)}.ogx-toolbar__spacer{flex:1}.ogx-toolbar__actions{display:flex;align-items:center;gap:var(--ogx-spacing-xs);flex-wrap:nowrap;flex-shrink:0;padding-right:5px}.ogx-toolbar__dropdown-wrapper{position:relative}.ogx-toolbar__icon-btn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;padding:0;border:none;border-radius:8px;background:transparent;color:var(--ogx-grid-header-text);cursor:pointer;transition:background .15s,color .15s;position:relative}.ogx-toolbar__icon-btn:hover{background:var(--ogx-grid-header-hover-background)}.ogx-toolbar__icon-btn--active{background:var(--ogx-grid-header-hover-background);outline:none}.ogx-toolbar__icon-btn:focus{outline:none}.ogx-toolbar__icon-btn:focus-visible{outline:2px solid var(--ogx-color-primary);outline-offset:1px}.ogx-toolbar__dot{position:absolute;top:4px;right:4px;width:8px;height:8px;border-radius:50%;background:var(--ogx-color-success, #10b981);border:1.5px solid var(--ogx-grid-header-background, #fff);pointer-events:none}.ogx-toolbar__panel{position:fixed;width:380px;max-width:calc(100vw - 24px);background:var(--ogx-overlay-background, var(--ogx-grid-background));border:var(--ogx-border-width-thin) solid var(--ogx-overlay-border, var(--ogx-grid-border-color));border-radius:var(--ogx-border-radius-lg);box-shadow:var(--ogx-overlay-shadow, var(--ogx-shadow-lg));z-index:9999;overflow:hidden;animation:ogx-panel-in .15s ease-out}.ogx-toolbar__panel-header{display:flex;align-items:center;justify-content:space-between;padding:var(--ogx-spacing-sm) var(--ogx-spacing-md);border-bottom:var(--ogx-border-width-thin) solid var(--ogx-overlay-border, var(--ogx-grid-border-color));background:var(--ogx-grid-header-background)}.ogx-toolbar__panel-title{display:flex;align-items:center;gap:var(--ogx-spacing-xs);font-family:var(--ogx-font-family);font-size:var(--ogx-font-size-sm);font-weight:600;color:var(--ogx-grid-header-text)}.ogx-toolbar__clear-btn{padding:2px 8px;border:var(--ogx-border-width-thin) solid var(--ogx-border-color);border-radius:var(--ogx-border-radius-sm);background:transparent;color:var(--ogx-color-error, #ef4444);font-family:var(--ogx-font-family);font-size:var(--ogx-font-size-xs);font-weight:500;cursor:pointer;transition:background .15s,border-color .15s}.ogx-toolbar__clear-btn:hover{background:var(--ogx-toolbar-btn-danger-bg, rgba(239, 68, 68, .08));border-color:var(--ogx-color-error, #ef4444)}.ogx-toolbar__panel-body{padding:var(--ogx-spacing-xs) 0;max-height:360px;overflow-y:auto}.ogx-toolbar__empty{padding:var(--ogx-spacing-md) var(--ogx-spacing-md);font-family:var(--ogx-font-family);font-size:var(--ogx-font-size-sm);color:var(--ogx-grid-header-text);line-height:1.5;text-align:center}.ogx-toolbar__empty code{font-family:var(--ogx-font-family-mono);font-size:.9em;background:var(--ogx-grid-header-background);padding:1px 4px;border-radius:3px}.ogx-toolbar__agg-row{display:flex;align-items:center;gap:var(--ogx-spacing-md);padding:8px var(--ogx-spacing-md);border-bottom:var(--ogx-border-width-thin) solid var(--ogx-overlay-border, var(--ogx-grid-border-color));transition:background .1s}.ogx-toolbar__agg-row:last-child{border-bottom:none}.ogx-toolbar__agg-row:hover{background:var(--ogx-overlay-item-hover-bg, var(--ogx-grid-row-hover-background))}.ogx-toolbar__agg-label{flex:0 0 100px;font-family:var(--ogx-font-family);font-size:var(--ogx-font-size-xs);font-weight:500;color:var(--ogx-grid-row-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ogx-toolbar__agg-pills{display:flex;gap:4px;flex-wrap:wrap}.ogx-toolbar__pill{display:inline-flex;align-items:center;padding:3px 6px;border:var(--ogx-border-width-thin) solid var(--ogx-overlay-border, var(--ogx-border-color));border-radius:999px;background:transparent;color:var(--ogx-grid-row-text);font-family:var(--ogx-font-family-mono, monospace);font-size:10px;font-weight:500;cursor:pointer;text-transform:uppercase;letter-spacing:.03em;transition:background .15s,border-color .15s,color .15s;line-height:1;white-space:nowrap}.ogx-toolbar__pill:hover{background:var(--ogx-grid-header-hover-background);border-color:var(--ogx-color-primary);color:var(--ogx-color-primary)}.ogx-toolbar__pill--active{background:var(--ogx-toolbar-chip-active-bg, var(--ogx-color-primary));border-color:var(--ogx-toolbar-chip-active-bg, var(--ogx-color-primary));color:var(--ogx-toolbar-chip-active-text, #fff);font-weight:700}.ogx-toolbar__pill--active:hover{background:var(--ogx-toolbar-btn-primary-hover, var(--ogx-color-primary-dark));border-color:var(--ogx-toolbar-btn-primary-hover, var(--ogx-color-primary-dark));color:var(--ogx-toolbar-btn-primary-text, #fff)}.ogx-pivot-panel{position:fixed;width:440px;max-width:calc(100vw - 24px);background:var(--ogx-overlay-background, var(--ogx-grid-background));border:var(--ogx-border-width-thin) solid var(--ogx-overlay-border, var(--ogx-grid-border-color));border-radius:var(--ogx-border-radius-lg);box-shadow:var(--ogx-overlay-shadow, var(--ogx-shadow-lg));z-index:9999;overflow:hidden;animation:ogx-panel-in .15s ease-out;font-family:var(--ogx-font-family)}@keyframes ogx-panel-in{0%{opacity:0;transform:translateY(-6px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.ogx-pivot-panel__header{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:var(--ogx-border-width-thin) solid var(--ogx-overlay-border, var(--ogx-grid-border-color));background:var(--ogx-grid-header-background)}.ogx-pivot-panel__title{display:flex;align-items:center;gap:6px;font-size:var(--ogx-font-size-sm);font-weight:600;color:var(--ogx-grid-header-text)}.ogx-pivot-panel__reset-btn{padding:2px 8px;border:var(--ogx-border-width-thin) solid var(--ogx-border-color);border-radius:var(--ogx-border-radius-sm);background:transparent;color:var(--ogx-color-error, #ef4444);font-family:var(--ogx-font-family);font-size:var(--ogx-font-size-xs);font-weight:500;cursor:pointer;transition:background .15s,border-color .15s}.ogx-pivot-panel__reset-btn:hover{background:var(--ogx-toolbar-btn-danger-bg, rgba(239, 68, 68, .08));color:var(--ogx-toolbar-btn-danger-text, #ef4444);border-color:var(--ogx-color-error, #ef4444)}.ogx-pivot-panel__body{padding:10px 14px;display:flex;flex-direction:column;gap:14px;max-height:300px;overflow-y:auto}.ogx-pivot-zone{display:flex;flex-direction:column;gap:6px}.ogx-pivot-zone__label{display:flex;align-items:center;gap:6px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--ogx-color-gray-400, #94a3b8)}.ogx-pivot-zone__dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.ogx-pivot-zone__dot--row{background:var(--ogx-color-primary, #3b82f6)}.ogx-pivot-zone__dot--col{background:var(--ogx-color-secondary, #8b5cf6)}.ogx-pivot-zone__dot--value{background:var(--ogx-color-success, #10b981)}.ogx-pivot-chips{display:flex;flex-wrap:wrap;gap:5px;min-height:30px;padding:5px 8px;border:var(--ogx-border-width-thin) solid var(--ogx-overlay-border, var(--ogx-grid-border-color));border-radius:var(--ogx-border-radius-md);background:var(--ogx-grid-header-background)}.ogx-pivot-chip{display:inline-flex;align-items:center;gap:4px;padding:3px 8px 3px 10px;border-radius:999px;font-size:12px;font-weight:500;line-height:1;white-space:nowrap}.ogx-pivot-chip--row{background:#3b82f61f;color:var(--ogx-color-primary-dark, #2563eb)}.ogx-pivot-chip--col{background:#8b5cf61f;color:var(--ogx-color-secondary-dark, #7c3aed)}.ogx-pivot-chip--value{background:var(--ogx-toolbar-chip-active-bg, rgba(16,185,129,.12));color:var(--ogx-toolbar-chip-active-text, #047857)}.ogx-pivot-chip__remove{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;border-radius:50%;border:none;background:transparent;cursor:pointer;opacity:.6;font-size:11px;font-weight:700;line-height:1;padding:0;color:inherit;transition:opacity .1s}.ogx-pivot-chip__remove:hover{opacity:1}.ogx-pivot-chip__fn-select{border:none;background:transparent;font-size:11px;font-weight:700;color:inherit;cursor:pointer;padding:0 2px;margin-left:2px;font-family:var(--ogx-font-family-mono, monospace)}.ogx-pivot-chips--empty:after{content:attr(data-placeholder);font-size:11px;color:var(--ogx-color-gray-400, #94a3b8);align-self:center;pointer-events:none}.ogx-pivot-panel__fields-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--ogx-color-gray-400, #94a3b8);margin-bottom:4px}.ogx-pivot-fields{display:flex;flex-wrap:wrap;gap:5px}.ogx-pivot-field-btn{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border:var(--ogx-border-width-thin) solid var(--ogx-overlay-border, var(--ogx-border-color));border-radius:999px;background:var(--ogx-grid-header-background);color:var(--ogx-grid-row-text);font-family:var(--ogx-font-family);font-size:12px;font-weight:500;cursor:pointer;transition:background .12s,border-color .12s,color .12s;white-space:nowrap}.ogx-pivot-field-btn:hover{background:var(--ogx-color-primary-light, #eff6ff);border-color:var(--ogx-color-primary, #3b82f6);color:var(--ogx-color-primary, #3b82f6)}.ogx-pivot-field-btn--numeric:before{content:"#";font-family:var(--ogx-font-family-mono, monospace);font-size:10px;opacity:.5}.ogx-pivot-field-actions{display:flex;gap:3px}.ogx-pivot-add-btn{display:inline-flex;align-items:center;padding:2px 6px;border:var(--ogx-border-width-thin) solid var(--ogx-border-color);border-radius:var(--ogx-border-radius-sm);background:transparent;font-size:10px;font-weight:600;cursor:pointer;white-space:nowrap;transition:background .1s,border-color .1s,color .1s}.ogx-pivot-add-btn--row{color:var(--ogx-color-primary, #3b82f6)}.ogx-pivot-add-btn--col{color:var(--ogx-color-secondary, #8b5cf6)}.ogx-pivot-add-btn--value{color:var(--ogx-toolbar-chip-active-text, #047857)}.ogx-pivot-add-btn:hover{background:var(--ogx-grid-header-hover-background);border-color:currentColor}.ogx-pivot-panel__divider{border:none;border-top:var(--ogx-border-width-thin) solid var(--ogx-overlay-border, var(--ogx-grid-border-color));margin:0}.ogx-filter__logic-bar{display:flex;align-items:center;gap:6px;padding:8px var(--ogx-spacing-md);border-bottom:var(--ogx-border-width-thin) solid var(--ogx-grid-border-color);background:var(--ogx-grid-header-background)}.ogx-filter__logic-label{font-family:var(--ogx-font-family);font-size:var(--ogx-font-size-xs);font-weight:500;color:var(--ogx-grid-header-text);margin-right:2px}.ogx-filter__logic-pill{display:inline-flex;align-items:center;padding:3px 8px;border:var(--ogx-border-width-thin) solid var(--ogx-border-color);border-radius:999px;background:transparent;color:var(--ogx-grid-row-text);font-family:var(--ogx-font-family-mono, monospace);font-size:10px;font-weight:500;letter-spacing:.04em;text-transform:uppercase;cursor:pointer;transition:background .15s,border-color .15s,color .15s;line-height:1}.ogx-filter__logic-pill:hover{border-color:var(--ogx-color-primary);color:var(--ogx-color-primary)}.ogx-filter__logic-pill--active{background:var(--ogx-toolbar-chip-active-bg, var(--ogx-color-primary));border-color:var(--ogx-toolbar-chip-active-bg, var(--ogx-color-primary));color:var(--ogx-toolbar-chip-active-text, #fff);font-weight:700}.ogx-filter__row{display:flex;align-items:center;gap:var(--ogx-spacing-sm);padding:8px var(--ogx-spacing-md);border-bottom:var(--ogx-border-width-thin) solid var(--ogx-grid-border-color);transition:background .1s;min-height:44px}.ogx-filter__row:last-child{border-bottom:none}.ogx-filter__row:hover{background:var(--ogx-grid-row-hover-background)}.ogx-filter__row--active{background:var(--ogx-overlay-item-selected-bg, rgba(25, 118, 210, .04))}.ogx-filter__row--active:hover{background:var(--ogx-overlay-item-selected-bg, rgba(25, 118, 210, .07));opacity:.9}.ogx-filter__col-label{flex:0 0 140px;font-family:var(--ogx-font-family);font-size:var(--ogx-font-size-xs);font-weight:500;color:var(--ogx-grid-row-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ogx-filter__controls{display:flex;align-items:center;gap:6px;flex:1}.ogx-filter__op-select{padding:5px 24px 5px 8px;border:var(--ogx-border-width-thin) solid var(--ogx-border-color);border-radius:var(--ogx-border-radius-sm);font-family:var(--ogx-font-family-mono, monospace);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;background:var(--ogx-grid-background);color:var(--ogx-grid-row-text);cursor:pointer;outline:none;transition:border-color .15s;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%2394a3b8'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 6px center;min-width:130px}.ogx-filter__op-select:focus-visible{border-color:var(--ogx-color-primary)}.ogx-filter__op-select--active{border-color:var(--ogx-toolbar-input-focus-border, var(--ogx-color-primary));color:var(--ogx-color-primary);font-weight:700}.ogx-filter__value-input{flex:1;min-width:60px;padding:4px 8px;border:var(--ogx-border-width-thin) solid var(--ogx-border-color);border-radius:var(--ogx-border-radius-sm);font-family:var(--ogx-font-family);font-size:var(--ogx-font-size-xs);background:var(--ogx-grid-background);color:var(--ogx-grid-row-text);outline:none;transition:border-color .15s,box-shadow .15s}.ogx-filter__value-input::placeholder{color:var(--ogx-overlay-text, var(--ogx-color-gray-400));opacity:.6}.ogx-filter__value-input:focus{border-color:var(--ogx-toolbar-input-focus-border, var(--ogx-color-primary));box-shadow:var(--ogx-toolbar-input-focus-shadow, 0 0 0 2px rgba(25, 118, 210, .15))}.ogx-filter__value-input--active{border-color:var(--ogx-color-primary)}.ogx-filter__value-select{flex:1;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%2394a3b8'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:28px;cursor:pointer}.ogx-filter__row-clear{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;border:none;border-radius:50%;background:transparent;color:var(--ogx-overlay-text, var(--ogx-color-gray-400));font-size:16px;line-height:1;cursor:pointer;flex-shrink:0;transition:background .15s,color .15s}.ogx-filter__row-clear:hover{background:var(--ogx-toolbar-btn-danger-bg, rgba(239, 68, 68, .08));color:var(--ogx-toolbar-btn-danger-text, #ef4444)}.ogx-filter__empty{padding:var(--ogx-spacing-md);font-family:var(--ogx-font-family);font-size:var(--ogx-font-size-sm);color:var(--ogx-overlay-text, var(--ogx-color-gray-400));opacity:.7;text-align:center}.ogx-toolbar__panel--filter{width:640px;max-width:calc(100vw - 24px)}.ogx-toolbar__panel-body--filter{max-height:420px;overflow-y:auto;padding:0}.ogx-toolbar__panel-count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:var(--ogx-toolbar-btn-primary-bg, var(--ogx-color-primary));color:var(--ogx-toolbar-btn-primary-text, #fff);font-size:10px;font-weight:700;line-height:1;margin-left:4px}.ogx-global-search{display:inline-flex;align-items:center;border-radius:8px;border:1.5px solid transparent;background:transparent;width:34px;height:34px;flex-shrink:0;cursor:pointer;overflow:hidden;transition:width .25s cubic-bezier(.4,0,.2,1),background .2s ease,border-color .2s ease,box-shadow .2s ease}.ogx-global-search:not(.ogx-global-search--expanded):hover{background:var(--ogx-grid-header-hover-background, #f1f5f9)}.ogx-global-search--expanded{width:220px;border-color:var(--ogx-toolbar-input-focus-border, var(--ogx-color-primary, #3b82f6));background:var(--ogx-toolbar-input-bg, var(--ogx-grid-background, #fff));box-shadow:var(--ogx-toolbar-input-focus-shadow, 0 0 0 3px rgba(59, 130, 246, .12));cursor:default;overflow:hidden}.ogx-global-search__icon-wrapper{flex:0 0 34px;width:34px;height:34px;display:flex;align-items:center;justify-content:center;color:var(--ogx-grid-header-text, #64748b);pointer-events:none;flex-shrink:0;transition:color .15s}.ogx-global-search--expanded .ogx-global-search__icon-wrapper{color:var(--ogx-color-primary, #3b82f6)}.ogx-global-search:focus-within .ogx-global-search__icon-wrapper{color:var(--ogx-color-primary, #3b82f6)}.ogx-global-search__input{flex:1 1 auto;min-width:0;height:100%;padding:0 28px 0 0;border:none;background:transparent;font-family:var(--ogx-font-family, system-ui, sans-serif);font-size:var(--ogx-font-size-sm, 13px);color:var(--ogx-grid-row-text, #1e293b);outline:none;opacity:0;pointer-events:none;transition:opacity .18s ease}.ogx-global-search--expanded .ogx-global-search__input{opacity:1;pointer-events:auto}.ogx-global-search__input::placeholder{color:var(--ogx-color-gray-400, #94a3b8);font-size:var(--ogx-font-size-sm, 13px)}.ogx-global-search__clear{position:absolute;right:6px;top:50%;transform:translateY(-50%);background:transparent;border:none;color:var(--ogx-grid-header-text, #94a3b8);cursor:pointer;padding:4px;border-radius:50%;display:flex;align-items:center;justify-content:center;z-index:3;line-height:0;transition:background .15s,color .15s}.ogx-global-search__clear:hover{background:#ef444414;color:#ef4444}.ogx-column-menu{position:fixed;background:var(--ogx-overlay-background, #fff);box-shadow:var(--ogx-overlay-shadow, 0 4px 6px -1px rgba(0,0,0,.08), 0 2px 4px -1px rgba(0,0,0,.06), 0 0 0 1px rgba(0,0,0,.06));border-radius:var(--ogx-border-radius-md, 8px);padding:4px 0;min-width:190px;z-index:1300}.ogx-menu-section-label{padding:6px 14px 2px;font-family:var(--ogx-font-family, system-ui, sans-serif);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--ogx-color-gray-400, #94a3b8);-webkit-user-select:none;user-select:none}.ogx-menu-item{display:flex;align-items:center;width:100%;padding:7px 14px;border:none;background:transparent;cursor:pointer;font-family:var(--ogx-font-family, system-ui, sans-serif);font-size:var(--ogx-font-size-xs);color:var(--ogx-overlay-text, #334155);text-align:left;gap:6px;transition:background .1s}.ogx-menu-item:hover{background:var(--ogx-overlay-item-hover-bg, #f8fafc);color:var(--ogx-overlay-item-hover-text, #0f172a)}.ogx-menu-item--active{color:var(--ogx-overlay-item-selected-text, #1976d2);font-weight:600}.ogx-menu-item--active:hover{background:var(--ogx-overlay-item-selected-bg, rgba(25, 118, 210, .05))}.ogx-menu-item__indicator{flex:0 0 14px;display:flex;align-items:center;justify-content:center;color:var(--ogx-overlay-item-selected-text, #1976d2)}.ogx-menu-item__icon{flex:0 0 16px;display:flex;align-items:center;justify-content:center;color:var(--ogx-color-gray-400, #94a3b8);transition:color .1s}.ogx-menu-item--active .ogx-menu-item__icon{color:var(--ogx-color-primary, #1976d2)}.ogx-menu-divider{height:1px;background:var(--ogx-overlay-border, #e2e8f0);margin:4px 0}.ogx-list-view{display:flex;flex-direction:column;width:100%;flex:1;min-height:0;overflow:hidden}.ogx-list-view__rows{flex:1;overflow-y:auto;overflow-x:hidden;min-height:0}.ogx-list-view__row{display:flex;align-items:stretch;border-bottom:var(--ogx-border-width-thin) solid var(--ogx-grid-border-color);background:var(--ogx-grid-background);cursor:pointer;transition:background .1s;min-height:72px}.ogx-list-view__row:hover{background:var(--ogx-color-gray-50, #f8fafc)}.ogx-list-view__row--selected{background:var(--ogx-selection-bg, rgba(59, 130, 246, .08))}.ogx-list-view__row--selected:hover{background:var(--ogx-selection-hover-bg, rgba(59, 130, 246, .13))}.ogx-list-view__checkbox{display:flex;align-items:center;justify-content:center;width:48px;flex-shrink:0;border-right:var(--ogx-border-width-thin) solid var(--ogx-grid-border-color)}.ogx-list-view__checkbox input[type=checkbox]{width:16px;height:16px;cursor:pointer;accent-color:var(--ogx-color-primary)}.ogx-list-view__cell{flex:1;padding:12px 16px;display:flex;align-items:center;min-width:0;font-family:var(--ogx-font-family);font-size:var(--ogx-font-size-sm);color:var(--ogx-grid-cell-text)}.ogx-list-view__toolbar{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-bottom:var(--ogx-border-width-thin) solid var(--ogx-grid-border-color);background:var(--ogx-grid-header-background);font-family:var(--ogx-font-family);font-size:var(--ogx-font-size-xs);color:var(--ogx-grid-header-text);flex-shrink:0}.ogx-list-view__empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 24px;gap:8px;font-family:var(--ogx-font-family);font-size:var(--ogx-font-size-sm);color:var(--ogx-text-secondary, #9ca3af)}@media(max-width:768px){.ogx--list-auto .ogx__viewport{display:none}.ogx--list-auto .ogx-list-view{display:flex}}@media(min-width:769px){.ogx--list-auto .ogx-list-view{display:none}}.ogx-col-group-row{display:flex;align-items:stretch;background:var(--ogx-grid-header-background);border-bottom:1px solid var(--ogx-grid-border-color);overflow:hidden;flex-shrink:0;min-height:var(--ogx-header-height, 48px)}.ogx-col-group-cell{display:flex;align-items:center;justify-content:center;flex-shrink:0;box-sizing:border-box;position:relative;overflow:hidden}.ogx-col-group-cell:not(:last-child):after{content:"";position:absolute;right:0;top:25%;height:50%;width:1px;background-color:var(--ogx-color-gray-300, #cbd5e1);opacity:.5}.ogx-col-group-cell--group,.ogx-col-group-cell--filler{background:transparent}.ogx-col-group-cell__label{font-size:.75rem;font-weight:600;color:var(--ogx-color-gray-700, #334155);padding:0 16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none;text-align:center;width:100%}[data-theme=dark] .ogx-col-group-cell__label,.ogx--dark .ogx-col-group-cell__label{color:var(--ogx-color-gray-300, #cbd5e1)}.ogx-tooltip{pointer-events:none;background:var(--ogx-overlay-background, rgba(30, 41, 59, .92));color:var(--ogx-overlay-text, #fff);font-family:var(--ogx-font-family, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif);font-size:10px;font-weight:500;line-height:1.4;padding:3px 6px;border-radius:6px;white-space:nowrap;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;z-index:99999}.ogx-tooltip--top{transform:translate(-50%,-100%);animation:ogx-tooltip-in-top .15s ease-out}.ogx-tooltip--bottom{transform:translate(-50%);animation:ogx-tooltip-in-bottom .15s ease-out}@keyframes ogx-tooltip-in-top{0%{opacity:0;transform:translate(-50%,-95%) scale(.98)}to{opacity:1;transform:translate(-50%,-100%) scale(1)}}@keyframes ogx-tooltip-in-bottom{0%{opacity:0;transform:translate(-50%,-4px) scale(.98)}to{opacity:1;transform:translate(-50%) scale(1)}}
|
|
1
|
+
:root{--ogx-row-height: 52px;--ogx-header-height: 56px;--ogx-cell-padding: 16px;--ogx-color-primary: #3b82f6;--ogx-color-primary-dark: #2563eb;--ogx-color-primary-light: #eff6ff;--ogx-color-primary-focus: rgba(59, 130, 246, .5);--ogx-color-secondary: #8b5cf6;--ogx-color-secondary-dark: #7c3aed;--ogx-color-secondary-light: #f5f3ff;--ogx-color-white: #ffffff;--ogx-color-black: #0f172a;--ogx-color-gray-50: #f8fafc;--ogx-color-gray-100: #f1f5f9;--ogx-color-gray-200: #e2e8f0;--ogx-color-gray-300: #cbd5e1;--ogx-color-gray-400: #94a3b8;--ogx-color-gray-500: #64748b;--ogx-color-gray-600: #475569;--ogx-color-gray-700: #334155;--ogx-color-gray-800: #1e293b;--ogx-color-gray-900: #0f172a;--ogx-color-success: #10b981;--ogx-color-warning: #f59e0b;--ogx-color-error: #ef4444;--ogx-color-info: #0ea5e9;--ogx-font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;--ogx-font-family-mono: "JetBrains Mono", "Fira Code", "Courier New", Courier, monospace;--ogx-font-size-xs: .75rem;--ogx-font-size-sm: .875rem;--ogx-font-size-md: 1rem;--ogx-font-size-lg: 1.125rem;--ogx-font-size-xl: 1.25rem;--ogx-font-weight-light: 300;--ogx-font-weight-regular: 400;--ogx-font-weight-medium: 500;--ogx-font-weight-semibold: 600;--ogx-font-weight-bold: 700;--ogx-line-height-tight: 1.2;--ogx-line-height-normal: 1.5;--ogx-line-height-relaxed: 1.75;--ogx-spacing-xs: .25rem;--ogx-spacing-sm: .5rem;--ogx-spacing-md: 1rem;--ogx-spacing-lg: 1.5rem;--ogx-spacing-xl: 2rem;--ogx-spacing-xxl: 3rem;--ogx-border-width-thin: 1px;--ogx-border-width-medium: 2px;--ogx-border-width-thick: 3px;--ogx-border-radius-sm: 4px;--ogx-border-radius-md: 8px;--ogx-border-radius-lg: 12px;--ogx-border-radius-xl: 16px;--ogx-border-radius-round: 50%;--ogx-border-color: var(--ogx-color-gray-200);--ogx-border-color-hover: var(--ogx-color-gray-300);--ogx-shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .05);--ogx-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .05), 0 2px 4px -1px rgba(0, 0, 0, .03);--ogx-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .05), 0 4px 6px -2px rgba(0, 0, 0, .02);--ogx-shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .05), 0 10px 10px -5px rgba(0, 0, 0, .02);--ogx-z-index-base: 0;--ogx-z-index-dropdown: 1000;--ogx-z-index-sticky: 1020;--ogx-z-index-fixed: 1030;--ogx-z-index-modal-backdrop: 1040;--ogx-z-index-modal: 1050;--ogx-z-index-popover: 1060;--ogx-z-index-tooltip: 1070;--ogx-transition-duration-fast: .15s;--ogx-transition-duration-normal: .25s;--ogx-transition-duration-slow: .35s;--ogx-transition-easing: cubic-bezier(.4, 0, .2, 1);--ogx-grid-row-height-compact: 32px;--ogx-grid-row-height-standard: 52px;--ogx-grid-row-height-comfortable: 72px;--ogx-grid-header-height: 56px;--ogx-grid-cell-padding-x: 10px;--ogx-grid-cell-padding-y: 8px;--ogx-grid-cell-font-size: 13px;--ogx-grid-header-font-size: 13px;--ogx-grid-line-height: var(--ogx-line-height-normal);--ogx-grid-background: var(--ogx-color-white);--ogx-grid-border-color: var(--ogx-color-gray-200);--ogx-grid-header-background: var(--ogx-color-gray-50);--ogx-grid-header-text: var(--ogx-color-gray-700);--ogx-grid-header-hover-background: var(--ogx-color-gray-100);--ogx-grid-header-sorted-background: var(--ogx-color-gray-50);--ogx-grid-row-text: var(--ogx-color-gray-800);--ogx-grid-row-hover-background: var(--ogx-color-gray-50);--ogx-grid-row-alternate-background: var(--ogx-grid-background);--ogx-grid-row-selected-background: var(--ogx-color-primary-light);--ogx-grid-row-selected-hover-background: #dbeafe;--ogx-grid-cell-focus-border: var(--ogx-color-primary);--ogx-grid-pinned-left-shadow: 4px 0 24px -4px rgba(0, 0, 0, .05);--ogx-grid-pinned-right-shadow: -4px 0 24px -4px rgba(0, 0, 0, .05);--ogx-skeleton-base: #f0f0f0;--ogx-skeleton-highlight: #f8f8f8;--ogx-overlay-background: #ffffff;--ogx-overlay-border: #e2e8f0;--ogx-overlay-text: #334155;--ogx-overlay-shadow: 0 4px 6px -1px rgba(0,0,0,.08), 0 2px 4px -1px rgba(0,0,0,.06), 0 0 0 1px rgba(0,0,0,.06);--ogx-overlay-item-hover-bg: #f8fafc;--ogx-overlay-item-hover-text: #0f172a;--ogx-overlay-item-selected-text: var(--ogx-color-primary);--ogx-overlay-item-selected-bg: var(--ogx-color-primary-light)}@media(prefers-color-scheme:dark){:root{--ogx-color-primary: #60a5fa;--ogx-color-primary-dark: #3b82f6;--ogx-color-primary-light: #1e3a5f;--ogx-color-primary-focus: rgba(96, 165, 250, .4);--ogx-color-white: #0f172a;--ogx-color-black: #f8fafc;--ogx-color-gray-50: #1e293b;--ogx-color-gray-100: #334155;--ogx-color-gray-200: #475569;--ogx-color-gray-300: #64748b;--ogx-color-gray-400: #94a3b8;--ogx-color-gray-500: #cbd5e1;--ogx-color-gray-600: #e2e8f0;--ogx-color-gray-700: #e2e8f0;--ogx-color-gray-800: #f1f5f9;--ogx-color-gray-900: #f8fafc;--ogx-border-color: #334155;--ogx-border-color-hover: #475569;--ogx-shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .3);--ogx-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .3);--ogx-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .3);--ogx-grid-background: #0f172a;--ogx-grid-border-color: #334155;--ogx-grid-header-background: #1e293b;--ogx-grid-header-text: #e2e8f0;--ogx-grid-header-hover-background: #334155;--ogx-grid-header-sorted-background: #1e3a5f;--ogx-grid-row-text: #cbd5e1;--ogx-grid-row-hover-background: #1e293b;--ogx-grid-row-alternate-background: #162032;--ogx-grid-row-selected-background: #1e3a5f;--ogx-grid-row-selected-hover-background: #1d4ed8;--ogx-grid-cell-focus-border: #60a5fa;--ogx-checkbox-bg: #1e293b;--ogx-checkbox-border: #64748b;--ogx-grid-pinned-left-shadow: 4px 0 24px -4px rgba(0, 0, 0, .3);--ogx-grid-pinned-right-shadow: -4px 0 24px -4px rgba(0, 0, 0, .3);--ogx-skeleton-base: #2a2a2a;--ogx-skeleton-highlight: #333333;--ogx-overlay-background: #1e293b;--ogx-overlay-border: #334155;--ogx-overlay-text: #cbd5e1;--ogx-overlay-shadow: 0 4px 6px -1px rgba(0,0,0,.4), 0 2px 4px -1px rgba(0,0,0,.3), 0 0 0 1px rgba(0,0,0,.2);--ogx-overlay-item-hover-bg: #334155;--ogx-overlay-item-hover-text: #f1f5f9;--ogx-overlay-item-selected-text: var(--ogx-color-primary);--ogx-overlay-item-selected-bg: #1e3a5f}}*,*:before,*:after{box-sizing:border-box}.ogx--dragging{user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.ogx *:focus{outline:none}.ogx button:not(.ogx-menu-item){background:none;border:none;cursor:pointer;font-family:inherit;font-size:inherit}.ogx{display:flex;flex-direction:column;width:100%;background:var(--ogx-grid-background);border:1px solid var(--ogx-grid-border-color);border-radius:var(--ogx-border-radius-lg);font-family:var(--ogx-font-family);position:relative;box-shadow:var(--ogx-shadow-sm);transition:box-shadow var(--ogx-transition-duration-normal);overflow:hidden}.ogx>:first-child{border-top-left-radius:calc(var(--ogx-border-radius-lg) - 1px);border-top-right-radius:calc(var(--ogx-border-radius-lg) - 1px)}.ogx>:last-child{border-bottom-left-radius:calc(var(--ogx-border-radius-lg) - 1px);border-bottom-right-radius:calc(var(--ogx-border-radius-lg) - 1px)}.ogx:hover{box-shadow:var(--ogx-shadow-md)}.ogx__viewport{flex:1;overflow:auto;position:relative;scrollbar-gutter:stable}.ogx__content{position:relative;min-width:fit-content;display:flex;flex-direction:column;min-height:100%}.ogx__virtual-container{position:relative;flex:1 0 auto}.ogx__rows{position:relative;will-change:transform}.ogx__pinned-rows{position:relative;z-index:3}.ogx__pinned-rows--top{position:sticky;top:var(--ogx-header-height);z-index:10;background:var(--ogx-grid-background);box-shadow:0 4px 6px -1px #0000000d}.ogx__pinned-rows--bottom{position:sticky;bottom:0;z-index:10;background:var(--ogx-grid-background);box-shadow:0 -4px 6px -1px #0000000d;margin-top:auto}.ogx--loading{opacity:.6;pointer-events:none}.ogx--loading:after{content:"";position:absolute;inset:0;background:color-mix(in srgb,var(--ogx-grid-background) 60%,transparent);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;z-index:var(--ogx-z-index-modal)}.ogx--auto-height{height:auto}.ogx--auto-height .ogx__viewport{overflow-y:visible}.ogx__viewport::-webkit-scrollbar{width:8px;height:8px}.ogx__viewport::-webkit-scrollbar-track{background:transparent}.ogx__viewport::-webkit-scrollbar-thumb{background:var(--ogx-color-gray-300);border-radius:4px;border:2px solid transparent;background-clip:content-box}.ogx__viewport::-webkit-scrollbar-thumb:hover{background-color:var(--ogx-border-color-hover)}.ogx__viewport{scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.2) transparent}.ogx__empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--ogx-spacing-xxl);color:var(--ogx-color-gray-500);font-size:var(--ogx-font-size-lg);text-align:center;gap:var(--ogx-spacing-md);min-height:200px}.ogx__empty svg{color:var(--ogx-color-gray-300)}.ogx-error-overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:color-mix(in srgb,var(--ogx-grid-background) 10%,transparent);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:var(--ogx-z-index-modal);gap:var(--ogx-spacing-md);padding:var(--ogx-spacing-xl);text-align:center;border-radius:var(--ogx-border-radius-lg);overflow:hidden}.ogx-error-overlay>svg{flex-shrink:0;overflow:visible;display:block}.ogx-error-overlay__title{font-weight:600;color:var(--ogx-grid-row-text)}.ogx-error-overlay__message{font-size:var(--ogx-font-size-sm);color:var(--ogx-color-gray-500);max-width:400px}.ogx__aggregation-footer{display:flex;align-items:center;border-top:2px solid var(--ogx-grid-border-color);background:var(--ogx-grid-header-background);font-weight:600;font-size:.85em;position:sticky;bottom:0;z-index:2;width:100%}.ogx__aggregation-cell{flex-shrink:0;padding:0 var(--ogx-grid-cell-padding-x);display:flex;flex-direction:column;justify-content:center;overflow:hidden;box-sizing:border-box;border-right:1px solid var(--ogx-grid-border-color)}.ogx__aggregation-label{font-size:.7em;text-transform:uppercase;letter-spacing:.05em;color:var(--ogx-color-gray-500);line-height:1.2}.ogx__aggregation-value{color:var(--ogx-color-primary);line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ogx--density-compact .ogx__cell,.ogx--density-compact .ogx__header-cell{padding:var(--ogx-spacing-xs) var(--ogx-spacing-sm);font-size:var(--ogx-font-size-xs)}.ogx--density-comfortable .ogx__cell,.ogx--density-comfortable .ogx__header-cell{padding:var(--ogx-spacing-md) var(--ogx-spacing-lg);font-size:var(--ogx-font-size-md)}.ogx__group-cell-content{font-weight:500;text-align:left;display:flex;align-items:center;gap:4px}.ogx-aria-live-status{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.ogx__header-wrap{display:flex;flex-direction:column;position:sticky;top:0;z-index:10;flex-shrink:0}.ogx__header{display:flex;align-items:stretch;background:var(--ogx-grid-header-background);border-bottom:1px solid var(--ogx-grid-border-color);min-height:var(--ogx-header-height);box-shadow:var(--ogx-shadow-sm, 0 1px 2px rgba(0, 0, 0, .03))}.ogx__header-cell--expand{width:48px;min-width:48px;flex-shrink:0;border-right:1px solid transparent}.ogx__header-cell{display:flex;align-items:center;padding:var(--ogx-grid-cell-padding-y) var(--ogx-grid-cell-padding-x);position:relative;font-size:var(--ogx-grid-header-font-size);font-weight:600;color:var(--ogx-grid-header-text);overflow:hidden;box-sizing:border-box;flex-shrink:0;-webkit-user-select:none;user-select:none;transition:background-color .2s}.ogx__header-cell:not(:last-child):after{content:"";position:absolute;right:0;top:25%;height:50%;width:1px;background-color:var(--ogx-color-gray-300);opacity:.5}.ogx__header-cell-content{display:flex;align-items:center;gap:var(--ogx-spacing-xs);width:100%;overflow:hidden}.ogx__header-cell-title-wrapper{display:flex;flex-direction:column;align-items:flex-start;flex:1;overflow:hidden}.ogx__header-cell-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%;font-weight:600;letter-spacing:-.01em}.ogx__header-cell-aggregation{font-size:.6rem;font-weight:500;color:var(--ogx-color-gray-500);text-transform:uppercase;letter-spacing:.05em;margin-top:2px}.ogx__header-cell--align-left{justify-content:flex-start}.ogx__header-cell--align-center{justify-content:center}.ogx__header-cell--align-right{justify-content:flex-start}.ogx__header-cell--align-center .ogx__header-cell-content{text-align:center}.ogx__header-cell--align-right .ogx__header-cell-content{flex-direction:row-reverse}.ogx__header-cell--align-right .ogx__header-cell-title-wrapper{align-items:flex-end;text-align:right}.ogx__header-cell--align-right .ogx__menu-icon-btn{margin-left:0;margin-right:auto}.ogx__header-cell--sortable{cursor:pointer}.ogx__header-cell--sortable:hover{background:var(--ogx-grid-header-hover-background)}.ogx__header-cell--sorted{background:var(--ogx-grid-header-sorted-background);color:var(--ogx-color-primary-dark)}.ogx__header-cell--sorted .ogx__header-cell-title{color:var(--ogx-color-primary-dark)}.ogx__sort-icon{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;margin-left:4px;flex-shrink:0;font-size:14px;line-height:1}.ogx__sort-icon:before{transition:all .2s}.ogx__sort-icon--asc:before{content:"↑"}.ogx__sort-icon--desc:before{content:"↓"}.ogx__header-cell--checkbox,.ogx__cell--checkbox{width:48px;min-width:48px;max-width:48px;flex:0 0 48px;justify-content:center;padding:0}.ogx__header-cell--pinned{background:var(--ogx-grid-header-background);z-index:12}.ogx__header-cell--pinned-left{box-shadow:var(--ogx-grid-pinned-left-shadow, 4px 0 12px -4px rgba(0, 0, 0, .05))}.ogx__header-cell--pinned-right{box-shadow:var(--ogx-grid-pinned-right-shadow, -4px 0 12px -4px rgba(0, 0, 0, .05))}.ogx__header-cell--pinned:after{display:none}.ogx__header-cell--dragging{cursor:move!important;opacity:.5;background:var(--ogx-color-gray-200)}.ogx__header-drag-icon{display:flex;align-items:center;justify-content:center;margin-right:8px;color:var(--ogx-color-primary);animation:ogx-pulse 1.5s infinite ease-in-out}@keyframes ogx-pulse{0%{transform:scale(1)}50%{transform:scale(1.1)}to{transform:scale(1)}}.ogx__header-cell--drag-over{border-left:2px solid var(--ogx-color-primary)!important;background:var(--ogx-color-blue-50)}.ogx--kb .ogx__header-cell--focused{outline:2px solid var(--ogx-color-primary, #2563eb);outline-offset:-2px;background-color:var(--ogx-grid-header-hover-background);z-index:6}.ogx__header-cell--focus-visible{outline:2px solid var(--ogx-color-primary);outline-offset:-2px;background-color:var(--ogx-grid-header-hover-background);z-index:6}.ogx__header-cell:focus,.ogx__header-cell:focus-visible{outline:none!important}.ogx__menu-icon-btn{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:26px;height:26px;padding:0;border:none;background:transparent;border-radius:4px;color:var(--ogx-color-gray-500);cursor:pointer;opacity:0;transition:opacity .15s ease,background .15s ease,color .15s ease;margin-left:auto}.ogx__header-cell:hover .ogx__menu-icon-btn,.ogx__header-cell--sorted .ogx__menu-icon-btn{opacity:1}.ogx__menu-icon-btn:hover{background:var(--ogx-grid-header-hover-background);color:var(--ogx-grid-header-text)}.ogx__menu-icon-btn--active{opacity:1;background:var(--ogx-color-primary-light);color:var(--ogx-color-primary)}.ogx__row{display:flex;align-items:stretch;border-bottom:1px solid var(--ogx-grid-border-color);background:var(--ogx-grid-background);position:relative;min-height:var(--ogx-row-height);transition:background-color .15s ease}.ogx__row--even{background:var(--ogx-grid-row-alternate-background, var(--ogx-grid-background))}.ogx__cell--expand{width:48px;min-width:48px;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:inherit}.ogx:not(.ogx--row-spanning) .ogx__row:hover{background:var(--ogx-grid-row-hover-background)}.ogx__row--selected{background:var(--ogx-grid-row-selected-background)}.ogx:not(.ogx--row-spanning) .ogx__row--selected:hover{background:var(--ogx-grid-row-selected-hover-background)}.ogx__row--pinned-top,.ogx__row--pinned-bottom{background:var(--ogx-grid-background)}.ogx:not(.ogx--row-spanning) .ogx__row--pinned-top:hover,.ogx:not(.ogx--row-spanning) .ogx__row--pinned-bottom:hover{background:var(--ogx-grid-row-hover-background)}.ogx__row--pinned-top.ogx__row--selected,.ogx__row--pinned-bottom.ogx__row--selected{background:var(--ogx-grid-row-selected-background)}.ogx__row--dragging{cursor:grabbing;opacity:.8;background:var(--ogx-color-primary-light);box-shadow:var(--ogx-shadow-lg);z-index:20}.ogx__row--drag-over{position:relative;z-index:10}.ogx__row--drag-over:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--ogx-color-primary);z-index:20}.ogx__cell--drag-handle{width:48px;min-width:48px;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:inherit;cursor:grab;color:var(--ogx-grid-header-text)}.ogx__cell--drag-handle:active{cursor:grabbing;color:var(--ogx-grid-row-text)}.ogx__row--group{background:var(--ogx-color-gray-50);font-weight:500}.ogx:not(.ogx--row-spanning) .ogx__row--group:hover{background:var(--ogx-color-gray-100)}.ogx__row--group.ogx__row--selected{background:var(--ogx-grid-row-selected-background)}@keyframes ogx-skeleton-shimmer{0%{background-position:-600px 0}to{background-position:600px 0}}.ogx__row--skeleton{pointer-events:none;border-bottom:1px solid var(--ogx-grid-border-color);background-color:var(--ogx-grid-background)}.ogx__row--skeleton .ogx__skeleton-cell{flex:1;height:100%;display:flex;align-items:center;padding:0 16px}.ogx__row--skeleton .ogx__skeleton-bar{height:14px;border-radius:6px;width:80%;background:linear-gradient(90deg,var(--ogx-skeleton-base) 25%,var(--ogx-skeleton-highlight) 50%,var(--ogx-skeleton-base) 75%);background-size:600px 100%;animation:ogx-skeleton-shimmer 1.4s infinite linear}.ogx__row--skeleton .ogx__skeleton-cell:nth-child(1) .ogx__skeleton-bar{width:40%}.ogx__row--skeleton .ogx__skeleton-cell:nth-child(2) .ogx__skeleton-bar{width:70%}.ogx__row--skeleton .ogx__skeleton-cell:nth-child(3) .ogx__skeleton-bar{width:85%}.ogx__row--skeleton .ogx__skeleton-cell:nth-child(4) .ogx__skeleton-bar{width:55%}.ogx__row--skeleton .ogx__skeleton-cell:nth-child(5) .ogx__skeleton-bar{width:65%}.ogx__row--skeleton .ogx__skeleton-cell:nth-child(n+6) .ogx__skeleton-bar{width:60%}.ogx__cell{position:relative;display:flex;align-items:center;padding:var(--ogx-grid-cell-padding-y) var(--ogx-grid-cell-padding-x);border-right:1px solid var(--ogx-grid-border-color);font-size:var(--ogx-grid-cell-font-size);color:var(--ogx-grid-row-text);line-height:var(--ogx-grid-line-height);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-sizing:border-box;background-color:inherit}.ogx__cell:focus{outline:none}.ogx__cell--focused{z-index:10}.ogx--kb .ogx__cell--focused{outline:2px solid var(--ogx-color-primary, #2563eb);outline-offset:-2px}.ogx__cell--editable{cursor:text}.ogx__cell--editing{padding:0;overflow:visible;z-index:20;outline:2px solid var(--ogx-color-primary);outline-offset:-2px;background-color:var(--ogx-grid-background)}.ogx__cell--align-left{justify-content:flex-start;text-align:left}.ogx__cell--align-center{justify-content:center;text-align:center}.ogx__cell--align-right{justify-content:flex-end;text-align:right}.ogx__cell--pinned-left,.ogx__cell--pinned-right{position:sticky;z-index:2;background:inherit;background-color:var(--ogx-grid-background)}.ogx__cell--pinned-right{border-left:1px solid var(--ogx-grid-border-color)}.ogx:not(.ogx--row-spanning) .ogx__row:hover .ogx__cell--pinned-left,.ogx:not(.ogx--row-spanning) .ogx__row:hover .ogx__cell--pinned-right{background-color:var(--ogx-grid-row-hover-background)}.ogx__row--selected .ogx__cell--pinned-left,.ogx__row--selected .ogx__cell--pinned-right{background-color:var(--ogx-grid-row-selected-background)}.ogx:not(.ogx--row-spanning) .ogx__row--selected:hover .ogx__cell--pinned-left,.ogx:not(.ogx--row-spanning) .ogx__row--selected:hover .ogx__cell--pinned-right{background-color:var(--ogx-grid-row-selected-hover-background)}.ogx__cell--pinned-left-last:after{content:"";position:absolute;top:0;right:-10px;bottom:0;width:10px;pointer-events:none;box-shadow:inset 10px 0 8px -8px #0000001a}.ogx__cell--pinned-right-first:before{content:"";position:absolute;top:0;left:-10px;bottom:0;width:10px;pointer-events:none;box-shadow:inset -10px 0 8px -8px #0000001a}.ogx__cell--hidden{visibility:hidden;border:none;background:transparent}.ogx__cell-content{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.ogx__cell--spanned{background-color:var(--ogx-grid-background);z-index:10}.ogx__row--even .ogx__cell--spanned{background-color:var(--ogx-grid-row-alternate-background, var(--ogx-grid-background))}.ogx:not(.ogx--row-spanning) .ogx__row:hover .ogx__cell--spanned{background-color:var(--ogx-grid-row-hover-background)}.ogx__row--selected .ogx__cell--spanned{background-color:var(--ogx-grid-row-selected-background)}.ogx:not(.ogx--row-spanning) .ogx__row--selected:hover .ogx__cell--spanned{background-color:var(--ogx-grid-row-selected-hover-background)}.ogx__edit-cell{width:100%;height:100%;display:flex;align-items:center;padding:0}.ogx__edit-input,.ogx__edit-select{width:100%;height:100%;padding:0 10px;border:none;border-radius:0;font-family:var(--ogx-font-family, inherit);font-size:var(--ogx-grid-cell-font-size, 14px);color:var(--ogx-grid-row-text, #1e293b);background:var(--ogx-grid-background, #fff);box-sizing:border-box;outline:none}.ogx__edit-input:focus,.ogx__edit-select:focus{outline:none}.ogx__edit-input--number::-webkit-inner-spin-button,.ogx__edit-input--number::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.ogx__edit-input--number{-moz-appearance:textfield;appearance:textfield}.ogx__edit-select{padding:0 6px;cursor:pointer;-webkit-appearance:auto;appearance:auto}.ogx__edit-boolean{width:100%;height:100%;display:flex;align-items:center;justify-content:center;outline:2px solid var(--ogx-color-primary, #2563eb);outline-offset:-2px}.ogx__edit-checkbox{width:18px;height:18px;cursor:pointer;accent-color:var(--ogx-color-primary, #2563eb)}.ogx-pagination{display:flex;align-items:center;justify-content:flex-end;gap:var(--ogx-spacing-lg);padding:12px 16px;border-top:var(--ogx-border-width-thin) solid var(--ogx-grid-border-color);background:var(--ogx-grid-background);font-size:var(--ogx-font-size-sm);color:var(--ogx-grid-row-text);min-height:52px;border-radius:0 0 var(--ogx-border-radius-lg) var(--ogx-border-radius-lg)}.ogx-pagination__page-size{display:flex;align-items:center;gap:8px}.ogx-pagination__label{font-size:var(--ogx-font-size-sm);color:var(--ogx-grid-header-text);white-space:nowrap}.ogx-pagination__select{min-width:55px;padding:0 18px 0 4px!important;font-family:var(--ogx-font-family);font-size:var(--ogx-font-size-sm);font-weight:500;color:var(--ogx-grid-row-text);background:var(--ogx-grid-background);border:1px solid var(--ogx-border-color);border-radius:4px;cursor:pointer;transition:all var(--ogx-transition-duration-fast) var(--ogx-transition-easing);appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='%23666' d='M7 10l5 5 5-5z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right -1px center;background-size:20px;line-height:1.5}.ogx-pagination__select:hover{border-color:var(--ogx-border-color-hover)}.ogx-pagination__select:focus{outline:none;border-color:var(--ogx-color-primary);box-shadow:0 0 0 2px var(--ogx-color-primary-focus)}.ogx-pagination__info{font-size:var(--ogx-font-size-sm);color:var(--ogx-grid-header-text);white-space:nowrap}.ogx-pagination__actions{display:flex;align-items:center;gap:var(--ogx-spacing-xs)}.ogx-pagination__page-info{padding:0 var(--ogx-spacing-sm);font-size:var(--ogx-font-size-sm);color:var(--ogx-grid-header-text);white-space:nowrap}.ogx-pagination .ogx-button{min-width:32px;padding:var(--ogx-spacing-xs)}.ogx-pagination .ogx-button svg{display:block}@media(max-width:768px){.ogx-pagination{flex-wrap:wrap;gap:var(--ogx-spacing-md)}.ogx-pagination__page-size{order:3;width:100%;justify-content:center}.ogx-pagination__info{order:1;flex:1}.ogx-pagination__actions{order:2}}.ogx__skeleton-row{display:flex;align-items:center;border-bottom:1px solid var(--ogx-grid-border-color);background-color:var(--ogx-grid-background)}.ogx__skeleton-cell{display:flex;align-items:center;padding:0 16px;box-sizing:border-box;overflow:hidden}.ogx-skeleton-box{background:linear-gradient(90deg,var(--ogx-skeleton-base) 0%,var(--ogx-skeleton-highlight) 50%,var(--ogx-skeleton-base) 100%);background-size:200% 100%;animation:skeleton-loading 1.5s ease-in-out infinite;border-radius:4px}.ogx__skeleton{display:flex;flex-direction:column;width:100%}.ogx__skeleton-row{display:flex;align-items:center;min-height:var(--ogx-row-height);border-bottom:1px solid var(--ogx-grid-border-color);padding:var(--ogx-grid-cell-padding-y) var(--ogx-grid-cell-padding-x);background-color:var(--ogx-grid-background)}.ogx__skeleton-cell{flex:1;margin-right:16px}.ogx__skeleton-cell:last-child{margin-right:0}.ogx__skeleton-content{height:16px;background:linear-gradient(90deg,var(--ogx-skeleton-base) 0%,var(--ogx-skeleton-highlight) 50%,var(--ogx-skeleton-base) 100%);background-size:200% 100%;border-radius:4px;animation:skeleton-loading 1.5s ease-in-out infinite}.ogx__skeleton-cell:nth-child(1) .ogx__skeleton-content{width:60%}.ogx__skeleton-cell:nth-child(2) .ogx__skeleton-content{width:80%}.ogx__skeleton-cell:nth-child(3) .ogx__skeleton-content{width:70%}.ogx__skeleton-cell:nth-child(4) .ogx__skeleton-content{width:90%}.ogx__skeleton-cell:nth-child(5) .ogx__skeleton-content{width:75%}@keyframes skeleton-loading{0%{background-position:200% 0}to{background-position:-200% 0}}.ogx__detail-panel{display:flex;background:var(--ogx-color-gray-50);border-top:1px solid var(--ogx-border-color);border-bottom:1px solid var(--ogx-border-color);transition:height .2s ease-in-out;position:relative;min-width:fit-content;width:100%;box-sizing:border-box}.ogx__detail-panel-content{padding:var(--ogx-spacing-md);width:100%;min-width:100%;box-sizing:border-box}@keyframes detailPanelExpand{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.ogx__detail-panel{animation:detailPanelExpand .2s ease-out}@media(prefers-color-scheme:dark){.ogx__detail-panel{background:var(--ogx-color-gray-800);border-color:var(--ogx-color-gray-700)}}.ogx-column-resize-handle{position:absolute;top:0;right:-4px;width:8px;height:100%;cursor:col-resize;z-index:10;display:flex;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none}.ogx-column-resize-handle:hover .ogx-column-resize-handle__line,.ogx-column-resize-handle--dragging .ogx-column-resize-handle__line{background:var(--ogx-color-primary);opacity:1}.ogx-column-resize-handle__line{width:2px;height:100%;background:var(--ogx-color-gray-300);opacity:0;transition:opacity var(--ogx-transition-duration-fast) var(--ogx-transition-easing)}.ogx-column-resize-handle--dragging{cursor:col-resize}.ogx__header-cell:hover .ogx-column-resize-handle__line{opacity:.5}.ogx-column-visibility-panel{background:var(--ogx-overlay-background, var(--ogx-color-white));border:var(--ogx-border-width-thin) solid var(--ogx-overlay-border, var(--ogx-border-color));border-radius:var(--ogx-border-radius-sm);min-width:250px;max-width:350px;box-shadow:var(--ogx-shadow-lg);display:flex;flex-direction:column}.ogx-column-visibility-panel__search-section{padding:var(--ogx-spacing-sm) var(--ogx-spacing-md);border-bottom:var(--ogx-border-width-thin) solid var(--ogx-overlay-border, var(--ogx-border-color))}.ogx-column-visibility-panel__search-container{display:flex;align-items:center;padding:6px var(--ogx-spacing-sm);border:2px solid var(--ogx-overlay-border, var(--ogx-color-primary));border-radius:var(--ogx-border-radius-md);gap:var(--ogx-spacing-sm);color:var(--ogx-overlay-text, var(--ogx-color-gray-500));transition:border-color var(--ogx-transition-duration-fast) var(--ogx-transition-easing)}.ogx-column-visibility-panel__search-container:focus-within{border-color:var(--ogx-color-primary-dark)}.ogx-column-visibility-panel__search-input{border:none;background:none;outline:none;font-family:inherit;font-size:var(--ogx-font-size-md);color:var(--ogx-overlay-text, var(--ogx-color-gray-900));flex:1}.ogx-column-visibility-panel__search-input::placeholder{color:var(--ogx-overlay-text, var(--ogx-color-gray-400));opacity:.6}.ogx-column-visibility-panel__list{max-height:350px;overflow-y:auto;padding:var(--ogx-spacing-sm) 0}.ogx-column-visibility-panel__item{display:flex;align-items:center;gap:var(--ogx-spacing-sm);padding:var(--ogx-spacing-xs) var(--ogx-spacing-sm) var(--ogx-spacing-xs) var(--ogx-spacing-xs);transition:background var(--ogx-transition-duration-fast) var(--ogx-transition-easing);-webkit-user-select:none;user-select:none}.ogx-column-visibility-panel__item:hover:not(.ogx-column-visibility-panel__item--disabled){background:var(--ogx-overlay-item-hover-bg, var(--ogx-color-gray-50))}.ogx-column-visibility-panel__item--drag-over{background:var(--ogx-color-primary-light, rgba(59, 130, 246, .08));border-top:2px solid var(--ogx-color-primary)}.ogx-column-visibility-panel__item--disabled{opacity:.5}.ogx-column-visibility-panel__drag-handle-wrapper{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:20px;height:100%;cursor:grab;color:var(--ogx-overlay-text, var(--ogx-color-gray-400));border-radius:3px;opacity:.6;transition:color var(--ogx-transition-duration-fast) var(--ogx-transition-easing),background var(--ogx-transition-duration-fast) var(--ogx-transition-easing),opacity var(--ogx-transition-duration-fast) var(--ogx-transition-easing)}.ogx-column-visibility-panel__drag-handle-wrapper:hover{opacity:1;color:var(--ogx-overlay-text, var(--ogx-color-gray-600));background:var(--ogx-overlay-item-hover-bg, var(--ogx-color-gray-100))}.ogx-column-visibility-panel__drag-handle-wrapper:active{cursor:grabbing;color:var(--ogx-color-primary)}.ogx-column-visibility-panel__drag-handle{display:block;pointer-events:none}.ogx-column-visibility-panel__label{font-size:var(--ogx-font-size-xs);color:var(--ogx-overlay-text, var(--ogx-color-gray-900));-webkit-user-select:none;user-select:none}.ogx-column-visibility-panel__footer{border-top:var(--ogx-border-width-thin) solid var(--ogx-overlay-border, var(--ogx-border-color));padding:var(--ogx-spacing-sm);display:flex;justify-content:space-between;align-items:center}.ogx-column-visibility-panel__reset-btn{color:var(--ogx-overlay-text, var(--ogx-color-gray-400));background:none;border:none;font-family:inherit;font-weight:600;font-size:13px;letter-spacing:.05em;text-transform:uppercase;cursor:pointer;transition:color var(--ogx-transition-duration-fast) var(--ogx-transition-easing)}.ogx-column-visibility-panel__reset-btn:hover{color:var(--ogx-color-primary, var(--ogx-color-gray-600))}.ogx-quick-filter{width:100%;max-width:400px}.ogx-quick-filter__clear{background:none;border:none;padding:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--ogx-color-gray-500);transition:color var(--ogx-transition-duration-fast) var(--ogx-transition-easing);border-radius:var(--ogx-border-radius-sm)}.ogx-quick-filter__clear:hover{color:var(--ogx-color-gray-700);background:var(--ogx-color-gray-100)}.ogx-quick-filter__clear:active{color:var(--ogx-color-gray-900)}.ogx-button{display:inline-flex;align-items:center;justify-content:center;font-family:var(--ogx-font-family);font-weight:var(--ogx-font-weight-medium);line-height:var(--ogx-line-height-normal);border-radius:var(--ogx-border-radius-md);transition:all var(--ogx-transition-duration-fast) var(--ogx-transition-easing);cursor:pointer;-webkit-user-select:none;user-select:none}.ogx-button--small{padding:var(--ogx-spacing-xs) var(--ogx-spacing-sm);font-size:var(--ogx-font-size-sm);min-height:28px}.ogx-button--medium{padding:var(--ogx-spacing-sm) var(--ogx-spacing-md);font-size:var(--ogx-font-size-md);min-height:36px}.ogx-button--large{padding:var(--ogx-spacing-md) var(--ogx-spacing-lg);font-size:var(--ogx-font-size-lg);min-height:44px}.ogx-button--text{background:transparent;border:none;color:var(--ogx-grid-row-text)}.ogx-button--text.ogx-button--primary{color:var(--ogx-color-primary)}.ogx-button--text.ogx-button--secondary{color:var(--ogx-color-secondary)}.ogx-button--text:hover:not(.ogx-button--disabled){background:var(--ogx-grid-header-hover-background, var(--ogx-color-gray-100))}.ogx-button--text.ogx-button--primary:hover:not(.ogx-button--disabled){background:var(--ogx-color-primary-light)}.ogx-button--outlined{background:transparent;border:var(--ogx-border-width-thin) solid var(--ogx-border-color);color:var(--ogx-grid-row-text)}.ogx-button--outlined.ogx-button--primary{border-color:var(--ogx-color-primary);color:var(--ogx-color-primary)}.ogx-button--outlined.ogx-button--secondary{border-color:var(--ogx-color-secondary);color:var(--ogx-color-secondary)}.ogx-button--outlined:hover:not(.ogx-button--disabled){background:var(--ogx-grid-header-hover-background, var(--ogx-color-gray-100));border-color:var(--ogx-border-color-hover)}.ogx-button--contained{background:var(--ogx-color-gray-200);border:none;color:var(--ogx-grid-row-text)}.ogx-button--contained.ogx-button--primary{background:var(--ogx-color-primary);color:var(--ogx-color-white)}.ogx-button--contained.ogx-button--secondary{background:var(--ogx-color-secondary);color:var(--ogx-color-white)}.ogx-button--contained:hover:not(.ogx-button--disabled){background:var(--ogx-color-gray-300)}.ogx-button--contained.ogx-button--primary:hover:not(.ogx-button--disabled){background:var(--ogx-color-primary-dark)}.ogx-button--disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.ogx-button:focus-visible{outline:2px solid var(--ogx-color-primary);outline-offset:2px}.ogx-checkbox-wrapper{display:inline-flex;align-items:center;cursor:pointer;-webkit-user-select:none;user-select:none;font-family:var(--ogx-font-family)}.ogx-checkbox-wrapper--disabled{opacity:.6;cursor:not-allowed}.ogx-checkbox__input{appearance:none;position:absolute;opacity:0;width:0;height:0}.ogx-checkbox__box{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border:1.5px solid var(--ogx-checkbox-border, var(--ogx-color-gray-400));border-radius:4px;background:var(--ogx-checkbox-bg, var(--ogx-color-white));transition:all .2s cubic-bezier(.4,0,.2,1);color:#fff;flex-shrink:0}.ogx-checkbox__icon{width:12px;height:12px;fill:currentColor;transform:scale(0);transition:transform .2s cubic-bezier(.4,0,.2,1)}.ogx-checkbox__label{margin-left:var(--ogx-spacing-sm);font-size:var(--ogx-font-size-sm);color:var(--ogx-grid-row-text, var(--ogx-color-gray-700));line-height:1}.ogx-checkbox__input:checked+.ogx-checkbox__box{background:var(--ogx-color-primary);border-color:var(--ogx-color-primary)}.ogx-checkbox__input:checked+.ogx-checkbox__box .ogx-checkbox__icon{transform:scale(1)}.ogx-checkbox__input:indeterminate+.ogx-checkbox__box{background:var(--ogx-color-primary);border-color:var(--ogx-color-primary)}.ogx-checkbox__input:indeterminate+.ogx-checkbox__box .ogx-checkbox__icon{transform:scale(1)}.ogx-checkbox-wrapper:hover:not(.ogx-checkbox-wrapper--disabled) .ogx-checkbox__box{border-color:var(--ogx-color-primary);box-shadow:0 0 0 4px var(--ogx-color-primary-light)}.ogx-checkbox__input:focus-visible+.ogx-checkbox__box{border-color:var(--ogx-color-primary);box-shadow:0 0 0 4px var(--ogx-color-primary-focus)}.ogx-checkbox-wrapper--disabled .ogx-checkbox__box{background:var(--ogx-color-gray-100);border-color:var(--ogx-color-gray-300);color:var(--ogx-color-gray-400)}.ogx-drag-handle{display:flex;align-items:center;justify-content:center;cursor:grab;color:var(--ogx-grid-header-text);padding:0 4px;opacity:.5;transition:opacity .2s,color .2s}.ogx-drag-handle:hover{opacity:1;color:var(--ogx-grid-row-text)}.ogx-drag-handle:active{cursor:grabbing;color:var(--ogx-color-primary);opacity:1}.ogx-expand-icon{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:none;background:transparent;cursor:pointer;color:var(--ogx-grid-header-text);transition:color .2s ease;border-radius:4px}.ogx-expand-icon:hover{background:transparent;color:var(--ogx-grid-row-text)}.ogx-expand-icon:focus{outline:none}.ogx-expand-icon:focus-visible{outline:2px solid var(--ogx-color-primary);outline-offset:2px}.ogx-expand-icon svg{display:block;transition:transform .2s ease}@media(prefers-color-scheme:dark){.ogx-expand-icon{color:var(--ogx-color-gray-400)}.ogx-expand-icon:hover{background:var(--ogx-color-gray-800);color:var(--ogx-color-gray-100)}}.ogx-input-wrapper{display:inline-flex;align-items:center;position:relative;border:var(--ogx-border-width-thin) solid var(--ogx-border-color);border-radius:var(--ogx-border-radius-md);background:var(--ogx-color-white);transition:all var(--ogx-transition-duration-fast) var(--ogx-transition-easing)}.ogx-input-wrapper--full-width{width:100%}.ogx-input{flex:1;padding:var(--ogx-spacing-sm) var(--ogx-spacing-md);font-family:var(--ogx-font-family);font-size:var(--ogx-font-size-md);line-height:var(--ogx-line-height-normal);color:var(--ogx-color-gray-900);background:transparent;border:none;outline:none}.ogx-input::placeholder{color:var(--ogx-color-gray-400)}.ogx-input__adornment{display:flex;align-items:center;color:var(--ogx-color-gray-600)}.ogx-input__adornment--start{padding-left:var(--ogx-spacing-md)}.ogx-input__adornment--end{padding-right:var(--ogx-spacing-md)}.ogx-input-wrapper:hover:not(.ogx-input-wrapper--disabled){border-color:var(--ogx-border-color-hover)}.ogx-input-wrapper:focus-within:not(.ogx-input-wrapper--disabled){border-color:var(--ogx-color-primary);box-shadow:0 0 0 1px var(--ogx-color-primary)}.ogx-input-wrapper--error{border-color:var(--ogx-color-error)}.ogx-input-wrapper--error:focus-within{box-shadow:0 0 0 1px var(--ogx-color-error)}.ogx-input-wrapper--disabled{background:var(--ogx-color-gray-100);border-color:var(--ogx-color-gray-200);cursor:not-allowed;opacity:.6}.ogx-input-wrapper--disabled .ogx-input{cursor:not-allowed}.ogx-toolbar{display:flex;align-items:center;gap:var(--ogx-spacing-sm);padding:var(--ogx-spacing-sm) var(--ogx-spacing-sm);border-bottom:var(--ogx-border-width-thin) solid var(--ogx-grid-border-color);background:var(--ogx-grid-header-background);min-height:44px;position:relative;z-index:100}.ogx-toolbar__left{display:flex;align-items:center;gap:var(--ogx-spacing-sm)}.ogx-toolbar__spacer{flex:1}.ogx-toolbar__actions{display:flex;align-items:center;gap:var(--ogx-spacing-xs);flex-wrap:nowrap;flex-shrink:0;padding-right:5px}.ogx-toolbar__dropdown-wrapper{position:relative}.ogx-toolbar__icon-btn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;padding:0;border:none;border-radius:8px;background:transparent;color:var(--ogx-grid-header-text);cursor:pointer;transition:background .15s,color .15s;position:relative}.ogx-toolbar__icon-btn:hover{background:var(--ogx-grid-header-hover-background)}.ogx-toolbar__icon-btn--active{background:var(--ogx-grid-header-hover-background);outline:none}.ogx-toolbar__icon-btn:focus{outline:none}.ogx-toolbar__icon-btn:focus-visible{outline:2px solid var(--ogx-color-primary);outline-offset:1px}.ogx-toolbar__dot{position:absolute;top:4px;right:4px;width:8px;height:8px;border-radius:50%;background:var(--ogx-color-success, #10b981);border:1.5px solid var(--ogx-grid-header-background, #fff);pointer-events:none}.ogx-toolbar__panel{position:fixed;width:380px;max-width:calc(100vw - 24px);background:var(--ogx-overlay-background, var(--ogx-grid-background));border:var(--ogx-border-width-thin) solid var(--ogx-overlay-border, var(--ogx-grid-border-color));border-radius:var(--ogx-border-radius-lg);box-shadow:var(--ogx-overlay-shadow, var(--ogx-shadow-lg));z-index:9999;overflow:hidden;animation:ogx-panel-in .15s ease-out}.ogx-toolbar__panel-header{display:flex;align-items:center;justify-content:space-between;padding:var(--ogx-spacing-sm) var(--ogx-spacing-md);border-bottom:var(--ogx-border-width-thin) solid var(--ogx-overlay-border, var(--ogx-grid-border-color));background:var(--ogx-grid-header-background)}.ogx-toolbar__panel-title{display:flex;align-items:center;gap:var(--ogx-spacing-xs);font-family:var(--ogx-font-family);font-size:var(--ogx-font-size-sm);font-weight:600;color:var(--ogx-grid-header-text)}.ogx-toolbar__clear-btn{padding:2px 8px;border:var(--ogx-border-width-thin) solid var(--ogx-border-color);border-radius:var(--ogx-border-radius-sm);background:transparent;color:var(--ogx-color-error, #ef4444);font-family:var(--ogx-font-family);font-size:var(--ogx-font-size-xs);font-weight:500;cursor:pointer;transition:background .15s,border-color .15s}.ogx-toolbar__clear-btn:hover{background:var(--ogx-toolbar-btn-danger-bg, rgba(239, 68, 68, .08));border-color:var(--ogx-color-error, #ef4444)}.ogx-toolbar__close-btn{padding:2px 10px;border:var(--ogx-border-width-thin) solid var(--ogx-border-color);border-radius:var(--ogx-border-radius-sm);background:transparent;color:var(--ogx-grid-header-text);font-family:var(--ogx-font-family);font-size:var(--ogx-font-size-xs);font-weight:500;cursor:pointer;transition:background .15s,border-color .15s}.ogx-toolbar__close-btn:hover{background:var(--ogx-grid-header-hover-background);border-color:var(--ogx-color-primary);color:var(--ogx-color-primary)}.ogx-toolbar__panel-body{padding:var(--ogx-spacing-xs) 0;max-height:360px;overflow-y:auto}.ogx-toolbar__empty{padding:var(--ogx-spacing-md) var(--ogx-spacing-md);font-family:var(--ogx-font-family);font-size:var(--ogx-font-size-sm);color:var(--ogx-grid-header-text);line-height:1.5;text-align:center}.ogx-toolbar__empty code{font-family:var(--ogx-font-family-mono);font-size:.9em;background:var(--ogx-grid-header-background);padding:1px 4px;border-radius:3px}.ogx-toolbar__agg-row{display:flex;align-items:center;gap:var(--ogx-spacing-md);padding:8px var(--ogx-spacing-md);border-bottom:var(--ogx-border-width-thin) solid var(--ogx-overlay-border, var(--ogx-grid-border-color));transition:background .1s}.ogx-toolbar__agg-row:last-child{border-bottom:none}.ogx-toolbar__agg-row:hover{background:var(--ogx-overlay-item-hover-bg, var(--ogx-grid-row-hover-background))}.ogx-toolbar__agg-label{flex:0 0 100px;font-family:var(--ogx-font-family);font-size:var(--ogx-font-size-xs);font-weight:500;color:var(--ogx-grid-row-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ogx-toolbar__agg-pills{display:flex;gap:4px;flex-wrap:wrap}.ogx-toolbar__pill{display:inline-flex;align-items:center;padding:3px 6px;border:var(--ogx-border-width-thin) solid var(--ogx-overlay-border, var(--ogx-border-color));border-radius:999px;background:transparent;color:var(--ogx-grid-row-text);font-family:var(--ogx-font-family-mono, monospace);font-size:10px;font-weight:500;cursor:pointer;text-transform:uppercase;letter-spacing:.03em;transition:background .15s,border-color .15s,color .15s;line-height:1;white-space:nowrap}.ogx-toolbar__pill:hover{background:var(--ogx-grid-header-hover-background);border-color:var(--ogx-color-primary);color:var(--ogx-color-primary)}.ogx-toolbar__pill--active{background:var(--ogx-toolbar-chip-active-bg, var(--ogx-color-primary));border-color:var(--ogx-toolbar-chip-active-bg, var(--ogx-color-primary));color:var(--ogx-toolbar-chip-active-text, #fff);font-weight:700}.ogx-toolbar__pill--active:hover{background:var(--ogx-toolbar-btn-primary-hover, var(--ogx-color-primary-dark));border-color:var(--ogx-toolbar-btn-primary-hover, var(--ogx-color-primary-dark));color:var(--ogx-toolbar-btn-primary-text, #fff)}.ogx-pivot-panel{position:fixed;width:440px;max-width:calc(100vw - 24px);background:var(--ogx-overlay-background, var(--ogx-grid-background));border:var(--ogx-border-width-thin) solid var(--ogx-overlay-border, var(--ogx-grid-border-color));border-radius:var(--ogx-border-radius-lg);box-shadow:var(--ogx-overlay-shadow, var(--ogx-shadow-lg));z-index:9999;overflow:hidden;animation:ogx-panel-in .15s ease-out;font-family:var(--ogx-font-family)}@keyframes ogx-panel-in{0%{opacity:0;transform:translateY(-6px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.ogx-pivot-panel__header{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:var(--ogx-border-width-thin) solid var(--ogx-overlay-border, var(--ogx-grid-border-color));background:var(--ogx-grid-header-background)}.ogx-pivot-panel__title{display:flex;align-items:center;gap:6px;font-size:var(--ogx-font-size-sm);font-weight:600;color:var(--ogx-grid-header-text)}.ogx-pivot-panel__reset-btn{padding:2px 8px;border:var(--ogx-border-width-thin) solid var(--ogx-border-color);border-radius:var(--ogx-border-radius-sm);background:transparent;color:var(--ogx-color-error, #ef4444);font-family:var(--ogx-font-family);font-size:var(--ogx-font-size-xs);font-weight:500;cursor:pointer;transition:background .15s,border-color .15s}.ogx-pivot-panel__reset-btn:hover{background:var(--ogx-toolbar-btn-danger-bg, rgba(239, 68, 68, .08));color:var(--ogx-toolbar-btn-danger-text, #ef4444);border-color:var(--ogx-color-error, #ef4444)}.ogx-pivot-panel__body{padding:10px 14px;display:flex;flex-direction:column;gap:14px;max-height:300px;overflow-y:auto}.ogx-pivot-zone{display:flex;flex-direction:column;gap:6px}.ogx-pivot-zone__label{display:flex;align-items:center;gap:6px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--ogx-color-gray-400, #94a3b8)}.ogx-pivot-zone__dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.ogx-pivot-zone__dot--row{background:var(--ogx-color-primary, #3b82f6)}.ogx-pivot-zone__dot--col{background:var(--ogx-color-secondary, #8b5cf6)}.ogx-pivot-zone__dot--value{background:var(--ogx-color-success, #10b981)}.ogx-pivot-chips{display:flex;flex-wrap:wrap;gap:5px;min-height:30px;padding:5px 8px;border:var(--ogx-border-width-thin) solid var(--ogx-overlay-border, var(--ogx-grid-border-color));border-radius:var(--ogx-border-radius-md);background:var(--ogx-grid-header-background)}.ogx-pivot-chip{display:inline-flex;align-items:center;gap:4px;padding:3px 8px 3px 10px;border-radius:999px;font-size:12px;font-weight:500;line-height:1;white-space:nowrap}.ogx-pivot-chip--row{background:#3b82f61f;color:var(--ogx-color-primary-dark, #2563eb)}.ogx-pivot-chip--col{background:#8b5cf61f;color:var(--ogx-color-secondary-dark, #7c3aed)}.ogx-pivot-chip--value{background:var(--ogx-toolbar-chip-active-bg, rgba(16,185,129,.12));color:var(--ogx-toolbar-chip-active-text, #047857)}.ogx-pivot-chip__remove{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;border-radius:50%;border:none;background:transparent;cursor:pointer;opacity:.6;font-size:11px;font-weight:700;line-height:1;padding:0;color:inherit;transition:opacity .1s}.ogx-pivot-chip__remove:hover{opacity:1}.ogx-pivot-chip__fn-select{border:none;background:transparent;font-size:11px;font-weight:700;color:inherit;cursor:pointer;padding:0 2px;margin-left:2px;font-family:var(--ogx-font-family-mono, monospace)}.ogx-pivot-chips--empty:after{content:attr(data-placeholder);font-size:11px;color:var(--ogx-color-gray-400, #94a3b8);align-self:center;pointer-events:none}.ogx-pivot-panel__fields-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--ogx-color-gray-400, #94a3b8);margin-bottom:4px}.ogx-pivot-fields{display:flex;flex-wrap:wrap;gap:5px}.ogx-pivot-field-btn{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border:var(--ogx-border-width-thin) solid var(--ogx-overlay-border, var(--ogx-border-color));border-radius:999px;background:var(--ogx-grid-header-background);color:var(--ogx-grid-row-text);font-family:var(--ogx-font-family);font-size:12px;font-weight:500;cursor:pointer;transition:background .12s,border-color .12s,color .12s;white-space:nowrap}.ogx-pivot-field-btn:hover{background:var(--ogx-color-primary-light, #eff6ff);border-color:var(--ogx-color-primary, #3b82f6);color:var(--ogx-color-primary, #3b82f6)}.ogx-pivot-field-btn--numeric:before{content:"#";font-family:var(--ogx-font-family-mono, monospace);font-size:10px;opacity:.5}.ogx-pivot-field-actions{display:flex;gap:3px}.ogx-pivot-add-btn{display:inline-flex;align-items:center;padding:2px 6px;border:var(--ogx-border-width-thin) solid var(--ogx-border-color);border-radius:var(--ogx-border-radius-sm);background:transparent;font-size:10px;font-weight:600;cursor:pointer;white-space:nowrap;transition:background .1s,border-color .1s,color .1s}.ogx-pivot-add-btn--row{color:var(--ogx-color-primary, #3b82f6)}.ogx-pivot-add-btn--col{color:var(--ogx-color-secondary, #8b5cf6)}.ogx-pivot-add-btn--value{color:var(--ogx-toolbar-chip-active-text, #047857)}.ogx-pivot-add-btn:hover{background:var(--ogx-grid-header-hover-background);border-color:currentColor}.ogx-pivot-panel__divider{border:none;border-top:var(--ogx-border-width-thin) solid var(--ogx-overlay-border, var(--ogx-grid-border-color));margin:0}.ogx-filter__logic-bar{display:flex;align-items:center;gap:6px;padding:8px var(--ogx-spacing-md);border-bottom:var(--ogx-border-width-thin) solid var(--ogx-grid-border-color);background:var(--ogx-grid-header-background)}.ogx-filter__logic-label{font-family:var(--ogx-font-family);font-size:var(--ogx-font-size-xs);font-weight:500;color:var(--ogx-grid-header-text);margin-right:2px}.ogx-filter__logic-pill{display:inline-flex;align-items:center;padding:3px 8px;border:var(--ogx-border-width-thin) solid var(--ogx-border-color);border-radius:999px;background:transparent;color:var(--ogx-grid-row-text);font-family:var(--ogx-font-family-mono, monospace);font-size:10px;font-weight:500;letter-spacing:.04em;text-transform:uppercase;cursor:pointer;transition:background .15s,border-color .15s,color .15s;line-height:1}.ogx-filter__logic-pill:hover{border-color:var(--ogx-color-primary);color:var(--ogx-color-primary)}.ogx-filter__logic-pill--active{background:var(--ogx-toolbar-chip-active-bg, var(--ogx-color-primary));border-color:var(--ogx-toolbar-chip-active-bg, var(--ogx-color-primary));color:var(--ogx-toolbar-chip-active-text, #fff);font-weight:700}.ogx-filter__row{display:flex;align-items:center;gap:var(--ogx-spacing-sm);padding:8px var(--ogx-spacing-md);border-bottom:var(--ogx-border-width-thin) solid var(--ogx-grid-border-color);transition:background .1s;min-height:44px}.ogx-filter__row:last-child{border-bottom:none}.ogx-filter__row:hover{background:var(--ogx-grid-row-hover-background)}.ogx-filter__row--active{background:var(--ogx-overlay-item-selected-bg, rgba(25, 118, 210, .04))}.ogx-filter__row--active:hover{background:var(--ogx-overlay-item-selected-bg, rgba(25, 118, 210, .07));opacity:.9}.ogx-filter__col-label{flex:0 0 140px;font-family:var(--ogx-font-family);font-size:var(--ogx-font-size-xs);font-weight:500;color:var(--ogx-grid-row-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ogx-filter__controls{display:flex;align-items:center;gap:6px;flex:1}.ogx-filter__op-select{padding:5px 24px 5px 8px;border:var(--ogx-border-width-thin) solid var(--ogx-border-color);border-radius:var(--ogx-border-radius-sm);font-family:var(--ogx-font-family-mono, monospace);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;background:var(--ogx-grid-background);color:var(--ogx-grid-row-text);cursor:pointer;outline:none;transition:border-color .15s;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%2394a3b8'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 6px center;min-width:130px}.ogx-filter__op-select:focus-visible{border-color:var(--ogx-color-primary)}.ogx-filter__op-select--active{border-color:var(--ogx-toolbar-input-focus-border, var(--ogx-color-primary));color:var(--ogx-color-primary);font-weight:700}.ogx-filter__value-input{flex:1;min-width:60px;padding:4px 8px;border:var(--ogx-border-width-thin) solid var(--ogx-border-color);border-radius:var(--ogx-border-radius-sm);font-family:var(--ogx-font-family);font-size:var(--ogx-font-size-xs);background:var(--ogx-grid-background);color:var(--ogx-grid-row-text);outline:none;transition:border-color .15s,box-shadow .15s}.ogx-filter__value-input::placeholder{color:var(--ogx-overlay-text, var(--ogx-color-gray-400));opacity:.6}.ogx-filter__value-input:focus{border-color:var(--ogx-toolbar-input-focus-border, var(--ogx-color-primary));box-shadow:var(--ogx-toolbar-input-focus-shadow, 0 0 0 2px rgba(25, 118, 210, .15))}.ogx-filter__value-input--active{border-color:var(--ogx-color-primary)}.ogx-filter__value-select{flex:1;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%2394a3b8'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:28px;cursor:pointer}.ogx-filter__row-clear{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;border:none;border-radius:50%;background:transparent;color:var(--ogx-overlay-text, var(--ogx-color-gray-400));font-size:16px;line-height:1;cursor:pointer;flex-shrink:0;transition:background .15s,color .15s}.ogx-filter__row-clear:hover{background:var(--ogx-toolbar-btn-danger-bg, rgba(239, 68, 68, .08));color:var(--ogx-toolbar-btn-danger-text, #ef4444)}.ogx-filter__empty{padding:var(--ogx-spacing-md);font-family:var(--ogx-font-family);font-size:var(--ogx-font-size-sm);color:var(--ogx-overlay-text, var(--ogx-color-gray-400));opacity:.7;text-align:center}.ogx-toolbar__panel--filter{width:640px;max-width:calc(100vw - 24px)}.ogx-toolbar__panel-body--filter{max-height:420px;overflow-y:auto;padding:0}.ogx-toolbar__panel-count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:var(--ogx-toolbar-btn-primary-bg, var(--ogx-color-primary));color:var(--ogx-toolbar-btn-primary-text, #fff);font-size:10px;font-weight:700;line-height:1;margin-left:4px}.ogx-global-search{display:inline-flex;align-items:center;border-radius:8px;border:1.5px solid transparent;background:transparent;width:34px;height:34px;flex-shrink:0;cursor:pointer;overflow:hidden;transition:width .25s cubic-bezier(.4,0,.2,1),background .2s ease,border-color .2s ease,box-shadow .2s ease}.ogx-global-search:not(.ogx-global-search--expanded):hover{background:var(--ogx-grid-header-hover-background, #f1f5f9)}.ogx-global-search--expanded{width:220px;border-color:var(--ogx-toolbar-input-focus-border, var(--ogx-color-primary, #3b82f6));background:var(--ogx-toolbar-input-bg, var(--ogx-grid-background, #fff));box-shadow:var(--ogx-toolbar-input-focus-shadow, 0 0 0 3px rgba(59, 130, 246, .12));cursor:default;overflow:hidden}.ogx-global-search__icon-wrapper{flex:0 0 34px;width:34px;height:34px;display:flex;align-items:center;justify-content:center;color:var(--ogx-grid-header-text, #64748b);pointer-events:none;flex-shrink:0;transition:color .15s}.ogx-global-search--expanded .ogx-global-search__icon-wrapper{color:var(--ogx-color-primary, #3b82f6)}.ogx-global-search:focus-within .ogx-global-search__icon-wrapper{color:var(--ogx-color-primary, #3b82f6)}.ogx-global-search__input{flex:1 1 auto;min-width:0;height:100%;padding:0 28px 0 0;border:none;background:transparent;font-family:var(--ogx-font-family, system-ui, sans-serif);font-size:var(--ogx-font-size-sm, 13px);color:var(--ogx-grid-row-text, #1e293b);outline:none;opacity:0;pointer-events:none;transition:opacity .18s ease}.ogx-global-search--expanded .ogx-global-search__input{opacity:1;pointer-events:auto}.ogx-global-search__input::placeholder{color:var(--ogx-color-gray-400, #94a3b8);font-size:var(--ogx-font-size-sm, 13px)}.ogx-global-search__clear{position:absolute;right:6px;top:50%;transform:translateY(-50%);background:transparent;border:none;color:var(--ogx-grid-header-text, #94a3b8);cursor:pointer;padding:4px;border-radius:50%;display:flex;align-items:center;justify-content:center;z-index:3;line-height:0;transition:background .15s,color .15s}.ogx-global-search__clear:hover{background:#ef444414;color:#ef4444}.ogx-column-menu{position:fixed;background:var(--ogx-overlay-background, #fff);box-shadow:var(--ogx-overlay-shadow, 0 4px 6px -1px rgba(0,0,0,.08), 0 2px 4px -1px rgba(0,0,0,.06), 0 0 0 1px rgba(0,0,0,.06));border-radius:var(--ogx-border-radius-md, 8px);padding:4px 0;min-width:190px;z-index:1300}.ogx-menu-section-label{padding:6px 14px 2px;font-family:var(--ogx-font-family, system-ui, sans-serif);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--ogx-color-gray-400, #94a3b8);-webkit-user-select:none;user-select:none}.ogx-menu-item{display:flex;align-items:center;width:100%;padding:7px 14px;border:none;background:transparent;cursor:pointer;font-family:var(--ogx-font-family, system-ui, sans-serif);font-size:var(--ogx-font-size-xs);color:var(--ogx-overlay-text, #334155);text-align:left;gap:6px;transition:background .1s}.ogx-menu-item:hover{background:var(--ogx-overlay-item-hover-bg, #f8fafc);color:var(--ogx-overlay-item-hover-text, #0f172a)}.ogx-menu-item--active{color:var(--ogx-overlay-item-selected-text, #1976d2);font-weight:600}.ogx-menu-item--active:hover{background:var(--ogx-overlay-item-selected-bg, rgba(25, 118, 210, .05))}.ogx-menu-item__indicator{flex:0 0 14px;display:flex;align-items:center;justify-content:center;color:var(--ogx-overlay-item-selected-text, #1976d2)}.ogx-menu-item__icon{flex:0 0 16px;display:flex;align-items:center;justify-content:center;color:var(--ogx-color-gray-400, #94a3b8);transition:color .1s}.ogx-menu-item--active .ogx-menu-item__icon{color:var(--ogx-color-primary, #1976d2)}.ogx-menu-divider{height:1px;background:var(--ogx-overlay-border, #e2e8f0);margin:4px 0}.ogx-list-view{display:flex;flex-direction:column;width:100%;flex:1;min-height:0;overflow:hidden}.ogx-list-view__rows{flex:1;overflow-y:auto;overflow-x:hidden;min-height:0}.ogx-list-view__row{display:flex;align-items:stretch;border-bottom:var(--ogx-border-width-thin) solid var(--ogx-grid-border-color);background:var(--ogx-grid-background);cursor:pointer;transition:background .1s;min-height:72px}.ogx-list-view__row:hover{background:var(--ogx-color-gray-50, #f8fafc)}.ogx-list-view__row--selected{background:var(--ogx-selection-bg, rgba(59, 130, 246, .08))}.ogx-list-view__row--selected:hover{background:var(--ogx-selection-hover-bg, rgba(59, 130, 246, .13))}.ogx-list-view__checkbox{display:flex;align-items:center;justify-content:center;width:48px;flex-shrink:0;border-right:var(--ogx-border-width-thin) solid var(--ogx-grid-border-color)}.ogx-list-view__checkbox input[type=checkbox]{width:16px;height:16px;cursor:pointer;accent-color:var(--ogx-color-primary)}.ogx-list-view__cell{flex:1;padding:12px 16px;display:flex;align-items:center;min-width:0;font-family:var(--ogx-font-family);font-size:var(--ogx-font-size-sm);color:var(--ogx-grid-cell-text)}.ogx-list-view__toolbar{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-bottom:var(--ogx-border-width-thin) solid var(--ogx-grid-border-color);background:var(--ogx-grid-header-background);font-family:var(--ogx-font-family);font-size:var(--ogx-font-size-xs);color:var(--ogx-grid-header-text);flex-shrink:0}.ogx-list-view__empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 24px;gap:8px;font-family:var(--ogx-font-family);font-size:var(--ogx-font-size-sm);color:var(--ogx-text-secondary, #9ca3af)}@media(max-width:768px){.ogx--list-auto .ogx__viewport{display:none}.ogx--list-auto .ogx-list-view{display:flex}}@media(min-width:769px){.ogx--list-auto .ogx-list-view{display:none}}.ogx-col-group-row{display:flex;align-items:stretch;background:var(--ogx-grid-header-background);border-bottom:1px solid var(--ogx-grid-border-color);overflow:hidden;flex-shrink:0;min-height:var(--ogx-header-height, 48px)}.ogx-col-group-cell{display:flex;align-items:center;justify-content:center;flex-shrink:0;box-sizing:border-box;position:relative;overflow:hidden}.ogx-col-group-cell:not(:last-child):after{content:"";position:absolute;right:0;top:25%;height:50%;width:1px;background-color:var(--ogx-color-gray-300, #cbd5e1);opacity:.5}.ogx-col-group-cell--group,.ogx-col-group-cell--filler{background:transparent}.ogx-col-group-cell__label{font-size:.75rem;font-weight:600;color:var(--ogx-color-gray-700, #334155);padding:0 16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none;text-align:center;width:100%}[data-theme=dark] .ogx-col-group-cell__label,.ogx--dark .ogx-col-group-cell__label{color:var(--ogx-color-gray-300, #cbd5e1)}.ogx-tooltip{pointer-events:none;background:var(--ogx-overlay-background, rgba(30, 41, 59, .92));color:var(--ogx-overlay-text, #fff);font-family:var(--ogx-font-family, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif);font-size:10px;font-weight:500;line-height:1.4;padding:3px 6px;border-radius:6px;white-space:nowrap;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;z-index:99999}.ogx-tooltip--top{transform:translate(-50%,-100%);animation:ogx-tooltip-in-top .15s ease-out}.ogx-tooltip--bottom{transform:translate(-50%);animation:ogx-tooltip-in-bottom .15s ease-out}@keyframes ogx-tooltip-in-top{0%{opacity:0;transform:translate(-50%,-95%) scale(.98)}to{opacity:1;transform:translate(-50%,-100%) scale(1)}}@keyframes ogx-tooltip-in-bottom{0%{opacity:0;transform:translate(-50%,-4px) scale(.98)}to{opacity:1;transform:translate(-50%) scale(1)}}
|