handsontable 17.1.0-rc8 → 17.1.0

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.
Files changed (74) hide show
  1. package/CHANGELOG.md +6 -1
  2. package/base.js +2 -2
  3. package/base.mjs +2 -2
  4. package/core.js +13 -5
  5. package/core.mjs +13 -5
  6. package/dist/handsontable.full.js +284 -127
  7. package/dist/handsontable.full.min.js +108 -108
  8. package/dist/handsontable.js +69 -28
  9. package/dist/handsontable.min.js +30 -30
  10. package/dist/languages/all.min.js +1 -1
  11. package/dist/themes/classic.js +2 -2
  12. package/dist/themes/classic.min.js +2 -2
  13. package/dist/themes/horizon.js +2 -2
  14. package/dist/themes/horizon.min.js +2 -2
  15. package/dist/themes/main.js +2 -2
  16. package/dist/themes/main.min.js +2 -2
  17. package/dist/themes/static/variables/colors/ant.js +2 -2
  18. package/dist/themes/static/variables/colors/ant.min.js +2 -2
  19. package/dist/themes/static/variables/colors/classic.js +2 -2
  20. package/dist/themes/static/variables/colors/classic.min.js +2 -2
  21. package/dist/themes/static/variables/colors/horizon.js +2 -2
  22. package/dist/themes/static/variables/colors/horizon.min.js +2 -2
  23. package/dist/themes/static/variables/colors/main.js +2 -2
  24. package/dist/themes/static/variables/colors/main.min.js +2 -2
  25. package/dist/themes/static/variables/colors/material.js +2 -2
  26. package/dist/themes/static/variables/colors/material.min.js +2 -2
  27. package/dist/themes/static/variables/colors/shadcn.js +2 -2
  28. package/dist/themes/static/variables/colors/shadcn.min.js +2 -2
  29. package/dist/themes/static/variables/density.js +2 -2
  30. package/dist/themes/static/variables/density.min.js +2 -2
  31. package/dist/themes/static/variables/helpers/iconsMap.js +2 -2
  32. package/dist/themes/static/variables/helpers/iconsMap.min.js +2 -2
  33. package/dist/themes/static/variables/icons/horizon.js +2 -2
  34. package/dist/themes/static/variables/icons/horizon.min.js +2 -2
  35. package/dist/themes/static/variables/icons/main.js +2 -2
  36. package/dist/themes/static/variables/icons/main.min.js +2 -2
  37. package/dist/themes/static/variables/sizing.js +2 -2
  38. package/dist/themes/static/variables/sizing.min.js +2 -2
  39. package/dist/themes/static/variables/tokens/classic.js +2 -2
  40. package/dist/themes/static/variables/tokens/classic.min.js +2 -2
  41. package/dist/themes/static/variables/tokens/horizon.js +2 -2
  42. package/dist/themes/static/variables/tokens/horizon.min.js +2 -2
  43. package/dist/themes/static/variables/tokens/main.js +2 -2
  44. package/dist/themes/static/variables/tokens/main.min.js +2 -2
  45. package/helpers/dom/element.js +2 -4
  46. package/helpers/dom/element.mjs +2 -4
  47. package/helpers/mixed.js +1 -1
  48. package/helpers/mixed.mjs +1 -1
  49. package/package.json +1 -1
  50. package/plugins/dataProvider/query/pagination.js +6 -3
  51. package/plugins/dataProvider/query/pagination.mjs +17 -7
  52. package/plugins/dialog/dialog.js +2 -1
  53. package/plugins/dialog/dialog.mjs +2 -1
  54. package/plugins/emptyDataState/emptyDataState.js +1 -1
  55. package/plugins/emptyDataState/emptyDataState.mjs +1 -1
  56. package/plugins/pagination/pagination.d.ts +1 -0
  57. package/plugins/pagination/pagination.js +7 -0
  58. package/plugins/pagination/pagination.mjs +7 -0
  59. package/selection/mouseEventHandler.js +12 -2
  60. package/selection/mouseEventHandler.mjs +12 -2
  61. package/styles/handsontable.css +2 -2
  62. package/styles/handsontable.min.css +2 -2
  63. package/styles/handsontableStyles.js +1 -1
  64. package/styles/handsontableStyles.mjs +1 -1
  65. package/styles/ht-icons-horizon.min.css +2 -2
  66. package/styles/ht-icons-main.min.css +2 -2
  67. package/styles/ht-theme-classic-no-icons.min.css +2 -2
  68. package/styles/ht-theme-classic.min.css +2 -2
  69. package/styles/ht-theme-horizon-no-icons.min.css +2 -2
  70. package/styles/ht-theme-horizon.min.css +2 -2
  71. package/styles/ht-theme-main-no-icons.min.css +2 -2
  72. package/styles/ht-theme-main.min.css +2 -2
  73. package/themes/engine/manager.js +50 -2
  74. package/themes/engine/manager.mjs +50 -2
@@ -25,8 +25,8 @@
25
25
  * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM
26
26
  * USE OR INABILITY TO USE THIS SOFTWARE.
27
27
  *
28
- * Version: 17.1.0-rc8
29
- * Release date: 08/05/2026 (built at 08/05/2026 12:05:23)
28
+ * Version: 17.1.0
29
+ * Release date: 19/05/2026 (built at 19/05/2026 14:51:40)
30
30
  */
31
31
  (function webpackUniversalModuleDefinition(root, factory) {
32
32
 
@@ -34258,8 +34258,8 @@ Handsontable.hooks = _core_hooks__rspack_import_10.Hooks.getSingleton();
34258
34258
  Handsontable.CellCoords = _3rdparty_walkontable_src__rspack_import_0["default"];
34259
34259
  Handsontable.CellRange = _3rdparty_walkontable_src__rspack_import_1["default"];
34260
34260
  Handsontable.packageName = 'handsontable';
34261
- Handsontable.buildDate = "08/05/2026 12:05:23";
34262
- Handsontable.version = "17.1.0-rc8";
34261
+ Handsontable.buildDate = "19/05/2026 14:51:40";
34262
+ Handsontable.version = "17.1.0";
34263
34263
  Handsontable.languages = {
34264
34264
  dictionaryKeys: _i18n_registry__rspack_import_11.dictionaryKeys,
34265
34265
  getLanguageDictionary: _i18n_registry__rspack_import_11.getLanguageDictionary,
@@ -35230,6 +35230,7 @@ const deprecationWarns = new Set();
35230
35230
  this.rootGridElement.appendChild(this.rootElement);
35231
35231
  this.rootWrapperElement.appendChild(this.rootGridElement);
35232
35232
  this.rootContainer.appendChild(this.rootWrapperElement);
35233
+ this.rootWrapperElement.__hotInstance = this;
35233
35234
  (0,_helpers_dom_element__rspack_import_2.addClass)(this.rootPortalElement, 'ht-portal');
35234
35235
  this.rootDocument.body.appendChild(this.rootPortalElement);
35235
35236
  }
@@ -35469,7 +35470,9 @@ const deprecationWarns = new Set();
35469
35470
  const selectionSource = selection.getSelectionSource();
35470
35471
  const ignoreScrollSources = [
35471
35472
  'loadData',
35472
- 'updateData'
35473
+ 'updateData',
35474
+ 'deselect',
35475
+ 'shift'
35473
35476
  ];
35474
35477
  if (isLastSelectionLayer && !ignoreScrollSources.includes(selectionSource) && (!preventScrolling.isTouched() || preventScrolling.isTouched() && !preventScrolling.value)) {
35475
35478
  viewportScroller.scrollTo(cellCoords);
@@ -35500,14 +35503,16 @@ const deprecationWarns = new Set();
35500
35503
  'shift',
35501
35504
  'refresh',
35502
35505
  'loadData',
35503
- 'updateData'
35506
+ 'updateData',
35507
+ 'deselect'
35504
35508
  ].includes(selectionSource)) {
35505
35509
  editorManager.closeEditor(null);
35506
35510
  }
35507
35511
  if (![
35508
35512
  'refresh',
35509
35513
  'loadData',
35510
- 'updateData'
35514
+ 'updateData',
35515
+ 'deselect'
35511
35516
  ].includes(selectionSource)) {
35512
35517
  instance.view.render();
35513
35518
  editorManager.prepareEditor();
@@ -35531,7 +35536,10 @@ const deprecationWarns = new Set();
35531
35536
  const { from, to } = cellRanges[selectionLayerLevel];
35532
35537
  this.runHooks('afterSelectionEnd', from.row, from.col, to.row, to.col, selectionLayerLevel);
35533
35538
  this.runHooks('afterSelectionEndByProp', from.row, instance.colToProp(from.col), to.row, instance.colToProp(to.col), selectionLayerLevel);
35534
- if (selection.getSelectionSource() === 'refresh') {
35539
+ if ([
35540
+ 'refresh',
35541
+ 'deselect'
35542
+ ].includes(selection.getSelectionSource())) {
35535
35543
  instance.view.render();
35536
35544
  editorManager.prepareEditor();
35537
35545
  }
@@ -36188,7 +36196,7 @@ const deprecationWarns = new Set();
36188
36196
  focusGridManager.init();
36189
36197
  if ((0,_utils_rootInstance__rspack_import_1.isRootInstance)(this)) {
36190
36198
  (0,_utils_a11yAnnouncer__rspack_import_26.install)(instance.rootPortalElement);
36191
- (0,_helpers_mixed__rspack_import_19._injectProductInfo)(mergedUserSettings.licenseKey, this.rootWrapperElement, "08/05/2026");
36199
+ (0,_helpers_mixed__rspack_import_19._injectProductInfo)(mergedUserSettings.licenseKey, this.rootWrapperElement, "19/05/2026");
36192
36200
  }
36193
36201
  instance.runHooks('init');
36194
36202
  this.render();
@@ -61931,13 +61939,11 @@ function getScrollbarWidth() {
61931
61939
  */ function observeVisibilityChangeOnce(elementToBeObserved, callback) {
61932
61940
  const visibilityObserver = new IntersectionObserver((entries, observer)=>{
61933
61941
  entries.forEach((entry)=>{
61934
- if (entry.isIntersecting && elementToBeObserved.offsetParent !== null) {
61942
+ if (entry.isIntersecting) {
61935
61943
  callback();
61936
- observer.unobserve(elementToBeObserved);
61944
+ observer.disconnect();
61937
61945
  }
61938
61946
  });
61939
- }, {
61940
- root: elementToBeObserved.ownerDocument.body
61941
61947
  });
61942
61948
  visibilityObserver.observe(elementToBeObserved);
61943
61949
  }
@@ -62594,7 +62600,7 @@ const domMessages = {
62594
62600
  function _injectProductInfo(key, element, releaseDate) {
62595
62601
  const hasValidType = !isEmpty(key);
62596
62602
  const isNonCommercial = typeof key === 'string' && (key.toLowerCase() === 'non-commercial-and-evaluation' || key.toLowerCase() === 'ht68e-1f2b7-47158-70b05-0842f');
62597
- const hotVersion = "17.1.0-rc8";
62603
+ const hotVersion = "17.1.0";
62598
62604
  let keyValidityDate;
62599
62605
  let consoleMessageState = 'invalid';
62600
62606
  let domMessageState = 'invalid';
@@ -79348,22 +79354,32 @@ const PAGINATION_PLUGIN_KEY = 'pagination';
79348
79354
  /**
79349
79355
  * Copies enabled Pagination `pageSize` and current page into query parameters.
79350
79356
  *
79351
- * Uses [[Pagination#getCurrentPage]] when present so refetches (e.g. after sort) keep the active page
79352
- * without calling [[Pagination#getPaginationData]] (unsafe before DataProvider registers external-pagination hooks).
79353
- * Falls back to `initialPage` from settings when `getCurrentPage` is missing (tests) or returns an invalid value.
79354
- *
79355
- * @param {{ enabled?: boolean, getSetting: function(string): *, getCurrentPage?: function(): number }|null|undefined} paginationPlugin Pagination plugin instance.
79357
+ * Uses [[Pagination#getCurrentPage]] and [[Pagination#getCurrentPageSize]] when present so refetches
79358
+ * (e.g. after sort) keep the user-selected state without calling [[Pagination#getPaginationData]]
79359
+ * (unsafe before DataProvider registers external-pagination hooks).
79360
+ * Falls back to `pageSize` / `initialPage` from settings when the state getters are missing (tests)
79361
+ * or return a non-numeric value (e.g. `'auto'`).
79362
+ *
79363
+ * @param {{
79364
+ * enabled?: boolean,
79365
+ * getSetting: function(string): *,
79366
+ * getCurrentPage?: function(): number,
79367
+ * getCurrentPageSize?: function(): number | 'auto' | undefined,
79368
+ * }|null|undefined} paginationPlugin Pagination plugin instance.
79356
79369
  * @param {{ page: number, pageSize: number }} queryParameters Target object (mutated).
79357
79370
  * @returns {void}
79358
79371
  */ function applyPaginationToQueryParameters(paginationPlugin, queryParameters) {
79359
79372
  if (!paginationPlugin?.enabled) {
79360
79373
  return;
79361
79374
  }
79362
- const pageSize = paginationPlugin.getSetting('pageSize');
79375
+ const currentPageSize = typeof paginationPlugin.getCurrentPageSize === 'function' ? paginationPlugin.getCurrentPageSize() : undefined;
79376
+ const settingsPageSize = paginationPlugin.getSetting('pageSize');
79363
79377
  const initialPage = paginationPlugin.getSetting('initialPage');
79364
79378
  const currentPage = typeof paginationPlugin.getCurrentPage === 'function' ? paginationPlugin.getCurrentPage() : undefined;
79365
- if (typeof pageSize === 'number') {
79366
- queryParameters.pageSize = pageSize;
79379
+ if (typeof currentPageSize === 'number') {
79380
+ queryParameters.pageSize = currentPageSize;
79381
+ } else if (typeof settingsPageSize === 'number') {
79382
+ queryParameters.pageSize = settingsPageSize;
79367
79383
  }
79368
79384
  if (typeof currentPage === 'number' && currentPage >= 1) {
79369
79385
  queryParameters.page = currentPage;
@@ -80087,7 +80103,8 @@ const SHORTCUTS_CONTEXT_NAME = `plugin:${PLUGIN_KEY}`;
80087
80103
  this.hot.view.render();
80088
80104
  this.#selectionState = null;
80089
80105
  } else {
80090
- this.hot.selectCell(0, 0);
80106
+ this.hot.view.render();
80107
+ this.#selectionState = null;
80091
80108
  }
80092
80109
  this.hot.runHooks('afterDialogHide');
80093
80110
  }
@@ -82160,7 +82177,7 @@ const SHORTCUTS_CONTEXT_NAME = `plugin:${PLUGIN_KEY}`;
82160
82177
  this.hot.view.render();
82161
82178
  this.#selectionState = null;
82162
82179
  } else {
82163
- this.hot.selectCell(0, 0);
82180
+ this.hot.selectCell(0, 0, undefined, undefined, false);
82164
82181
  }
82165
82182
  this.hot.runHooks('afterEmptyDataStateHide');
82166
82183
  }
@@ -108835,6 +108852,13 @@ const AUTO_PAGE_SIZE_WARNING = (0,_helpers_templateLiteralTag__rspack_import_1.t
108835
108852
  return this.#currentPage;
108836
108853
  }
108837
108854
  /**
108855
+ * Returns the current page size from internal pagination state. May be `'auto'`.
108856
+ *
108857
+ * @returns {number | 'auto'} Current page size or `'auto'`.
108858
+ */ getCurrentPageSize() {
108859
+ return this.#pageSize;
108860
+ }
108861
+ /**
108838
108862
  * Allows changing the page for specified page number.
108839
108863
  *
108840
108864
  * @param {number} pageNumber The page number to set (from 1 to N). If `0` is passed, it
@@ -115548,17 +115572,27 @@ __webpack_require__.d(__webpack_exports__, {
115548
115572
  const lastRenderableRange = renderableRange.current();
115549
115573
  if (renderableRange.size() > 1 && !lastRenderableRange.isHeader() && !selection.isMultiple(lastRenderableRange)) {
115550
115574
  const ranges = renderableRange.findAll(lastRenderableRange);
115551
- // if the last selection range is the same as the first one (case when the single cell
115552
- // is selected twice or more) remove duplicate ranges
115575
+ // Mark the selection source as 'deselect' so `afterSetRangeEnd` in core.js skips the
115576
+ // viewport scroll for this dedup-driven refresh. Other side effects (`closeEditor`,
115577
+ // per-range `render` + `prepareEditor`, and the final batched render in
115578
+ // `afterSelectionFinished`) are guarded against the 'deselect' source in the same way
115579
+ // the existing 'refresh' source is handled - so a single batched render still happens
115580
+ // once the refresh completes.
115553
115581
  if (ranges.length === renderableRange.size()) {
115582
+ // if the last selection range is the same as the first one (case when the single cell
115583
+ // is selected twice or more) remove duplicate ranges
115584
+ selection.markSource('deselect');
115554
115585
  selectionRange.pop();
115555
115586
  selection.refresh();
115587
+ selection.markEndSource();
115556
115588
  } else if (ranges.length > 1) {
115589
+ selection.markSource('deselect');
115557
115590
  selectionRange.removeLayers(ranges.map((param)=>{
115558
115591
  let { layer } = param;
115559
115592
  return layer;
115560
115593
  }));
115561
115594
  selection.refresh();
115595
+ selection.markEndSource();
115562
115596
  }
115563
115597
  }
115564
115598
  }
@@ -120667,7 +120701,7 @@ __webpack_require__.r(__webpack_exports__);
120667
120701
  __webpack_require__.d(__webpack_exports__, {
120668
120702
  "default": () => (__rspack_default_export)
120669
120703
  });
120670
- /* eslint-disable max-len, quotes */ /* This file is autogenerated. */ /* export default */ const __rspack_default_export = ("/*!\n * Copyright (c) HANDSONCODE sp. z o. o.\n *\n * HANDSONTABLE is a software distributed by HANDSONCODE sp. z o. o., a Polish corporation based in\n * Gdynia, Poland, at Aleja Zwyciestwa 96-98, registered by the District Court in Gdansk under number\n * 538651, EU tax ID number: PL5862294002, share capital: PLN 62,800.00.\n *\n * This software is protected by applicable copyright laws, including international treaties, and dual-\n * licensed - depending on whether your use for commercial purposes, meaning intended for or\n * resulting in commercial advantage or monetary compensation, or not.\n *\n * If your use is strictly personal or solely for evaluation purposes, meaning for the purposes of testing\n * the suitability, performance, and usefulness of this software outside the production environment,\n * you agree to be bound by the terms included in the \"handsontable-non-commercial-license.pdf\" file.\n *\n * Your use of this software for commercial purposes is subject to the terms included in an applicable\n * license agreement.\n *\n * In any case, you must not make any such use of this software as to develop software which may be\n * considered competitive with this software.\n *\n * UNLESS EXPRESSLY AGREED OTHERWISE, HANDSONCODE PROVIDES THIS SOFTWARE ON AN \"AS IS\"\n * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, AND IN NO EVENT AND UNDER NO\n * LEGAL THEORY, SHALL HANDSONCODE BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY DIRECT,\n * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM\n * USE OR INABILITY TO USE THIS SOFTWARE.\n *\n * Version: 17.1.0-rc8\n * Release date: 08/05/2026 (built at 08/05/2026 12:05:21)\n */\n.ht-root-wrapper {\n font-family: var(--ht-font-family), -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n position: relative;\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.htFocusCatcher {\n display: block !important;\n position: absolute;\n width: 0;\n height: 0;\n margin: 0;\n padding: 0;\n border: 0;\n outline: 0;\n opacity: 0;\n z-index: -1;\n}\n\n.ht-grid {\n flex: 1 1 auto;\n min-height: 0;\n}\n\n.htScrollbarTest {\n scrollbar-width: auto;\n scrollbar-color: var(--ht-scrollbar-thumb-color) var(--ht-scrollbar-track-color);\n}\n\n.htScrollbarSafariTest::-webkit-scrollbar {\n width: 9px;\n height: 9px;\n}\n\n.handsontable {\n font-family: var(--ht-font-family), -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n position: relative;\n font-size: var(--ht-font-size);\n line-height: var(--ht-line-height);\n font-weight: var(--ht-font-weight);\n letter-spacing: var(--ht-letter-spacing);\n color: var(--ht-foreground-color);\n /* Miscellaneous */\n touch-action: manipulation;\n}\n.handsontable .wtHolder {\n scrollbar-width: auto;\n scrollbar-color: var(--ht-scrollbar-thumb-color) var(--ht-scrollbar-track-color);\n}\n.handsontable .wtHolder::-webkit-scrollbar {\n width: 9px;\n height: 9px;\n}\n.handsontable .wtHolder::-webkit-scrollbar-track {\n background: var(--ht-scrollbar-track-color);\n border-radius: var(--ht-scrollbar-border-radius);\n}\n.handsontable .wtHolder::-webkit-scrollbar-thumb {\n background-color: var(--ht-scrollbar-thumb-color);\n border-radius: var(--ht-scrollbar-border-radius);\n}\n.handsontable .wtHolder::-webkit-scrollbar-corner {\n background: var(--ht-scrollbar-track-color);\n border-end-end-radius: var(--ht-scrollbar-border-radius);\n}\n.handsontable.ht-wrapper {\n border-radius: var(--ht-wrapper-border-radius, 0);\n height: 100%;\n width: 100%;\n}\n.handsontable.ht-wrapper:not(.htFirstDatasetColumnNotRendered) td:first-of-type {\n border-inline-start-width: 1px;\n}\n.handsontable.ht-wrapper::before {\n content: \"\";\n display: block;\n position: absolute;\n inset: 0;\n border: var(--ht-wrapper-border-width) solid var(--ht-wrapper-border-color);\n border-radius: var(--ht-wrapper-border-radius, 0);\n z-index: 999;\n pointer-events: none;\n overflow: hidden;\n}\n.handsontable.htGhostTable.htNestedHeaders table {\n border-spacing: 0;\n border-collapse: collapse;\n}\n.handsontable.htGhostTable table thead th {\n border-bottom-width: 0;\n}\n.handsontable.htGhostTable table tbody tr:first-of-type th:first-child,\n.handsontable.htGhostTable table tbody tr:first-of-type td:first-child {\n height: calc(var(--ht-cell-vertical-padding) * 2 + var(--ht-line-height) + 1px);\n}\n.handsontable.htGhostTable table tbody tr th,\n.handsontable.htGhostTable table tbody tr td {\n border-top-width: 0;\n height: calc(var(--ht-cell-vertical-padding) * 2 + var(--ht-line-height) + 1px);\n}\n.handsontable.htHasScrollX:not(.htHorizontallyScrollableByWindow):not(.htScrollbarHidden) .ht_master .wtHolder, .handsontable.htHasScrollY:not(.htVerticallyScrollableByWindow):not(.htScrollbarHidden) .ht_master .wtHolder {\n border-radius: var(--ht-wrapper-border-radius, 0);\n}\n.handsontable:not(.htHorizontallyScrollableByWindow).htPagination .ht_master .wtHolder, .handsontable:not(.htHorizontallyScrollableByWindow).htHasScrollX .ht_master .wtHolder, .handsontable:not(.htHorizontallyScrollableByWindow).htHasScrollY .ht_master .wtHolder, .handsontable:not(.htVerticallyScrollableByWindow).htPagination .ht_master .wtHolder, .handsontable:not(.htVerticallyScrollableByWindow).htHasScrollX .ht_master .wtHolder, .handsontable:not(.htVerticallyScrollableByWindow).htHasScrollY .ht_master .wtHolder {\n background-color: var(--ht-background-color);\n}\n.handsontable tr.ht__row_even th {\n background-color: var(--ht-row-header-even-background-color);\n}\n.handsontable tr.ht__row_even td {\n background-color: var(--ht-row-cell-even-background-color);\n}\n.handsontable tr.ht__row_odd th {\n background-color: var(--ht-row-header-odd-background-color);\n}\n.handsontable tr.ht__row_odd td {\n background-color: var(--ht-row-cell-odd-background-color);\n}\n.handsontable th,\n.handsontable td {\n height: calc(var(--ht-cell-vertical-padding) * 2 + var(--ht-line-height) + 1px);\n padding: var(--ht-cell-vertical-padding) var(--ht-cell-horizontal-padding);\n vertical-align: top;\n border-top-width: 0;\n border-inline-start-width: 0;\n border-inline-end-width: 1px;\n border-bottom-width: 1px;\n border-style: solid;\n font-size: var(--ht-font-size);\n line-height: var(--ht-line-height);\n white-space: pre-wrap;\n overflow: hidden;\n outline: none;\n outline-width: 0;\n empty-cells: show;\n box-sizing: border-box;\n color: var(--ht-foreground-color);\n border-top-color: var(--ht-cell-vertical-border-color);\n border-bottom-color: var(--ht-cell-vertical-border-color);\n border-inline-start-color: var(--ht-cell-horizontal-border-color);\n border-inline-end-color: var(--ht-cell-horizontal-border-color);\n}\n.handsontable th.invisibleSelection,\n.handsontable td.invisibleSelection {\n outline: none;\n}\n.handsontable th.invisibleSelection::selection,\n.handsontable td.invisibleSelection::selection {\n background: transparent;\n}\n.handsontable th {\n position: relative;\n overflow: visible;\n text-align: center;\n font-weight: var(--ht-header-font-weight);\n white-space: nowrap;\n color: var(--ht-header-foreground-color);\n background-color: var(--ht-header-background-color);\n}\n.handsontable th:last-child {\n /* Foundation framework fix */\n border-inline-start-width: 0;\n border-inline-end-width: 1px;\n border-bottom-width: 1px;\n border-inline-end-color: var(--ht-border-color);\n}\n.handsontable th:last-child.ht__active_highlight {\n border-inline-end-color: var(--ht-header-active-border-color);\n}\n.handsontable th:first-child {\n border-inline-start-color: var(--ht-border-color);\n}\n.handsontable th:first-child.ht__active_highlight {\n border-inline-start-color: var(--ht-header-active-border-color);\n}\n.handsontable th:first-child, .handsontable th:nth-child(2) {\n border-inline-start-width: 1px;\n}\n.handsontable th.current {\n box-shadow: inset 0 0 0 1px var(--ht-cell-selection-border-color);\n}\n.handsontable th.active {\n color: var(--ht-header-active-foreground-color);\n background-color: var(--ht-header-active-background-color);\n}\n.handsontable th.ht__highlight {\n color: var(--ht-header-highlighted-foreground-color);\n background-color: var(--ht-header-highlighted-background-color);\n}\n.handsontable th.ht__active_highlight {\n border-color: var(--ht-header-active-border-color);\n color: var(--ht-header-active-foreground-color);\n background-color: var(--ht-header-active-background-color);\n}\n.handsontable tbody tr.ht__row_odd th.ht__highlight, .handsontable tbody tr.ht__row_even th.ht__highlight {\n color: var(--ht-header-row-highlighted-foreground-color);\n background-color: var(--ht-header-row-highlighted-background-color);\n}\n.handsontable tbody tr.ht__row_odd th.ht__active_highlight, .handsontable tbody tr.ht__row_even th.ht__active_highlight {\n color: var(--ht-header-row-active-foreground-color);\n background-color: var(--ht-header-row-active-background-color);\n}\n.handsontable tbody tr:first-of-type th:first-child:empty::after,\n.handsontable tbody tr:first-of-type td:first-child:empty::after {\n content: \"\";\n display: block;\n min-height: var(--ht-line-height);\n}\n.handsontable tbody tr th {\n padding: 0;\n color: var(--ht-header-row-foreground-color);\n background-color: var(--ht-header-row-background-color);\n}\n.handsontable tbody tr th.ht__active_highlight {\n box-shadow: 0 -1px 0 0 var(--ht-header-active-border-color);\n}\n.handsontable tbody tr th .relative {\n padding: var(--ht-cell-vertical-padding) var(--ht-cell-horizontal-padding);\n min-height: 100%;\n}\n.handsontable tbody tr td:first-child {\n border-inline-start-color: var(--ht-border-color);\n}\n.handsontable tbody tr td:last-child {\n border-inline-end-color: var(--ht-border-color);\n}\n.handsontable thead tr th {\n padding: 0;\n}\n.handsontable thead tr th.ht__active_highlight {\n box-shadow: -1px 0 0 0 var(--ht-header-active-border-color);\n}\n.handsontable thead tr th .relative {\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: var(--ht-cell-vertical-padding) var(--ht-cell-horizontal-padding);\n gap: 2px;\n}\n.handsontable thead tr th .relative .colHeader {\n flex: 1 1 auto;\n min-width: 0;\n text-overflow: ellipsis;\n overflow: hidden;\n vertical-align: top;\n}\n.handsontable tr:first-child th,\n.handsontable tr:first-child td {\n border-top-color: var(--ht-border-color);\n border-top-width: 1px;\n}\n.handsontable tr:first-child th.ht__active_highlight,\n.handsontable tr:first-child td.ht__active_highlight {\n border-top-color: var(--ht-header-active-border-color);\n}\n.handsontable tr:last-child th,\n.handsontable tr:last-child td {\n border-bottom-color: var(--ht-border-color);\n}\n.handsontable tr:last-child th.ht__active_highlight,\n.handsontable tr:last-child td.ht__active_highlight {\n border-bottom-color: var(--ht-header-active-border-color);\n}\n.handsontable div[class^=ht_clone] thead .ht__highlight .relative::after {\n content: \"\";\n display: block;\n position: absolute;\n left: -1px;\n right: -1px;\n bottom: -1px;\n height: var(--ht-header-highlighted-shadow-size);\n background-color: var(--ht-accent-color);\n}\n.handsontable div[class^=ht_clone] thead tr:only-of-type .ht__highlight .relative::after {\n bottom: 0;\n}\n.handsontable div[class^=ht_clone] tbody .ht__highlight .relative::after {\n content: \"\";\n display: block;\n position: absolute;\n top: -1px;\n right: -1px;\n bottom: -1px;\n width: var(--ht-header-highlighted-shadow-size);\n background-color: var(--ht-accent-color);\n}\n.handsontable div[class^=ht_clone] td:first-of-type {\n border-inline-start-width: 1px;\n}\n.handsontable thead tr:not(:last-child) th {\n /* Fix for - nested columns with hidden column */\n overflow: hidden;\n}\n.handsontable .hide {\n display: none;\n}\n.handsontable .relative {\n position: relative;\n box-sizing: border-box;\n}\n.handsontable .wtHider {\n width: 0;\n}\n.handsontable .wtSpreader {\n position: relative;\n /* must be 0, otherwise blank space appears in scroll demo after scrolling max to the right */\n width: 0;\n height: auto;\n}\n.handsontable .htAutoSize {\n position: absolute;\n left: -99000px;\n top: -99000px;\n visibility: hidden;\n}\n.handsontable .htTextEllipsis {\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n}\n.handsontable table,\n.handsontable tbody,\n.handsontable thead,\n.handsontable input,\n.handsontable textarea,\n.handsontable div {\n box-sizing: content-box;\n}\n.handsontable input,\n.handsontable textarea {\n min-height: initial;\n}\n.handsontable .htCore {\n width: 0;\n margin: 0;\n border-width: 0;\n border-spacing: 0;\n border-collapse: separate;\n outline-width: 0;\n table-layout: fixed;\n cursor: default;\n background-color: var(--ht-background-color);\n}\n.handsontable col {\n width: 64px;\n}\n.handsontable col.rowHeader {\n width: 64px;\n}\n.handsontable col.hidden {\n width: 0 !important;\n}\n.handsontable span.colHeader, .handsontable span.rowHeader {\n display: inline-block;\n font-size: var(--ht-font-size);\n line-height: var(--ht-line-height);\n}\n.handsontable tr.hidden {\n display: none;\n}\n.handsontable tr.hidden td,\n.handsontable tr.hidden th {\n display: none;\n}\n.handsontable a {\n color: var(--ht-link-color);\n}\n.handsontable a:hover {\n color: var(--ht-link-hover-color);\n}\n.handsontable .ht_clone_top th:nth-child(2) {\n border-inline-start-width: 0;\n border-inline-end-width: 1px;\n}\n.handsontable .ht_clone_top_inline_start_corner th:nth-child(2) {\n border-inline-start-width: 0;\n border-inline-end-width: 1px;\n}\n.handsontable.htRowHeaders thead tr th:nth-child(2) {\n border-inline-start-width: 1px;\n}\n.handsontable .ht_master:not(.innerBorderInlineStart):not(.emptyColumns) tbody tr th,\n.handsontable .ht_master:not(.innerBorderInlineStart):not(.emptyColumns) thead tr th:first-child,\n.handsontable .ht_master:not(.innerBorderInlineStart):not(.emptyColumns) ~ .handsontable:not(.htGhostTable) tbody tr th,\n.handsontable .ht_master:not(.innerBorderInlineStart):not(.emptyColumns) ~ .handsontable:not(.ht_clone_top):not(.htGhostTable) thead tr th:first-child {\n border-inline-end-width: 0;\n border-inline-start-width: 1px;\n}\n.handsontable .ht_master:not(.innerBorderTop):not(.innerBorderBottom) thead tr:last-child th, .handsontable .ht_master:not(.innerBorderTop):not(.innerBorderBottom) ~ .handsontable thead tr:last-child th,\n.handsontable .ht_master:not(.innerBorderTop):not(.innerBorderBottom) thead tr.lastChild th, .handsontable .ht_master:not(.innerBorderTop):not(.innerBorderBottom) ~ .handsontable thead tr.lastChild th {\n border-bottom-width: 0;\n}\n.handsontable.htAutoRowSize .ht_master.innerBorderTop tbody tr:first-child th,\n.handsontable.htAutoRowSize .ht_master.innerBorderTop tbody tr:first-child td {\n border-top-width: 0;\n}\n.handsontable.htAutoRowSize .ht_master.innerBorderTop ~ .ht_clone_inline_start tbody tr:first-child th,\n.handsontable.htAutoRowSize .ht_master.innerBorderTop ~ .ht_clone_inline_start tbody tr:first-child td {\n border-top-width: 0;\n}\n.handsontable .ht_master table.htCore > thead,\n.handsontable .ht_master table.htCore > tbody > tr > th,\n.handsontable .ht_clone_inline_start table.htCore > thead {\n visibility: hidden;\n}\n\n.ht_master,\n.ht_clone_inline_start,\n.ht_clone_top,\n.ht_clone_bottom {\n overflow: hidden;\n}\n.ht_master .wtHolder,\n.ht_clone_inline_start .wtHolder,\n.ht_clone_top .wtHolder,\n.ht_clone_bottom .wtHolder {\n overflow: hidden;\n}\n\n.ht_master .wtHolder {\n overflow: auto;\n}\n\n[dir=rtl].handsontable td[dir=ltr] {\n border-inline-end-width: 0;\n border-inline-start-width: 1px;\n}\n[dir=rtl].handsontable tbody tr td[dir=ltr]:last-child {\n border-inline-start-color: var(--ht-border-color);\n}\n[dir=rtl].handsontable div[class^=ht_clone] tbody .ht__highlight .relative::after {\n right: auto;\n left: -1px;\n}\n\n.handsontable.ht-wrapper:not(.htColumnHeaders) .ht_master .htCore tbody tr:first-child td:first-child {\n border-start-start-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper:not(.htColumnHeaders) .ht_master .htCore tbody tr:first-child td:last-child {\n border-start-end-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper:not(.htColumnHeaders) .ht_clone_top_inline_start_corner .htCore tbody tr:first-child td:first-child {\n border-start-start-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper:not(.htColumnHeaders) .ht_clone_top .htCore tbody tr:first-child td:first-child {\n border-start-start-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper:not(.htColumnHeaders) .ht_clone_top .htCore tbody tr:first-child td:last-child {\n border-start-end-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper:not(.htColumnHeaders) .ht_clone_inline_start .htCore tbody tr:first-child th:first-child,\n.handsontable.ht-wrapper:not(.htColumnHeaders) .ht_clone_inline_start .htCore tbody tr:first-child td:first-child {\n border-start-start-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper .ht_master .htCore {\n border-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper .ht_master .htCore thead tr:first-child th:first-child {\n border-start-start-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper .ht_master .htCore thead tr:first-child th:last-child {\n border-start-end-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper .ht_master .htCore thead tr:last-child th:first-child {\n border-end-start-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper .ht_master .htCore thead tr:last-child th:last-child {\n border-end-end-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper .ht_master .htCore tbody tr:last-child td:first-child {\n border-end-start-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper .ht_master .htCore tbody tr:last-child td:last-child {\n border-end-end-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper .ht_clone_top_inline_start_corner .htCore {\n border-start-start-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper .ht_clone_top_inline_start_corner .htCore thead tr:first-child th:first-child {\n border-start-start-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper .ht_clone_top .htCore {\n border-start-start-radius: var(--ht-wrapper-border-radius);\n border-start-end-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper .ht_clone_top .htCore thead tr:first-child th:first-child {\n border-start-start-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper .ht_clone_top .htCore thead tr:first-child th:last-child {\n border-start-end-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper .ht_clone_inline_start .htCore {\n border-start-start-radius: var(--ht-wrapper-border-radius);\n border-end-start-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper .ht_clone_inline_start .htCore thead tr:first-child th:first-child {\n border-start-start-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper .ht_clone_inline_start .htCore tbody tr:last-child th:first-child,\n.handsontable.ht-wrapper .ht_clone_inline_start .htCore tbody tr:last-child td:first-child {\n border-end-start-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper .ht_clone_bottom_inline_start_corner .htCore {\n border-end-start-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper .ht_clone_bottom_inline_start_corner .htCore tr:last-child th:first-child,\n.handsontable.ht-wrapper .ht_clone_bottom_inline_start_corner .htCore tr:last-child td:first-child {\n border-end-start-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper .ht_clone_bottom .htCore {\n border-end-start-radius: var(--ht-wrapper-border-radius);\n border-end-end-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper .ht_clone_bottom .htCore tr:last-child th:first-child,\n.handsontable.ht-wrapper .ht_clone_bottom .htCore tr:last-child td:first-child {\n border-end-start-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper .ht_clone_bottom .htCore tr:last-child th:last-child,\n.handsontable.ht-wrapper .ht_clone_bottom .htCore tr:last-child td:last-child {\n border-end-end-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper.htHasScrollX .htCore {\n border-end-start-radius: 0;\n border-end-end-radius: 0;\n}\n.handsontable.ht-wrapper.htHasScrollX .htCore thead tr:last-child th:first-child,\n.handsontable.ht-wrapper.htHasScrollX .htCore tbody tr:last-child td:first-child,\n.handsontable.ht-wrapper.htHasScrollX .htCore tbody tr:last-child th:first-child {\n border-end-start-radius: 0 !important;\n}\n.handsontable.ht-wrapper.htHasScrollX .htCore thead tr:last-child th:last-child,\n.handsontable.ht-wrapper.htHasScrollX .htCore tbody tr:last-child td:last-child,\n.handsontable.ht-wrapper.htHasScrollX .htCore tbody tr:last-child th:last-child {\n border-end-end-radius: 0 !important;\n}\n.handsontable.ht-wrapper.htHasScrollY:not(.htVerticallyScrollableByWindow) .htCore {\n border-start-end-radius: 0;\n border-end-end-radius: 0;\n}\n.handsontable.ht-wrapper.htHasScrollY:not(.htVerticallyScrollableByWindow) .htCore thead tr:first-child th:last-child,\n.handsontable.ht-wrapper.htHasScrollY:not(.htVerticallyScrollableByWindow) .htCore tbody tr:first-child td:last-child,\n.handsontable.ht-wrapper.htHasScrollY:not(.htVerticallyScrollableByWindow) .htCore tbody tr:first-child th:last-child {\n border-start-end-radius: 0 !important;\n}\n.handsontable.ht-wrapper.htHasScrollY:not(.htVerticallyScrollableByWindow) .htCore thead tr:last-child th:last-child,\n.handsontable.ht-wrapper.htHasScrollY:not(.htVerticallyScrollableByWindow) .htCore tbody tr:last-child td:last-child,\n.handsontable.ht-wrapper.htHasScrollY:not(.htVerticallyScrollableByWindow) .htCore tbody tr:last-child th:last-child {\n border-end-end-radius: 0 !important;\n}\n\n.handsontable.mobile {\n user-select: none;\n -webkit-tap-highlight-color: transparent;\n -webkit-overflow-scrolling: touch;\n}\n.handsontable.mobile .wtHolder {\n user-select: none;\n -webkit-tap-highlight-color: transparent;\n -webkit-overflow-scrolling: touch;\n}\n.handsontable.mobile .handsontableInput:focus {\n box-shadow: inset 0 0 0 2px var(--ht-accent-color);\n -webkit-appearance: none;\n}\n.handsontable .topSelectionHandle,\n.handsontable .topSelectionHandle-HitArea,\n.handsontable .bottomSelectionHandle,\n.handsontable .bottomSelectionHandle-HitArea {\n inset-inline-start: -10000px;\n inset-inline-end: unset;\n top: -10000px;\n z-index: 9999;\n}\n.handsontable.hide-tween {\n -webkit-animation: opacity-hide 0.2s;\n animation: opacity-hide 0.2s;\n animation-fill-mode: forwards;\n -webkit-animation-fill-mode: forwards;\n}\n.handsontable.show-tween {\n -webkit-animation: opacity-show 0.3s;\n animation: opacity-show 0.3s;\n animation-fill-mode: forwards;\n -webkit-animation-fill-mode: forwards;\n}\n\n.ht_clone_master {\n z-index: 100;\n}\n\n.ht_clone_inline_start {\n z-index: 120;\n}\n\n.ht_clone_bottom {\n z-index: 130;\n}\n\n.ht_clone_bottom_inline_start_corner {\n z-index: 150;\n}\n\n.ht_clone_top {\n z-index: 160;\n}\n\n.ht_clone_top_inline_start_corner {\n z-index: 180;\n}\n\n.ht_editor_hidden {\n z-index: -1;\n}\n\n.ht_editor_visible {\n z-index: 200;\n}\n\n.handsontable td.area {\n position: relative;\n}\n.handsontable td.area::before {\n content: \"\";\n position: absolute;\n inset: 0;\n background: var(--ht-cell-selection-background-color, #1a42e8);\n}\n.handsontable td.area-1 {\n position: relative;\n}\n.handsontable td.area-1::before {\n content: \"\";\n position: absolute;\n inset: 0;\n background: var(--ht-cell-selection-background-color, #1a42e8);\n}\n.handsontable td.area-2 {\n position: relative;\n}\n.handsontable td.area-2::before {\n content: \"\";\n position: absolute;\n inset: 0;\n background: var(--ht-cell-selection-background-color, #1a42e8);\n}\n.handsontable td.area-3 {\n position: relative;\n}\n.handsontable td.area-3::before {\n content: \"\";\n position: absolute;\n inset: 0;\n background: var(--ht-cell-selection-background-color, #1a42e8);\n}\n.handsontable td.area-4 {\n position: relative;\n}\n.handsontable td.area-4::before {\n content: \"\";\n position: absolute;\n inset: 0;\n background: var(--ht-cell-selection-background-color, #1a42e8);\n}\n.handsontable td.area-5 {\n position: relative;\n}\n.handsontable td.area-5::before {\n content: \"\";\n position: absolute;\n inset: 0;\n background: var(--ht-cell-selection-background-color, #1a42e8);\n}\n.handsontable td.area-6 {\n position: relative;\n}\n.handsontable td.area-6::before {\n content: \"\";\n position: absolute;\n inset: 0;\n background: var(--ht-cell-selection-background-color, #1a42e8);\n}\n.handsontable td.area-7 {\n position: relative;\n}\n.handsontable td.area-7::before {\n content: \"\";\n position: absolute;\n inset: 0;\n background: var(--ht-cell-selection-background-color, #1a42e8);\n}\n.handsontable td.area::before {\n opacity: 0.14;\n}\n.handsontable td.area-1::before {\n opacity: 0.21;\n}\n.handsontable td.area-2::before {\n opacity: 0.28;\n}\n.handsontable td.area-3::before {\n opacity: 0.35;\n}\n.handsontable td.area-4::before {\n opacity: 0.42;\n}\n.handsontable td.area-5::before {\n opacity: 0.49;\n}\n.handsontable td.area-6::before {\n opacity: 0.56;\n}\n.handsontable td.area-7::before {\n opacity: 0.63;\n}\n.handsontable td.area {\n border-color: color-mix(in srgb, var(--ht-border-color), var(--ht-foreground-color) 10%);\n}\n.handsontable .wtBorder {\n position: absolute;\n font-size: 0;\n}\n.handsontable .wtBorder:nth-child(1), .handsontable .wtBorder:nth-child(3) {\n z-index: 2;\n}\n.handsontable .wtBorder:nth-child(2), .handsontable .wtBorder:nth-child(4) {\n z-index: 1;\n}\n.handsontable .wtBorder.hidden {\n display: none !important;\n}\n.handsontable .wtBorder.current {\n z-index: 10;\n background-color: var(--ht-cell-selection-border-color) !important;\n}\n.handsontable .wtBorder.area {\n z-index: 8;\n background-color: var(--ht-cell-selection-border-color) !important;\n}\n.handsontable .wtBorder.fill {\n z-index: 6;\n background-color: var(--ht-cell-autofill-fill-border-color, #68696c) !important;\n}\n.handsontable .wtBorder.corner {\n border-radius: var(--ht-cell-autofill-border-radius) !important;\n background-color: var(--ht-cell-autofill-background-color, #1a42e8) !important;\n border-color: var(--ht-cell-autofill-border-color) !important;\n font-size: 0;\n cursor: crosshair;\n z-index: 10;\n}\n.handsontable .wtBorder.corner::after {\n content: \"\";\n position: absolute;\n border-radius: var(--ht-cell-autofill-border-radius);\n inset: min(0px, (var(--ht-cell-autofill-size) - var(--ht-cell-autofill-hit-area-size)) / 2);\n background: transparent;\n}\n.handsontable .wtBorder.corner.wtCornerInlineEndEdge::after {\n inset-inline-end: 0;\n}\n.handsontable .wtBorder.corner.wtCornerBlockEndEdge::after {\n inset-block-end: 0;\n}\n\n.hot-display-license-info {\n font-family: var(--ht-font-family), -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n padding: var(--ht-license-vertical-padding, 16px) var(--ht-license-horizontal-padding, 16px);\n font-size: var(--ht-font-size-small);\n line-height: var(--ht-line-height-small);\n color: var(--ht-license-foreground-color);\n background-color: var(--ht-license-background-color, #f7f7f9);\n text-align: left;\n border: 1px solid var(--ht-border-color, #f7f7f9);\n margin-top: 10px;\n border-radius: var(--ht-wrapper-border-radius);\n}\n.hot-display-license-info a {\n font-size: var(--ht-license-font-size);\n color: var(--ht-link-color);\n}\n.hot-display-license-info a:hover {\n color: var(--ht-link-hover-color);\n}\n\n.handsontable .htAutocompleteArrow {\n position: relative;\n cursor: default;\n width: var(--ht-icon-size);\n height: var(--ht-icon-size);\n font-size: 0;\n float: right;\n top: calc((var(--ht-line-height) - var(--ht-icon-size)) / 2);\n margin-inline-start: calc(var(--ht-gap-size) * 2);\n margin-inline-end: 1px;\n}\n.handsontable .htAutocompleteArrow::after {\n content: \"\";\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n opacity: 0.6;\n}\n\n[dir=rtl].handsontable .htAutocompleteArrow {\n float: left;\n}\n\n.handsontable .htCheckboxRendererInput {\n position: relative;\n display: inline-block;\n width: var(--ht-checkbox-size);\n height: var(--ht-checkbox-size);\n margin: 0;\n vertical-align: middle;\n cursor: pointer;\n margin-top: -2px;\n outline: none;\n}\n.handsontable .htCheckboxRendererInput:first-child {\n margin-inline-end: var(--ht-gap-size);\n}\n.handsontable .htCheckboxRendererInput:last-child {\n margin-inline-start: var(--ht-gap-size);\n}\n.handsontable .htCheckboxRendererInput::before {\n content: \"\";\n display: inline-block;\n position: absolute;\n top: 0;\n left: 0;\n width: var(--ht-checkbox-size);\n height: var(--ht-checkbox-size);\n border-radius: var(--ht-checkbox-border-radius);\n border: 1px solid var(--ht-checkbox-border-color);\n background-color: var(--ht-checkbox-background-color);\n box-sizing: border-box;\n pointer-events: none;\n transition: all var(--ht-table-transition) ease-in-out;\n}\n.handsontable .htCheckboxRendererInput::after {\n content: \"\";\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n color: var(--ht-checkbox-icon-color);\n pointer-events: none;\n width: var(--ht-checkbox-size) !important;\n height: var(--ht-checkbox-size) !important;\n}\n.handsontable .htCheckboxRendererInput:checked::before {\n border-color: var(--ht-checkbox-checked-border-color);\n background-color: var(--ht-checkbox-checked-background-color);\n}\n.handsontable .htCheckboxRendererInput:checked::after {\n color: var(--ht-checkbox-checked-icon-color);\n}\n.handsontable .htCheckboxRendererInput:checked:disabled::before {\n border-color: var(--ht-checkbox-checked-disabled-border-color);\n background-color: var(--ht-checkbox-checked-disabled-background-color);\n}\n.handsontable .htCheckboxRendererInput:checked:disabled::after {\n color: var(--ht-checkbox-checked-disabled-icon-color);\n}\n.handsontable .htCheckboxRendererInput:checked:focus::before {\n border-color: var(--ht-checkbox-checked-focus-border-color);\n background-color: var(--ht-checkbox-checked-focus-background-color);\n}\n.handsontable .htCheckboxRendererInput:checked:focus::after {\n color: var(--ht-checkbox-checked-focus-icon-color);\n}\n.handsontable .htCheckboxRendererInput:focus::before {\n border-color: var(--ht-checkbox-focus-border-color);\n background-color: var(--ht-checkbox-focus-background-color);\n outline: 1px solid var(--ht-checkbox-focus-ring-color);\n}\n.handsontable .htCheckboxRendererInput:focus::after {\n color: var(--ht-checkbox-focus-icon-color);\n}\n.handsontable .htCheckboxRendererInput:disabled {\n cursor: initial;\n}\n.handsontable .htCheckboxRendererInput:disabled::before {\n border-color: var(--ht-checkbox-disabled-border-color);\n background-color: var(--ht-checkbox-disabled-background-color);\n}\n.handsontable .htCheckboxRendererInput:disabled::after {\n color: var(--ht-checkbox-disabled-icon-color);\n}\n.handsontable .htCheckboxRendererInput:indeterminate::before {\n border-color: var(--ht-checkbox-indeterminate-border-color);\n background-color: var(--ht-checkbox-indeterminate-background-color);\n}\n.handsontable .htCheckboxRendererInput:indeterminate::after {\n color: var(--ht-checkbox-indeterminate-icon-color);\n}\n.handsontable .htCheckboxRendererInput:indeterminate:disabled::before {\n border-color: var(--ht-checkbox-indeterminate-disabled-border-color);\n background-color: var(--ht-checkbox-indeterminate-disabled-background-color);\n}\n.handsontable .htCheckboxRendererInput:indeterminate:disabled::after {\n color: var(--ht-checkbox-indeterminate-disabled-icon-color);\n}\n.handsontable .htCheckboxRendererInput:indeterminate:focus::before {\n border-color: var(--ht-checkbox-indeterminate-focus-border-color);\n background-color: var(--ht-checkbox-indeterminate-focus-background-color);\n}\n.handsontable .htCheckboxRendererInput:indeterminate:focus::after {\n color: var(--ht-checkbox-indeterminate-focus-icon-color);\n}\n.handsontable .htCheckboxRendererInput.noValue {\n opacity: 0.5;\n}\n.handsontable .htCheckboxRendererLabel {\n display: inline-block;\n position: relative;\n font-size: inherit;\n line-height: inherit;\n cursor: pointer;\n color: inherit;\n margin: 0;\n}\n.handsontable .htCheckboxRendererLabel.fullWidth {\n width: 100%;\n}\n\n.handsontable .htPlaceholder {\n color: var(--ht-placeholder-color);\n}\n.handsontable .htDimmed {\n color: var(--ht-read-only-color) !important;\n background-color: var(--ht-cell-read-only-background-color) !important;\n}\n.handsontable .htLeft {\n text-align: left;\n}\n.handsontable .htCenter {\n text-align: center;\n}\n.handsontable .htRight {\n text-align: right;\n}\n.handsontable .htJustify {\n text-align: justify;\n}\n.handsontable .htTop {\n vertical-align: top;\n}\n.handsontable .htMiddle {\n vertical-align: middle;\n}\n.handsontable .htBottom {\n vertical-align: bottom;\n}\n.handsontable .htInvalid {\n /* gives priority over td.area selection background */\n background-color: var(--ht-cell-error-background-color) !important;\n}\n.handsontable .htNoWrap {\n white-space: nowrap;\n}\n.handsontable .htSearchResult {\n background-color: var(--ht-cell-success-background-color) !important;\n}\n\n.handsontable .ht-multi-select-renderer {\n padding: var(--ht-cell-vertical-padding) var(--ht-cell-horizontal-padding);\n overflow: hidden;\n}\n.handsontable .ht-multi-select-chips-container {\n display: flex;\n flex-wrap: nowrap;\n align-items: center;\n gap: var(--ht-gap-size);\n overflow: hidden;\n max-width: 100%;\n}\n.handsontable .ht-multi-select-chip {\n display: inline-flex;\n align-items: center;\n gap: var(--ht-gap-size);\n padding: var(--ht-chip-vertical-padding) calc((var(--ht-line-height) - var(--ht-icon-size)) / 2) var(--ht-chip-vertical-padding) var(--ht-chip-horizontal-padding);\n border-radius: var(--ht-chip-border-radius);\n background: var(--ht-chip-background);\n white-space: nowrap;\n flex-shrink: 0;\n max-width: 100px;\n box-sizing: border-box;\n}\n.handsontable .ht-multi-select-chip-label {\n overflow: hidden;\n text-overflow: ellipsis;\n color: var(--ht-foreground-color);\n font-style: normal;\n font-weight: var(--ht-font-weight);\n line-height: var(--ht-line-height, 40px);\n letter-spacing: var(--ht-letter-spacing, 0);\n padding: 0 var(--ht-chip-gap);\n}\n.handsontable .ht-multi-select-chip-remove {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--ht-icon-size) !important;\n height: var(--ht-icon-size) !important;\n padding: 0;\n cursor: pointer;\n flex-shrink: 0;\n color: var(--ht-icon-button-icon-color);\n background-size: contain;\n background-repeat: no-repeat;\n background-position: center;\n}\n.handsontable .ht-multi-select-chip-remove::before {\n content: \"\";\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n}\n.handsontable .ht-multi-select-chip-remove:hover {\n background-color: var(--ht-icon-button-hover-background-color);\n}\n.handsontable .ht-multi-select-overflow {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: var(--ht-chip-vertical-padding) var(--ht-chip-horizontal-padding);\n background: var(--ht-chip-background);\n border-radius: var(--ht-chip-border-radius);\n color: var(--ht-foreground-color);\n white-space: nowrap;\n flex-shrink: 0;\n}\n\n.handsontableInputHolder {\n position: absolute;\n top: 0;\n left: 0;\n}\n.handsontableInputHolder .handsontableInput {\n display: block;\n margin: 0;\n padding: calc(var(--ht-cell-vertical-padding, 4px) + 1px) calc(var(--ht-cell-horizontal-padding, 8px) + 1px);\n font-family: inherit !important;\n font-size: inherit !important;\n line-height: inherit !important;\n color: var(--ht-cell-editor-foreground-color);\n background-color: var(--ht-cell-editor-background-color, #ffffff);\n box-shadow: inset 0 0 0 var(--ht-cell-editor-border-width, 2px) var(--ht-cell-editor-border-color, #1a42e8), 0 0 var(--ht-cell-editor-shadow-blur-radius, 0) 0 var(--ht-cell-editor-shadow-color, transparent);\n border: none;\n border-radius: 0;\n -webkit-appearance: none !important;\n box-sizing: border-box;\n /* Miscellaneous */\n outline-width: 0;\n /* overwrite styles potentially made by a framework */\n}\n.handsontableInputHolder .handsontableInput:focus {\n outline: none;\n}\n\n.htSelectEditor {\n position: absolute;\n}\n.htSelectEditor select {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n padding: calc(var(--ht-cell-vertical-padding, 4px) + 1px) calc(var(--ht-cell-horizontal-padding, 8px) + 1px);\n padding-inline-end: 26px;\n margin: 0;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n color: var(--ht-cell-editor-foreground-color);\n background-color: var(--ht-cell-editor-background-color, #ffffff);\n font-family: inherit !important;\n font-size: inherit !important;\n line-height: inherit !important;\n box-shadow: inset 0 0 0 var(--ht-cell-editor-border-width, 2px) var(--ht-cell-editor-border-color, #1a42e8), 0 0 var(--ht-cell-editor-shadow-blur-radius, 0) 0 var(--ht-cell-editor-shadow-color, transparent);\n border: none;\n border-radius: 0;\n box-sizing: border-box;\n -webkit-appearance: none !important;\n}\n.htSelectEditor select:focus {\n outline: none;\n}\n.htSelectEditor .htAutocompleteArrow {\n top: 50%;\n transform: translateY(-50%);\n margin-inline-end: 4px;\n z-index: 1;\n pointer-events: none;\n}\n\n.handsontable.listbox {\n box-shadow: var(--ht-menu-shadow-x, 0) var(--ht-menu-shadow-y, 0) var(--ht-menu-shadow-blur, 8px) color-mix(in srgb, var(--ht-menu-shadow-color, rgb(0, 0, 0)) var(--ht-menu-shadow-opacity, 100%), transparent);\n margin: 0;\n border: var(--ht-menu-border-width, 1px) solid var(--ht-menu-border-color, #e5e5e9);\n}\n.handsontable.listbox .ht_master {\n overflow: hidden;\n background-color: var(--ht-background-color);\n}\n.handsontable.listbox .wtHolder {\n overflow: auto;\n border-radius: 0 !important;\n}\n.handsontable.listbox .wtHider, .handsontable.listbox .htCore {\n border-radius: 0 !important;\n}\n.handsontable.listbox table {\n overflow: hidden;\n}\n.handsontable.listbox table th,\n.handsontable.listbox table tr:first-child th,\n.handsontable.listbox table tr:last-child th,\n.handsontable.listbox table tr:first-child td,\n.handsontable.listbox table td {\n border-color: transparent !important;\n}\n.handsontable.listbox table th,\n.handsontable.listbox table td {\n white-space: nowrap;\n text-overflow: ellipsis;\n border-radius: 0 !important;\n}\n.handsontable.listbox table .wtBorder {\n visibility: hidden;\n}\n.handsontable.listbox table strong {\n font-weight: bold;\n color: inherit;\n}\n.handsontable.listbox table tr td:hover td {\n background: color-mix(in srgb, var(--ht-menu-item-hover-color) var(--ht-menu-item-hover-color-opacity, 100%), transparent) !important;\n cursor: pointer;\n box-shadow: none !important;\n}\n.handsontable.listbox table td {\n transition: var(--ht-table-transition) background ease-in-out;\n}\n.handsontable.listbox table td:hover {\n background-color: color-mix(in srgb, var(--ht-menu-item-hover-color) var(--ht-menu-item-hover-color-opacity, 100%), transparent) !important;\n cursor: pointer;\n}\n.handsontable.listbox table td.current:not([aria-expanded=true]) {\n box-shadow: inset 0 0 0 1px var(--ht-accent-color);\n}\n.handsontable.listbox table td.htDimmed {\n cursor: default;\n font-style: inherit;\n color: inherit !important;\n}\n.handsontable.listbox table td.htDimmed:not(.handsontable.listbox table td:hover) {\n background-color: inherit !important;\n}\n.handsontable.listbox table thead th {\n height: auto !important;\n text-align: left;\n}\n.handsontable.listbox table thead th .relative {\n padding-top: calc(var(--ht-cell-vertical-padding) + var(--ht-gap-size));\n padding-bottom: calc(var(--ht-cell-vertical-padding) + var(--ht-gap-size));\n}\n.handsontable.listbox .ht_clone_top .wtHider {\n overflow: hidden;\n}\n.handsontable.listbox .ht_clone_top table {\n border-radius: 0;\n}\n.handsontable.listbox .htBorders div {\n background: none !important;\n}\n.handsontable.autocompleteEditor tr.ht__row_even th,\n.handsontable.autocompleteEditor tr.ht__row_even td {\n background-color: var(--ht-background-color, #ffffff);\n}\n.handsontable.autocompleteEditor tr.ht__row_odd th,\n.handsontable.autocompleteEditor tr.ht__row_odd td {\n background-color: var(--ht-background-color, #ffffff);\n}\n\n[dir=rtl].handsontable.listbox table thead th {\n text-align: right;\n}\n\n.pika-single {\n font-family: var(--ht-font-family), -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n box-shadow: var(--ht-menu-shadow-x, 0) var(--ht-menu-shadow-y, 0) var(--ht-menu-shadow-blur, 8px) color-mix(in srgb, var(--ht-menu-shadow-color, rgb(0, 0, 0)) var(--ht-menu-shadow-opacity, 100%), transparent);\n position: relative;\n display: block;\n padding: 10px;\n font-size: var(--ht-font-size);\n line-height: var(--ht-line-height);\n font-weight: var(--ht-font-weight);\n color: var(--ht-foreground-color);\n background: var(--ht-background-color, #ffffff);\n border: var(--ht-menu-border-width, 1px) solid var(--ht-menu-border-color, #e5e5e9);\n border-radius: var(--ht-menu-border-radius);\n z-index: 9999;\n}\n.pika-single.is-hidden {\n display: none;\n}\n.pika-single .pika-row {\n background-color: transparent;\n}\n.pika-single .pika-title {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.pika-single .pika-label {\n position: relative;\n order: 2;\n padding: 5px;\n color: var(--ht-accent-color);\n}\n.pika-single .pika-label .pika-select {\n position: absolute;\n inset: 0;\n opacity: 0;\n cursor: pointer;\n}\n.pika-single .pika-prev,\n.pika-single .pika-next {\n width: 20px;\n height: 20px;\n white-space: nowrap;\n text-indent: -9999px;\n cursor: pointer;\n color: var(--ht-accent-color);\n background: none;\n border: none;\n padding: 0;\n}\n.pika-single .pika-prev {\n order: 1;\n margin-right: auto;\n}\n.pika-single .pika-next {\n order: 3;\n margin-left: auto;\n}\n.pika-single .pika-table thead {\n height: 50px;\n}\n.pika-single .pika-table th {\n padding: 1px;\n vertical-align: middle;\n}\n.pika-single .pika-table th abbr {\n text-decoration: none;\n font-weight: normal;\n border: none;\n cursor: initial;\n}\n.pika-single .pika-table td {\n padding: 1px;\n vertical-align: middle;\n}\n.pika-single .pika-table td.is-disabled .pika-button {\n pointer-events: none;\n opacity: 0.5;\n}\n.pika-single .pika-table td.is-today .pika-button {\n background: color-mix(in srgb, var(--ht-menu-item-hover-color) var(--ht-menu-item-hover-color-opacity, 100%), transparent);\n}\n.pika-single .pika-table td.is-selected .pika-button {\n background: var(--ht-accent-color, #1a42e8);\n color: var(--ht-primary-button-foreground-color, #ffffff);\n}\n.pika-single .pika-table td.pika-week {\n width: 12.5%;\n text-align: center;\n}\n.pika-single .pika-table .pika-button {\n width: 100%;\n aspect-ratio: 1/1;\n background: transparent;\n color: var(--ht-foreground-color);\n border: none;\n border-radius: var(--ht-button-border-radius);\n margin: 0;\n padding: 10px;\n cursor: pointer;\n font-size: inherit;\n}\n.pika-single .pika-table .pika-button:hover {\n background: color-mix(in srgb, var(--ht-menu-item-hover-color) var(--ht-menu-item-hover-color-opacity, 100%), transparent);\n}\n\n[dir=rtl].htDatepickerHolder .pika-single .pika-next {\n transform: rotate(180deg);\n margin-left: 0;\n margin-right: auto;\n}\n[dir=rtl].htDatepickerHolder .pika-single .pika-prev {\n transform: rotate(180deg);\n margin-left: auto;\n margin-right: 0;\n}\n\n.handsontableEditor {\n position: absolute;\n}\n.handsontableEditor .ht-multi-select-editor {\n box-shadow: var(--ht-menu-shadow-x, 0) var(--ht-menu-shadow-y, 0) var(--ht-menu-shadow-blur, 8px) color-mix(in srgb, var(--ht-menu-shadow-color, rgb(0, 0, 0)) var(--ht-menu-shadow-opacity, 100%), transparent);\n scrollbar-width: auto;\n scrollbar-color: var(--ht-scrollbar-thumb-color) var(--ht-scrollbar-track-color);\n overflow-y: auto;\n border-radius: 0 0 var(--ht-menu-border-radius) var(--ht-menu-border-radius);\n border: var(--ht-menu-border-width) solid var(--ht-menu-border-color);\n background: var(--ht-background-color);\n width: max-content;\n min-width: 120px;\n padding: var(--ht-menu-vertical-padding) var(--ht-menu-horizontal-padding);\n}\n.handsontableEditor .ht-multi-select-editor .ht-multi-select-editor-search-input-wrapper {\n display: flex;\n padding: var(--ht-menu-item-vertical-padding) var(--ht-menu-item-horizontal-padding);\n align-items: center;\n gap: var(--ht-gap-size);\n align-self: stretch;\n position: relative;\n}\n.handsontableEditor .ht-multi-select-editor .ht-multi-select-editor-search-icon {\n position: absolute;\n left: calc(var(--ht-menu-item-horizontal-padding) + 10px);\n top: 50%;\n transform: translateY(-50%);\n width: 16px;\n height: 16px;\n background-repeat: no-repeat;\n background-position: center;\n background-size: contain;\n opacity: 0.5;\n pointer-events: none;\n z-index: 1;\n}\n.handsontableEditor .ht-multi-select-editor input.ht-multi-select-editor-search-input {\n box-sizing: border-box;\n width: 100%;\n border-radius: var(--ht-input-border-radius);\n color: var(--ht-input-foreground-color);\n background-color: var(--ht-input-background-color);\n border: 1px solid var(--ht-input-border-color);\n transition: var(--ht-table-transition) all ease-in-out;\n line-height: var(--ht-line-height);\n font-size: var(--ht-font-size);\n padding: var(--ht-input-vertical-padding) var(--ht-menu-item-horizontal-padding) var(--ht-input-vertical-padding) 32px;\n}\n.handsontableEditor .ht-multi-select-editor input.ht-multi-select-editor-search-input:hover {\n border-color: var(--ht-input-hover-border-color);\n color: var(--ht-input-hover-foreground-color);\n background-color: var(--ht-input-hover-background-color);\n}\n.handsontableEditor .ht-multi-select-editor input.ht-multi-select-editor-search-input:disabled {\n border-color: var(--ht-input-disabled-border-color);\n color: var(--ht-input-disabled-foreground-color);\n background-color: var(--ht-input-disabled-background-color);\n}\n.handsontableEditor .ht-multi-select-editor input.ht-multi-select-editor-search-input:focus {\n border-color: var(--ht-input-focus-border-color);\n color: var(--ht-input-focus-foreground-color);\n background-color: var(--ht-input-focus-background-color);\n outline: none;\n outline-offset: 0;\n box-shadow: none;\n}\n.handsontableEditor .ht-multi-select-editor input.ht-multi-select-editor-search-input::placeholder {\n color: var(--ht-foreground-color);\n opacity: 0.6;\n}\n.handsontableEditor .ht-multi-select-editor .ht-multi-select-editor-separator {\n width: 100%;\n height: 1px;\n background-color: var(--ht-menu-border-color);\n margin: var(--ht-menu-vertical-padding) 0 var(--ht-menu-vertical-padding) 0;\n padding: 0;\n}\n.handsontableEditor .ht-multi-select-editor ul {\n list-style: none;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n width: 100%;\n margin: 0;\n padding: var(--ht-gap-size) var(--ht-menu-horizontal-padding);\n}\n.handsontableEditor .ht-multi-select-editor ul li {\n display: flex;\n align-items: center;\n align-self: stretch;\n background: var(--ht-background-color);\n padding: var(--ht-menu-item-vertical-padding) var(--ht-menu-item-horizontal-padding);\n user-select: none;\n cursor: pointer;\n}\n.handsontableEditor .ht-multi-select-editor ul li * {\n cursor: pointer;\n}\n.handsontableEditor .ht-multi-select-editor ul li.ht-multi-select-editor-item-selected {\n background: color-mix(in srgb, var(--ht-menu-item-active-color) var(--ht-menu-item-active-color-opacity, 100%), transparent);\n}\n.handsontableEditor .ht-multi-select-editor ul li div {\n display: flex;\n align-items: center;\n flex: 1 0 0;\n}\n.handsontableEditor .ht-multi-select-editor ul li div input {\n position: relative;\n appearance: none;\n margin: 0;\n padding: 0;\n width: var(--ht-checkbox-size);\n height: var(--ht-checkbox-size);\n display: flex;\n}\n.handsontableEditor .ht-multi-select-editor ul li div input::after {\n content: \"\";\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n}\n.handsontableEditor .ht-multi-select-editor ul li div input::before {\n content: \"\";\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n box-sizing: border-box;\n width: var(--ht-checkbox-size);\n height: var(--ht-checkbox-size);\n border-radius: var(--ht-checkbox-border-radius);\n border: 1px solid var(--ht-checkbox-border-color);\n background: var(--ht-checkbox-background-color);\n background-repeat: no-repeat;\n background-position: center;\n}\n.handsontableEditor .ht-multi-select-editor ul li div input:checked::before {\n border-color: var(--ht-checkbox-checked-border-color);\n background: var(--ht-checkbox-checked-background-color);\n}\n.handsontableEditor .ht-multi-select-editor ul li div input:checked::after {\n color: var(--ht-checkbox-checked-icon-color);\n background-color: currentColor;\n}\n.handsontableEditor .ht-multi-select-editor ul li div input:focus {\n outline: none;\n}\n.handsontableEditor .ht-multi-select-editor ul li div label {\n overflow: hidden;\n color: var(--ht-foreground-color);\n text-overflow: ellipsis;\n font-size: var(--ht-font-size);\n font-style: normal;\n font-weight: 400;\n line-height: var(--ht-line-height);\n letter-spacing: var(--ht-letter-spacing);\n width: 100%;\n padding: 0 0 0 calc(var(--ht-gap-size) * 2);\n}\n.handsontableEditor .ht-multi-select-editor ul li:hover {\n background: color-mix(in srgb, var(--ht-menu-item-hover-color) var(--ht-menu-item-hover-color-opacity, 100%), transparent);\n}\n.handsontableEditor .ht-multi-select-editor ul li:has(input:focus) {\n background: color-mix(in srgb, var(--ht-menu-item-hover-color) var(--ht-menu-item-hover-color-opacity, 100%), transparent);\n}\n\n.handsontable .htUISelectCaption {\n width: 100%;\n padding: var(--ht-input-vertical-padding) var(--ht-input-horizontal-padding);\n padding-inline-end: calc(var(--ht-input-horizontal-padding) + var(--ht-icon-size));\n margin: 0;\n font-family: inherit;\n font-size: var(--ht-font-size);\n line-height: var(--ht-line-height);\n font-weight: var(--ht-font-weight);\n border-radius: var(--ht-input-border-radius);\n box-sizing: border-box;\n cursor: pointer;\n outline: none !important;\n border: var(--ht-input-border-width) solid var(--ht-input-border-color);\n color: var(--ht-input-foreground-color);\n background-color: var(--ht-input-background-color);\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n transition: var(--ht-table-transition) all ease-in-out;\n}\n.handsontable .htUISelectCaption::after {\n content: \"\";\n display: block;\n position: absolute;\n right: calc(var(--ht-input-horizontal-padding) - var(--ht-icon-size) / 4);\n top: 50%;\n transform: translateY(-50%);\n}\n.handsontable .htUISelectCaption:hover {\n border-color: var(--ht-input-hover-border-color);\n color: var(--ht-input-hover-foreground-color);\n background-color: var(--ht-input-hover-background-color);\n}\n.handsontable .htUISelectCaption:disabled {\n border-color: var(--ht-input-disabled-border-color);\n color: var(--ht-input-disabled-foreground-color);\n background-color: var(--ht-input-disabled-background-color);\n}\n.handsontable .htUISelectCaption:focus {\n border-color: var(--ht-input-focus-border-color);\n color: var(--ht-input-focus-foreground-color);\n background-color: var(--ht-input-focus-background-color);\n}\n.handsontable .htUISelect {\n cursor: pointer;\n position: relative;\n outline: none !important;\n}\n.handsontable .htUISelect:focus .htUISelectCaption {\n border-color: var(--ht-input-focus-border-color);\n color: var(--ht-input-focus-foreground-color);\n background-color: var(--ht-input-focus-background-color);\n}\n\n[dir=rtl].handsontable .htUISelectCaption::after {\n right: auto;\n left: calc(var(--ht-input-horizontal-padding) - var(--ht-icon-size) / 4);\n}\n\n.handsontable .htFiltersMenuCondition .htUIInput input,\n.handsontable .htFiltersMenuValue .htUIMultipleSelectSearch input {\n width: 100%;\n padding: var(--ht-input-vertical-padding) var(--ht-input-horizontal-padding);\n font-family: inherit;\n font-size: var(--ht-font-size);\n line-height: var(--ht-line-height);\n font-weight: var(--ht-font-weight);\n border-radius: var(--ht-input-border-radius);\n box-sizing: border-box;\n cursor: pointer;\n outline: none !important;\n border: var(--ht-input-border-width) solid var(--ht-input-border-color);\n color: var(--ht-input-foreground-color);\n background-color: var(--ht-input-background-color);\n transition: var(--ht-table-transition) all ease-in-out;\n}\n.handsontable .htFiltersMenuCondition .htUIInput input:hover,\n.handsontable .htFiltersMenuValue .htUIMultipleSelectSearch input:hover {\n border-color: var(--ht-input-hover-border-color);\n color: var(--ht-input-hover-foreground-color);\n background-color: var(--ht-input-hover-background-color);\n}\n.handsontable .htFiltersMenuCondition .htUIInput input:disabled,\n.handsontable .htFiltersMenuValue .htUIMultipleSelectSearch input:disabled {\n border-color: var(--ht-input-disabled-border-color);\n color: var(--ht-input-disabled-foreground-color);\n background-color: var(--ht-input-disabled-background-color);\n}\n.handsontable .htFiltersMenuCondition .htUIInput input:focus,\n.handsontable .htFiltersMenuValue .htUIMultipleSelectSearch input:focus {\n border-color: var(--ht-input-focus-border-color);\n color: var(--ht-input-focus-foreground-color);\n background-color: var(--ht-input-focus-background-color);\n}\n.handsontable .htUIInput {\n position: relative;\n padding: 0;\n outline: none !important;\n text-align: center;\n}\n.handsontable .htUIInputIcon {\n position: absolute;\n}\n\n.handsontable .htUIInput.htUIButton input, .handsontable .ht-button {\n min-width: 64px;\n padding: var(--ht-button-vertical-padding) var(--ht-button-horizontal-padding);\n font-family: inherit;\n font-size: var(--ht-font-size);\n line-height: var(--ht-line-height);\n font-weight: var(--ht-font-weight);\n border-radius: var(--ht-button-border-radius);\n border-width: 1px;\n border-style: solid;\n box-sizing: border-box;\n outline: none !important;\n cursor: pointer;\n transition: var(--ht-table-transition) all ease-in-out;\n}\n.handsontable .htUIInput.htUIButtonCancel input, .handsontable .ht-button--secondary {\n border-color: var(--ht-secondary-button-border-color);\n background-color: var(--ht-secondary-button-background-color);\n color: var(--ht-secondary-button-foreground-color);\n}\n.handsontable .htUIInput.htUIButtonCancel input:hover, .handsontable .ht-button--secondary:hover {\n border-color: var(--ht-secondary-button-hover-border-color);\n background-color: var(--ht-secondary-button-hover-background-color);\n color: var(--ht-secondary-button-hover-foreground-color);\n}\n.handsontable .htUIInput.htUIButtonCancel input:disabled, .handsontable .ht-button--secondary:disabled {\n border-color: var(--ht-secondary-button-disabled-border-color);\n background-color: var(--ht-secondary-button-disabled-background-color);\n color: var(--ht-secondary-button-disabled-foreground-color);\n}\n.handsontable .htUIInput.htUIButtonCancel input:focus, .handsontable .ht-button--secondary:focus {\n border-color: var(--ht-secondary-button-focus-border-color);\n background-color: var(--ht-secondary-button-focus-background-color);\n color: var(--ht-secondary-button-focus-foreground-color);\n box-shadow: 0 0 0 1px var(--ht-accent-color);\n}\n\n.htUIInput.htUIButtonOK input, .ht-button--primary {\n border-color: var(--ht-primary-button-border-color);\n background-color: var(--ht-primary-button-background-color);\n color: var(--ht-primary-button-foreground-color);\n}\n.htUIInput.htUIButtonOK input:hover, .ht-button--primary:hover {\n border-color: var(--ht-primary-button-hover-border-color);\n background-color: var(--ht-primary-button-hover-background-color);\n color: var(--ht-primary-button-hover-foreground-color);\n}\n.htUIInput.htUIButtonOK input:disabled, .ht-button--primary:disabled {\n border-color: var(--ht-primary-button-disabled-border-color);\n background-color: var(--ht-primary-button-disabled-background-color);\n color: var(--ht-primary-button-disabled-foreground-color);\n}\n.htUIInput.htUIButtonOK input:focus, .ht-button--primary:focus {\n border-color: var(--ht-primary-button-focus-border-color);\n background-color: var(--ht-primary-button-focus-background-color);\n color: var(--ht-primary-button-focus-foreground-color);\n box-shadow: 0 0 0 1px var(--ht-accent-color);\n}\n\n.handsontable .htUIRadio {\n position: relative;\n display: inline-flex;\n margin: 0;\n padding: var(--ht-gap-size) calc(2 * var(--ht-gap-size));\n padding-bottom: 0;\n align-items: center;\n gap: var(--ht-gap-size);\n cursor: pointer;\n}\n.handsontable .htUIRadio:first-child {\n padding-inline-start: 0;\n}\n.handsontable .htUIRadio > input[type=radio] {\n position: relative;\n width: var(--ht-radio-size);\n height: var(--ht-radio-size);\n margin: 0;\n appearance: none;\n cursor: pointer;\n border-radius: calc(0.5 * var(--ht-radio-size));\n outline: none;\n}\n.handsontable .htUIRadio > input[type=radio]::before {\n content: \"\";\n display: block;\n position: absolute;\n inset: 0;\n border-radius: calc(0.5 * var(--ht-radio-size));\n border: 1px solid var(--ht-radio-border-color);\n background-color: var(--ht-radio-background-color);\n}\n.handsontable .htUIRadio > input[type=radio]::after {\n content: \"\";\n display: block;\n position: absolute;\n color: var(--ht-radio-icon-color);\n}\n.handsontable .htUIRadio > input[type=radio]:checked::before {\n border-color: var(--ht-radio-checked-border-color);\n background-color: var(--ht-radio-checked-background-color);\n}\n.handsontable .htUIRadio > input[type=radio]:checked::after {\n color: var(--ht-radio-checked-icon-color);\n}\n.handsontable .htUIRadio > input[type=radio]:checked:disabled {\n cursor: initial;\n}\n.handsontable .htUIRadio > input[type=radio]:checked:disabled::before {\n border-color: var(--ht-radio-checked-disabled-border-color);\n background-color: var(--ht-radio-checked-disabled-background-color);\n}\n.handsontable .htUIRadio > input[type=radio]:checked:disabled::after {\n color: var(--ht-radio-checked-disabled-icon-color);\n}\n.handsontable .htUIRadio > input[type=radio]:checked:focus::before {\n border-color: var(--ht-radio-checked-focus-border-color);\n background-color: var(--ht-radio-checked-focus-background-color);\n}\n.handsontable .htUIRadio > input[type=radio]:checked:focus::after {\n color: var(--ht-radio-checked-focus-icon-color);\n}\n.handsontable .htUIRadio > input[type=radio]:disabled {\n cursor: initial;\n}\n.handsontable .htUIRadio > input[type=radio]:disabled::before {\n border-color: var(--ht-radio-disabled-border-color);\n background-color: var(--ht-radio-disabled-background-color);\n}\n.handsontable .htUIRadio > input[type=radio]:disabled::after {\n color: var(--ht-radio-disabled-icon-color);\n}\n.handsontable .htUIRadio > input[type=radio]:focus::before {\n border-color: var(--ht-radio-focus-border-color);\n background-color: var(--ht-radio-focus-background-color);\n outline: 1px solid var(--ht-radio-focus-ring-color);\n}\n.handsontable .htUIRadio > input[type=radio]:focus::after {\n color: var(--ht-radio-focus-icon-color);\n}\n.handsontable .htUIRadio label {\n vertical-align: middle;\n cursor: pointer;\n color: inherit;\n}\n.handsontable .htUIRadio label::before {\n content: \"\";\n display: block;\n position: absolute;\n inset: 0;\n}\n\n.handsontable .collapsibleIndicator,\n.handsontable .ht_nestingButton {\n position: relative;\n width: var(--ht-icon-button-hit-area-size);\n height: var(--ht-icon-button-hit-area-size);\n margin: calc(-1 * (var(--ht-icon-button-hit-area-size) - var(--ht-icon-size)) / 2 + 1px);\n box-sizing: border-box;\n overflow: visible;\n cursor: pointer;\n /* hide text */\n text-indent: -100px;\n font-size: 0;\n flex-shrink: 0;\n /* Icon: mask + currentColor from ht-icons-main.css; keep ::before for icon only */\n}\n.handsontable .collapsibleIndicator::before,\n.handsontable .ht_nestingButton::before {\n content: \"\";\n display: block;\n position: absolute;\n top: 50%;\n left: 50%;\n width: var(--ht-icon-size);\n height: var(--ht-icon-size);\n margin-top: calc(-0.5 * var(--ht-icon-size));\n margin-left: calc(-0.5 * var(--ht-icon-size));\n border-radius: var(--ht-collapse-button-border-radius);\n transition: var(--ht-table-transition) all ease-in-out;\n z-index: 1;\n}\n.handsontable .collapsibleIndicator,\n.handsontable .ht_nestingButton {\n /* Button background and border (behind icon so mask stays visible) */\n}\n.handsontable .collapsibleIndicator::after,\n.handsontable .ht_nestingButton::after {\n content: \"\";\n display: block;\n position: absolute;\n top: 50%;\n left: 50%;\n width: var(--ht-icon-size);\n height: var(--ht-icon-size);\n margin-top: calc(-0.5 * var(--ht-icon-size));\n margin-left: calc(-0.5 * var(--ht-icon-size));\n border-radius: var(--ht-collapse-button-border-radius);\n transition: var(--ht-table-transition) all ease-in-out;\n z-index: 0;\n}\n.handsontable .collapsibleIndicator.expanded::before, .handsontable .collapsibleIndicator.ht_nestingCollapse::before,\n.handsontable .ht_nestingButton.expanded::before,\n.handsontable .ht_nestingButton.ht_nestingCollapse::before {\n color: var(--ht-collapse-button-open-icon-color);\n}\n.handsontable .collapsibleIndicator.expanded::after, .handsontable .collapsibleIndicator.ht_nestingCollapse::after,\n.handsontable .ht_nestingButton.expanded::after,\n.handsontable .ht_nestingButton.ht_nestingCollapse::after {\n background-color: var(--ht-collapse-button-open-background-color);\n box-shadow: 0 0 0 1px var(--ht-collapse-button-open-border-color);\n}\n.handsontable .collapsibleIndicator.expanded:hover::before, .handsontable .collapsibleIndicator.ht_nestingCollapse:hover::before,\n.handsontable .ht_nestingButton.expanded:hover::before,\n.handsontable .ht_nestingButton.ht_nestingCollapse:hover::before {\n color: var(--ht-collapse-button-open-hover-icon-color);\n}\n.handsontable .collapsibleIndicator.expanded:hover::after, .handsontable .collapsibleIndicator.ht_nestingCollapse:hover::after,\n.handsontable .ht_nestingButton.expanded:hover::after,\n.handsontable .ht_nestingButton.ht_nestingCollapse:hover::after {\n background-color: var(--ht-collapse-button-open-hover-background-color);\n box-shadow: 0 0 0 1px var(--ht-collapse-button-open-hover-border-color);\n}\n.handsontable .collapsibleIndicator.collapsed::before, .handsontable .collapsibleIndicator.ht_nestingExpand::before,\n.handsontable .ht_nestingButton.collapsed::before,\n.handsontable .ht_nestingButton.ht_nestingExpand::before {\n color: var(--ht-collapse-button-close-icon-color);\n}\n.handsontable .collapsibleIndicator.collapsed::after, .handsontable .collapsibleIndicator.ht_nestingExpand::after,\n.handsontable .ht_nestingButton.collapsed::after,\n.handsontable .ht_nestingButton.ht_nestingExpand::after {\n background-color: var(--ht-collapse-button-close-background-color);\n box-shadow: 0 0 0 1px var(--ht-collapse-button-close-border-color);\n}\n.handsontable .collapsibleIndicator.collapsed:hover::before, .handsontable .collapsibleIndicator.ht_nestingExpand:hover::before,\n.handsontable .ht_nestingButton.collapsed:hover::before,\n.handsontable .ht_nestingButton.ht_nestingExpand:hover::before {\n color: var(--ht-collapse-button-close-hover-icon-color);\n}\n.handsontable .collapsibleIndicator.collapsed:hover::after, .handsontable .collapsibleIndicator.ht_nestingExpand:hover::after,\n.handsontable .ht_nestingButton.collapsed:hover::after,\n.handsontable .ht_nestingButton.ht_nestingExpand:hover::after {\n background-color: var(--ht-collapse-button-close-hover-background-color);\n box-shadow: 0 0 0 1px var(--ht-collapse-button-close-hover-border-color);\n}\n.handsontable th.ht__active_highlight .collapsibleIndicator.collapsed::before, .handsontable th.ht__active_highlight .collapsibleIndicator.ht_nestingExpand::before,\n.handsontable th.ht__active_highlight .ht_nestingButton.collapsed::before,\n.handsontable th.ht__active_highlight .ht_nestingButton.ht_nestingExpand::before {\n color: var(--ht-collapse-button-close-icon-active-color);\n}\n.handsontable th.ht__active_highlight .collapsibleIndicator.collapsed:hover::before, .handsontable th.ht__active_highlight .collapsibleIndicator.ht_nestingExpand:hover::before,\n.handsontable th.ht__active_highlight .ht_nestingButton.collapsed:hover::before,\n.handsontable th.ht__active_highlight .ht_nestingButton.ht_nestingExpand:hover::before {\n color: var(--ht-collapse-button-close-hover-icon-active-color);\n}\n.handsontable th.ht__active_highlight .collapsibleIndicator.expanded::before, .handsontable th.ht__active_highlight .collapsibleIndicator.ht_nestingCollapse::before,\n.handsontable th.ht__active_highlight .ht_nestingButton.expanded::before,\n.handsontable th.ht__active_highlight .ht_nestingButton.ht_nestingCollapse::before {\n color: var(--ht-collapse-button-open-icon-active-color);\n}\n.handsontable th.ht__active_highlight .collapsibleIndicator.expanded:hover::before, .handsontable th.ht__active_highlight .collapsibleIndicator.ht_nestingCollapse:hover::before,\n.handsontable th.ht__active_highlight .ht_nestingButton.expanded:hover::before,\n.handsontable th.ht__active_highlight .ht_nestingButton.ht_nestingCollapse:hover::before {\n color: var(--ht-collapse-button-open-hover-icon-active-color);\n}\n\n.handsontable thead th.htRowspanHeader + th {\n border-inline-start-width: 0;\n}\n.handsontable thead th.htRowspanHeader {\n height: auto;\n vertical-align: bottom;\n overflow: visible;\n}\n.handsontable thead th.htRowspanHeader.ht__active_highlight {\n border-inline-start-color: var(--ht-header-active-border-color);\n z-index: 1;\n}\n.handsontable.htRowHeaders.htHasRowspanHeaders thead tr:last-child th:first-child {\n border-end-start-radius: 0;\n}\n.handsontable.htHasRowspanHeaders .ht_clone_inline_start .htCore tbody tr:first-child th:first-child {\n border-start-start-radius: 0;\n}\n.handsontable .ht_master:not(.innerBorderTop):not(.innerBorderBottom) thead th.htRowspanBottomLevel, .handsontable .ht_master:not(.innerBorderTop):not(.innerBorderBottom) ~ .handsontable thead th.htRowspanBottomLevel {\n border-bottom-width: 0;\n}\n.handsontable thead th.hiddenHeader:not(:first-of-type) {\n display: none;\n}\n.handsontable thead th.hiddenHeaderText .colHeader {\n opacity: 0;\n}\n\n.handsontable th.ht_nestingLevels > .relative {\n display: flex;\n align-items: center;\n gap: 5px;\n}\n.handsontable th.ht_nestingLevels span:last-child {\n padding-left: calc(var(--ht-icon-size) + 5px);\n}\n.handsontable th.ht_nestingLevels span.ht_nestingLevel {\n display: inline-block;\n}\n.handsontable th.ht_nestingLevels span.ht_nestingLevel_empty {\n position: relative;\n display: inline-block;\n width: 5px;\n height: 1px;\n order: -2;\n}\n.handsontable th.ht_nestingLevels .ht_nestingButton {\n position: relative;\n cursor: pointer;\n order: -1;\n}\n\n.handsontable th.beforeHiddenColumn, .handsontable th.afterHiddenColumn {\n position: relative;\n}\n.handsontable th.beforeHiddenColumn::before, .handsontable th.beforeHiddenColumn::after, .handsontable th.afterHiddenColumn::before, .handsontable th.afterHiddenColumn::after {\n position: absolute;\n top: 50%;\n width: 10px !important;\n height: 10px !important;\n transform: translateY(-50%);\n color: var(--ht-hidden-indicator-color);\n}\n.handsontable th.beforeHiddenColumn::after {\n content: \"\";\n display: block;\n right: -2px;\n}\n.handsontable th.afterHiddenColumn::before {\n content: \"\";\n display: block;\n left: -2px;\n}\n.handsontable th.ht__active_highlight.beforeHiddenColumn::before, .handsontable th.ht__active_highlight.beforeHiddenColumn::after, .handsontable th.ht__active_highlight.afterHiddenColumn::before, .handsontable th.ht__active_highlight.afterHiddenColumn::after {\n color: var(--ht-icon-button-active-icon-color, var(--ht-icon-active-button-icon-color));\n}\n\n[dir=rtl].handsontable th.beforeHiddenColumn::after {\n right: initial;\n left: -2px;\n transform: translateY(-50%) rotate(180deg);\n}\n[dir=rtl].handsontable th.afterHiddenColumn::before {\n right: -2px;\n left: initial;\n transform: translateY(-50%) rotate(180deg);\n}\n\n.handsontable th.beforeHiddenRow, .handsontable th.afterHiddenRow {\n position: relative;\n}\n.handsontable th.beforeHiddenRow::before, .handsontable th.beforeHiddenRow::after, .handsontable th.afterHiddenRow::before, .handsontable th.afterHiddenRow::after {\n position: absolute;\n left: 50%;\n width: 10px !important;\n height: 10px !important;\n transform: translateX(-50%);\n color: var(--ht-hidden-indicator-color);\n}\n.handsontable th.beforeHiddenRow::after {\n content: \"\";\n display: block;\n bottom: -2px;\n}\n.handsontable th.afterHiddenRow::before {\n content: \"\";\n display: block;\n top: -2px;\n}\n.handsontable th.ht__active_highlight.beforeHiddenRow::before, .handsontable th.ht__active_highlight.beforeHiddenRow::after, .handsontable th.ht__active_highlight.afterHiddenRow::before, .handsontable th.ht__active_highlight.afterHiddenRow::after {\n color: var(--ht-icon-button-active-icon-color, var(--ht-icon-active-button-icon-color));\n}\n\n.handsontable .changeType {\n position: relative;\n box-sizing: border-box;\n width: var(--ht-icon-button-hit-area-size);\n height: var(--ht-icon-button-hit-area-size);\n margin: calc(-1 * (var(--ht-icon-button-hit-area-size) - var(--ht-icon-size)) / 2 + 1px);\n border: none;\n outline: none;\n box-shadow: none;\n background: none;\n background-color: transparent;\n color: inherit;\n padding: 0;\n z-index: 1;\n flex-shrink: 0;\n overflow: visible;\n /* Icon: mask + currentColor from ht-icons-main.css; keep ::before for icon only */\n}\n.handsontable .changeType::before {\n content: \"\";\n display: block;\n position: absolute;\n top: 50%;\n left: 50%;\n width: var(--ht-icon-size);\n height: var(--ht-icon-size);\n margin-top: calc(-0.5 * var(--ht-icon-size));\n margin-left: calc(-0.5 * var(--ht-icon-size));\n color: var(--ht-icon-button-icon-color);\n z-index: 1;\n}\n.handsontable .changeType {\n /* Button background and border (behind icon so mask stays visible) */\n}\n.handsontable .changeType::after {\n content: \"\";\n display: block;\n position: absolute;\n top: 50%;\n left: 50%;\n width: var(--ht-icon-size);\n height: var(--ht-icon-size);\n margin-top: calc(-0.5 * var(--ht-icon-size));\n margin-left: calc(-0.5 * var(--ht-icon-size));\n border-radius: var(--ht-icon-button-border-radius);\n box-shadow: 0 0 0 1px var(--ht-icon-button-border-color);\n background-color: var(--ht-icon-button-background-color);\n z-index: 0;\n}\n.handsontable .changeType:hover {\n cursor: pointer;\n}\n.handsontable .changeType:hover::before {\n color: var(--ht-icon-button-hover-icon-color);\n}\n.handsontable .changeType:hover::after {\n box-shadow: 0 0 0 1px var(--ht-icon-button-hover-border-color);\n background-color: var(--ht-icon-button-hover-background-color);\n}\n.handsontable .ht__active_highlight .changeType::before {\n color: var(--ht-icon-button-active-icon-color, var(--ht-icon-active-button-icon-color));\n}\n.handsontable .ht__active_highlight .changeType::after {\n box-shadow: 0 0 0 1px var(--ht-icon-button-active-border-color, var(--ht-icon-active-button-border-color));\n background-color: var(--ht-icon-button-active-background-color, var(--ht-icon-active-button-background-color));\n}\n.handsontable .ht__active_highlight .changeType:hover::before {\n color: var(--ht-icon-button-active-hover-icon-color, var(--ht-icon-active-button-hover-icon-color));\n}\n.handsontable .ht__active_highlight .changeType:hover::after {\n box-shadow: 0 0 0 1px var(--ht-icon-button-active-hover-border-color, var(--ht-icon-active-button-hover-border-color));\n background-color: var(--ht-icon-button-active-hover-background-color, var(--ht-icon-active-button-hover-background-color));\n}\n.handsontable th.htFiltersActive {\n background-color: var(--ht-header-filter-background-color);\n}\n.handsontable th.htFiltersActive.ht__active_highlight {\n background-color: color-mix(in srgb, var(--ht-header-active-background-color), var(--ht-header-filter-background-color) 20%);\n}\n.handsontable.htDropdownMenu > .ht_master, .handsontable.htContextMenu > .ht_master, .handsontable.htFiltersConditionsMenu > .ht_master {\n box-shadow: var(--ht-menu-shadow-x, 0) var(--ht-menu-shadow-y, 0) var(--ht-menu-shadow-blur, 8px) color-mix(in srgb, var(--ht-menu-shadow-color, rgb(0, 0, 0)) var(--ht-menu-shadow-opacity, 100%), transparent);\n border: var(--ht-menu-border-width, 1px) solid var(--ht-menu-border-color, #e5e5e9);\n border-radius: var(--ht-menu-border-radius);\n overflow: hidden;\n padding: var(--ht-menu-vertical-padding, 8px) var(--ht-menu-horizontal-padding, 0);\n background-color: var(--ht-background-color, #ffffff);\n}\n.handsontable.htDropdownMenu:not(.htGhostTable), .handsontable.htContextMenu:not(.htGhostTable), .handsontable.htFiltersConditionsMenu:not(.htGhostTable) {\n display: none;\n position: absolute;\n /* needs to be higher than 1050 - z-index for Twitter Bootstrap modal (#1569) */\n z-index: 1060;\n}\n.handsontable.htDropdownMenu .ht_clone_top,\n.handsontable.htDropdownMenu .ht_clone_bottom,\n.handsontable.htDropdownMenu .ht_clone_inline_start,\n.handsontable.htDropdownMenu .ht_clone_top_inline_start_corner,\n.handsontable.htDropdownMenu .ht_clone_bottom_inline_start_corner, .handsontable.htContextMenu .ht_clone_top,\n.handsontable.htContextMenu .ht_clone_bottom,\n.handsontable.htContextMenu .ht_clone_inline_start,\n.handsontable.htContextMenu .ht_clone_top_inline_start_corner,\n.handsontable.htContextMenu .ht_clone_bottom_inline_start_corner, .handsontable.htFiltersConditionsMenu .ht_clone_top,\n.handsontable.htFiltersConditionsMenu .ht_clone_bottom,\n.handsontable.htFiltersConditionsMenu .ht_clone_inline_start,\n.handsontable.htFiltersConditionsMenu .ht_clone_top_inline_start_corner,\n.handsontable.htFiltersConditionsMenu .ht_clone_bottom_inline_start_corner {\n display: none;\n}\n.handsontable.htDropdownMenu table.htCore, .handsontable.htContextMenu table.htCore, .handsontable.htFiltersConditionsMenu table.htCore {\n overflow: hidden;\n}\n.handsontable.htDropdownMenu .htCustomMenuRenderer .table.htCore, .handsontable.htContextMenu .htCustomMenuRenderer .table.htCore, .handsontable.htFiltersConditionsMenu .htCustomMenuRenderer .table.htCore {\n box-shadow: none;\n}\n.handsontable.htDropdownMenu.handsontable:focus, .handsontable.htContextMenu.handsontable:focus, .handsontable.htFiltersConditionsMenu.handsontable:focus {\n outline: none;\n}\n.handsontable.htDropdownMenu .wtBorder, .handsontable.htContextMenu .wtBorder, .handsontable.htFiltersConditionsMenu .wtBorder {\n visibility: hidden;\n}\n.handsontable.htDropdownMenu tbody tr:first-of-type td:first-child, .handsontable.htDropdownMenu tbody tr:first-of-type th:first-child, .handsontable.htContextMenu tbody tr:first-of-type td:first-child, .handsontable.htContextMenu tbody tr:first-of-type th:first-child, .handsontable.htFiltersConditionsMenu tbody tr:first-of-type td:first-child, .handsontable.htFiltersConditionsMenu tbody tr:first-of-type th:first-child {\n height: calc(var(--ht-cell-vertical-padding) * 2 + var(--ht-line-height) + 1px);\n}\n.handsontable.htDropdownMenu table tbody tr td, .handsontable.htContextMenu table tbody tr td, .handsontable.htFiltersConditionsMenu table tbody tr td {\n position: relative;\n padding: var(--ht-menu-item-vertical-padding, 4px) var(--ht-menu-item-horizontal-padding, 8px);\n border-width: 0;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n background: var(--ht-background-color, #ffffff);\n cursor: pointer;\n transition: var(--ht-table-transition) background ease-in-out;\n}\n.handsontable.htDropdownMenu table tbody tr td:first-child, .handsontable.htContextMenu table tbody tr td:first-child, .handsontable.htFiltersConditionsMenu table tbody tr td:first-child {\n border-top-width: 0;\n border-inline-end-width: 0;\n border-bottom-width: 0;\n border-inline-start-width: 0;\n}\n.handsontable.htDropdownMenu table tbody tr td.htDimmed, .handsontable.htContextMenu table tbody tr td.htDimmed, .handsontable.htFiltersConditionsMenu table tbody tr td.htDimmed {\n font-style: normal;\n color: inherit !important;\n background-color: inherit !important;\n}\n.handsontable.htDropdownMenu table tbody tr td:not(.handsontable.htDropdownMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htDropdownMenu table tbody tr td.htDisabled, .handsontable.htContextMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htContextMenu table tbody tr td.htDisabled, .handsontable.htFiltersConditionsMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htFiltersConditionsMenu table tbody tr td.htDisabled):hover, .handsontable.htContextMenu table tbody tr td:not(.handsontable.htDropdownMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htDropdownMenu table tbody tr td.htDisabled, .handsontable.htContextMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htContextMenu table tbody tr td.htDisabled, .handsontable.htFiltersConditionsMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htFiltersConditionsMenu table tbody tr td.htDisabled):hover, .handsontable.htFiltersConditionsMenu table tbody tr td:not(.handsontable.htDropdownMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htDropdownMenu table tbody tr td.htDisabled, .handsontable.htContextMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htContextMenu table tbody tr td.htDisabled, .handsontable.htFiltersConditionsMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htFiltersConditionsMenu table tbody tr td.htDisabled):hover {\n background: color-mix(in srgb, var(--ht-menu-item-hover-color) var(--ht-menu-item-hover-color-opacity, 100%), transparent) !important;\n cursor: pointer;\n}\n.handsontable.htDropdownMenu table tbody tr td:not(.handsontable.htDropdownMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htDropdownMenu table tbody tr td.htDisabled, .handsontable.htContextMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htContextMenu table tbody tr td.htDisabled, .handsontable.htFiltersConditionsMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htFiltersConditionsMenu table tbody tr td.htDisabled).current:not([aria-expanded=true]), .handsontable.htContextMenu table tbody tr td:not(.handsontable.htDropdownMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htDropdownMenu table tbody tr td.htDisabled, .handsontable.htContextMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htContextMenu table tbody tr td.htDisabled, .handsontable.htFiltersConditionsMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htFiltersConditionsMenu table tbody tr td.htDisabled).current:not([aria-expanded=true]), .handsontable.htFiltersConditionsMenu table tbody tr td:not(.handsontable.htDropdownMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htDropdownMenu table tbody tr td.htDisabled, .handsontable.htContextMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htContextMenu table tbody tr td.htDisabled, .handsontable.htFiltersConditionsMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htFiltersConditionsMenu table tbody tr td.htDisabled).current:not([aria-expanded=true]) {\n box-shadow: inset 0 0 0 1px var(--ht-accent-color);\n}\n.handsontable.htDropdownMenu table tbody tr td.htSubmenu .htItemWrapper, .handsontable.htContextMenu table tbody tr td.htSubmenu .htItemWrapper, .handsontable.htFiltersConditionsMenu table tbody tr td.htSubmenu .htItemWrapper {\n margin-inline-end: calc(2 * var(--ht-gap-size, 4px) + var(--ht-icon-size));\n}\n.handsontable.htDropdownMenu table tbody tr td.htSubmenu .htItemWrapper::after, .handsontable.htContextMenu table tbody tr td.htSubmenu .htItemWrapper::after, .handsontable.htFiltersConditionsMenu table tbody tr td.htSubmenu .htItemWrapper::after {\n content: \"\";\n display: block;\n position: absolute;\n top: 50%;\n right: calc(var(--ht-menu-item-horizontal-padding) + var(--ht-gap-size) * 2);\n transform: translateY(-50%);\n}\n.handsontable.htDropdownMenu table tbody tr td.htSeparator, .handsontable.htContextMenu table tbody tr td.htSeparator, .handsontable.htFiltersConditionsMenu table tbody tr td.htSeparator {\n border-top: 1px solid var(--ht-border-color);\n height: 0;\n padding: 0;\n cursor: default;\n}\n.handsontable.htDropdownMenu table tbody tr td.htDisabled, .handsontable.htContextMenu table tbody tr td.htDisabled, .handsontable.htFiltersConditionsMenu table tbody tr td.htDisabled {\n color: var(--ht-disabled-color);\n cursor: default;\n}\n.handsontable.htDropdownMenu table tbody tr td.htDisabled:hover, .handsontable.htContextMenu table tbody tr td.htDisabled:hover, .handsontable.htFiltersConditionsMenu table tbody tr td.htDisabled:hover {\n background: var(--ht-background-color);\n color: var(--ht-disabled-color);\n}\n.handsontable.htDropdownMenu table tbody tr td.htHidden, .handsontable.htContextMenu table tbody tr td.htHidden, .handsontable.htFiltersConditionsMenu table tbody tr td.htHidden {\n display: none;\n}\n.handsontable.htDropdownMenu table tbody tr td:has(.htItemWrapper .selected), .handsontable.htContextMenu table tbody tr td:has(.htItemWrapper .selected), .handsontable.htFiltersConditionsMenu table tbody tr td:has(.htItemWrapper .selected) {\n background-color: color-mix(in srgb, var(--ht-menu-item-active-color) var(--ht-menu-item-active-color-opacity, 100%), transparent);\n}\n.handsontable.htDropdownMenu table tbody tr td .htItemWrapper, .handsontable.htContextMenu table tbody tr td .htItemWrapper, .handsontable.htFiltersConditionsMenu table tbody tr td .htItemWrapper {\n margin-inline: calc(2 * var(--ht-gap-size, 4px));\n}\n.handsontable.htDropdownMenu table tbody tr td .htItemWrapper::before, .handsontable.htContextMenu table tbody tr td .htItemWrapper::before, .handsontable.htFiltersConditionsMenu table tbody tr td .htItemWrapper::before {\n vertical-align: text-bottom;\n margin-right: 12px;\n}\n.handsontable.htDropdownMenu table tbody tr td .htItemWrapper span.selected, .handsontable.htContextMenu table tbody tr td .htItemWrapper span.selected, .handsontable.htFiltersConditionsMenu table tbody tr td .htItemWrapper span.selected {\n font-size: 0;\n inset: 0;\n}\n.handsontable.htDropdownMenu table tbody tr td .htItemWrapper span.selected::after, .handsontable.htContextMenu table tbody tr td .htItemWrapper span.selected::after, .handsontable.htFiltersConditionsMenu table tbody tr td .htItemWrapper span.selected::after {\n content: \"\";\n display: block;\n position: absolute;\n top: 50%;\n right: calc(var(--ht-menu-item-horizontal-padding) + var(--ht-gap-size) * 2);\n color: var(--ht-accent-color);\n transform: translateY(-50%);\n}\n.handsontable.htDropdownMenu table tbody tr td div span.selected, .handsontable.htContextMenu table tbody tr td div span.selected, .handsontable.htFiltersConditionsMenu table tbody tr td div span.selected {\n position: absolute;\n inset-inline-end: 0;\n}\n.handsontable.htDropdownMenu table tbody tr td .htUIButton, .handsontable.htContextMenu table tbody tr td .htUIButton, .handsontable.htFiltersConditionsMenu table tbody tr td .htUIButton {\n width: calc(50% - var(--ht-gap-size));\n}\n.handsontable.htDropdownMenu table tbody tr td .htUIButton input, .handsontable.htContextMenu table tbody tr td .htUIButton input, .handsontable.htFiltersConditionsMenu table tbody tr td .htUIButton input {\n width: 100%;\n}\n.handsontable .htUIClearAll a,\n.handsontable .htUISelectAll a {\n padding: var(--ht-gap-size);\n display: inline-block;\n text-decoration: none;\n}\n.handsontable .htUIMultipleSelect .ht_master .wtHolder {\n overflow-y: scroll !important;\n background: transparent;\n border-radius: 0 !important;\n}\n.handsontable .htUIMultipleSelect .ht_master .wtHolder .htCore {\n box-shadow: none;\n}\n\n[dir=rtl].handsontable.htDropdownMenu table tbody tr td.htSubmenu .htItemWrapper::after, [dir=rtl].handsontable.htContextMenu table tbody tr td.htSubmenu .htItemWrapper::after, [dir=rtl].handsontable.htFiltersConditionsMenu table tbody tr td.htSubmenu .htItemWrapper::after {\n left: calc(4 * var(--ht-gap-size));\n right: auto;\n transform: translateY(-50%) rotate(180deg);\n}\n[dir=rtl].handsontable.htDropdownMenu table tbody tr td .htItemWrapper span.selected::after, [dir=rtl].handsontable.htContextMenu table tbody tr td .htItemWrapper span.selected::after, [dir=rtl].handsontable.htFiltersConditionsMenu table tbody tr td .htItemWrapper span.selected::after {\n left: calc(4 * var(--ht-gap-size));\n right: auto;\n}\n\n.handsontable.htFiltersConditionsMenu:not(.htGhostTable) {\n z-index: 1070;\n}\n.handsontable .ht_master table td.htCustomMenuRenderer {\n cursor: auto;\n}\n.handsontable .ht_master table td.htCustomMenuRenderer.htFiltersMenuActionBar {\n padding-top: calc(var(--ht-menu-item-vertical-padding, 4px) * 2);\n}\n.handsontable .htFiltersMenuLabel {\n font-size: var(--ht-font-size-small);\n line-height: var(--ht-line-height-small);\n font-weight: var(--ht-font-weight);\n margin-bottom: calc(var(--ht-gap-size, 2px) * 2);\n}\n.handsontable .htFiltersMenuLabel:empty {\n display: none;\n}\n.handsontable .htFiltersMenuCondition {\n padding-top: calc(var(--ht-gap-size, 2px) * 3) !important;\n padding-bottom: 0 !important;\n}\n.handsontable .htFiltersMenuCondition .border {\n border-bottom: 1px solid var(--ht-border-color) !important;\n}\n.handsontable .htFiltersMenuCondition .htUIInput {\n margin-top: calc(var(--ht-gap-size, 2px) * 2);\n}\n.handsontable .htFiltersMenuValue {\n padding-top: calc(var(--ht-gap-size, 2px) * 3) !important;\n padding-bottom: 0 !important;\n border-bottom: 1px solid var(--ht-border-color) !important;\n}\n.handsontable .htFiltersMenuOperators {\n padding-top: calc(var(--ht-gap-size, 2px) * 2) !important;\n padding-bottom: 0 !important;\n}\n.handsontable .htUISelectionControls {\n padding-top: calc(var(--ht-gap-size, 2px) * 2) !important;\n padding-bottom: var(--ht-gap-size, 2px) !important;\n margin: 0 calc(var(--ht-gap-size, 2px) * -1);\n}\n.handsontable .htUIMultipleSelectHot {\n --ht-cell-horizontal-padding: calc(\n var(--ht-menu-item-horizontal-padding, 2px) +\n var(--ht-gap-size, 2px) * 2);\n overflow: initial !important;\n width: calc(100% + var(--ht-menu-item-horizontal-padding, 2px) * 2 + var(--ht-gap-size, 2px) * 4);\n margin: 0 calc((var(--ht-menu-item-horizontal-padding, 2px) + var(--ht-gap-size, 2px) * 2) * -1);\n}\n.handsontable .htUIMultipleSelectHot::before {\n content: \"\";\n display: block;\n position: absolute;\n top: -1px;\n left: 0;\n width: 100%;\n height: 1px;\n background-color: var(--ht-border-color);\n}\n.handsontable .htUIMultipleSelectHot .wtHolder {\n padding: 0;\n overflow-x: hidden;\n box-sizing: border-box;\n}\n.handsontable .htUIMultipleSelectHot .wtHolder .wtSpreader {\n padding: calc(var(--ht-gap-size) * 2) 0;\n}\n.handsontable .htUIMultipleSelectHot .wtHolder td {\n height: auto !important;\n padding: 4px var(--ht-cell-horizontal-padding);\n}\n.handsontable .htUIClearAll,\n.handsontable .htUISelectAll {\n display: inline-block;\n margin-right: var(--ht-gap-size, 4px);\n margin-bottom: var(--ht-gap-size, 4px);\n}\n.handsontable .htUIClearAll a,\n.handsontable .htUISelectAll a {\n font-size: var(--ht-font-size);\n line-height: var(--ht-line-height);\n color: var(--ht-link-color);\n border-radius: var(--ht-button-border-radius);\n}\n.handsontable .htUIClearAll a:hover,\n.handsontable .htUISelectAll a:hover {\n color: var(--ht-link-hover-color);\n}\n.handsontable .htUIClearAll a:focus,\n.handsontable .htUISelectAll a:focus {\n outline: 1px solid var(--ht-link-hover-color);\n}\n.handsontable .htUIMultipleSelect .ht_master .wtHolder {\n overflow: auto;\n}\n.handsontable .htUIMultipleSelect .ht_master .wtHolder .wtHider,\n.handsontable .htUIMultipleSelect .ht_master .wtHolder .htCore,\n.handsontable .htUIMultipleSelect .ht_master .wtHolder tr,\n.handsontable .htUIMultipleSelect .ht_master .wtHolder td {\n background: none;\n}\n.handsontable .htUIInput.htUIButton {\n cursor: pointer;\n display: inline-block;\n}\n.handsontable .htUIInput.htUIButtonOK {\n margin-inline-start: 0;\n margin-inline-end: calc(2 * var(--ht-gap-size, 2px));\n}\n\n.handsontable .htCommentCell {\n position: relative;\n}\n.handsontable .htCommentCell::after {\n content: \"\";\n display: block;\n position: absolute;\n top: 0;\n inset-inline-end: 0;\n inset-inline-start: unset;\n border-inline-start: var(--ht-comments-indicator-size, 4px) solid transparent;\n border-inline-end: none;\n border-top: var(--ht-comments-indicator-size, 4px) solid var(--ht-comments-indicator-color, #1a42e8);\n}\n\n.htCommentsContainer .htComments {\n display: none;\n z-index: 1059;\n position: absolute;\n}\n.htCommentsContainer .htCommentTextArea {\n font-family: var(--ht-font-family), -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n box-shadow: var(--ht-menu-shadow-x, 0) var(--ht-menu-shadow-y, 0) var(--ht-menu-shadow-blur, 8px) color-mix(in srgb, var(--ht-menu-shadow-color, rgb(0, 0, 0)) var(--ht-menu-shadow-opacity, 100%), transparent);\n width: 240px;\n height: 88px;\n font-size: var(--ht-font-size);\n line-height: var(--ht-line-height);\n font-weight: var(--ht-font-weight);\n margin: 0 -1px;\n padding: var(--ht-comments-textarea-vertical-padding) var(--ht-comments-textarea-horizontal-padding);\n border: var(--ht-comments-textarea-border-width, 1px) solid var(--ht-comments-textarea-border-color, transparent);\n border-inline-start: var(--ht-comments-textarea-border-width, 1px) solid var(--ht-comments-textarea-border-color, #1a42e8);\n color: var(--ht-comments-textarea-foreground-color);\n background-color: var(--ht-comments-textarea-background-color, #ffffff);\n outline: 0 !important;\n box-sizing: border-box;\n -webkit-appearance: none;\n}\n.htCommentsContainer .htCommentTextArea:focus {\n border: var(--ht-comments-textarea-focus-border-width, 1px) solid var(--ht-comments-textarea-focus-border-color, #1a42e8);\n color: var(--ht-comments-textarea-focus-foreground-color);\n background-color: var(--ht-comments-textarea-focus-background-color, #ffffff);\n}\n\n.htBorders .wtBorder.ht-border-style-dashed-vertical {\n background-image: repeating-linear-gradient(to bottom, var(--ht-custom-border-color) 0 5px, transparent 0 10px);\n}\n.htBorders .wtBorder.ht-border-style-dashed-horizontal {\n background-image: repeating-linear-gradient(to right, var(--ht-custom-border-color) 0 5px, transparent 0 10px);\n}\n.htBorders .wtBorder.ht-border-style-dotted-horizontal {\n background-image: radial-gradient(circle, var(--ht-custom-border-color) calc(var(--ht-custom-border-size) / 2), transparent 0);\n background-size: calc(var(--ht-custom-border-size) * 2) var(--ht-custom-border-size);\n background-repeat: repeat-x;\n}\n.htBorders .wtBorder.ht-border-style-dotted-vertical {\n background-image: radial-gradient(circle, var(--ht-custom-border-color) calc(var(--ht-custom-border-size) / 2), transparent 0);\n background-size: var(--ht-custom-border-size) calc(var(--ht-custom-border-size) * 2);\n background-repeat: repeat-y;\n}\n\n.handsontable .columnSorting:not(.indicatorDisabled) {\n position: relative;\n}\n.handsontable .columnSorting:not(.indicatorDisabled).sortAction.ascending, .handsontable .columnSorting:not(.indicatorDisabled).sortAction.descending {\n padding-inline-end: calc(var(--ht-icon-size, 16px) + 2px);\n}\n.handsontable .columnSorting:not(.indicatorDisabled).sortAction:hover {\n text-decoration: none;\n cursor: pointer;\n}\n.handsontable .columnSorting:not(.indicatorDisabled).sortAction::before {\n content: \"\";\n display: block;\n width: var(--ht-icon-size, 16px);\n position: absolute;\n top: 50%;\n right: 2px;\n transform: translateY(-50%);\n text-align: right;\n}\n.handsontable .htRight .columnSorting.sortAction.ascending, .handsontable .htRight .columnSorting.sortAction.descending {\n padding-inline-start: calc(var(--ht-icon-size, 16px) + 2px);\n padding-inline-end: 0;\n}\n.handsontable .htRight .columnSorting.sortAction::before {\n left: 2px;\n right: auto;\n text-align: left;\n}\n\n[dir=rtl] .handsontable .columnSorting.sortAction::before {\n left: 2px;\n right: auto;\n text-align: left;\n}\n[dir=rtl] .handsontable .htRight .columnSorting.sortAction.ascending, [dir=rtl] .handsontable .htRight .columnSorting.sortAction.descending {\n padding-inline-start: 0;\n padding-inline-end: calc(var(--ht-icon-size, 16px) + 2px);\n}\n[dir=rtl] .handsontable .htLeft .columnSorting.sortAction.ascending, [dir=rtl] .handsontable .htLeft .columnSorting.sortAction.descending {\n padding-inline-start: calc(var(--ht-icon-size, 16px) + 2px);\n padding-inline-end: 0;\n}\n[dir=rtl] .handsontable .htLeft .columnSorting.sortAction::before {\n left: auto;\n right: 2px;\n text-align: right;\n}\n\n.htGhostTable .htCore span.colHeader.columnSorting:not(.indicatorDisabled)::before {\n content: \"*\";\n display: inline-block;\n position: relative;\n /* The multi-line header and header with longer text need more padding to not hide arrow,\n we make header wider in `GhostTable` to make some space for arrow which is positioned absolutely in the main table */\n padding-inline-end: calc(var(--ht-icon-size, 16px) + 2px);\n}\n\n.handsontable .colHeader.columnSorting::after {\n content: \"\";\n display: block;\n width: 8px;\n position: absolute;\n top: 50%;\n right: 0;\n transform: translateY(-50%);\n margin-top: 4px;\n font-size: 8px;\n text-align: right;\n}\n.handsontable .colHeader.columnSorting[class^=sort-]::after, .handsontable .colHeader.columnSorting[class*=\" sort-\"]::after {\n content: \"+\";\n}\n.handsontable .colHeader.columnSorting.sort-1::after {\n content: \"1\";\n}\n.handsontable .colHeader.columnSorting.sort-2::after {\n content: \"2\";\n}\n.handsontable .colHeader.columnSorting.sort-3::after {\n content: \"3\";\n}\n.handsontable .colHeader.columnSorting.sort-4::after {\n content: \"4\";\n}\n.handsontable .colHeader.columnSorting.sort-5::after {\n content: \"5\";\n}\n.handsontable .colHeader.columnSorting.sort-6::after {\n content: \"6\";\n}\n.handsontable .colHeader.columnSorting.sort-7::after {\n content: \"7\";\n}\n.handsontable .htRight .colHeader.columnSorting::after {\n left: 0;\n right: auto;\n text-align: left;\n}\n\n[dir=rtl] .handsontable .colHeader.columnSorting::after {\n left: 0;\n right: auto;\n text-align: left;\n}\n[dir=rtl] .handsontable .htLeft .colHeader.columnSorting::after {\n left: auto;\n right: 0;\n text-align: right;\n}\n\n.htGhostTable th div:has(.changeType) span.colHeader.columnSorting:not(.indicatorDisabled) {\n padding-inline-end: var(--ht-gap-size);\n}\n\n.handsontable .htRowHeaders .ht_master.innerBorderInlineStart ~ .ht_clone_top_inline_start_corner th:nth-child(2), .handsontable .htRowHeaders .ht_master.innerBorderInlineStart ~ .ht_clone_inline_start td:first-of-type {\n border-left: 0 none;\n}\n.handsontable .ht_clone_top_inline_start_corner th.ht__active_highlight {\n box-shadow: none;\n}\n\n.handsontable .manualColumnResizer {\n position: absolute;\n top: 0;\n width: 10px;\n margin: 0;\n cursor: col-resize;\n background: none;\n opacity: 0;\n z-index: 210;\n}\n.handsontable .manualColumnResizer::before, .handsontable .manualColumnResizer::after {\n content: \"\";\n display: block;\n position: absolute;\n top: 50%;\n left: 1px;\n width: 2px;\n height: calc(100% - 12px);\n max-height: 16px;\n margin-top: 0.5px;\n background: var(--ht-resize-indicator-color);\n border-radius: 2px;\n transform: translateY(-50%);\n}\n.handsontable .manualColumnResizer::after {\n left: auto;\n right: 0;\n}\n.handsontable .manualColumnResizer:hover, .handsontable .manualColumnResizer.active {\n opacity: 1;\n}\n.handsontable .manualColumnResizerGuide {\n position: absolute;\n inset-inline-end: unset;\n top: 0;\n width: 0;\n margin-inline-start: 5px;\n margin-inline-end: unset;\n display: none;\n border-inline-end: 1px solid var(--ht-accent-color);\n border-inline-start: none;\n}\n.handsontable .manualColumnResizerGuide.active {\n display: block;\n z-index: 209;\n}\n\n.handsontable .manualRowResizer {\n position: absolute;\n left: 0;\n z-index: 210;\n height: 10px;\n margin: 0;\n cursor: row-resize;\n background: none;\n opacity: 0;\n}\n.handsontable .manualRowResizer::before, .handsontable .manualRowResizer::after {\n content: \"\";\n display: block;\n position: absolute;\n top: 1px;\n left: 50%;\n width: calc(100% - 12px);\n max-width: 16px;\n height: 2px;\n background: var(--ht-resize-indicator-color);\n border-radius: 2px;\n transform: translateX(-50%);\n}\n.handsontable .manualRowResizer::after {\n top: auto;\n bottom: 0;\n}\n.handsontable .manualRowResizer:hover, .handsontable .manualRowResizer.active {\n opacity: 1;\n}\n.handsontable .manualRowResizerGuide {\n position: absolute;\n left: 0;\n bottom: 0;\n height: 0;\n margin-top: 5px;\n display: none;\n border-bottom: 1px solid var(--ht-accent-color);\n border-top: none;\n}\n.handsontable .manualRowResizerGuide.active {\n display: block;\n z-index: 209;\n}\n\n.handsontable tbody td[rowspan][class*=area][class*=highlight]:not([class*=fullySelectedMergedCell])::before {\n opacity: 0;\n}\n\n.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-multiple]::before {\n opacity: 0.14;\n}\n\n.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-0]:before {\n opacity: 0.14;\n}\n\n.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-1]:before {\n opacity: 0.21;\n}\n\n.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-2]:before {\n opacity: 0.28;\n}\n\n.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-3]:before {\n opacity: 0.35;\n}\n\n.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-4]:before {\n opacity: 0.42;\n}\n\n.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-5]:before {\n opacity: 0.49;\n}\n\n.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-6]:before {\n opacity: 0.56;\n}\n\n.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-7]:before {\n opacity: 0.63;\n}\n\n.handsontable .wtHider {\n position: relative;\n}\n.handsontable .ht__manualColumnMove.after-selection--columns thead th.ht__highlight, .handsontable.ht__manualColumnMove.after-selection--columns thead th.ht__highlight {\n cursor: move;\n cursor: -moz-grab;\n cursor: -webkit-grab;\n cursor: grab;\n}\n.handsontable .ht__manualColumnMove.on-moving--columns *,\n.handsontable .ht__manualColumnMove.on-moving--columns thead th.ht__highlight, .handsontable.ht__manualColumnMove.on-moving--columns *,\n.handsontable.ht__manualColumnMove.on-moving--columns thead th.ht__highlight {\n cursor: move;\n cursor: -moz-grabbing;\n cursor: -webkit-grabbing;\n cursor: grabbing;\n}\n.handsontable .ht__manualColumnMove.on-moving--columns .manualColumnResizer, .handsontable.ht__manualColumnMove.on-moving--columns .manualColumnResizer {\n display: none;\n}\n.handsontable .ht__manualColumnMove--guideline, .handsontable .ht__manualColumnMove--backlight, .handsontable.ht__manualColumnMove--guideline, .handsontable.ht__manualColumnMove--backlight {\n position: absolute;\n height: 100%;\n display: none;\n}\n.handsontable .ht__manualColumnMove--guideline, .handsontable.ht__manualColumnMove--guideline {\n width: 1px;\n top: 0;\n margin-inline-start: -0.5px;\n margin-inline-end: 0;\n z-index: 205;\n background: var(--ht-move-indicator-color, #1a42e8);\n}\n.handsontable .ht__manualColumnMove--backlight, .handsontable.ht__manualColumnMove--backlight {\n display: none;\n z-index: 205;\n pointer-events: none;\n background: color-mix(in srgb, var(--ht-move-backlight-color) var(--ht-move-backlight-opacity, 100%), transparent);\n}\n.handsontable .on-moving--columns.show-ui .ht__manualColumnMove--guideline,\n.handsontable .on-moving--columns .ht__manualColumnMove--backlight, .handsontable.on-moving--columns.show-ui .ht__manualColumnMove--guideline,\n.handsontable.on-moving--columns .ht__manualColumnMove--backlight {\n display: block;\n}\n\n.handsontable .wtHider {\n position: relative;\n}\n.handsontable .ht__manualRowMove.after-selection--rows tbody th.ht__highlight, .handsontable.ht__manualRowMove.after-selection--rows tbody th.ht__highlight {\n cursor: move;\n cursor: -moz-grab;\n cursor: -webkit-grab;\n cursor: grab;\n}\n.handsontable .ht__manualRowMove.on-moving--rows *,\n.handsontable .ht__manualRowMove.on-moving--rows tbody th.ht__highlight, .handsontable.ht__manualRowMove.on-moving--rows *,\n.handsontable.ht__manualRowMove.on-moving--rows tbody th.ht__highlight {\n cursor: move;\n cursor: -moz-grabbing;\n cursor: -webkit-grabbing;\n cursor: grabbing;\n}\n.handsontable .ht__manualRowMove.on-moving--rows .manualRowResizer, .handsontable.ht__manualRowMove.on-moving--rows .manualRowResizer {\n display: none;\n}\n.handsontable .ht__manualRowMove--guideline, .handsontable .ht__manualRowMove--backlight, .handsontable.ht__manualRowMove--guideline, .handsontable.ht__manualRowMove--backlight {\n position: absolute;\n width: 100%;\n display: none;\n}\n.handsontable .ht__manualRowMove--guideline, .handsontable.ht__manualRowMove--guideline {\n border-top: 1px solid var(--ht-move-indicator-color);\n left: 0;\n z-index: 205;\n}\n.handsontable .ht__manualRowMove--backlight, .handsontable.ht__manualRowMove--backlight {\n display: none;\n z-index: 205;\n pointer-events: none;\n background: color-mix(in srgb, var(--ht-move-backlight-color) var(--ht-move-backlight-opacity, 100%), transparent);\n}\n.handsontable .on-moving--rows.show-ui .ht__manualRowMove--guideline,\n.handsontable .on-moving--rows .ht__manualRowMove--backlight, .handsontable.on-moving--rows.show-ui .ht__manualRowMove--guideline,\n.handsontable.on-moving--rows .ht__manualRowMove--backlight {\n display: block;\n}\n\n.ht-dialog {\n scrollbar-width: auto;\n scrollbar-color: var(--ht-scrollbar-thumb-color) var(--ht-scrollbar-track-color);\n position: absolute;\n top: 0;\n left: 0;\n display: none;\n font-size: var(--ht-font-size);\n line-height: var(--ht-line-height);\n letter-spacing: var(--ht-letter-spacing);\n width: 100%;\n height: 100%;\n z-index: 1060;\n opacity: 0;\n overflow-y: auto;\n border-radius: var(--ht-wrapper-border-radius);\n border: 1px solid var(--ht-border-color);\n box-sizing: border-box !important;\n}\n.ht-dialog[dir=rtl] {\n left: auto;\n right: 0;\n}\n.ht-dialog:focus {\n border: 1px solid var(--ht-accent-color);\n outline: none;\n}\n.ht-dialog:has(.htFocusCatcher:focus) {\n border: 1px solid var(--ht-accent-color);\n outline: none;\n}\n.ht-dialog * {\n box-sizing: border-box !important;\n}\n.ht-dialog--background-solid {\n background-color: var(--ht-dialog-solid-background-color);\n}\n.ht-dialog--background-semi-transparent {\n background-color: color-mix(in srgb, var(--ht-dialog-semi-transparent-background-color) var(--ht-dialog-semi-transparent-background-opacity, 100%), transparent);\n}\n.ht-dialog--animation {\n transition: opacity var(--ht-table-transition) ease-in-out;\n}\n.ht-dialog--show {\n opacity: 1;\n}\n.ht-dialog__content-wrapper {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n min-height: 100%;\n padding: calc(var(--ht-gap-size) * 4);\n border-radius: var(--ht-wrapper-border-radius);\n}\n.ht-dialog__content {\n position: relative;\n padding: var(--ht-dialog-content-padding-horizontal) var(--ht-dialog-content-padding-vertical);\n max-width: 480px;\n color: var(--ht-foreground-color);\n}\n.ht-dialog__content--background {\n box-shadow: var(--ht-shadow-x, 0) var(--ht-shadow-y, 0) var(--ht-shadow-blur, 8px) color-mix(in srgb, var(--ht-shadow-color, rgb(0, 0, 0)) var(--ht-shadow-opacity, 100%), transparent);\n border-radius: var(--ht-dialog-content-border-radius);\n background-color: var(--ht-dialog-content-background-color);\n}\n.ht-dialog--confirm .ht-dialog__content-wrapper {\n text-align: center;\n padding: calc(var(--ht-gap-size) * 2);\n}\n.ht-dialog--confirm .ht-dialog__content-wrapper-inner {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n max-width: 480px;\n padding: calc(var(--ht-gap-size) * 2);\n border-radius: var(--ht-wrapper-border-radius);\n}\n.ht-dialog--confirm .ht-dialog__content-wrapper-inner--background {\n box-shadow: var(--ht-shadow-x, 0) var(--ht-shadow-y, 0) var(--ht-shadow-blur, 8px) color-mix(in srgb, var(--ht-shadow-color, rgb(0, 0, 0)) var(--ht-shadow-opacity, 100%), transparent);\n border-radius: var(--ht-dialog-content-border-radius);\n background-color: var(--ht-dialog-content-background-color);\n}\n.ht-dialog--confirm .ht-dialog__content-wrapper-inner:focus {\n outline: none;\n box-shadow: 0 0 0 1px var(--ht-accent-color);\n}\n.ht-dialog--confirm .ht-dialog__content {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--ht-gap-size);\n}\n.ht-dialog--confirm .ht-dialog__content:has(.ht-dialog__buttons) {\n gap: calc(var(--ht-gap-size) * 2);\n}\n.ht-dialog--confirm .ht-dialog__title {\n margin: 0;\n font-size: var(--ht-font-size);\n font-weight: var(--ht-font-weight);\n line-height: var(--ht-line-height);\n}\n.ht-dialog--confirm .ht-dialog__description {\n margin: 0;\n color: var(--ht-foreground-secondary-color);\n font-size: var(--ht-font-size-small);\n line-height: var(--ht-line-height-small);\n font-weight: var(--ht-font-weight);\n}\n.ht-dialog--confirm .ht-dialog__buttons {\n display: flex;\n justify-content: center;\n flex-direction: row;\n flex-wrap: wrap;\n gap: calc(var(--ht-gap-size) * 2);\n}\n\n.ht-notification {\n position: absolute;\n inset: 0;\n z-index: 1070;\n pointer-events: none;\n overflow: visible;\n}\n.ht-notification__stack {\n position: absolute;\n display: flex;\n flex-direction: column;\n gap: 10px;\n max-width: min(420px, 100% - 40px);\n overflow-x: hidden;\n overflow-y: auto;\n overscroll-behavior: contain;\n pointer-events: auto;\n -webkit-overflow-scrolling: touch;\n min-height: 0;\n padding: 10px;\n scrollbar-width: auto;\n scrollbar-color: var(--ht-scrollbar-thumb-color) var(--ht-scrollbar-track-color);\n}\n.ht-notification__stack--top-start {\n top: 10px;\n inset-inline-start: 10px;\n align-items: flex-start;\n max-height: calc(100% - 40px);\n}\n.ht-notification__stack--top-end {\n top: 10px;\n inset-inline-end: 10px;\n align-items: flex-end;\n max-height: calc(100% - 40px);\n}\n.ht-notification__stack--bottom-start {\n bottom: 10px;\n inset-inline-start: 10px;\n align-items: flex-start;\n max-height: calc(100% - 40px);\n}\n.ht-notification__stack--bottom-end {\n bottom: 10px;\n inset-inline-end: 10px;\n align-items: flex-end;\n max-height: calc(100% - 40px);\n}\n.ht-notification__toast {\n box-shadow: var(--ht-shadow-x, 0) var(--ht-shadow-y, 0) var(--ht-shadow-blur, 8px) color-mix(in srgb, var(--ht-shadow-color, rgb(0, 0, 0)) var(--ht-shadow-opacity, 100%), transparent);\n position: relative;\n display: flex;\n flex-shrink: 0;\n max-width: 100%;\n pointer-events: auto;\n color: var(--ht-notification-foreground-color, var(--ht-foreground-color));\n background-color: var(--ht-notification-background-color, var(--ht-background-color));\n border: 1px solid var(--ht-notification-border-color, var(--ht-border-color));\n border-radius: var(--ht-wrapper-border-radius, 4px);\n font-size: var(--ht-font-size);\n line-height: var(--ht-line-height);\n letter-spacing: var(--ht-letter-spacing);\n outline: none;\n}\n.ht-notification__toast:focus-visible {\n box-shadow: 0 0 0 1px var(--ht-accent-color);\n}\n.ht-notification__toast--animate {\n opacity: 0;\n transition: opacity var(--ht-table-transition, 0.15s) ease-out, transform var(--ht-table-transition, 0.15s) ease-out;\n}\n.ht-notification__toast--animate.ht-notification__toast--stack-top:not(.ht-notification__toast--visible) {\n transform: translateY(-6px);\n}\n.ht-notification__toast--animate.ht-notification__toast--stack-bottom:not(.ht-notification__toast--visible) {\n transform: translateY(6px);\n}\n.ht-notification__toast--visible {\n opacity: 1;\n transform: translateY(0);\n}\n.ht-notification__toast--info .ht-notification__accent {\n display: none;\n}\n.ht-notification__toast--success .ht-notification__accent {\n background-color: var(--ht-notification-success-accent, #37bc6c);\n}\n.ht-notification__toast--warning .ht-notification__accent {\n background-color: var(--ht-notification-warning-accent, #fbe952);\n}\n.ht-notification__toast--error .ht-notification__accent {\n background-color: var(--ht-notification-error-accent, #fa4d32);\n}\n.ht-notification__toast-inner {\n display: flex;\n flex-direction: row;\n align-items: stretch;\n width: 100%;\n min-width: 0;\n padding: 10px;\n gap: 0;\n direction: inherit;\n}\n.ht-notification__accent {\n box-sizing: border-box;\n flex: 0 0 4px;\n align-self: stretch;\n border-radius: 4px;\n margin-inline-end: 10px;\n}\n.ht-notification__body {\n flex: 1 1 auto;\n min-width: 0;\n}\n.ht-notification__title {\n margin: 0 0 var(--ht-gap-size);\n font-size: var(--ht-font-size);\n font-weight: var(--ht-font-weight, 600);\n}\n.ht-notification__message {\n margin: 0;\n font-size: var(--ht-font-size-small);\n word-break: break-word;\n}\n.ht-notification__actions {\n display: flex;\n flex-wrap: wrap;\n gap: var(--ht-gap-size);\n margin-top: var(--ht-gap-size);\n}\n.ht-notification__close {\n position: relative;\n box-sizing: border-box;\n flex: 0 0 auto;\n align-self: flex-start;\n margin-inline-start: 4px;\n width: var(--ht-icon-button-hit-area-size);\n height: var(--ht-icon-button-hit-area-size);\n padding: 0;\n border: none;\n background: transparent;\n color: var(--ht-icon-button-icon-color, inherit);\n cursor: pointer;\n border-radius: var(--ht-icon-button-border-radius, var(--ht-wrapper-border-radius, 4px));\n flex-shrink: 0;\n overflow: visible;\n}\n.ht-notification__close::before {\n content: \"\";\n display: block;\n position: absolute;\n top: 50%;\n inset-inline-start: 50%;\n margin-top: calc(-0.5 * var(--ht-icon-size));\n margin-inline-start: calc(-0.5 * var(--ht-icon-size));\n}\n.ht-notification__close:hover {\n color: var(--ht-icon-button-hover-icon-color, inherit);\n background-color: var(--ht-icon-button-hover-background-color, color-mix(in srgb, var(--ht-foreground-color) 8%, transparent));\n}\n.ht-notification__close:focus-visible {\n outline: 2px solid var(--ht-accent-color);\n outline-offset: 2px;\n}\n\n.handsontable.ht-pagination {\n color: var(--ht-pagination-bar-foreground-color);\n background: var(--ht-pagination-bar-background-color);\n border: 1px solid var(--ht-wrapper-border-color);\n border-top-color: transparent;\n border-radius: 0 0 var(--ht-wrapper-border-radius) var(--ht-wrapper-border-radius);\n font-size: var(--ht-font-size);\n line-height: var(--ht-line-height);\n box-sizing: border-box;\n overflow-x: auto;\n}\n.handsontable.ht-pagination--bordered {\n border-top-color: var(--ht-wrapper-border-color);\n}\n.handsontable.ht-pagination .ht-pagination__inner {\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: calc(var(--ht-gap-size) * 4);\n border-radius: 0 0 var(--ht-wrapper-border-radius) var(--ht-wrapper-border-radius);\n padding-inline: var(--ht-pagination-bar-horizontal-padding);\n padding-block: var(--ht-pagination-bar-vertical-padding);\n min-width: 230px;\n}\n.handsontable.ht-pagination .ht-page-size-section {\n display: flex;\n align-items: center;\n gap: calc(var(--ht-gap-size) * 2);\n}\n.handsontable.ht-pagination .ht-page-size-section__label {\n white-space: nowrap;\n}\n.handsontable.ht-pagination .ht-page-size-section__select-wrapper {\n position: relative;\n border-radius: var(--ht-input-border-radius);\n}\n.handsontable.ht-pagination .ht-page-size-section__select-wrapper select {\n padding-inline-start: var(--ht-gap-size);\n padding-inline-end: calc(var(--ht-gap-size) + var(--ht-icon-size));\n padding-top: var(--ht-gap-size);\n padding-bottom: var(--ht-gap-size);\n border-radius: var(--ht-input-border-radius);\n color: var(--ht-input-foreground-color);\n background-color: var(--ht-input-background-color);\n border: 1px solid var(--ht-input-border-color);\n line-height: calc(var(--ht-line-height) - 4px);\n -webkit-appearance: none;\n font-size: inherit;\n cursor: pointer;\n}\n.handsontable.ht-pagination .ht-page-size-section__select-wrapper select:disabled {\n opacity: 0.4;\n cursor: default;\n color: var(--ht-input-disabled-foreground-color);\n background-color: var(--ht-input-disabled-background-color);\n border-color: var(--ht-input-disabled-border-color);\n}\n.handsontable.ht-pagination .ht-page-size-section__select-wrapper select:hover:not(:disabled) {\n color: var(--ht-input-hover-foreground-color);\n background-color: var(--ht-input-hover-background-color);\n border-color: var(--ht-input-hover-border-color);\n}\n.handsontable.ht-pagination .ht-page-size-section__select-wrapper select:focus {\n color: var(--ht-input-focus-foreground-color);\n background-color: var(--ht-input-focus-background-color);\n border-color: var(--ht-input-focus-border-color);\n outline: none;\n}\n.handsontable.ht-pagination .ht-page-size-section__select-wrapper::after {\n content: \"\";\n display: block;\n position: absolute;\n inset-inline-end: var(--ht-gap-size);\n inset-block-end: 50%;\n transform: translateY(50%);\n background-color: var(--ht-foreground-color);\n pointer-events: none;\n}\n.handsontable.ht-pagination .ht-page-counter-section {\n margin-inline-end: auto;\n}\n.handsontable.ht-pagination .ht-page-navigation-section {\n display: flex;\n align-items: center;\n gap: 1px;\n}\n.handsontable.ht-pagination .ht-page-navigation-section__button {\n font-size: inherit;\n border: 1px solid var(--ht-pagination-button-border-color);\n color: var(--ht-pagination-button-foreground-color);\n background-color: var(--ht-pagination-button-background-color);\n border-radius: var(--ht-icon-button-large-border-radius);\n padding: var(--ht-icon-button-large-padding);\n cursor: pointer;\n}\n.handsontable.ht-pagination .ht-page-navigation-section__button::before {\n content: \"\";\n display: block;\n}\n.handsontable.ht-pagination .ht-page-navigation-section__button--disabled {\n cursor: default;\n pointer-events: none;\n color: var(--ht-pagination-button-disabled-foreground-color);\n background-color: var(--ht-pagination-button-disabled-background-color);\n border-color: var(--ht-pagination-button-disabled-border-color);\n}\n.handsontable.ht-pagination .ht-page-navigation-section__button:hover:not(:disabled) {\n border-color: var(--ht-pagination-button-hover-border-color);\n color: var(--ht-pagination-button-hover-foreground-color);\n background-color: var(--ht-pagination-button-hover-background-color);\n}\n.handsontable.ht-pagination .ht-page-navigation-section__button:focus {\n outline: none;\n border-color: var(--ht-pagination-button-focus-border-color);\n color: var(--ht-pagination-button-focus-foreground-color);\n background-color: var(--ht-pagination-button-focus-background-color);\n}\n.handsontable.ht-pagination .ht-page-navigation-section__label {\n white-space: nowrap;\n min-width: 100px;\n text-align: center;\n}\n.handsontable.ht-wrapper.htPagination {\n border-end-start-radius: 0;\n border-end-end-radius: 0;\n}\n.handsontable.ht-wrapper.htPagination .htCore {\n border-end-start-radius: 0;\n border-end-end-radius: 0;\n}\n.handsontable.ht-wrapper.htPagination .htCore thead tr:last-child th:first-child,\n.handsontable.ht-wrapper.htPagination .htCore tbody tr:last-child td:first-child,\n.handsontable.ht-wrapper.htPagination .htCore tbody tr:last-child th:first-child {\n border-end-start-radius: 0 !important;\n}\n.handsontable.ht-wrapper.htPagination .htCore thead tr:last-child th:last-child,\n.handsontable.ht-wrapper.htPagination .htCore tbody tr:last-child td:last-child,\n.handsontable.ht-wrapper.htPagination .htCore tbody tr:last-child th:last-child {\n border-end-end-radius: 0 !important;\n}\n\n.ht-loading__icon-svg {\n display: block;\n width: var(--ht-icon-size);\n height: var(--ht-icon-size);\n color: var(--ht-accent-color);\n animation: ht-loading-spin 1s linear infinite;\n transform-origin: 50% 50%;\n}\n.ht-loading__content {\n display: flex;\n align-items: center;\n gap: calc(var(--ht-gap-size) * 2);\n}\n.ht-loading__title {\n margin: 0;\n font-size: var(--ht-font-size);\n font-weight: var(--ht-font-weight);\n line-height: var(--ht-line-height);\n}\n.ht-loading__description {\n margin: 0;\n color: var(--ht-foreground-secondary-color);\n font-size: var(--ht-font-size-small);\n line-height: var(--ht-line-height-small);\n font-weight: var(--ht-font-weight);\n}\n\n@keyframes ht-loading-spin {\n to {\n transform: rotate(360deg);\n }\n}\n.ht-empty-data-state {\n scrollbar-width: auto;\n scrollbar-color: var(--ht-scrollbar-thumb-color) var(--ht-scrollbar-track-color);\n display: none;\n position: absolute;\n width: 100%;\n left: 0;\n z-index: 999;\n overflow-y: auto;\n border: 1px solid var(--ht-border-color);\n border-radius: var(--ht-wrapper-border-radius);\n box-sizing: border-box;\n background-color: var(--ht-background-color);\n}\n.ht-empty-data-state * {\n box-sizing: border-box !important;\n}\n.ht-empty-data-state__content-wrapper {\n display: flex;\n align-items: center;\n justify-content: center;\n text-align: center;\n width: 100%;\n min-height: 100%;\n padding: calc(var(--ht-gap-size) * 2);\n border-radius: var(--ht-wrapper-border-radius);\n}\n.ht-empty-data-state__content-wrapper-inner {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n max-width: 480px;\n padding: calc(var(--ht-gap-size) * 2);\n border-radius: var(--ht-wrapper-border-radius);\n}\n.ht-empty-data-state__content-wrapper-inner:focus {\n outline: none;\n box-shadow: 0 0 0 1px var(--ht-accent-color);\n}\n.ht-empty-data-state__content {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--ht-gap-size);\n}\n.ht-empty-data-state__title {\n margin: 0;\n font-size: var(--ht-font-size);\n font-weight: var(--ht-font-weight);\n line-height: var(--ht-line-height);\n}\n.ht-empty-data-state__description {\n margin: 0;\n color: var(--ht-foreground-secondary-color);\n font-size: var(--ht-font-size-small);\n line-height: var(--ht-line-height-small);\n font-weight: var(--ht-font-weight);\n}\n.ht-empty-data-state__buttons {\n display: flex;\n justify-content: center;\n flex-direction: row;\n flex-wrap: wrap;\n gap: calc(var(--ht-gap-size) * 2);\n}\n.ht-empty-data-state__buttons--has-buttons {\n margin-top: calc(var(--ht-gap-size) * 2);\n}\n.ht-empty-data-state__spinner {\n flex-shrink: 0;\n width: 28px;\n height: 28px;\n margin-bottom: calc(var(--ht-gap-size) * 2);\n border: 2px solid var(--ht-border-color);\n border-top-color: var(--ht-accent-color);\n border-radius: 50%;\n animation: ht-empty-data-state-spin 0.75s linear infinite;\n}\n@media (prefers-reduced-motion: reduce) {\n .ht-empty-data-state__spinner {\n animation: none;\n border-top-color: var(--ht-border-color);\n }\n}\n.ht-empty-data-state--loading .ht-empty-data-state__content {\n gap: calc(var(--ht-gap-size) * 0.5);\n}\n.ht-empty-data-state--disable-top-border {\n border-start-start-radius: 0;\n border-start-end-radius: 0;\n border-top-width: 0;\n}\n.ht-empty-data-state--disable-inline-border {\n border-start-start-radius: 0;\n border-end-start-radius: 0;\n border-inline-start-width: 0;\n}\n.ht-empty-data-state--disable-bottom-border, .ht-empty-data-state:has(~ .ht-pagination) {\n border-end-start-radius: 0;\n border-end-end-radius: 0;\n border-bottom-width: 0;\n}\n\n@keyframes ht-empty-data-state-spin {\n to {\n transform: rotate(360deg);\n }\n}\n");
120704
+ /* eslint-disable max-len, quotes */ /* This file is autogenerated. */ /* export default */ const __rspack_default_export = ("/*!\n * Copyright (c) HANDSONCODE sp. z o. o.\n *\n * HANDSONTABLE is a software distributed by HANDSONCODE sp. z o. o., a Polish corporation based in\n * Gdynia, Poland, at Aleja Zwyciestwa 96-98, registered by the District Court in Gdansk under number\n * 538651, EU tax ID number: PL5862294002, share capital: PLN 62,800.00.\n *\n * This software is protected by applicable copyright laws, including international treaties, and dual-\n * licensed - depending on whether your use for commercial purposes, meaning intended for or\n * resulting in commercial advantage or monetary compensation, or not.\n *\n * If your use is strictly personal or solely for evaluation purposes, meaning for the purposes of testing\n * the suitability, performance, and usefulness of this software outside the production environment,\n * you agree to be bound by the terms included in the \"handsontable-non-commercial-license.pdf\" file.\n *\n * Your use of this software for commercial purposes is subject to the terms included in an applicable\n * license agreement.\n *\n * In any case, you must not make any such use of this software as to develop software which may be\n * considered competitive with this software.\n *\n * UNLESS EXPRESSLY AGREED OTHERWISE, HANDSONCODE PROVIDES THIS SOFTWARE ON AN \"AS IS\"\n * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, AND IN NO EVENT AND UNDER NO\n * LEGAL THEORY, SHALL HANDSONCODE BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY DIRECT,\n * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM\n * USE OR INABILITY TO USE THIS SOFTWARE.\n *\n * Version: 17.1.0\n * Release date: 19/05/2026 (built at 19/05/2026 14:51:38)\n */\n.ht-root-wrapper {\n font-family: var(--ht-font-family), -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n position: relative;\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.htFocusCatcher {\n display: block !important;\n position: absolute;\n width: 0;\n height: 0;\n margin: 0;\n padding: 0;\n border: 0;\n outline: 0;\n opacity: 0;\n z-index: -1;\n}\n\n.ht-grid {\n flex: 1 1 auto;\n min-height: 0;\n}\n\n.htScrollbarTest {\n scrollbar-width: auto;\n scrollbar-color: var(--ht-scrollbar-thumb-color) var(--ht-scrollbar-track-color);\n}\n\n.htScrollbarSafariTest::-webkit-scrollbar {\n width: 9px;\n height: 9px;\n}\n\n.handsontable {\n font-family: var(--ht-font-family), -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n position: relative;\n font-size: var(--ht-font-size);\n line-height: var(--ht-line-height);\n font-weight: var(--ht-font-weight);\n letter-spacing: var(--ht-letter-spacing);\n color: var(--ht-foreground-color);\n /* Miscellaneous */\n touch-action: manipulation;\n}\n.handsontable .wtHolder {\n scrollbar-width: auto;\n scrollbar-color: var(--ht-scrollbar-thumb-color) var(--ht-scrollbar-track-color);\n}\n.handsontable .wtHolder::-webkit-scrollbar {\n width: 9px;\n height: 9px;\n}\n.handsontable .wtHolder::-webkit-scrollbar-track {\n background: var(--ht-scrollbar-track-color);\n border-radius: var(--ht-scrollbar-border-radius);\n}\n.handsontable .wtHolder::-webkit-scrollbar-thumb {\n background-color: var(--ht-scrollbar-thumb-color);\n border-radius: var(--ht-scrollbar-border-radius);\n}\n.handsontable .wtHolder::-webkit-scrollbar-corner {\n background: var(--ht-scrollbar-track-color);\n border-end-end-radius: var(--ht-scrollbar-border-radius);\n}\n.handsontable.ht-wrapper {\n border-radius: var(--ht-wrapper-border-radius, 0);\n height: 100%;\n width: 100%;\n}\n.handsontable.ht-wrapper:not(.htFirstDatasetColumnNotRendered) td:first-of-type {\n border-inline-start-width: 1px;\n}\n.handsontable.ht-wrapper::before {\n content: \"\";\n display: block;\n position: absolute;\n inset: 0;\n border: var(--ht-wrapper-border-width) solid var(--ht-wrapper-border-color);\n border-radius: var(--ht-wrapper-border-radius, 0);\n z-index: 999;\n pointer-events: none;\n overflow: hidden;\n}\n.handsontable.htGhostTable.htNestedHeaders table {\n border-spacing: 0;\n border-collapse: collapse;\n}\n.handsontable.htGhostTable table thead th {\n border-bottom-width: 0;\n}\n.handsontable.htGhostTable table tbody tr:first-of-type th:first-child,\n.handsontable.htGhostTable table tbody tr:first-of-type td:first-child {\n height: calc(var(--ht-cell-vertical-padding) * 2 + var(--ht-line-height) + 1px);\n}\n.handsontable.htGhostTable table tbody tr th,\n.handsontable.htGhostTable table tbody tr td {\n border-top-width: 0;\n height: calc(var(--ht-cell-vertical-padding) * 2 + var(--ht-line-height) + 1px);\n}\n.handsontable.htHasScrollX:not(.htHorizontallyScrollableByWindow):not(.htScrollbarHidden) .ht_master .wtHolder, .handsontable.htHasScrollY:not(.htVerticallyScrollableByWindow):not(.htScrollbarHidden) .ht_master .wtHolder {\n border-radius: var(--ht-wrapper-border-radius, 0);\n}\n.handsontable:not(.htHorizontallyScrollableByWindow).htPagination .ht_master .wtHolder, .handsontable:not(.htHorizontallyScrollableByWindow).htHasScrollX .ht_master .wtHolder, .handsontable:not(.htHorizontallyScrollableByWindow).htHasScrollY .ht_master .wtHolder, .handsontable:not(.htVerticallyScrollableByWindow).htPagination .ht_master .wtHolder, .handsontable:not(.htVerticallyScrollableByWindow).htHasScrollX .ht_master .wtHolder, .handsontable:not(.htVerticallyScrollableByWindow).htHasScrollY .ht_master .wtHolder {\n background-color: var(--ht-background-color);\n}\n.handsontable tr.ht__row_even th {\n background-color: var(--ht-row-header-even-background-color);\n}\n.handsontable tr.ht__row_even td {\n background-color: var(--ht-row-cell-even-background-color);\n}\n.handsontable tr.ht__row_odd th {\n background-color: var(--ht-row-header-odd-background-color);\n}\n.handsontable tr.ht__row_odd td {\n background-color: var(--ht-row-cell-odd-background-color);\n}\n.handsontable th,\n.handsontable td {\n height: calc(var(--ht-cell-vertical-padding) * 2 + var(--ht-line-height) + 1px);\n padding: var(--ht-cell-vertical-padding) var(--ht-cell-horizontal-padding);\n vertical-align: top;\n border-top-width: 0;\n border-inline-start-width: 0;\n border-inline-end-width: 1px;\n border-bottom-width: 1px;\n border-style: solid;\n font-size: var(--ht-font-size);\n line-height: var(--ht-line-height);\n white-space: pre-wrap;\n overflow: hidden;\n outline: none;\n outline-width: 0;\n empty-cells: show;\n box-sizing: border-box;\n color: var(--ht-foreground-color);\n border-top-color: var(--ht-cell-vertical-border-color);\n border-bottom-color: var(--ht-cell-vertical-border-color);\n border-inline-start-color: var(--ht-cell-horizontal-border-color);\n border-inline-end-color: var(--ht-cell-horizontal-border-color);\n}\n.handsontable th.invisibleSelection,\n.handsontable td.invisibleSelection {\n outline: none;\n}\n.handsontable th.invisibleSelection::selection,\n.handsontable td.invisibleSelection::selection {\n background: transparent;\n}\n.handsontable th {\n position: relative;\n overflow: visible;\n text-align: center;\n font-weight: var(--ht-header-font-weight);\n white-space: nowrap;\n color: var(--ht-header-foreground-color);\n background-color: var(--ht-header-background-color);\n}\n.handsontable th:last-child {\n /* Foundation framework fix */\n border-inline-start-width: 0;\n border-inline-end-width: 1px;\n border-bottom-width: 1px;\n border-inline-end-color: var(--ht-border-color);\n}\n.handsontable th:last-child.ht__active_highlight {\n border-inline-end-color: var(--ht-header-active-border-color);\n}\n.handsontable th:first-child {\n border-inline-start-color: var(--ht-border-color);\n}\n.handsontable th:first-child.ht__active_highlight {\n border-inline-start-color: var(--ht-header-active-border-color);\n}\n.handsontable th:first-child, .handsontable th:nth-child(2) {\n border-inline-start-width: 1px;\n}\n.handsontable th.current {\n box-shadow: inset 0 0 0 1px var(--ht-cell-selection-border-color);\n}\n.handsontable th.active {\n color: var(--ht-header-active-foreground-color);\n background-color: var(--ht-header-active-background-color);\n}\n.handsontable th.ht__highlight {\n color: var(--ht-header-highlighted-foreground-color);\n background-color: var(--ht-header-highlighted-background-color);\n}\n.handsontable th.ht__active_highlight {\n border-color: var(--ht-header-active-border-color);\n color: var(--ht-header-active-foreground-color);\n background-color: var(--ht-header-active-background-color);\n}\n.handsontable tbody tr.ht__row_odd th.ht__highlight, .handsontable tbody tr.ht__row_even th.ht__highlight {\n color: var(--ht-header-row-highlighted-foreground-color);\n background-color: var(--ht-header-row-highlighted-background-color);\n}\n.handsontable tbody tr.ht__row_odd th.ht__active_highlight, .handsontable tbody tr.ht__row_even th.ht__active_highlight {\n color: var(--ht-header-row-active-foreground-color);\n background-color: var(--ht-header-row-active-background-color);\n}\n.handsontable tbody tr:first-of-type th:first-child:empty::after,\n.handsontable tbody tr:first-of-type td:first-child:empty::after {\n content: \"\";\n display: block;\n min-height: var(--ht-line-height);\n}\n.handsontable tbody tr th {\n padding: 0;\n color: var(--ht-header-row-foreground-color);\n background-color: var(--ht-header-row-background-color);\n}\n.handsontable tbody tr th.ht__active_highlight {\n box-shadow: 0 -1px 0 0 var(--ht-header-active-border-color);\n}\n.handsontable tbody tr th .relative {\n padding: var(--ht-cell-vertical-padding) var(--ht-cell-horizontal-padding);\n min-height: 100%;\n}\n.handsontable tbody tr td:first-child {\n border-inline-start-color: var(--ht-border-color);\n}\n.handsontable tbody tr td:last-child {\n border-inline-end-color: var(--ht-border-color);\n}\n.handsontable thead tr th {\n padding: 0;\n}\n.handsontable thead tr th.ht__active_highlight {\n box-shadow: -1px 0 0 0 var(--ht-header-active-border-color);\n}\n.handsontable thead tr th .relative {\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: var(--ht-cell-vertical-padding) var(--ht-cell-horizontal-padding);\n gap: 2px;\n}\n.handsontable thead tr th .relative .colHeader {\n flex: 1 1 auto;\n min-width: 0;\n text-overflow: ellipsis;\n overflow: hidden;\n vertical-align: top;\n}\n.handsontable tr:first-child th,\n.handsontable tr:first-child td {\n border-top-color: var(--ht-border-color);\n border-top-width: 1px;\n}\n.handsontable tr:first-child th.ht__active_highlight,\n.handsontable tr:first-child td.ht__active_highlight {\n border-top-color: var(--ht-header-active-border-color);\n}\n.handsontable tr:last-child th,\n.handsontable tr:last-child td {\n border-bottom-color: var(--ht-border-color);\n}\n.handsontable tr:last-child th.ht__active_highlight,\n.handsontable tr:last-child td.ht__active_highlight {\n border-bottom-color: var(--ht-header-active-border-color);\n}\n.handsontable div[class^=ht_clone] thead .ht__highlight .relative::after {\n content: \"\";\n display: block;\n position: absolute;\n left: -1px;\n right: -1px;\n bottom: -1px;\n height: var(--ht-header-highlighted-shadow-size);\n background-color: var(--ht-accent-color);\n}\n.handsontable div[class^=ht_clone] thead tr:only-of-type .ht__highlight .relative::after {\n bottom: 0;\n}\n.handsontable div[class^=ht_clone] tbody .ht__highlight .relative::after {\n content: \"\";\n display: block;\n position: absolute;\n top: -1px;\n right: -1px;\n bottom: -1px;\n width: var(--ht-header-highlighted-shadow-size);\n background-color: var(--ht-accent-color);\n}\n.handsontable div[class^=ht_clone] td:first-of-type {\n border-inline-start-width: 1px;\n}\n.handsontable thead tr:not(:last-child) th {\n /* Fix for - nested columns with hidden column */\n overflow: hidden;\n}\n.handsontable .hide {\n display: none;\n}\n.handsontable .relative {\n position: relative;\n box-sizing: border-box;\n}\n.handsontable .wtHider {\n width: 0;\n}\n.handsontable .wtSpreader {\n position: relative;\n /* must be 0, otherwise blank space appears in scroll demo after scrolling max to the right */\n width: 0;\n height: auto;\n}\n.handsontable .htAutoSize {\n position: absolute;\n left: -99000px;\n top: -99000px;\n visibility: hidden;\n}\n.handsontable .htTextEllipsis {\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n}\n.handsontable table,\n.handsontable tbody,\n.handsontable thead,\n.handsontable input,\n.handsontable textarea,\n.handsontable div {\n box-sizing: content-box;\n}\n.handsontable input,\n.handsontable textarea {\n min-height: initial;\n}\n.handsontable .htCore {\n width: 0;\n margin: 0;\n border-width: 0;\n border-spacing: 0;\n border-collapse: separate;\n outline-width: 0;\n table-layout: fixed;\n cursor: default;\n background-color: var(--ht-background-color);\n}\n.handsontable col {\n width: 64px;\n}\n.handsontable col.rowHeader {\n width: 64px;\n}\n.handsontable col.hidden {\n width: 0 !important;\n}\n.handsontable span.colHeader, .handsontable span.rowHeader {\n display: inline-block;\n font-size: var(--ht-font-size);\n line-height: var(--ht-line-height);\n}\n.handsontable tr.hidden {\n display: none;\n}\n.handsontable tr.hidden td,\n.handsontable tr.hidden th {\n display: none;\n}\n.handsontable a {\n color: var(--ht-link-color);\n}\n.handsontable a:hover {\n color: var(--ht-link-hover-color);\n}\n.handsontable .ht_clone_top th:nth-child(2) {\n border-inline-start-width: 0;\n border-inline-end-width: 1px;\n}\n.handsontable .ht_clone_top_inline_start_corner th:nth-child(2) {\n border-inline-start-width: 0;\n border-inline-end-width: 1px;\n}\n.handsontable.htRowHeaders thead tr th:nth-child(2) {\n border-inline-start-width: 1px;\n}\n.handsontable .ht_master:not(.innerBorderInlineStart):not(.emptyColumns) tbody tr th,\n.handsontable .ht_master:not(.innerBorderInlineStart):not(.emptyColumns) thead tr th:first-child,\n.handsontable .ht_master:not(.innerBorderInlineStart):not(.emptyColumns) ~ .handsontable:not(.htGhostTable) tbody tr th,\n.handsontable .ht_master:not(.innerBorderInlineStart):not(.emptyColumns) ~ .handsontable:not(.ht_clone_top):not(.htGhostTable) thead tr th:first-child {\n border-inline-end-width: 0;\n border-inline-start-width: 1px;\n}\n.handsontable .ht_master:not(.innerBorderTop):not(.innerBorderBottom) thead tr:last-child th, .handsontable .ht_master:not(.innerBorderTop):not(.innerBorderBottom) ~ .handsontable thead tr:last-child th,\n.handsontable .ht_master:not(.innerBorderTop):not(.innerBorderBottom) thead tr.lastChild th, .handsontable .ht_master:not(.innerBorderTop):not(.innerBorderBottom) ~ .handsontable thead tr.lastChild th {\n border-bottom-width: 0;\n}\n.handsontable.htAutoRowSize .ht_master.innerBorderTop tbody tr:first-child th,\n.handsontable.htAutoRowSize .ht_master.innerBorderTop tbody tr:first-child td {\n border-top-width: 0;\n}\n.handsontable.htAutoRowSize .ht_master.innerBorderTop ~ .ht_clone_inline_start tbody tr:first-child th,\n.handsontable.htAutoRowSize .ht_master.innerBorderTop ~ .ht_clone_inline_start tbody tr:first-child td {\n border-top-width: 0;\n}\n.handsontable .ht_master table.htCore > thead,\n.handsontable .ht_master table.htCore > tbody > tr > th,\n.handsontable .ht_clone_inline_start table.htCore > thead {\n visibility: hidden;\n}\n\n.ht_master,\n.ht_clone_inline_start,\n.ht_clone_top,\n.ht_clone_bottom {\n overflow: hidden;\n}\n.ht_master .wtHolder,\n.ht_clone_inline_start .wtHolder,\n.ht_clone_top .wtHolder,\n.ht_clone_bottom .wtHolder {\n overflow: hidden;\n}\n\n.ht_master .wtHolder {\n overflow: auto;\n}\n\n[dir=rtl].handsontable td[dir=ltr] {\n border-inline-end-width: 0;\n border-inline-start-width: 1px;\n}\n[dir=rtl].handsontable tbody tr td[dir=ltr]:last-child {\n border-inline-start-color: var(--ht-border-color);\n}\n[dir=rtl].handsontable div[class^=ht_clone] tbody .ht__highlight .relative::after {\n right: auto;\n left: -1px;\n}\n\n.handsontable.ht-wrapper:not(.htColumnHeaders) .ht_master .htCore tbody tr:first-child td:first-child {\n border-start-start-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper:not(.htColumnHeaders) .ht_master .htCore tbody tr:first-child td:last-child {\n border-start-end-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper:not(.htColumnHeaders) .ht_clone_top_inline_start_corner .htCore tbody tr:first-child td:first-child {\n border-start-start-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper:not(.htColumnHeaders) .ht_clone_top .htCore tbody tr:first-child td:first-child {\n border-start-start-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper:not(.htColumnHeaders) .ht_clone_top .htCore tbody tr:first-child td:last-child {\n border-start-end-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper:not(.htColumnHeaders) .ht_clone_inline_start .htCore tbody tr:first-child th:first-child,\n.handsontable.ht-wrapper:not(.htColumnHeaders) .ht_clone_inline_start .htCore tbody tr:first-child td:first-child {\n border-start-start-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper .ht_master .htCore {\n border-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper .ht_master .htCore thead tr:first-child th:first-child {\n border-start-start-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper .ht_master .htCore thead tr:first-child th:last-child {\n border-start-end-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper .ht_master .htCore thead tr:last-child th:first-child {\n border-end-start-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper .ht_master .htCore thead tr:last-child th:last-child {\n border-end-end-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper .ht_master .htCore tbody tr:last-child td:first-child {\n border-end-start-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper .ht_master .htCore tbody tr:last-child td:last-child {\n border-end-end-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper .ht_clone_top_inline_start_corner .htCore {\n border-start-start-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper .ht_clone_top_inline_start_corner .htCore thead tr:first-child th:first-child {\n border-start-start-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper .ht_clone_top .htCore {\n border-start-start-radius: var(--ht-wrapper-border-radius);\n border-start-end-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper .ht_clone_top .htCore thead tr:first-child th:first-child {\n border-start-start-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper .ht_clone_top .htCore thead tr:first-child th:last-child {\n border-start-end-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper .ht_clone_inline_start .htCore {\n border-start-start-radius: var(--ht-wrapper-border-radius);\n border-end-start-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper .ht_clone_inline_start .htCore thead tr:first-child th:first-child {\n border-start-start-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper .ht_clone_inline_start .htCore tbody tr:last-child th:first-child,\n.handsontable.ht-wrapper .ht_clone_inline_start .htCore tbody tr:last-child td:first-child {\n border-end-start-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper .ht_clone_bottom_inline_start_corner .htCore {\n border-end-start-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper .ht_clone_bottom_inline_start_corner .htCore tr:last-child th:first-child,\n.handsontable.ht-wrapper .ht_clone_bottom_inline_start_corner .htCore tr:last-child td:first-child {\n border-end-start-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper .ht_clone_bottom .htCore {\n border-end-start-radius: var(--ht-wrapper-border-radius);\n border-end-end-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper .ht_clone_bottom .htCore tr:last-child th:first-child,\n.handsontable.ht-wrapper .ht_clone_bottom .htCore tr:last-child td:first-child {\n border-end-start-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper .ht_clone_bottom .htCore tr:last-child th:last-child,\n.handsontable.ht-wrapper .ht_clone_bottom .htCore tr:last-child td:last-child {\n border-end-end-radius: var(--ht-wrapper-border-radius);\n}\n.handsontable.ht-wrapper.htHasScrollX .htCore {\n border-end-start-radius: 0;\n border-end-end-radius: 0;\n}\n.handsontable.ht-wrapper.htHasScrollX .htCore thead tr:last-child th:first-child,\n.handsontable.ht-wrapper.htHasScrollX .htCore tbody tr:last-child td:first-child,\n.handsontable.ht-wrapper.htHasScrollX .htCore tbody tr:last-child th:first-child {\n border-end-start-radius: 0 !important;\n}\n.handsontable.ht-wrapper.htHasScrollX .htCore thead tr:last-child th:last-child,\n.handsontable.ht-wrapper.htHasScrollX .htCore tbody tr:last-child td:last-child,\n.handsontable.ht-wrapper.htHasScrollX .htCore tbody tr:last-child th:last-child {\n border-end-end-radius: 0 !important;\n}\n.handsontable.ht-wrapper.htHasScrollY:not(.htVerticallyScrollableByWindow) .htCore {\n border-start-end-radius: 0;\n border-end-end-radius: 0;\n}\n.handsontable.ht-wrapper.htHasScrollY:not(.htVerticallyScrollableByWindow) .htCore thead tr:first-child th:last-child,\n.handsontable.ht-wrapper.htHasScrollY:not(.htVerticallyScrollableByWindow) .htCore tbody tr:first-child td:last-child,\n.handsontable.ht-wrapper.htHasScrollY:not(.htVerticallyScrollableByWindow) .htCore tbody tr:first-child th:last-child {\n border-start-end-radius: 0 !important;\n}\n.handsontable.ht-wrapper.htHasScrollY:not(.htVerticallyScrollableByWindow) .htCore thead tr:last-child th:last-child,\n.handsontable.ht-wrapper.htHasScrollY:not(.htVerticallyScrollableByWindow) .htCore tbody tr:last-child td:last-child,\n.handsontable.ht-wrapper.htHasScrollY:not(.htVerticallyScrollableByWindow) .htCore tbody tr:last-child th:last-child {\n border-end-end-radius: 0 !important;\n}\n\n.handsontable.mobile {\n user-select: none;\n -webkit-tap-highlight-color: transparent;\n -webkit-overflow-scrolling: touch;\n}\n.handsontable.mobile .wtHolder {\n user-select: none;\n -webkit-tap-highlight-color: transparent;\n -webkit-overflow-scrolling: touch;\n}\n.handsontable.mobile .handsontableInput:focus {\n box-shadow: inset 0 0 0 2px var(--ht-accent-color);\n -webkit-appearance: none;\n}\n.handsontable .topSelectionHandle,\n.handsontable .topSelectionHandle-HitArea,\n.handsontable .bottomSelectionHandle,\n.handsontable .bottomSelectionHandle-HitArea {\n inset-inline-start: -10000px;\n inset-inline-end: unset;\n top: -10000px;\n z-index: 9999;\n}\n.handsontable.hide-tween {\n -webkit-animation: opacity-hide 0.2s;\n animation: opacity-hide 0.2s;\n animation-fill-mode: forwards;\n -webkit-animation-fill-mode: forwards;\n}\n.handsontable.show-tween {\n -webkit-animation: opacity-show 0.3s;\n animation: opacity-show 0.3s;\n animation-fill-mode: forwards;\n -webkit-animation-fill-mode: forwards;\n}\n\n.ht_clone_master {\n z-index: 100;\n}\n\n.ht_clone_inline_start {\n z-index: 120;\n}\n\n.ht_clone_bottom {\n z-index: 130;\n}\n\n.ht_clone_bottom_inline_start_corner {\n z-index: 150;\n}\n\n.ht_clone_top {\n z-index: 160;\n}\n\n.ht_clone_top_inline_start_corner {\n z-index: 180;\n}\n\n.ht_editor_hidden {\n z-index: -1;\n}\n\n.ht_editor_visible {\n z-index: 200;\n}\n\n.handsontable td.area {\n position: relative;\n}\n.handsontable td.area::before {\n content: \"\";\n position: absolute;\n inset: 0;\n background: var(--ht-cell-selection-background-color, #1a42e8);\n}\n.handsontable td.area-1 {\n position: relative;\n}\n.handsontable td.area-1::before {\n content: \"\";\n position: absolute;\n inset: 0;\n background: var(--ht-cell-selection-background-color, #1a42e8);\n}\n.handsontable td.area-2 {\n position: relative;\n}\n.handsontable td.area-2::before {\n content: \"\";\n position: absolute;\n inset: 0;\n background: var(--ht-cell-selection-background-color, #1a42e8);\n}\n.handsontable td.area-3 {\n position: relative;\n}\n.handsontable td.area-3::before {\n content: \"\";\n position: absolute;\n inset: 0;\n background: var(--ht-cell-selection-background-color, #1a42e8);\n}\n.handsontable td.area-4 {\n position: relative;\n}\n.handsontable td.area-4::before {\n content: \"\";\n position: absolute;\n inset: 0;\n background: var(--ht-cell-selection-background-color, #1a42e8);\n}\n.handsontable td.area-5 {\n position: relative;\n}\n.handsontable td.area-5::before {\n content: \"\";\n position: absolute;\n inset: 0;\n background: var(--ht-cell-selection-background-color, #1a42e8);\n}\n.handsontable td.area-6 {\n position: relative;\n}\n.handsontable td.area-6::before {\n content: \"\";\n position: absolute;\n inset: 0;\n background: var(--ht-cell-selection-background-color, #1a42e8);\n}\n.handsontable td.area-7 {\n position: relative;\n}\n.handsontable td.area-7::before {\n content: \"\";\n position: absolute;\n inset: 0;\n background: var(--ht-cell-selection-background-color, #1a42e8);\n}\n.handsontable td.area::before {\n opacity: 0.14;\n}\n.handsontable td.area-1::before {\n opacity: 0.21;\n}\n.handsontable td.area-2::before {\n opacity: 0.28;\n}\n.handsontable td.area-3::before {\n opacity: 0.35;\n}\n.handsontable td.area-4::before {\n opacity: 0.42;\n}\n.handsontable td.area-5::before {\n opacity: 0.49;\n}\n.handsontable td.area-6::before {\n opacity: 0.56;\n}\n.handsontable td.area-7::before {\n opacity: 0.63;\n}\n.handsontable td.area {\n border-color: color-mix(in srgb, var(--ht-border-color), var(--ht-foreground-color) 10%);\n}\n.handsontable .wtBorder {\n position: absolute;\n font-size: 0;\n}\n.handsontable .wtBorder:nth-child(1), .handsontable .wtBorder:nth-child(3) {\n z-index: 2;\n}\n.handsontable .wtBorder:nth-child(2), .handsontable .wtBorder:nth-child(4) {\n z-index: 1;\n}\n.handsontable .wtBorder.hidden {\n display: none !important;\n}\n.handsontable .wtBorder.current {\n z-index: 10;\n background-color: var(--ht-cell-selection-border-color) !important;\n}\n.handsontable .wtBorder.area {\n z-index: 8;\n background-color: var(--ht-cell-selection-border-color) !important;\n}\n.handsontable .wtBorder.fill {\n z-index: 6;\n background-color: var(--ht-cell-autofill-fill-border-color, #68696c) !important;\n}\n.handsontable .wtBorder.corner {\n border-radius: var(--ht-cell-autofill-border-radius) !important;\n background-color: var(--ht-cell-autofill-background-color, #1a42e8) !important;\n border-color: var(--ht-cell-autofill-border-color) !important;\n font-size: 0;\n cursor: crosshair;\n z-index: 10;\n}\n.handsontable .wtBorder.corner::after {\n content: \"\";\n position: absolute;\n border-radius: var(--ht-cell-autofill-border-radius);\n inset: min(0px, (var(--ht-cell-autofill-size) - var(--ht-cell-autofill-hit-area-size)) / 2);\n background: transparent;\n}\n.handsontable .wtBorder.corner.wtCornerInlineEndEdge::after {\n inset-inline-end: 0;\n}\n.handsontable .wtBorder.corner.wtCornerBlockEndEdge::after {\n inset-block-end: 0;\n}\n\n.hot-display-license-info {\n font-family: var(--ht-font-family), -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n padding: var(--ht-license-vertical-padding, 16px) var(--ht-license-horizontal-padding, 16px);\n font-size: var(--ht-font-size-small);\n line-height: var(--ht-line-height-small);\n color: var(--ht-license-foreground-color);\n background-color: var(--ht-license-background-color, #f7f7f9);\n text-align: left;\n border: 1px solid var(--ht-border-color, #f7f7f9);\n margin-top: 10px;\n border-radius: var(--ht-wrapper-border-radius);\n}\n.hot-display-license-info a {\n font-size: var(--ht-license-font-size);\n color: var(--ht-link-color);\n}\n.hot-display-license-info a:hover {\n color: var(--ht-link-hover-color);\n}\n\n.handsontable .htAutocompleteArrow {\n position: relative;\n cursor: default;\n width: var(--ht-icon-size);\n height: var(--ht-icon-size);\n font-size: 0;\n float: right;\n top: calc((var(--ht-line-height) - var(--ht-icon-size)) / 2);\n margin-inline-start: calc(var(--ht-gap-size) * 2);\n margin-inline-end: 1px;\n}\n.handsontable .htAutocompleteArrow::after {\n content: \"\";\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n opacity: 0.6;\n}\n\n[dir=rtl].handsontable .htAutocompleteArrow {\n float: left;\n}\n\n.handsontable .htCheckboxRendererInput {\n position: relative;\n display: inline-block;\n width: var(--ht-checkbox-size);\n height: var(--ht-checkbox-size);\n margin: 0;\n vertical-align: middle;\n cursor: pointer;\n margin-top: -2px;\n outline: none;\n}\n.handsontable .htCheckboxRendererInput:first-child {\n margin-inline-end: var(--ht-gap-size);\n}\n.handsontable .htCheckboxRendererInput:last-child {\n margin-inline-start: var(--ht-gap-size);\n}\n.handsontable .htCheckboxRendererInput::before {\n content: \"\";\n display: inline-block;\n position: absolute;\n top: 0;\n left: 0;\n width: var(--ht-checkbox-size);\n height: var(--ht-checkbox-size);\n border-radius: var(--ht-checkbox-border-radius);\n border: 1px solid var(--ht-checkbox-border-color);\n background-color: var(--ht-checkbox-background-color);\n box-sizing: border-box;\n pointer-events: none;\n transition: all var(--ht-table-transition) ease-in-out;\n}\n.handsontable .htCheckboxRendererInput::after {\n content: \"\";\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n color: var(--ht-checkbox-icon-color);\n pointer-events: none;\n width: var(--ht-checkbox-size) !important;\n height: var(--ht-checkbox-size) !important;\n}\n.handsontable .htCheckboxRendererInput:checked::before {\n border-color: var(--ht-checkbox-checked-border-color);\n background-color: var(--ht-checkbox-checked-background-color);\n}\n.handsontable .htCheckboxRendererInput:checked::after {\n color: var(--ht-checkbox-checked-icon-color);\n}\n.handsontable .htCheckboxRendererInput:checked:disabled::before {\n border-color: var(--ht-checkbox-checked-disabled-border-color);\n background-color: var(--ht-checkbox-checked-disabled-background-color);\n}\n.handsontable .htCheckboxRendererInput:checked:disabled::after {\n color: var(--ht-checkbox-checked-disabled-icon-color);\n}\n.handsontable .htCheckboxRendererInput:checked:focus::before {\n border-color: var(--ht-checkbox-checked-focus-border-color);\n background-color: var(--ht-checkbox-checked-focus-background-color);\n}\n.handsontable .htCheckboxRendererInput:checked:focus::after {\n color: var(--ht-checkbox-checked-focus-icon-color);\n}\n.handsontable .htCheckboxRendererInput:focus::before {\n border-color: var(--ht-checkbox-focus-border-color);\n background-color: var(--ht-checkbox-focus-background-color);\n outline: 1px solid var(--ht-checkbox-focus-ring-color);\n}\n.handsontable .htCheckboxRendererInput:focus::after {\n color: var(--ht-checkbox-focus-icon-color);\n}\n.handsontable .htCheckboxRendererInput:disabled {\n cursor: initial;\n}\n.handsontable .htCheckboxRendererInput:disabled::before {\n border-color: var(--ht-checkbox-disabled-border-color);\n background-color: var(--ht-checkbox-disabled-background-color);\n}\n.handsontable .htCheckboxRendererInput:disabled::after {\n color: var(--ht-checkbox-disabled-icon-color);\n}\n.handsontable .htCheckboxRendererInput:indeterminate::before {\n border-color: var(--ht-checkbox-indeterminate-border-color);\n background-color: var(--ht-checkbox-indeterminate-background-color);\n}\n.handsontable .htCheckboxRendererInput:indeterminate::after {\n color: var(--ht-checkbox-indeterminate-icon-color);\n}\n.handsontable .htCheckboxRendererInput:indeterminate:disabled::before {\n border-color: var(--ht-checkbox-indeterminate-disabled-border-color);\n background-color: var(--ht-checkbox-indeterminate-disabled-background-color);\n}\n.handsontable .htCheckboxRendererInput:indeterminate:disabled::after {\n color: var(--ht-checkbox-indeterminate-disabled-icon-color);\n}\n.handsontable .htCheckboxRendererInput:indeterminate:focus::before {\n border-color: var(--ht-checkbox-indeterminate-focus-border-color);\n background-color: var(--ht-checkbox-indeterminate-focus-background-color);\n}\n.handsontable .htCheckboxRendererInput:indeterminate:focus::after {\n color: var(--ht-checkbox-indeterminate-focus-icon-color);\n}\n.handsontable .htCheckboxRendererInput.noValue {\n opacity: 0.5;\n}\n.handsontable .htCheckboxRendererLabel {\n display: inline-block;\n position: relative;\n font-size: inherit;\n line-height: inherit;\n cursor: pointer;\n color: inherit;\n margin: 0;\n}\n.handsontable .htCheckboxRendererLabel.fullWidth {\n width: 100%;\n}\n\n.handsontable .htPlaceholder {\n color: var(--ht-placeholder-color);\n}\n.handsontable .htDimmed {\n color: var(--ht-read-only-color) !important;\n background-color: var(--ht-cell-read-only-background-color) !important;\n}\n.handsontable .htLeft {\n text-align: left;\n}\n.handsontable .htCenter {\n text-align: center;\n}\n.handsontable .htRight {\n text-align: right;\n}\n.handsontable .htJustify {\n text-align: justify;\n}\n.handsontable .htTop {\n vertical-align: top;\n}\n.handsontable .htMiddle {\n vertical-align: middle;\n}\n.handsontable .htBottom {\n vertical-align: bottom;\n}\n.handsontable .htInvalid {\n /* gives priority over td.area selection background */\n background-color: var(--ht-cell-error-background-color) !important;\n}\n.handsontable .htNoWrap {\n white-space: nowrap;\n}\n.handsontable .htSearchResult {\n background-color: var(--ht-cell-success-background-color) !important;\n}\n\n.handsontable .ht-multi-select-renderer {\n padding: var(--ht-cell-vertical-padding) var(--ht-cell-horizontal-padding);\n overflow: hidden;\n}\n.handsontable .ht-multi-select-chips-container {\n display: flex;\n flex-wrap: nowrap;\n align-items: center;\n gap: var(--ht-gap-size);\n overflow: hidden;\n max-width: 100%;\n}\n.handsontable .ht-multi-select-chip {\n display: inline-flex;\n align-items: center;\n gap: var(--ht-gap-size);\n padding: var(--ht-chip-vertical-padding) calc((var(--ht-line-height) - var(--ht-icon-size)) / 2) var(--ht-chip-vertical-padding) var(--ht-chip-horizontal-padding);\n border-radius: var(--ht-chip-border-radius);\n background: var(--ht-chip-background);\n white-space: nowrap;\n flex-shrink: 0;\n max-width: 100px;\n box-sizing: border-box;\n}\n.handsontable .ht-multi-select-chip-label {\n overflow: hidden;\n text-overflow: ellipsis;\n color: var(--ht-foreground-color);\n font-style: normal;\n font-weight: var(--ht-font-weight);\n line-height: var(--ht-line-height, 40px);\n letter-spacing: var(--ht-letter-spacing, 0);\n padding: 0 var(--ht-chip-gap);\n}\n.handsontable .ht-multi-select-chip-remove {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--ht-icon-size) !important;\n height: var(--ht-icon-size) !important;\n padding: 0;\n cursor: pointer;\n flex-shrink: 0;\n color: var(--ht-icon-button-icon-color);\n background-size: contain;\n background-repeat: no-repeat;\n background-position: center;\n}\n.handsontable .ht-multi-select-chip-remove::before {\n content: \"\";\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n}\n.handsontable .ht-multi-select-chip-remove:hover {\n background-color: var(--ht-icon-button-hover-background-color);\n}\n.handsontable .ht-multi-select-overflow {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: var(--ht-chip-vertical-padding) var(--ht-chip-horizontal-padding);\n background: var(--ht-chip-background);\n border-radius: var(--ht-chip-border-radius);\n color: var(--ht-foreground-color);\n white-space: nowrap;\n flex-shrink: 0;\n}\n\n.handsontableInputHolder {\n position: absolute;\n top: 0;\n left: 0;\n}\n.handsontableInputHolder .handsontableInput {\n display: block;\n margin: 0;\n padding: calc(var(--ht-cell-vertical-padding, 4px) + 1px) calc(var(--ht-cell-horizontal-padding, 8px) + 1px);\n font-family: inherit !important;\n font-size: inherit !important;\n line-height: inherit !important;\n color: var(--ht-cell-editor-foreground-color);\n background-color: var(--ht-cell-editor-background-color, #ffffff);\n box-shadow: inset 0 0 0 var(--ht-cell-editor-border-width, 2px) var(--ht-cell-editor-border-color, #1a42e8), 0 0 var(--ht-cell-editor-shadow-blur-radius, 0) 0 var(--ht-cell-editor-shadow-color, transparent);\n border: none;\n border-radius: 0;\n -webkit-appearance: none !important;\n box-sizing: border-box;\n /* Miscellaneous */\n outline-width: 0;\n /* overwrite styles potentially made by a framework */\n}\n.handsontableInputHolder .handsontableInput:focus {\n outline: none;\n}\n\n.htSelectEditor {\n position: absolute;\n}\n.htSelectEditor select {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n padding: calc(var(--ht-cell-vertical-padding, 4px) + 1px) calc(var(--ht-cell-horizontal-padding, 8px) + 1px);\n padding-inline-end: 26px;\n margin: 0;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n color: var(--ht-cell-editor-foreground-color);\n background-color: var(--ht-cell-editor-background-color, #ffffff);\n font-family: inherit !important;\n font-size: inherit !important;\n line-height: inherit !important;\n box-shadow: inset 0 0 0 var(--ht-cell-editor-border-width, 2px) var(--ht-cell-editor-border-color, #1a42e8), 0 0 var(--ht-cell-editor-shadow-blur-radius, 0) 0 var(--ht-cell-editor-shadow-color, transparent);\n border: none;\n border-radius: 0;\n box-sizing: border-box;\n -webkit-appearance: none !important;\n}\n.htSelectEditor select:focus {\n outline: none;\n}\n.htSelectEditor .htAutocompleteArrow {\n top: 50%;\n transform: translateY(-50%);\n margin-inline-end: 4px;\n z-index: 1;\n pointer-events: none;\n}\n\n.handsontable.listbox {\n box-shadow: var(--ht-menu-shadow-x, 0) var(--ht-menu-shadow-y, 0) var(--ht-menu-shadow-blur, 8px) color-mix(in srgb, var(--ht-menu-shadow-color, rgb(0, 0, 0)) var(--ht-menu-shadow-opacity, 100%), transparent);\n margin: 0;\n border: var(--ht-menu-border-width, 1px) solid var(--ht-menu-border-color, #e5e5e9);\n}\n.handsontable.listbox .ht_master {\n overflow: hidden;\n background-color: var(--ht-background-color);\n}\n.handsontable.listbox .wtHolder {\n overflow: auto;\n border-radius: 0 !important;\n}\n.handsontable.listbox .wtHider, .handsontable.listbox .htCore {\n border-radius: 0 !important;\n}\n.handsontable.listbox table {\n overflow: hidden;\n}\n.handsontable.listbox table th,\n.handsontable.listbox table tr:first-child th,\n.handsontable.listbox table tr:last-child th,\n.handsontable.listbox table tr:first-child td,\n.handsontable.listbox table td {\n border-color: transparent !important;\n}\n.handsontable.listbox table th,\n.handsontable.listbox table td {\n white-space: nowrap;\n text-overflow: ellipsis;\n border-radius: 0 !important;\n}\n.handsontable.listbox table .wtBorder {\n visibility: hidden;\n}\n.handsontable.listbox table strong {\n font-weight: bold;\n color: inherit;\n}\n.handsontable.listbox table tr td:hover td {\n background: color-mix(in srgb, var(--ht-menu-item-hover-color) var(--ht-menu-item-hover-color-opacity, 100%), transparent) !important;\n cursor: pointer;\n box-shadow: none !important;\n}\n.handsontable.listbox table td {\n transition: var(--ht-table-transition) background ease-in-out;\n}\n.handsontable.listbox table td:hover {\n background-color: color-mix(in srgb, var(--ht-menu-item-hover-color) var(--ht-menu-item-hover-color-opacity, 100%), transparent) !important;\n cursor: pointer;\n}\n.handsontable.listbox table td.current:not([aria-expanded=true]) {\n box-shadow: inset 0 0 0 1px var(--ht-accent-color);\n}\n.handsontable.listbox table td.htDimmed {\n cursor: default;\n font-style: inherit;\n color: inherit !important;\n}\n.handsontable.listbox table td.htDimmed:not(.handsontable.listbox table td:hover) {\n background-color: inherit !important;\n}\n.handsontable.listbox table thead th {\n height: auto !important;\n text-align: left;\n}\n.handsontable.listbox table thead th .relative {\n padding-top: calc(var(--ht-cell-vertical-padding) + var(--ht-gap-size));\n padding-bottom: calc(var(--ht-cell-vertical-padding) + var(--ht-gap-size));\n}\n.handsontable.listbox .ht_clone_top .wtHider {\n overflow: hidden;\n}\n.handsontable.listbox .ht_clone_top table {\n border-radius: 0;\n}\n.handsontable.listbox .htBorders div {\n background: none !important;\n}\n.handsontable.autocompleteEditor tr.ht__row_even th,\n.handsontable.autocompleteEditor tr.ht__row_even td {\n background-color: var(--ht-background-color, #ffffff);\n}\n.handsontable.autocompleteEditor tr.ht__row_odd th,\n.handsontable.autocompleteEditor tr.ht__row_odd td {\n background-color: var(--ht-background-color, #ffffff);\n}\n\n[dir=rtl].handsontable.listbox table thead th {\n text-align: right;\n}\n\n.pika-single {\n font-family: var(--ht-font-family), -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n box-shadow: var(--ht-menu-shadow-x, 0) var(--ht-menu-shadow-y, 0) var(--ht-menu-shadow-blur, 8px) color-mix(in srgb, var(--ht-menu-shadow-color, rgb(0, 0, 0)) var(--ht-menu-shadow-opacity, 100%), transparent);\n position: relative;\n display: block;\n padding: 10px;\n font-size: var(--ht-font-size);\n line-height: var(--ht-line-height);\n font-weight: var(--ht-font-weight);\n color: var(--ht-foreground-color);\n background: var(--ht-background-color, #ffffff);\n border: var(--ht-menu-border-width, 1px) solid var(--ht-menu-border-color, #e5e5e9);\n border-radius: var(--ht-menu-border-radius);\n z-index: 9999;\n}\n.pika-single.is-hidden {\n display: none;\n}\n.pika-single .pika-row {\n background-color: transparent;\n}\n.pika-single .pika-title {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.pika-single .pika-label {\n position: relative;\n order: 2;\n padding: 5px;\n color: var(--ht-accent-color);\n}\n.pika-single .pika-label .pika-select {\n position: absolute;\n inset: 0;\n opacity: 0;\n cursor: pointer;\n}\n.pika-single .pika-prev,\n.pika-single .pika-next {\n width: 20px;\n height: 20px;\n white-space: nowrap;\n text-indent: -9999px;\n cursor: pointer;\n color: var(--ht-accent-color);\n background: none;\n border: none;\n padding: 0;\n}\n.pika-single .pika-prev {\n order: 1;\n margin-right: auto;\n}\n.pika-single .pika-next {\n order: 3;\n margin-left: auto;\n}\n.pika-single .pika-table thead {\n height: 50px;\n}\n.pika-single .pika-table th {\n padding: 1px;\n vertical-align: middle;\n}\n.pika-single .pika-table th abbr {\n text-decoration: none;\n font-weight: normal;\n border: none;\n cursor: initial;\n}\n.pika-single .pika-table td {\n padding: 1px;\n vertical-align: middle;\n}\n.pika-single .pika-table td.is-disabled .pika-button {\n pointer-events: none;\n opacity: 0.5;\n}\n.pika-single .pika-table td.is-today .pika-button {\n background: color-mix(in srgb, var(--ht-menu-item-hover-color) var(--ht-menu-item-hover-color-opacity, 100%), transparent);\n}\n.pika-single .pika-table td.is-selected .pika-button {\n background: var(--ht-accent-color, #1a42e8);\n color: var(--ht-primary-button-foreground-color, #ffffff);\n}\n.pika-single .pika-table td.pika-week {\n width: 12.5%;\n text-align: center;\n}\n.pika-single .pika-table .pika-button {\n width: 100%;\n aspect-ratio: 1/1;\n background: transparent;\n color: var(--ht-foreground-color);\n border: none;\n border-radius: var(--ht-button-border-radius);\n margin: 0;\n padding: 10px;\n cursor: pointer;\n font-size: inherit;\n}\n.pika-single .pika-table .pika-button:hover {\n background: color-mix(in srgb, var(--ht-menu-item-hover-color) var(--ht-menu-item-hover-color-opacity, 100%), transparent);\n}\n\n[dir=rtl].htDatepickerHolder .pika-single .pika-next {\n transform: rotate(180deg);\n margin-left: 0;\n margin-right: auto;\n}\n[dir=rtl].htDatepickerHolder .pika-single .pika-prev {\n transform: rotate(180deg);\n margin-left: auto;\n margin-right: 0;\n}\n\n.handsontableEditor {\n position: absolute;\n}\n.handsontableEditor .ht-multi-select-editor {\n box-shadow: var(--ht-menu-shadow-x, 0) var(--ht-menu-shadow-y, 0) var(--ht-menu-shadow-blur, 8px) color-mix(in srgb, var(--ht-menu-shadow-color, rgb(0, 0, 0)) var(--ht-menu-shadow-opacity, 100%), transparent);\n scrollbar-width: auto;\n scrollbar-color: var(--ht-scrollbar-thumb-color) var(--ht-scrollbar-track-color);\n overflow-y: auto;\n border-radius: 0 0 var(--ht-menu-border-radius) var(--ht-menu-border-radius);\n border: var(--ht-menu-border-width) solid var(--ht-menu-border-color);\n background: var(--ht-background-color);\n width: max-content;\n min-width: 120px;\n padding: var(--ht-menu-vertical-padding) var(--ht-menu-horizontal-padding);\n}\n.handsontableEditor .ht-multi-select-editor .ht-multi-select-editor-search-input-wrapper {\n display: flex;\n padding: var(--ht-menu-item-vertical-padding) var(--ht-menu-item-horizontal-padding);\n align-items: center;\n gap: var(--ht-gap-size);\n align-self: stretch;\n position: relative;\n}\n.handsontableEditor .ht-multi-select-editor .ht-multi-select-editor-search-icon {\n position: absolute;\n left: calc(var(--ht-menu-item-horizontal-padding) + 10px);\n top: 50%;\n transform: translateY(-50%);\n width: 16px;\n height: 16px;\n background-repeat: no-repeat;\n background-position: center;\n background-size: contain;\n opacity: 0.5;\n pointer-events: none;\n z-index: 1;\n}\n.handsontableEditor .ht-multi-select-editor input.ht-multi-select-editor-search-input {\n box-sizing: border-box;\n width: 100%;\n border-radius: var(--ht-input-border-radius);\n color: var(--ht-input-foreground-color);\n background-color: var(--ht-input-background-color);\n border: 1px solid var(--ht-input-border-color);\n transition: var(--ht-table-transition) all ease-in-out;\n line-height: var(--ht-line-height);\n font-size: var(--ht-font-size);\n padding: var(--ht-input-vertical-padding) var(--ht-menu-item-horizontal-padding) var(--ht-input-vertical-padding) 32px;\n}\n.handsontableEditor .ht-multi-select-editor input.ht-multi-select-editor-search-input:hover {\n border-color: var(--ht-input-hover-border-color);\n color: var(--ht-input-hover-foreground-color);\n background-color: var(--ht-input-hover-background-color);\n}\n.handsontableEditor .ht-multi-select-editor input.ht-multi-select-editor-search-input:disabled {\n border-color: var(--ht-input-disabled-border-color);\n color: var(--ht-input-disabled-foreground-color);\n background-color: var(--ht-input-disabled-background-color);\n}\n.handsontableEditor .ht-multi-select-editor input.ht-multi-select-editor-search-input:focus {\n border-color: var(--ht-input-focus-border-color);\n color: var(--ht-input-focus-foreground-color);\n background-color: var(--ht-input-focus-background-color);\n outline: none;\n outline-offset: 0;\n box-shadow: none;\n}\n.handsontableEditor .ht-multi-select-editor input.ht-multi-select-editor-search-input::placeholder {\n color: var(--ht-foreground-color);\n opacity: 0.6;\n}\n.handsontableEditor .ht-multi-select-editor .ht-multi-select-editor-separator {\n width: 100%;\n height: 1px;\n background-color: var(--ht-menu-border-color);\n margin: var(--ht-menu-vertical-padding) 0 var(--ht-menu-vertical-padding) 0;\n padding: 0;\n}\n.handsontableEditor .ht-multi-select-editor ul {\n list-style: none;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n width: 100%;\n margin: 0;\n padding: var(--ht-gap-size) var(--ht-menu-horizontal-padding);\n}\n.handsontableEditor .ht-multi-select-editor ul li {\n display: flex;\n align-items: center;\n align-self: stretch;\n background: var(--ht-background-color);\n padding: var(--ht-menu-item-vertical-padding) var(--ht-menu-item-horizontal-padding);\n user-select: none;\n cursor: pointer;\n}\n.handsontableEditor .ht-multi-select-editor ul li * {\n cursor: pointer;\n}\n.handsontableEditor .ht-multi-select-editor ul li.ht-multi-select-editor-item-selected {\n background: color-mix(in srgb, var(--ht-menu-item-active-color) var(--ht-menu-item-active-color-opacity, 100%), transparent);\n}\n.handsontableEditor .ht-multi-select-editor ul li div {\n display: flex;\n align-items: center;\n flex: 1 0 0;\n}\n.handsontableEditor .ht-multi-select-editor ul li div input {\n position: relative;\n appearance: none;\n margin: 0;\n padding: 0;\n width: var(--ht-checkbox-size);\n height: var(--ht-checkbox-size);\n display: flex;\n}\n.handsontableEditor .ht-multi-select-editor ul li div input::after {\n content: \"\";\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n}\n.handsontableEditor .ht-multi-select-editor ul li div input::before {\n content: \"\";\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n box-sizing: border-box;\n width: var(--ht-checkbox-size);\n height: var(--ht-checkbox-size);\n border-radius: var(--ht-checkbox-border-radius);\n border: 1px solid var(--ht-checkbox-border-color);\n background: var(--ht-checkbox-background-color);\n background-repeat: no-repeat;\n background-position: center;\n}\n.handsontableEditor .ht-multi-select-editor ul li div input:checked::before {\n border-color: var(--ht-checkbox-checked-border-color);\n background: var(--ht-checkbox-checked-background-color);\n}\n.handsontableEditor .ht-multi-select-editor ul li div input:checked::after {\n color: var(--ht-checkbox-checked-icon-color);\n background-color: currentColor;\n}\n.handsontableEditor .ht-multi-select-editor ul li div input:focus {\n outline: none;\n}\n.handsontableEditor .ht-multi-select-editor ul li div label {\n overflow: hidden;\n color: var(--ht-foreground-color);\n text-overflow: ellipsis;\n font-size: var(--ht-font-size);\n font-style: normal;\n font-weight: 400;\n line-height: var(--ht-line-height);\n letter-spacing: var(--ht-letter-spacing);\n width: 100%;\n padding: 0 0 0 calc(var(--ht-gap-size) * 2);\n}\n.handsontableEditor .ht-multi-select-editor ul li:hover {\n background: color-mix(in srgb, var(--ht-menu-item-hover-color) var(--ht-menu-item-hover-color-opacity, 100%), transparent);\n}\n.handsontableEditor .ht-multi-select-editor ul li:has(input:focus) {\n background: color-mix(in srgb, var(--ht-menu-item-hover-color) var(--ht-menu-item-hover-color-opacity, 100%), transparent);\n}\n\n.handsontable .htUISelectCaption {\n width: 100%;\n padding: var(--ht-input-vertical-padding) var(--ht-input-horizontal-padding);\n padding-inline-end: calc(var(--ht-input-horizontal-padding) + var(--ht-icon-size));\n margin: 0;\n font-family: inherit;\n font-size: var(--ht-font-size);\n line-height: var(--ht-line-height);\n font-weight: var(--ht-font-weight);\n border-radius: var(--ht-input-border-radius);\n box-sizing: border-box;\n cursor: pointer;\n outline: none !important;\n border: var(--ht-input-border-width) solid var(--ht-input-border-color);\n color: var(--ht-input-foreground-color);\n background-color: var(--ht-input-background-color);\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n transition: var(--ht-table-transition) all ease-in-out;\n}\n.handsontable .htUISelectCaption::after {\n content: \"\";\n display: block;\n position: absolute;\n right: calc(var(--ht-input-horizontal-padding) - var(--ht-icon-size) / 4);\n top: 50%;\n transform: translateY(-50%);\n}\n.handsontable .htUISelectCaption:hover {\n border-color: var(--ht-input-hover-border-color);\n color: var(--ht-input-hover-foreground-color);\n background-color: var(--ht-input-hover-background-color);\n}\n.handsontable .htUISelectCaption:disabled {\n border-color: var(--ht-input-disabled-border-color);\n color: var(--ht-input-disabled-foreground-color);\n background-color: var(--ht-input-disabled-background-color);\n}\n.handsontable .htUISelectCaption:focus {\n border-color: var(--ht-input-focus-border-color);\n color: var(--ht-input-focus-foreground-color);\n background-color: var(--ht-input-focus-background-color);\n}\n.handsontable .htUISelect {\n cursor: pointer;\n position: relative;\n outline: none !important;\n}\n.handsontable .htUISelect:focus .htUISelectCaption {\n border-color: var(--ht-input-focus-border-color);\n color: var(--ht-input-focus-foreground-color);\n background-color: var(--ht-input-focus-background-color);\n}\n\n[dir=rtl].handsontable .htUISelectCaption::after {\n right: auto;\n left: calc(var(--ht-input-horizontal-padding) - var(--ht-icon-size) / 4);\n}\n\n.handsontable .htFiltersMenuCondition .htUIInput input,\n.handsontable .htFiltersMenuValue .htUIMultipleSelectSearch input {\n width: 100%;\n padding: var(--ht-input-vertical-padding) var(--ht-input-horizontal-padding);\n font-family: inherit;\n font-size: var(--ht-font-size);\n line-height: var(--ht-line-height);\n font-weight: var(--ht-font-weight);\n border-radius: var(--ht-input-border-radius);\n box-sizing: border-box;\n cursor: pointer;\n outline: none !important;\n border: var(--ht-input-border-width) solid var(--ht-input-border-color);\n color: var(--ht-input-foreground-color);\n background-color: var(--ht-input-background-color);\n transition: var(--ht-table-transition) all ease-in-out;\n}\n.handsontable .htFiltersMenuCondition .htUIInput input:hover,\n.handsontable .htFiltersMenuValue .htUIMultipleSelectSearch input:hover {\n border-color: var(--ht-input-hover-border-color);\n color: var(--ht-input-hover-foreground-color);\n background-color: var(--ht-input-hover-background-color);\n}\n.handsontable .htFiltersMenuCondition .htUIInput input:disabled,\n.handsontable .htFiltersMenuValue .htUIMultipleSelectSearch input:disabled {\n border-color: var(--ht-input-disabled-border-color);\n color: var(--ht-input-disabled-foreground-color);\n background-color: var(--ht-input-disabled-background-color);\n}\n.handsontable .htFiltersMenuCondition .htUIInput input:focus,\n.handsontable .htFiltersMenuValue .htUIMultipleSelectSearch input:focus {\n border-color: var(--ht-input-focus-border-color);\n color: var(--ht-input-focus-foreground-color);\n background-color: var(--ht-input-focus-background-color);\n}\n.handsontable .htUIInput {\n position: relative;\n padding: 0;\n outline: none !important;\n text-align: center;\n}\n.handsontable .htUIInputIcon {\n position: absolute;\n}\n\n.handsontable .htUIInput.htUIButton input, .handsontable .ht-button {\n min-width: 64px;\n padding: var(--ht-button-vertical-padding) var(--ht-button-horizontal-padding);\n font-family: inherit;\n font-size: var(--ht-font-size);\n line-height: var(--ht-line-height);\n font-weight: var(--ht-font-weight);\n border-radius: var(--ht-button-border-radius);\n border-width: 1px;\n border-style: solid;\n box-sizing: border-box;\n outline: none !important;\n cursor: pointer;\n transition: var(--ht-table-transition) all ease-in-out;\n}\n.handsontable .htUIInput.htUIButtonCancel input, .handsontable .ht-button--secondary {\n border-color: var(--ht-secondary-button-border-color);\n background-color: var(--ht-secondary-button-background-color);\n color: var(--ht-secondary-button-foreground-color);\n}\n.handsontable .htUIInput.htUIButtonCancel input:hover, .handsontable .ht-button--secondary:hover {\n border-color: var(--ht-secondary-button-hover-border-color);\n background-color: var(--ht-secondary-button-hover-background-color);\n color: var(--ht-secondary-button-hover-foreground-color);\n}\n.handsontable .htUIInput.htUIButtonCancel input:disabled, .handsontable .ht-button--secondary:disabled {\n border-color: var(--ht-secondary-button-disabled-border-color);\n background-color: var(--ht-secondary-button-disabled-background-color);\n color: var(--ht-secondary-button-disabled-foreground-color);\n}\n.handsontable .htUIInput.htUIButtonCancel input:focus, .handsontable .ht-button--secondary:focus {\n border-color: var(--ht-secondary-button-focus-border-color);\n background-color: var(--ht-secondary-button-focus-background-color);\n color: var(--ht-secondary-button-focus-foreground-color);\n box-shadow: 0 0 0 1px var(--ht-accent-color);\n}\n\n.htUIInput.htUIButtonOK input, .ht-button--primary {\n border-color: var(--ht-primary-button-border-color);\n background-color: var(--ht-primary-button-background-color);\n color: var(--ht-primary-button-foreground-color);\n}\n.htUIInput.htUIButtonOK input:hover, .ht-button--primary:hover {\n border-color: var(--ht-primary-button-hover-border-color);\n background-color: var(--ht-primary-button-hover-background-color);\n color: var(--ht-primary-button-hover-foreground-color);\n}\n.htUIInput.htUIButtonOK input:disabled, .ht-button--primary:disabled {\n border-color: var(--ht-primary-button-disabled-border-color);\n background-color: var(--ht-primary-button-disabled-background-color);\n color: var(--ht-primary-button-disabled-foreground-color);\n}\n.htUIInput.htUIButtonOK input:focus, .ht-button--primary:focus {\n border-color: var(--ht-primary-button-focus-border-color);\n background-color: var(--ht-primary-button-focus-background-color);\n color: var(--ht-primary-button-focus-foreground-color);\n box-shadow: 0 0 0 1px var(--ht-accent-color);\n}\n\n.handsontable .htUIRadio {\n position: relative;\n display: inline-flex;\n margin: 0;\n padding: var(--ht-gap-size) calc(2 * var(--ht-gap-size));\n padding-bottom: 0;\n align-items: center;\n gap: var(--ht-gap-size);\n cursor: pointer;\n}\n.handsontable .htUIRadio:first-child {\n padding-inline-start: 0;\n}\n.handsontable .htUIRadio > input[type=radio] {\n position: relative;\n width: var(--ht-radio-size);\n height: var(--ht-radio-size);\n margin: 0;\n appearance: none;\n cursor: pointer;\n border-radius: calc(0.5 * var(--ht-radio-size));\n outline: none;\n}\n.handsontable .htUIRadio > input[type=radio]::before {\n content: \"\";\n display: block;\n position: absolute;\n inset: 0;\n border-radius: calc(0.5 * var(--ht-radio-size));\n border: 1px solid var(--ht-radio-border-color);\n background-color: var(--ht-radio-background-color);\n}\n.handsontable .htUIRadio > input[type=radio]::after {\n content: \"\";\n display: block;\n position: absolute;\n color: var(--ht-radio-icon-color);\n}\n.handsontable .htUIRadio > input[type=radio]:checked::before {\n border-color: var(--ht-radio-checked-border-color);\n background-color: var(--ht-radio-checked-background-color);\n}\n.handsontable .htUIRadio > input[type=radio]:checked::after {\n color: var(--ht-radio-checked-icon-color);\n}\n.handsontable .htUIRadio > input[type=radio]:checked:disabled {\n cursor: initial;\n}\n.handsontable .htUIRadio > input[type=radio]:checked:disabled::before {\n border-color: var(--ht-radio-checked-disabled-border-color);\n background-color: var(--ht-radio-checked-disabled-background-color);\n}\n.handsontable .htUIRadio > input[type=radio]:checked:disabled::after {\n color: var(--ht-radio-checked-disabled-icon-color);\n}\n.handsontable .htUIRadio > input[type=radio]:checked:focus::before {\n border-color: var(--ht-radio-checked-focus-border-color);\n background-color: var(--ht-radio-checked-focus-background-color);\n}\n.handsontable .htUIRadio > input[type=radio]:checked:focus::after {\n color: var(--ht-radio-checked-focus-icon-color);\n}\n.handsontable .htUIRadio > input[type=radio]:disabled {\n cursor: initial;\n}\n.handsontable .htUIRadio > input[type=radio]:disabled::before {\n border-color: var(--ht-radio-disabled-border-color);\n background-color: var(--ht-radio-disabled-background-color);\n}\n.handsontable .htUIRadio > input[type=radio]:disabled::after {\n color: var(--ht-radio-disabled-icon-color);\n}\n.handsontable .htUIRadio > input[type=radio]:focus::before {\n border-color: var(--ht-radio-focus-border-color);\n background-color: var(--ht-radio-focus-background-color);\n outline: 1px solid var(--ht-radio-focus-ring-color);\n}\n.handsontable .htUIRadio > input[type=radio]:focus::after {\n color: var(--ht-radio-focus-icon-color);\n}\n.handsontable .htUIRadio label {\n vertical-align: middle;\n cursor: pointer;\n color: inherit;\n}\n.handsontable .htUIRadio label::before {\n content: \"\";\n display: block;\n position: absolute;\n inset: 0;\n}\n\n.handsontable .collapsibleIndicator,\n.handsontable .ht_nestingButton {\n position: relative;\n width: var(--ht-icon-button-hit-area-size);\n height: var(--ht-icon-button-hit-area-size);\n margin: calc(-1 * (var(--ht-icon-button-hit-area-size) - var(--ht-icon-size)) / 2 + 1px);\n box-sizing: border-box;\n overflow: visible;\n cursor: pointer;\n /* hide text */\n text-indent: -100px;\n font-size: 0;\n flex-shrink: 0;\n /* Icon: mask + currentColor from ht-icons-main.css; keep ::before for icon only */\n}\n.handsontable .collapsibleIndicator::before,\n.handsontable .ht_nestingButton::before {\n content: \"\";\n display: block;\n position: absolute;\n top: 50%;\n left: 50%;\n width: var(--ht-icon-size);\n height: var(--ht-icon-size);\n margin-top: calc(-0.5 * var(--ht-icon-size));\n margin-left: calc(-0.5 * var(--ht-icon-size));\n border-radius: var(--ht-collapse-button-border-radius);\n transition: var(--ht-table-transition) all ease-in-out;\n z-index: 1;\n}\n.handsontable .collapsibleIndicator,\n.handsontable .ht_nestingButton {\n /* Button background and border (behind icon so mask stays visible) */\n}\n.handsontable .collapsibleIndicator::after,\n.handsontable .ht_nestingButton::after {\n content: \"\";\n display: block;\n position: absolute;\n top: 50%;\n left: 50%;\n width: var(--ht-icon-size);\n height: var(--ht-icon-size);\n margin-top: calc(-0.5 * var(--ht-icon-size));\n margin-left: calc(-0.5 * var(--ht-icon-size));\n border-radius: var(--ht-collapse-button-border-radius);\n transition: var(--ht-table-transition) all ease-in-out;\n z-index: 0;\n}\n.handsontable .collapsibleIndicator.expanded::before, .handsontable .collapsibleIndicator.ht_nestingCollapse::before,\n.handsontable .ht_nestingButton.expanded::before,\n.handsontable .ht_nestingButton.ht_nestingCollapse::before {\n color: var(--ht-collapse-button-open-icon-color);\n}\n.handsontable .collapsibleIndicator.expanded::after, .handsontable .collapsibleIndicator.ht_nestingCollapse::after,\n.handsontable .ht_nestingButton.expanded::after,\n.handsontable .ht_nestingButton.ht_nestingCollapse::after {\n background-color: var(--ht-collapse-button-open-background-color);\n box-shadow: 0 0 0 1px var(--ht-collapse-button-open-border-color);\n}\n.handsontable .collapsibleIndicator.expanded:hover::before, .handsontable .collapsibleIndicator.ht_nestingCollapse:hover::before,\n.handsontable .ht_nestingButton.expanded:hover::before,\n.handsontable .ht_nestingButton.ht_nestingCollapse:hover::before {\n color: var(--ht-collapse-button-open-hover-icon-color);\n}\n.handsontable .collapsibleIndicator.expanded:hover::after, .handsontable .collapsibleIndicator.ht_nestingCollapse:hover::after,\n.handsontable .ht_nestingButton.expanded:hover::after,\n.handsontable .ht_nestingButton.ht_nestingCollapse:hover::after {\n background-color: var(--ht-collapse-button-open-hover-background-color);\n box-shadow: 0 0 0 1px var(--ht-collapse-button-open-hover-border-color);\n}\n.handsontable .collapsibleIndicator.collapsed::before, .handsontable .collapsibleIndicator.ht_nestingExpand::before,\n.handsontable .ht_nestingButton.collapsed::before,\n.handsontable .ht_nestingButton.ht_nestingExpand::before {\n color: var(--ht-collapse-button-close-icon-color);\n}\n.handsontable .collapsibleIndicator.collapsed::after, .handsontable .collapsibleIndicator.ht_nestingExpand::after,\n.handsontable .ht_nestingButton.collapsed::after,\n.handsontable .ht_nestingButton.ht_nestingExpand::after {\n background-color: var(--ht-collapse-button-close-background-color);\n box-shadow: 0 0 0 1px var(--ht-collapse-button-close-border-color);\n}\n.handsontable .collapsibleIndicator.collapsed:hover::before, .handsontable .collapsibleIndicator.ht_nestingExpand:hover::before,\n.handsontable .ht_nestingButton.collapsed:hover::before,\n.handsontable .ht_nestingButton.ht_nestingExpand:hover::before {\n color: var(--ht-collapse-button-close-hover-icon-color);\n}\n.handsontable .collapsibleIndicator.collapsed:hover::after, .handsontable .collapsibleIndicator.ht_nestingExpand:hover::after,\n.handsontable .ht_nestingButton.collapsed:hover::after,\n.handsontable .ht_nestingButton.ht_nestingExpand:hover::after {\n background-color: var(--ht-collapse-button-close-hover-background-color);\n box-shadow: 0 0 0 1px var(--ht-collapse-button-close-hover-border-color);\n}\n.handsontable th.ht__active_highlight .collapsibleIndicator.collapsed::before, .handsontable th.ht__active_highlight .collapsibleIndicator.ht_nestingExpand::before,\n.handsontable th.ht__active_highlight .ht_nestingButton.collapsed::before,\n.handsontable th.ht__active_highlight .ht_nestingButton.ht_nestingExpand::before {\n color: var(--ht-collapse-button-close-icon-active-color);\n}\n.handsontable th.ht__active_highlight .collapsibleIndicator.collapsed:hover::before, .handsontable th.ht__active_highlight .collapsibleIndicator.ht_nestingExpand:hover::before,\n.handsontable th.ht__active_highlight .ht_nestingButton.collapsed:hover::before,\n.handsontable th.ht__active_highlight .ht_nestingButton.ht_nestingExpand:hover::before {\n color: var(--ht-collapse-button-close-hover-icon-active-color);\n}\n.handsontable th.ht__active_highlight .collapsibleIndicator.expanded::before, .handsontable th.ht__active_highlight .collapsibleIndicator.ht_nestingCollapse::before,\n.handsontable th.ht__active_highlight .ht_nestingButton.expanded::before,\n.handsontable th.ht__active_highlight .ht_nestingButton.ht_nestingCollapse::before {\n color: var(--ht-collapse-button-open-icon-active-color);\n}\n.handsontable th.ht__active_highlight .collapsibleIndicator.expanded:hover::before, .handsontable th.ht__active_highlight .collapsibleIndicator.ht_nestingCollapse:hover::before,\n.handsontable th.ht__active_highlight .ht_nestingButton.expanded:hover::before,\n.handsontable th.ht__active_highlight .ht_nestingButton.ht_nestingCollapse:hover::before {\n color: var(--ht-collapse-button-open-hover-icon-active-color);\n}\n\n.handsontable thead th.htRowspanHeader + th {\n border-inline-start-width: 0;\n}\n.handsontable thead th.htRowspanHeader {\n height: auto;\n vertical-align: bottom;\n overflow: visible;\n}\n.handsontable thead th.htRowspanHeader.ht__active_highlight {\n border-inline-start-color: var(--ht-header-active-border-color);\n z-index: 1;\n}\n.handsontable.htRowHeaders.htHasRowspanHeaders thead tr:last-child th:first-child {\n border-end-start-radius: 0;\n}\n.handsontable.htHasRowspanHeaders .ht_clone_inline_start .htCore tbody tr:first-child th:first-child {\n border-start-start-radius: 0;\n}\n.handsontable .ht_master:not(.innerBorderTop):not(.innerBorderBottom) thead th.htRowspanBottomLevel, .handsontable .ht_master:not(.innerBorderTop):not(.innerBorderBottom) ~ .handsontable thead th.htRowspanBottomLevel {\n border-bottom-width: 0;\n}\n.handsontable thead th.hiddenHeader:not(:first-of-type) {\n display: none;\n}\n.handsontable thead th.hiddenHeaderText .colHeader {\n opacity: 0;\n}\n\n.handsontable th.ht_nestingLevels > .relative {\n display: flex;\n align-items: center;\n gap: 5px;\n}\n.handsontable th.ht_nestingLevels span:last-child {\n padding-left: calc(var(--ht-icon-size) + 5px);\n}\n.handsontable th.ht_nestingLevels span.ht_nestingLevel {\n display: inline-block;\n}\n.handsontable th.ht_nestingLevels span.ht_nestingLevel_empty {\n position: relative;\n display: inline-block;\n width: 5px;\n height: 1px;\n order: -2;\n}\n.handsontable th.ht_nestingLevels .ht_nestingButton {\n position: relative;\n cursor: pointer;\n order: -1;\n}\n\n.handsontable th.beforeHiddenColumn, .handsontable th.afterHiddenColumn {\n position: relative;\n}\n.handsontable th.beforeHiddenColumn::before, .handsontable th.beforeHiddenColumn::after, .handsontable th.afterHiddenColumn::before, .handsontable th.afterHiddenColumn::after {\n position: absolute;\n top: 50%;\n width: 10px !important;\n height: 10px !important;\n transform: translateY(-50%);\n color: var(--ht-hidden-indicator-color);\n}\n.handsontable th.beforeHiddenColumn::after {\n content: \"\";\n display: block;\n right: -2px;\n}\n.handsontable th.afterHiddenColumn::before {\n content: \"\";\n display: block;\n left: -2px;\n}\n.handsontable th.ht__active_highlight.beforeHiddenColumn::before, .handsontable th.ht__active_highlight.beforeHiddenColumn::after, .handsontable th.ht__active_highlight.afterHiddenColumn::before, .handsontable th.ht__active_highlight.afterHiddenColumn::after {\n color: var(--ht-icon-button-active-icon-color, var(--ht-icon-active-button-icon-color));\n}\n\n[dir=rtl].handsontable th.beforeHiddenColumn::after {\n right: initial;\n left: -2px;\n transform: translateY(-50%) rotate(180deg);\n}\n[dir=rtl].handsontable th.afterHiddenColumn::before {\n right: -2px;\n left: initial;\n transform: translateY(-50%) rotate(180deg);\n}\n\n.handsontable th.beforeHiddenRow, .handsontable th.afterHiddenRow {\n position: relative;\n}\n.handsontable th.beforeHiddenRow::before, .handsontable th.beforeHiddenRow::after, .handsontable th.afterHiddenRow::before, .handsontable th.afterHiddenRow::after {\n position: absolute;\n left: 50%;\n width: 10px !important;\n height: 10px !important;\n transform: translateX(-50%);\n color: var(--ht-hidden-indicator-color);\n}\n.handsontable th.beforeHiddenRow::after {\n content: \"\";\n display: block;\n bottom: -2px;\n}\n.handsontable th.afterHiddenRow::before {\n content: \"\";\n display: block;\n top: -2px;\n}\n.handsontable th.ht__active_highlight.beforeHiddenRow::before, .handsontable th.ht__active_highlight.beforeHiddenRow::after, .handsontable th.ht__active_highlight.afterHiddenRow::before, .handsontable th.ht__active_highlight.afterHiddenRow::after {\n color: var(--ht-icon-button-active-icon-color, var(--ht-icon-active-button-icon-color));\n}\n\n.handsontable .changeType {\n position: relative;\n box-sizing: border-box;\n width: var(--ht-icon-button-hit-area-size);\n height: var(--ht-icon-button-hit-area-size);\n margin: calc(-1 * (var(--ht-icon-button-hit-area-size) - var(--ht-icon-size)) / 2 + 1px);\n border: none;\n outline: none;\n box-shadow: none;\n background: none;\n background-color: transparent;\n color: inherit;\n padding: 0;\n z-index: 1;\n flex-shrink: 0;\n overflow: visible;\n /* Icon: mask + currentColor from ht-icons-main.css; keep ::before for icon only */\n}\n.handsontable .changeType::before {\n content: \"\";\n display: block;\n position: absolute;\n top: 50%;\n left: 50%;\n width: var(--ht-icon-size);\n height: var(--ht-icon-size);\n margin-top: calc(-0.5 * var(--ht-icon-size));\n margin-left: calc(-0.5 * var(--ht-icon-size));\n color: var(--ht-icon-button-icon-color);\n z-index: 1;\n}\n.handsontable .changeType {\n /* Button background and border (behind icon so mask stays visible) */\n}\n.handsontable .changeType::after {\n content: \"\";\n display: block;\n position: absolute;\n top: 50%;\n left: 50%;\n width: var(--ht-icon-size);\n height: var(--ht-icon-size);\n margin-top: calc(-0.5 * var(--ht-icon-size));\n margin-left: calc(-0.5 * var(--ht-icon-size));\n border-radius: var(--ht-icon-button-border-radius);\n box-shadow: 0 0 0 1px var(--ht-icon-button-border-color);\n background-color: var(--ht-icon-button-background-color);\n z-index: 0;\n}\n.handsontable .changeType:hover {\n cursor: pointer;\n}\n.handsontable .changeType:hover::before {\n color: var(--ht-icon-button-hover-icon-color);\n}\n.handsontable .changeType:hover::after {\n box-shadow: 0 0 0 1px var(--ht-icon-button-hover-border-color);\n background-color: var(--ht-icon-button-hover-background-color);\n}\n.handsontable .ht__active_highlight .changeType::before {\n color: var(--ht-icon-button-active-icon-color, var(--ht-icon-active-button-icon-color));\n}\n.handsontable .ht__active_highlight .changeType::after {\n box-shadow: 0 0 0 1px var(--ht-icon-button-active-border-color, var(--ht-icon-active-button-border-color));\n background-color: var(--ht-icon-button-active-background-color, var(--ht-icon-active-button-background-color));\n}\n.handsontable .ht__active_highlight .changeType:hover::before {\n color: var(--ht-icon-button-active-hover-icon-color, var(--ht-icon-active-button-hover-icon-color));\n}\n.handsontable .ht__active_highlight .changeType:hover::after {\n box-shadow: 0 0 0 1px var(--ht-icon-button-active-hover-border-color, var(--ht-icon-active-button-hover-border-color));\n background-color: var(--ht-icon-button-active-hover-background-color, var(--ht-icon-active-button-hover-background-color));\n}\n.handsontable th.htFiltersActive {\n background-color: var(--ht-header-filter-background-color);\n}\n.handsontable th.htFiltersActive.ht__active_highlight {\n background-color: color-mix(in srgb, var(--ht-header-active-background-color), var(--ht-header-filter-background-color) 20%);\n}\n.handsontable.htDropdownMenu > .ht_master, .handsontable.htContextMenu > .ht_master, .handsontable.htFiltersConditionsMenu > .ht_master {\n box-shadow: var(--ht-menu-shadow-x, 0) var(--ht-menu-shadow-y, 0) var(--ht-menu-shadow-blur, 8px) color-mix(in srgb, var(--ht-menu-shadow-color, rgb(0, 0, 0)) var(--ht-menu-shadow-opacity, 100%), transparent);\n border: var(--ht-menu-border-width, 1px) solid var(--ht-menu-border-color, #e5e5e9);\n border-radius: var(--ht-menu-border-radius);\n overflow: hidden;\n padding: var(--ht-menu-vertical-padding, 8px) var(--ht-menu-horizontal-padding, 0);\n background-color: var(--ht-background-color, #ffffff);\n}\n.handsontable.htDropdownMenu:not(.htGhostTable), .handsontable.htContextMenu:not(.htGhostTable), .handsontable.htFiltersConditionsMenu:not(.htGhostTable) {\n display: none;\n position: absolute;\n /* needs to be higher than 1050 - z-index for Twitter Bootstrap modal (#1569) */\n z-index: 1060;\n}\n.handsontable.htDropdownMenu .ht_clone_top,\n.handsontable.htDropdownMenu .ht_clone_bottom,\n.handsontable.htDropdownMenu .ht_clone_inline_start,\n.handsontable.htDropdownMenu .ht_clone_top_inline_start_corner,\n.handsontable.htDropdownMenu .ht_clone_bottom_inline_start_corner, .handsontable.htContextMenu .ht_clone_top,\n.handsontable.htContextMenu .ht_clone_bottom,\n.handsontable.htContextMenu .ht_clone_inline_start,\n.handsontable.htContextMenu .ht_clone_top_inline_start_corner,\n.handsontable.htContextMenu .ht_clone_bottom_inline_start_corner, .handsontable.htFiltersConditionsMenu .ht_clone_top,\n.handsontable.htFiltersConditionsMenu .ht_clone_bottom,\n.handsontable.htFiltersConditionsMenu .ht_clone_inline_start,\n.handsontable.htFiltersConditionsMenu .ht_clone_top_inline_start_corner,\n.handsontable.htFiltersConditionsMenu .ht_clone_bottom_inline_start_corner {\n display: none;\n}\n.handsontable.htDropdownMenu table.htCore, .handsontable.htContextMenu table.htCore, .handsontable.htFiltersConditionsMenu table.htCore {\n overflow: hidden;\n}\n.handsontable.htDropdownMenu .htCustomMenuRenderer .table.htCore, .handsontable.htContextMenu .htCustomMenuRenderer .table.htCore, .handsontable.htFiltersConditionsMenu .htCustomMenuRenderer .table.htCore {\n box-shadow: none;\n}\n.handsontable.htDropdownMenu.handsontable:focus, .handsontable.htContextMenu.handsontable:focus, .handsontable.htFiltersConditionsMenu.handsontable:focus {\n outline: none;\n}\n.handsontable.htDropdownMenu .wtBorder, .handsontable.htContextMenu .wtBorder, .handsontable.htFiltersConditionsMenu .wtBorder {\n visibility: hidden;\n}\n.handsontable.htDropdownMenu tbody tr:first-of-type td:first-child, .handsontable.htDropdownMenu tbody tr:first-of-type th:first-child, .handsontable.htContextMenu tbody tr:first-of-type td:first-child, .handsontable.htContextMenu tbody tr:first-of-type th:first-child, .handsontable.htFiltersConditionsMenu tbody tr:first-of-type td:first-child, .handsontable.htFiltersConditionsMenu tbody tr:first-of-type th:first-child {\n height: calc(var(--ht-cell-vertical-padding) * 2 + var(--ht-line-height) + 1px);\n}\n.handsontable.htDropdownMenu table tbody tr td, .handsontable.htContextMenu table tbody tr td, .handsontable.htFiltersConditionsMenu table tbody tr td {\n position: relative;\n padding: var(--ht-menu-item-vertical-padding, 4px) var(--ht-menu-item-horizontal-padding, 8px);\n border-width: 0;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n background: var(--ht-background-color, #ffffff);\n cursor: pointer;\n transition: var(--ht-table-transition) background ease-in-out;\n}\n.handsontable.htDropdownMenu table tbody tr td:first-child, .handsontable.htContextMenu table tbody tr td:first-child, .handsontable.htFiltersConditionsMenu table tbody tr td:first-child {\n border-top-width: 0;\n border-inline-end-width: 0;\n border-bottom-width: 0;\n border-inline-start-width: 0;\n}\n.handsontable.htDropdownMenu table tbody tr td.htDimmed, .handsontable.htContextMenu table tbody tr td.htDimmed, .handsontable.htFiltersConditionsMenu table tbody tr td.htDimmed {\n font-style: normal;\n color: inherit !important;\n background-color: inherit !important;\n}\n.handsontable.htDropdownMenu table tbody tr td:not(.handsontable.htDropdownMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htDropdownMenu table tbody tr td.htDisabled, .handsontable.htContextMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htContextMenu table tbody tr td.htDisabled, .handsontable.htFiltersConditionsMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htFiltersConditionsMenu table tbody tr td.htDisabled):hover, .handsontable.htContextMenu table tbody tr td:not(.handsontable.htDropdownMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htDropdownMenu table tbody tr td.htDisabled, .handsontable.htContextMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htContextMenu table tbody tr td.htDisabled, .handsontable.htFiltersConditionsMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htFiltersConditionsMenu table tbody tr td.htDisabled):hover, .handsontable.htFiltersConditionsMenu table tbody tr td:not(.handsontable.htDropdownMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htDropdownMenu table tbody tr td.htDisabled, .handsontable.htContextMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htContextMenu table tbody tr td.htDisabled, .handsontable.htFiltersConditionsMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htFiltersConditionsMenu table tbody tr td.htDisabled):hover {\n background: color-mix(in srgb, var(--ht-menu-item-hover-color) var(--ht-menu-item-hover-color-opacity, 100%), transparent) !important;\n cursor: pointer;\n}\n.handsontable.htDropdownMenu table tbody tr td:not(.handsontable.htDropdownMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htDropdownMenu table tbody tr td.htDisabled, .handsontable.htContextMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htContextMenu table tbody tr td.htDisabled, .handsontable.htFiltersConditionsMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htFiltersConditionsMenu table tbody tr td.htDisabled).current:not([aria-expanded=true]), .handsontable.htContextMenu table tbody tr td:not(.handsontable.htDropdownMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htDropdownMenu table tbody tr td.htDisabled, .handsontable.htContextMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htContextMenu table tbody tr td.htDisabled, .handsontable.htFiltersConditionsMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htFiltersConditionsMenu table tbody tr td.htDisabled).current:not([aria-expanded=true]), .handsontable.htFiltersConditionsMenu table tbody tr td:not(.handsontable.htDropdownMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htDropdownMenu table tbody tr td.htDisabled, .handsontable.htContextMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htContextMenu table tbody tr td.htDisabled, .handsontable.htFiltersConditionsMenu table tbody tr td.htCustomMenuRenderer, .handsontable.htFiltersConditionsMenu table tbody tr td.htDisabled).current:not([aria-expanded=true]) {\n box-shadow: inset 0 0 0 1px var(--ht-accent-color);\n}\n.handsontable.htDropdownMenu table tbody tr td.htSubmenu .htItemWrapper, .handsontable.htContextMenu table tbody tr td.htSubmenu .htItemWrapper, .handsontable.htFiltersConditionsMenu table tbody tr td.htSubmenu .htItemWrapper {\n margin-inline-end: calc(2 * var(--ht-gap-size, 4px) + var(--ht-icon-size));\n}\n.handsontable.htDropdownMenu table tbody tr td.htSubmenu .htItemWrapper::after, .handsontable.htContextMenu table tbody tr td.htSubmenu .htItemWrapper::after, .handsontable.htFiltersConditionsMenu table tbody tr td.htSubmenu .htItemWrapper::after {\n content: \"\";\n display: block;\n position: absolute;\n top: 50%;\n right: calc(var(--ht-menu-item-horizontal-padding) + var(--ht-gap-size) * 2);\n transform: translateY(-50%);\n}\n.handsontable.htDropdownMenu table tbody tr td.htSeparator, .handsontable.htContextMenu table tbody tr td.htSeparator, .handsontable.htFiltersConditionsMenu table tbody tr td.htSeparator {\n border-top: 1px solid var(--ht-border-color);\n height: 0;\n padding: 0;\n cursor: default;\n}\n.handsontable.htDropdownMenu table tbody tr td.htDisabled, .handsontable.htContextMenu table tbody tr td.htDisabled, .handsontable.htFiltersConditionsMenu table tbody tr td.htDisabled {\n color: var(--ht-disabled-color);\n cursor: default;\n}\n.handsontable.htDropdownMenu table tbody tr td.htDisabled:hover, .handsontable.htContextMenu table tbody tr td.htDisabled:hover, .handsontable.htFiltersConditionsMenu table tbody tr td.htDisabled:hover {\n background: var(--ht-background-color);\n color: var(--ht-disabled-color);\n}\n.handsontable.htDropdownMenu table tbody tr td.htHidden, .handsontable.htContextMenu table tbody tr td.htHidden, .handsontable.htFiltersConditionsMenu table tbody tr td.htHidden {\n display: none;\n}\n.handsontable.htDropdownMenu table tbody tr td:has(.htItemWrapper .selected), .handsontable.htContextMenu table tbody tr td:has(.htItemWrapper .selected), .handsontable.htFiltersConditionsMenu table tbody tr td:has(.htItemWrapper .selected) {\n background-color: color-mix(in srgb, var(--ht-menu-item-active-color) var(--ht-menu-item-active-color-opacity, 100%), transparent);\n}\n.handsontable.htDropdownMenu table tbody tr td .htItemWrapper, .handsontable.htContextMenu table tbody tr td .htItemWrapper, .handsontable.htFiltersConditionsMenu table tbody tr td .htItemWrapper {\n margin-inline: calc(2 * var(--ht-gap-size, 4px));\n}\n.handsontable.htDropdownMenu table tbody tr td .htItemWrapper::before, .handsontable.htContextMenu table tbody tr td .htItemWrapper::before, .handsontable.htFiltersConditionsMenu table tbody tr td .htItemWrapper::before {\n vertical-align: text-bottom;\n margin-right: 12px;\n}\n.handsontable.htDropdownMenu table tbody tr td .htItemWrapper span.selected, .handsontable.htContextMenu table tbody tr td .htItemWrapper span.selected, .handsontable.htFiltersConditionsMenu table tbody tr td .htItemWrapper span.selected {\n font-size: 0;\n inset: 0;\n}\n.handsontable.htDropdownMenu table tbody tr td .htItemWrapper span.selected::after, .handsontable.htContextMenu table tbody tr td .htItemWrapper span.selected::after, .handsontable.htFiltersConditionsMenu table tbody tr td .htItemWrapper span.selected::after {\n content: \"\";\n display: block;\n position: absolute;\n top: 50%;\n right: calc(var(--ht-menu-item-horizontal-padding) + var(--ht-gap-size) * 2);\n color: var(--ht-accent-color);\n transform: translateY(-50%);\n}\n.handsontable.htDropdownMenu table tbody tr td div span.selected, .handsontable.htContextMenu table tbody tr td div span.selected, .handsontable.htFiltersConditionsMenu table tbody tr td div span.selected {\n position: absolute;\n inset-inline-end: 0;\n}\n.handsontable.htDropdownMenu table tbody tr td .htUIButton, .handsontable.htContextMenu table tbody tr td .htUIButton, .handsontable.htFiltersConditionsMenu table tbody tr td .htUIButton {\n width: calc(50% - var(--ht-gap-size));\n}\n.handsontable.htDropdownMenu table tbody tr td .htUIButton input, .handsontable.htContextMenu table tbody tr td .htUIButton input, .handsontable.htFiltersConditionsMenu table tbody tr td .htUIButton input {\n width: 100%;\n}\n.handsontable .htUIClearAll a,\n.handsontable .htUISelectAll a {\n padding: var(--ht-gap-size);\n display: inline-block;\n text-decoration: none;\n}\n.handsontable .htUIMultipleSelect .ht_master .wtHolder {\n overflow-y: scroll !important;\n background: transparent;\n border-radius: 0 !important;\n}\n.handsontable .htUIMultipleSelect .ht_master .wtHolder .htCore {\n box-shadow: none;\n}\n\n[dir=rtl].handsontable.htDropdownMenu table tbody tr td.htSubmenu .htItemWrapper::after, [dir=rtl].handsontable.htContextMenu table tbody tr td.htSubmenu .htItemWrapper::after, [dir=rtl].handsontable.htFiltersConditionsMenu table tbody tr td.htSubmenu .htItemWrapper::after {\n left: calc(4 * var(--ht-gap-size));\n right: auto;\n transform: translateY(-50%) rotate(180deg);\n}\n[dir=rtl].handsontable.htDropdownMenu table tbody tr td .htItemWrapper span.selected::after, [dir=rtl].handsontable.htContextMenu table tbody tr td .htItemWrapper span.selected::after, [dir=rtl].handsontable.htFiltersConditionsMenu table tbody tr td .htItemWrapper span.selected::after {\n left: calc(4 * var(--ht-gap-size));\n right: auto;\n}\n\n.handsontable.htFiltersConditionsMenu:not(.htGhostTable) {\n z-index: 1070;\n}\n.handsontable .ht_master table td.htCustomMenuRenderer {\n cursor: auto;\n}\n.handsontable .ht_master table td.htCustomMenuRenderer.htFiltersMenuActionBar {\n padding-top: calc(var(--ht-menu-item-vertical-padding, 4px) * 2);\n}\n.handsontable .htFiltersMenuLabel {\n font-size: var(--ht-font-size-small);\n line-height: var(--ht-line-height-small);\n font-weight: var(--ht-font-weight);\n margin-bottom: calc(var(--ht-gap-size, 2px) * 2);\n}\n.handsontable .htFiltersMenuLabel:empty {\n display: none;\n}\n.handsontable .htFiltersMenuCondition {\n padding-top: calc(var(--ht-gap-size, 2px) * 3) !important;\n padding-bottom: 0 !important;\n}\n.handsontable .htFiltersMenuCondition .border {\n border-bottom: 1px solid var(--ht-border-color) !important;\n}\n.handsontable .htFiltersMenuCondition .htUIInput {\n margin-top: calc(var(--ht-gap-size, 2px) * 2);\n}\n.handsontable .htFiltersMenuValue {\n padding-top: calc(var(--ht-gap-size, 2px) * 3) !important;\n padding-bottom: 0 !important;\n border-bottom: 1px solid var(--ht-border-color) !important;\n}\n.handsontable .htFiltersMenuOperators {\n padding-top: calc(var(--ht-gap-size, 2px) * 2) !important;\n padding-bottom: 0 !important;\n}\n.handsontable .htUISelectionControls {\n padding-top: calc(var(--ht-gap-size, 2px) * 2) !important;\n padding-bottom: var(--ht-gap-size, 2px) !important;\n margin: 0 calc(var(--ht-gap-size, 2px) * -1);\n}\n.handsontable .htUIMultipleSelectHot {\n --ht-cell-horizontal-padding: calc(\n var(--ht-menu-item-horizontal-padding, 2px) +\n var(--ht-gap-size, 2px) * 2);\n overflow: initial !important;\n width: calc(100% + var(--ht-menu-item-horizontal-padding, 2px) * 2 + var(--ht-gap-size, 2px) * 4);\n margin: 0 calc((var(--ht-menu-item-horizontal-padding, 2px) + var(--ht-gap-size, 2px) * 2) * -1);\n}\n.handsontable .htUIMultipleSelectHot::before {\n content: \"\";\n display: block;\n position: absolute;\n top: -1px;\n left: 0;\n width: 100%;\n height: 1px;\n background-color: var(--ht-border-color);\n}\n.handsontable .htUIMultipleSelectHot .wtHolder {\n padding: 0;\n overflow-x: hidden;\n box-sizing: border-box;\n}\n.handsontable .htUIMultipleSelectHot .wtHolder .wtSpreader {\n padding: calc(var(--ht-gap-size) * 2) 0;\n}\n.handsontable .htUIMultipleSelectHot .wtHolder td {\n height: auto !important;\n padding: 4px var(--ht-cell-horizontal-padding);\n}\n.handsontable .htUIClearAll,\n.handsontable .htUISelectAll {\n display: inline-block;\n margin-right: var(--ht-gap-size, 4px);\n margin-bottom: var(--ht-gap-size, 4px);\n}\n.handsontable .htUIClearAll a,\n.handsontable .htUISelectAll a {\n font-size: var(--ht-font-size);\n line-height: var(--ht-line-height);\n color: var(--ht-link-color);\n border-radius: var(--ht-button-border-radius);\n}\n.handsontable .htUIClearAll a:hover,\n.handsontable .htUISelectAll a:hover {\n color: var(--ht-link-hover-color);\n}\n.handsontable .htUIClearAll a:focus,\n.handsontable .htUISelectAll a:focus {\n outline: 1px solid var(--ht-link-hover-color);\n}\n.handsontable .htUIMultipleSelect .ht_master .wtHolder {\n overflow: auto;\n}\n.handsontable .htUIMultipleSelect .ht_master .wtHolder .wtHider,\n.handsontable .htUIMultipleSelect .ht_master .wtHolder .htCore,\n.handsontable .htUIMultipleSelect .ht_master .wtHolder tr,\n.handsontable .htUIMultipleSelect .ht_master .wtHolder td {\n background: none;\n}\n.handsontable .htUIInput.htUIButton {\n cursor: pointer;\n display: inline-block;\n}\n.handsontable .htUIInput.htUIButtonOK {\n margin-inline-start: 0;\n margin-inline-end: calc(2 * var(--ht-gap-size, 2px));\n}\n\n.handsontable .htCommentCell {\n position: relative;\n}\n.handsontable .htCommentCell::after {\n content: \"\";\n display: block;\n position: absolute;\n top: 0;\n inset-inline-end: 0;\n inset-inline-start: unset;\n border-inline-start: var(--ht-comments-indicator-size, 4px) solid transparent;\n border-inline-end: none;\n border-top: var(--ht-comments-indicator-size, 4px) solid var(--ht-comments-indicator-color, #1a42e8);\n}\n\n.htCommentsContainer .htComments {\n display: none;\n z-index: 1059;\n position: absolute;\n}\n.htCommentsContainer .htCommentTextArea {\n font-family: var(--ht-font-family), -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n box-shadow: var(--ht-menu-shadow-x, 0) var(--ht-menu-shadow-y, 0) var(--ht-menu-shadow-blur, 8px) color-mix(in srgb, var(--ht-menu-shadow-color, rgb(0, 0, 0)) var(--ht-menu-shadow-opacity, 100%), transparent);\n width: 240px;\n height: 88px;\n font-size: var(--ht-font-size);\n line-height: var(--ht-line-height);\n font-weight: var(--ht-font-weight);\n margin: 0 -1px;\n padding: var(--ht-comments-textarea-vertical-padding) var(--ht-comments-textarea-horizontal-padding);\n border: var(--ht-comments-textarea-border-width, 1px) solid var(--ht-comments-textarea-border-color, transparent);\n border-inline-start: var(--ht-comments-textarea-border-width, 1px) solid var(--ht-comments-textarea-border-color, #1a42e8);\n color: var(--ht-comments-textarea-foreground-color);\n background-color: var(--ht-comments-textarea-background-color, #ffffff);\n outline: 0 !important;\n box-sizing: border-box;\n -webkit-appearance: none;\n}\n.htCommentsContainer .htCommentTextArea:focus {\n border: var(--ht-comments-textarea-focus-border-width, 1px) solid var(--ht-comments-textarea-focus-border-color, #1a42e8);\n color: var(--ht-comments-textarea-focus-foreground-color);\n background-color: var(--ht-comments-textarea-focus-background-color, #ffffff);\n}\n\n.htBorders .wtBorder.ht-border-style-dashed-vertical {\n background-image: repeating-linear-gradient(to bottom, var(--ht-custom-border-color) 0 5px, transparent 0 10px);\n}\n.htBorders .wtBorder.ht-border-style-dashed-horizontal {\n background-image: repeating-linear-gradient(to right, var(--ht-custom-border-color) 0 5px, transparent 0 10px);\n}\n.htBorders .wtBorder.ht-border-style-dotted-horizontal {\n background-image: radial-gradient(circle, var(--ht-custom-border-color) calc(var(--ht-custom-border-size) / 2), transparent 0);\n background-size: calc(var(--ht-custom-border-size) * 2) var(--ht-custom-border-size);\n background-repeat: repeat-x;\n}\n.htBorders .wtBorder.ht-border-style-dotted-vertical {\n background-image: radial-gradient(circle, var(--ht-custom-border-color) calc(var(--ht-custom-border-size) / 2), transparent 0);\n background-size: var(--ht-custom-border-size) calc(var(--ht-custom-border-size) * 2);\n background-repeat: repeat-y;\n}\n\n.handsontable .columnSorting:not(.indicatorDisabled) {\n position: relative;\n}\n.handsontable .columnSorting:not(.indicatorDisabled).sortAction.ascending, .handsontable .columnSorting:not(.indicatorDisabled).sortAction.descending {\n padding-inline-end: calc(var(--ht-icon-size, 16px) + 2px);\n}\n.handsontable .columnSorting:not(.indicatorDisabled).sortAction:hover {\n text-decoration: none;\n cursor: pointer;\n}\n.handsontable .columnSorting:not(.indicatorDisabled).sortAction::before {\n content: \"\";\n display: block;\n width: var(--ht-icon-size, 16px);\n position: absolute;\n top: 50%;\n right: 2px;\n transform: translateY(-50%);\n text-align: right;\n}\n.handsontable .htRight .columnSorting.sortAction.ascending, .handsontable .htRight .columnSorting.sortAction.descending {\n padding-inline-start: calc(var(--ht-icon-size, 16px) + 2px);\n padding-inline-end: 0;\n}\n.handsontable .htRight .columnSorting.sortAction::before {\n left: 2px;\n right: auto;\n text-align: left;\n}\n\n[dir=rtl] .handsontable .columnSorting.sortAction::before {\n left: 2px;\n right: auto;\n text-align: left;\n}\n[dir=rtl] .handsontable .htRight .columnSorting.sortAction.ascending, [dir=rtl] .handsontable .htRight .columnSorting.sortAction.descending {\n padding-inline-start: 0;\n padding-inline-end: calc(var(--ht-icon-size, 16px) + 2px);\n}\n[dir=rtl] .handsontable .htLeft .columnSorting.sortAction.ascending, [dir=rtl] .handsontable .htLeft .columnSorting.sortAction.descending {\n padding-inline-start: calc(var(--ht-icon-size, 16px) + 2px);\n padding-inline-end: 0;\n}\n[dir=rtl] .handsontable .htLeft .columnSorting.sortAction::before {\n left: auto;\n right: 2px;\n text-align: right;\n}\n\n.htGhostTable .htCore span.colHeader.columnSorting:not(.indicatorDisabled)::before {\n content: \"*\";\n display: inline-block;\n position: relative;\n /* The multi-line header and header with longer text need more padding to not hide arrow,\n we make header wider in `GhostTable` to make some space for arrow which is positioned absolutely in the main table */\n padding-inline-end: calc(var(--ht-icon-size, 16px) + 2px);\n}\n\n.handsontable .colHeader.columnSorting::after {\n content: \"\";\n display: block;\n width: 8px;\n position: absolute;\n top: 50%;\n right: 0;\n transform: translateY(-50%);\n margin-top: 4px;\n font-size: 8px;\n text-align: right;\n}\n.handsontable .colHeader.columnSorting[class^=sort-]::after, .handsontable .colHeader.columnSorting[class*=\" sort-\"]::after {\n content: \"+\";\n}\n.handsontable .colHeader.columnSorting.sort-1::after {\n content: \"1\";\n}\n.handsontable .colHeader.columnSorting.sort-2::after {\n content: \"2\";\n}\n.handsontable .colHeader.columnSorting.sort-3::after {\n content: \"3\";\n}\n.handsontable .colHeader.columnSorting.sort-4::after {\n content: \"4\";\n}\n.handsontable .colHeader.columnSorting.sort-5::after {\n content: \"5\";\n}\n.handsontable .colHeader.columnSorting.sort-6::after {\n content: \"6\";\n}\n.handsontable .colHeader.columnSorting.sort-7::after {\n content: \"7\";\n}\n.handsontable .htRight .colHeader.columnSorting::after {\n left: 0;\n right: auto;\n text-align: left;\n}\n\n[dir=rtl] .handsontable .colHeader.columnSorting::after {\n left: 0;\n right: auto;\n text-align: left;\n}\n[dir=rtl] .handsontable .htLeft .colHeader.columnSorting::after {\n left: auto;\n right: 0;\n text-align: right;\n}\n\n.htGhostTable th div:has(.changeType) span.colHeader.columnSorting:not(.indicatorDisabled) {\n padding-inline-end: var(--ht-gap-size);\n}\n\n.handsontable .htRowHeaders .ht_master.innerBorderInlineStart ~ .ht_clone_top_inline_start_corner th:nth-child(2), .handsontable .htRowHeaders .ht_master.innerBorderInlineStart ~ .ht_clone_inline_start td:first-of-type {\n border-left: 0 none;\n}\n.handsontable .ht_clone_top_inline_start_corner th.ht__active_highlight {\n box-shadow: none;\n}\n\n.handsontable .manualColumnResizer {\n position: absolute;\n top: 0;\n width: 10px;\n margin: 0;\n cursor: col-resize;\n background: none;\n opacity: 0;\n z-index: 210;\n}\n.handsontable .manualColumnResizer::before, .handsontable .manualColumnResizer::after {\n content: \"\";\n display: block;\n position: absolute;\n top: 50%;\n left: 1px;\n width: 2px;\n height: calc(100% - 12px);\n max-height: 16px;\n margin-top: 0.5px;\n background: var(--ht-resize-indicator-color);\n border-radius: 2px;\n transform: translateY(-50%);\n}\n.handsontable .manualColumnResizer::after {\n left: auto;\n right: 0;\n}\n.handsontable .manualColumnResizer:hover, .handsontable .manualColumnResizer.active {\n opacity: 1;\n}\n.handsontable .manualColumnResizerGuide {\n position: absolute;\n inset-inline-end: unset;\n top: 0;\n width: 0;\n margin-inline-start: 5px;\n margin-inline-end: unset;\n display: none;\n border-inline-end: 1px solid var(--ht-accent-color);\n border-inline-start: none;\n}\n.handsontable .manualColumnResizerGuide.active {\n display: block;\n z-index: 209;\n}\n\n.handsontable .manualRowResizer {\n position: absolute;\n left: 0;\n z-index: 210;\n height: 10px;\n margin: 0;\n cursor: row-resize;\n background: none;\n opacity: 0;\n}\n.handsontable .manualRowResizer::before, .handsontable .manualRowResizer::after {\n content: \"\";\n display: block;\n position: absolute;\n top: 1px;\n left: 50%;\n width: calc(100% - 12px);\n max-width: 16px;\n height: 2px;\n background: var(--ht-resize-indicator-color);\n border-radius: 2px;\n transform: translateX(-50%);\n}\n.handsontable .manualRowResizer::after {\n top: auto;\n bottom: 0;\n}\n.handsontable .manualRowResizer:hover, .handsontable .manualRowResizer.active {\n opacity: 1;\n}\n.handsontable .manualRowResizerGuide {\n position: absolute;\n left: 0;\n bottom: 0;\n height: 0;\n margin-top: 5px;\n display: none;\n border-bottom: 1px solid var(--ht-accent-color);\n border-top: none;\n}\n.handsontable .manualRowResizerGuide.active {\n display: block;\n z-index: 209;\n}\n\n.handsontable tbody td[rowspan][class*=area][class*=highlight]:not([class*=fullySelectedMergedCell])::before {\n opacity: 0;\n}\n\n.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-multiple]::before {\n opacity: 0.14;\n}\n\n.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-0]:before {\n opacity: 0.14;\n}\n\n.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-1]:before {\n opacity: 0.21;\n}\n\n.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-2]:before {\n opacity: 0.28;\n}\n\n.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-3]:before {\n opacity: 0.35;\n}\n\n.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-4]:before {\n opacity: 0.42;\n}\n\n.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-5]:before {\n opacity: 0.49;\n}\n\n.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-6]:before {\n opacity: 0.56;\n}\n\n.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-7]:before {\n opacity: 0.63;\n}\n\n.handsontable .wtHider {\n position: relative;\n}\n.handsontable .ht__manualColumnMove.after-selection--columns thead th.ht__highlight, .handsontable.ht__manualColumnMove.after-selection--columns thead th.ht__highlight {\n cursor: move;\n cursor: -moz-grab;\n cursor: -webkit-grab;\n cursor: grab;\n}\n.handsontable .ht__manualColumnMove.on-moving--columns *,\n.handsontable .ht__manualColumnMove.on-moving--columns thead th.ht__highlight, .handsontable.ht__manualColumnMove.on-moving--columns *,\n.handsontable.ht__manualColumnMove.on-moving--columns thead th.ht__highlight {\n cursor: move;\n cursor: -moz-grabbing;\n cursor: -webkit-grabbing;\n cursor: grabbing;\n}\n.handsontable .ht__manualColumnMove.on-moving--columns .manualColumnResizer, .handsontable.ht__manualColumnMove.on-moving--columns .manualColumnResizer {\n display: none;\n}\n.handsontable .ht__manualColumnMove--guideline, .handsontable .ht__manualColumnMove--backlight, .handsontable.ht__manualColumnMove--guideline, .handsontable.ht__manualColumnMove--backlight {\n position: absolute;\n height: 100%;\n display: none;\n}\n.handsontable .ht__manualColumnMove--guideline, .handsontable.ht__manualColumnMove--guideline {\n width: 1px;\n top: 0;\n margin-inline-start: -0.5px;\n margin-inline-end: 0;\n z-index: 205;\n background: var(--ht-move-indicator-color, #1a42e8);\n}\n.handsontable .ht__manualColumnMove--backlight, .handsontable.ht__manualColumnMove--backlight {\n display: none;\n z-index: 205;\n pointer-events: none;\n background: color-mix(in srgb, var(--ht-move-backlight-color) var(--ht-move-backlight-opacity, 100%), transparent);\n}\n.handsontable .on-moving--columns.show-ui .ht__manualColumnMove--guideline,\n.handsontable .on-moving--columns .ht__manualColumnMove--backlight, .handsontable.on-moving--columns.show-ui .ht__manualColumnMove--guideline,\n.handsontable.on-moving--columns .ht__manualColumnMove--backlight {\n display: block;\n}\n\n.handsontable .wtHider {\n position: relative;\n}\n.handsontable .ht__manualRowMove.after-selection--rows tbody th.ht__highlight, .handsontable.ht__manualRowMove.after-selection--rows tbody th.ht__highlight {\n cursor: move;\n cursor: -moz-grab;\n cursor: -webkit-grab;\n cursor: grab;\n}\n.handsontable .ht__manualRowMove.on-moving--rows *,\n.handsontable .ht__manualRowMove.on-moving--rows tbody th.ht__highlight, .handsontable.ht__manualRowMove.on-moving--rows *,\n.handsontable.ht__manualRowMove.on-moving--rows tbody th.ht__highlight {\n cursor: move;\n cursor: -moz-grabbing;\n cursor: -webkit-grabbing;\n cursor: grabbing;\n}\n.handsontable .ht__manualRowMove.on-moving--rows .manualRowResizer, .handsontable.ht__manualRowMove.on-moving--rows .manualRowResizer {\n display: none;\n}\n.handsontable .ht__manualRowMove--guideline, .handsontable .ht__manualRowMove--backlight, .handsontable.ht__manualRowMove--guideline, .handsontable.ht__manualRowMove--backlight {\n position: absolute;\n width: 100%;\n display: none;\n}\n.handsontable .ht__manualRowMove--guideline, .handsontable.ht__manualRowMove--guideline {\n border-top: 1px solid var(--ht-move-indicator-color);\n left: 0;\n z-index: 205;\n}\n.handsontable .ht__manualRowMove--backlight, .handsontable.ht__manualRowMove--backlight {\n display: none;\n z-index: 205;\n pointer-events: none;\n background: color-mix(in srgb, var(--ht-move-backlight-color) var(--ht-move-backlight-opacity, 100%), transparent);\n}\n.handsontable .on-moving--rows.show-ui .ht__manualRowMove--guideline,\n.handsontable .on-moving--rows .ht__manualRowMove--backlight, .handsontable.on-moving--rows.show-ui .ht__manualRowMove--guideline,\n.handsontable.on-moving--rows .ht__manualRowMove--backlight {\n display: block;\n}\n\n.ht-dialog {\n scrollbar-width: auto;\n scrollbar-color: var(--ht-scrollbar-thumb-color) var(--ht-scrollbar-track-color);\n position: absolute;\n top: 0;\n left: 0;\n display: none;\n font-size: var(--ht-font-size);\n line-height: var(--ht-line-height);\n letter-spacing: var(--ht-letter-spacing);\n width: 100%;\n height: 100%;\n z-index: 1060;\n opacity: 0;\n overflow-y: auto;\n border-radius: var(--ht-wrapper-border-radius);\n border: 1px solid var(--ht-border-color);\n box-sizing: border-box !important;\n}\n.ht-dialog[dir=rtl] {\n left: auto;\n right: 0;\n}\n.ht-dialog:focus {\n border: 1px solid var(--ht-accent-color);\n outline: none;\n}\n.ht-dialog:has(.htFocusCatcher:focus) {\n border: 1px solid var(--ht-accent-color);\n outline: none;\n}\n.ht-dialog * {\n box-sizing: border-box !important;\n}\n.ht-dialog--background-solid {\n background-color: var(--ht-dialog-solid-background-color);\n}\n.ht-dialog--background-semi-transparent {\n background-color: color-mix(in srgb, var(--ht-dialog-semi-transparent-background-color) var(--ht-dialog-semi-transparent-background-opacity, 100%), transparent);\n}\n.ht-dialog--animation {\n transition: opacity var(--ht-table-transition) ease-in-out;\n}\n.ht-dialog--show {\n opacity: 1;\n}\n.ht-dialog__content-wrapper {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n min-height: 100%;\n padding: calc(var(--ht-gap-size) * 4);\n border-radius: var(--ht-wrapper-border-radius);\n}\n.ht-dialog__content {\n position: relative;\n padding: var(--ht-dialog-content-padding-horizontal) var(--ht-dialog-content-padding-vertical);\n max-width: 480px;\n color: var(--ht-foreground-color);\n}\n.ht-dialog__content--background {\n box-shadow: var(--ht-shadow-x, 0) var(--ht-shadow-y, 0) var(--ht-shadow-blur, 8px) color-mix(in srgb, var(--ht-shadow-color, rgb(0, 0, 0)) var(--ht-shadow-opacity, 100%), transparent);\n border-radius: var(--ht-dialog-content-border-radius);\n background-color: var(--ht-dialog-content-background-color);\n}\n.ht-dialog--confirm .ht-dialog__content-wrapper {\n text-align: center;\n padding: calc(var(--ht-gap-size) * 2);\n}\n.ht-dialog--confirm .ht-dialog__content-wrapper-inner {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n max-width: 480px;\n padding: calc(var(--ht-gap-size) * 2);\n border-radius: var(--ht-wrapper-border-radius);\n}\n.ht-dialog--confirm .ht-dialog__content-wrapper-inner--background {\n box-shadow: var(--ht-shadow-x, 0) var(--ht-shadow-y, 0) var(--ht-shadow-blur, 8px) color-mix(in srgb, var(--ht-shadow-color, rgb(0, 0, 0)) var(--ht-shadow-opacity, 100%), transparent);\n border-radius: var(--ht-dialog-content-border-radius);\n background-color: var(--ht-dialog-content-background-color);\n}\n.ht-dialog--confirm .ht-dialog__content-wrapper-inner:focus {\n outline: none;\n box-shadow: 0 0 0 1px var(--ht-accent-color);\n}\n.ht-dialog--confirm .ht-dialog__content {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--ht-gap-size);\n}\n.ht-dialog--confirm .ht-dialog__content:has(.ht-dialog__buttons) {\n gap: calc(var(--ht-gap-size) * 2);\n}\n.ht-dialog--confirm .ht-dialog__title {\n margin: 0;\n font-size: var(--ht-font-size);\n font-weight: var(--ht-font-weight);\n line-height: var(--ht-line-height);\n}\n.ht-dialog--confirm .ht-dialog__description {\n margin: 0;\n color: var(--ht-foreground-secondary-color);\n font-size: var(--ht-font-size-small);\n line-height: var(--ht-line-height-small);\n font-weight: var(--ht-font-weight);\n}\n.ht-dialog--confirm .ht-dialog__buttons {\n display: flex;\n justify-content: center;\n flex-direction: row;\n flex-wrap: wrap;\n gap: calc(var(--ht-gap-size) * 2);\n}\n\n.ht-notification {\n position: absolute;\n inset: 0;\n z-index: 1070;\n pointer-events: none;\n overflow: visible;\n}\n.ht-notification__stack {\n position: absolute;\n display: flex;\n flex-direction: column;\n gap: 10px;\n max-width: min(420px, 100% - 40px);\n overflow-x: hidden;\n overflow-y: auto;\n overscroll-behavior: contain;\n pointer-events: auto;\n -webkit-overflow-scrolling: touch;\n min-height: 0;\n padding: 10px;\n scrollbar-width: auto;\n scrollbar-color: var(--ht-scrollbar-thumb-color) var(--ht-scrollbar-track-color);\n}\n.ht-notification__stack--top-start {\n top: 10px;\n inset-inline-start: 10px;\n align-items: flex-start;\n max-height: calc(100% - 40px);\n}\n.ht-notification__stack--top-end {\n top: 10px;\n inset-inline-end: 10px;\n align-items: flex-end;\n max-height: calc(100% - 40px);\n}\n.ht-notification__stack--bottom-start {\n bottom: 10px;\n inset-inline-start: 10px;\n align-items: flex-start;\n max-height: calc(100% - 40px);\n}\n.ht-notification__stack--bottom-end {\n bottom: 10px;\n inset-inline-end: 10px;\n align-items: flex-end;\n max-height: calc(100% - 40px);\n}\n.ht-notification__toast {\n box-shadow: var(--ht-shadow-x, 0) var(--ht-shadow-y, 0) var(--ht-shadow-blur, 8px) color-mix(in srgb, var(--ht-shadow-color, rgb(0, 0, 0)) var(--ht-shadow-opacity, 100%), transparent);\n position: relative;\n display: flex;\n flex-shrink: 0;\n max-width: 100%;\n pointer-events: auto;\n color: var(--ht-notification-foreground-color, var(--ht-foreground-color));\n background-color: var(--ht-notification-background-color, var(--ht-background-color));\n border: 1px solid var(--ht-notification-border-color, var(--ht-border-color));\n border-radius: var(--ht-wrapper-border-radius, 4px);\n font-size: var(--ht-font-size);\n line-height: var(--ht-line-height);\n letter-spacing: var(--ht-letter-spacing);\n outline: none;\n}\n.ht-notification__toast:focus-visible {\n box-shadow: 0 0 0 1px var(--ht-accent-color);\n}\n.ht-notification__toast--animate {\n opacity: 0;\n transition: opacity var(--ht-table-transition, 0.15s) ease-out, transform var(--ht-table-transition, 0.15s) ease-out;\n}\n.ht-notification__toast--animate.ht-notification__toast--stack-top:not(.ht-notification__toast--visible) {\n transform: translateY(-6px);\n}\n.ht-notification__toast--animate.ht-notification__toast--stack-bottom:not(.ht-notification__toast--visible) {\n transform: translateY(6px);\n}\n.ht-notification__toast--visible {\n opacity: 1;\n transform: translateY(0);\n}\n.ht-notification__toast--info .ht-notification__accent {\n display: none;\n}\n.ht-notification__toast--success .ht-notification__accent {\n background-color: var(--ht-notification-success-accent, #37bc6c);\n}\n.ht-notification__toast--warning .ht-notification__accent {\n background-color: var(--ht-notification-warning-accent, #fbe952);\n}\n.ht-notification__toast--error .ht-notification__accent {\n background-color: var(--ht-notification-error-accent, #fa4d32);\n}\n.ht-notification__toast-inner {\n display: flex;\n flex-direction: row;\n align-items: stretch;\n width: 100%;\n min-width: 0;\n padding: 10px;\n gap: 0;\n direction: inherit;\n}\n.ht-notification__accent {\n box-sizing: border-box;\n flex: 0 0 4px;\n align-self: stretch;\n border-radius: 4px;\n margin-inline-end: 10px;\n}\n.ht-notification__body {\n flex: 1 1 auto;\n min-width: 0;\n}\n.ht-notification__title {\n margin: 0 0 var(--ht-gap-size);\n font-size: var(--ht-font-size);\n font-weight: var(--ht-font-weight, 600);\n}\n.ht-notification__message {\n margin: 0;\n font-size: var(--ht-font-size-small);\n word-break: break-word;\n}\n.ht-notification__actions {\n display: flex;\n flex-wrap: wrap;\n gap: var(--ht-gap-size);\n margin-top: var(--ht-gap-size);\n}\n.ht-notification__close {\n position: relative;\n box-sizing: border-box;\n flex: 0 0 auto;\n align-self: flex-start;\n margin-inline-start: 4px;\n width: var(--ht-icon-button-hit-area-size);\n height: var(--ht-icon-button-hit-area-size);\n padding: 0;\n border: none;\n background: transparent;\n color: var(--ht-icon-button-icon-color, inherit);\n cursor: pointer;\n border-radius: var(--ht-icon-button-border-radius, var(--ht-wrapper-border-radius, 4px));\n flex-shrink: 0;\n overflow: visible;\n}\n.ht-notification__close::before {\n content: \"\";\n display: block;\n position: absolute;\n top: 50%;\n inset-inline-start: 50%;\n margin-top: calc(-0.5 * var(--ht-icon-size));\n margin-inline-start: calc(-0.5 * var(--ht-icon-size));\n}\n.ht-notification__close:hover {\n color: var(--ht-icon-button-hover-icon-color, inherit);\n background-color: var(--ht-icon-button-hover-background-color, color-mix(in srgb, var(--ht-foreground-color) 8%, transparent));\n}\n.ht-notification__close:focus-visible {\n outline: 2px solid var(--ht-accent-color);\n outline-offset: 2px;\n}\n\n.handsontable.ht-pagination {\n color: var(--ht-pagination-bar-foreground-color);\n background: var(--ht-pagination-bar-background-color);\n border: 1px solid var(--ht-wrapper-border-color);\n border-top-color: transparent;\n border-radius: 0 0 var(--ht-wrapper-border-radius) var(--ht-wrapper-border-radius);\n font-size: var(--ht-font-size);\n line-height: var(--ht-line-height);\n box-sizing: border-box;\n overflow-x: auto;\n}\n.handsontable.ht-pagination--bordered {\n border-top-color: var(--ht-wrapper-border-color);\n}\n.handsontable.ht-pagination .ht-pagination__inner {\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: calc(var(--ht-gap-size) * 4);\n border-radius: 0 0 var(--ht-wrapper-border-radius) var(--ht-wrapper-border-radius);\n padding-inline: var(--ht-pagination-bar-horizontal-padding);\n padding-block: var(--ht-pagination-bar-vertical-padding);\n min-width: 230px;\n}\n.handsontable.ht-pagination .ht-page-size-section {\n display: flex;\n align-items: center;\n gap: calc(var(--ht-gap-size) * 2);\n}\n.handsontable.ht-pagination .ht-page-size-section__label {\n white-space: nowrap;\n}\n.handsontable.ht-pagination .ht-page-size-section__select-wrapper {\n position: relative;\n border-radius: var(--ht-input-border-radius);\n}\n.handsontable.ht-pagination .ht-page-size-section__select-wrapper select {\n padding-inline-start: var(--ht-gap-size);\n padding-inline-end: calc(var(--ht-gap-size) + var(--ht-icon-size));\n padding-top: var(--ht-gap-size);\n padding-bottom: var(--ht-gap-size);\n border-radius: var(--ht-input-border-radius);\n color: var(--ht-input-foreground-color);\n background-color: var(--ht-input-background-color);\n border: 1px solid var(--ht-input-border-color);\n line-height: calc(var(--ht-line-height) - 4px);\n -webkit-appearance: none;\n font-size: inherit;\n cursor: pointer;\n}\n.handsontable.ht-pagination .ht-page-size-section__select-wrapper select:disabled {\n opacity: 0.4;\n cursor: default;\n color: var(--ht-input-disabled-foreground-color);\n background-color: var(--ht-input-disabled-background-color);\n border-color: var(--ht-input-disabled-border-color);\n}\n.handsontable.ht-pagination .ht-page-size-section__select-wrapper select:hover:not(:disabled) {\n color: var(--ht-input-hover-foreground-color);\n background-color: var(--ht-input-hover-background-color);\n border-color: var(--ht-input-hover-border-color);\n}\n.handsontable.ht-pagination .ht-page-size-section__select-wrapper select:focus {\n color: var(--ht-input-focus-foreground-color);\n background-color: var(--ht-input-focus-background-color);\n border-color: var(--ht-input-focus-border-color);\n outline: none;\n}\n.handsontable.ht-pagination .ht-page-size-section__select-wrapper::after {\n content: \"\";\n display: block;\n position: absolute;\n inset-inline-end: var(--ht-gap-size);\n inset-block-end: 50%;\n transform: translateY(50%);\n background-color: var(--ht-foreground-color);\n pointer-events: none;\n}\n.handsontable.ht-pagination .ht-page-counter-section {\n margin-inline-end: auto;\n}\n.handsontable.ht-pagination .ht-page-navigation-section {\n display: flex;\n align-items: center;\n gap: 1px;\n}\n.handsontable.ht-pagination .ht-page-navigation-section__button {\n font-size: inherit;\n border: 1px solid var(--ht-pagination-button-border-color);\n color: var(--ht-pagination-button-foreground-color);\n background-color: var(--ht-pagination-button-background-color);\n border-radius: var(--ht-icon-button-large-border-radius);\n padding: var(--ht-icon-button-large-padding);\n cursor: pointer;\n}\n.handsontable.ht-pagination .ht-page-navigation-section__button::before {\n content: \"\";\n display: block;\n}\n.handsontable.ht-pagination .ht-page-navigation-section__button--disabled {\n cursor: default;\n pointer-events: none;\n color: var(--ht-pagination-button-disabled-foreground-color);\n background-color: var(--ht-pagination-button-disabled-background-color);\n border-color: var(--ht-pagination-button-disabled-border-color);\n}\n.handsontable.ht-pagination .ht-page-navigation-section__button:hover:not(:disabled) {\n border-color: var(--ht-pagination-button-hover-border-color);\n color: var(--ht-pagination-button-hover-foreground-color);\n background-color: var(--ht-pagination-button-hover-background-color);\n}\n.handsontable.ht-pagination .ht-page-navigation-section__button:focus {\n outline: none;\n border-color: var(--ht-pagination-button-focus-border-color);\n color: var(--ht-pagination-button-focus-foreground-color);\n background-color: var(--ht-pagination-button-focus-background-color);\n}\n.handsontable.ht-pagination .ht-page-navigation-section__label {\n white-space: nowrap;\n min-width: 100px;\n text-align: center;\n}\n.handsontable.ht-wrapper.htPagination {\n border-end-start-radius: 0;\n border-end-end-radius: 0;\n}\n.handsontable.ht-wrapper.htPagination .htCore {\n border-end-start-radius: 0;\n border-end-end-radius: 0;\n}\n.handsontable.ht-wrapper.htPagination .htCore thead tr:last-child th:first-child,\n.handsontable.ht-wrapper.htPagination .htCore tbody tr:last-child td:first-child,\n.handsontable.ht-wrapper.htPagination .htCore tbody tr:last-child th:first-child {\n border-end-start-radius: 0 !important;\n}\n.handsontable.ht-wrapper.htPagination .htCore thead tr:last-child th:last-child,\n.handsontable.ht-wrapper.htPagination .htCore tbody tr:last-child td:last-child,\n.handsontable.ht-wrapper.htPagination .htCore tbody tr:last-child th:last-child {\n border-end-end-radius: 0 !important;\n}\n\n.ht-loading__icon-svg {\n display: block;\n width: var(--ht-icon-size);\n height: var(--ht-icon-size);\n color: var(--ht-accent-color);\n animation: ht-loading-spin 1s linear infinite;\n transform-origin: 50% 50%;\n}\n.ht-loading__content {\n display: flex;\n align-items: center;\n gap: calc(var(--ht-gap-size) * 2);\n}\n.ht-loading__title {\n margin: 0;\n font-size: var(--ht-font-size);\n font-weight: var(--ht-font-weight);\n line-height: var(--ht-line-height);\n}\n.ht-loading__description {\n margin: 0;\n color: var(--ht-foreground-secondary-color);\n font-size: var(--ht-font-size-small);\n line-height: var(--ht-line-height-small);\n font-weight: var(--ht-font-weight);\n}\n\n@keyframes ht-loading-spin {\n to {\n transform: rotate(360deg);\n }\n}\n.ht-empty-data-state {\n scrollbar-width: auto;\n scrollbar-color: var(--ht-scrollbar-thumb-color) var(--ht-scrollbar-track-color);\n display: none;\n position: absolute;\n width: 100%;\n left: 0;\n z-index: 999;\n overflow-y: auto;\n border: 1px solid var(--ht-border-color);\n border-radius: var(--ht-wrapper-border-radius);\n box-sizing: border-box;\n background-color: var(--ht-background-color);\n}\n.ht-empty-data-state * {\n box-sizing: border-box !important;\n}\n.ht-empty-data-state__content-wrapper {\n display: flex;\n align-items: center;\n justify-content: center;\n text-align: center;\n width: 100%;\n min-height: 100%;\n padding: calc(var(--ht-gap-size) * 2);\n border-radius: var(--ht-wrapper-border-radius);\n}\n.ht-empty-data-state__content-wrapper-inner {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n max-width: 480px;\n padding: calc(var(--ht-gap-size) * 2);\n border-radius: var(--ht-wrapper-border-radius);\n}\n.ht-empty-data-state__content-wrapper-inner:focus {\n outline: none;\n box-shadow: 0 0 0 1px var(--ht-accent-color);\n}\n.ht-empty-data-state__content {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--ht-gap-size);\n}\n.ht-empty-data-state__title {\n margin: 0;\n font-size: var(--ht-font-size);\n font-weight: var(--ht-font-weight);\n line-height: var(--ht-line-height);\n}\n.ht-empty-data-state__description {\n margin: 0;\n color: var(--ht-foreground-secondary-color);\n font-size: var(--ht-font-size-small);\n line-height: var(--ht-line-height-small);\n font-weight: var(--ht-font-weight);\n}\n.ht-empty-data-state__buttons {\n display: flex;\n justify-content: center;\n flex-direction: row;\n flex-wrap: wrap;\n gap: calc(var(--ht-gap-size) * 2);\n}\n.ht-empty-data-state__buttons--has-buttons {\n margin-top: calc(var(--ht-gap-size) * 2);\n}\n.ht-empty-data-state__spinner {\n flex-shrink: 0;\n width: 28px;\n height: 28px;\n margin-bottom: calc(var(--ht-gap-size) * 2);\n border: 2px solid var(--ht-border-color);\n border-top-color: var(--ht-accent-color);\n border-radius: 50%;\n animation: ht-empty-data-state-spin 0.75s linear infinite;\n}\n@media (prefers-reduced-motion: reduce) {\n .ht-empty-data-state__spinner {\n animation: none;\n border-top-color: var(--ht-border-color);\n }\n}\n.ht-empty-data-state--loading .ht-empty-data-state__content {\n gap: calc(var(--ht-gap-size) * 0.5);\n}\n.ht-empty-data-state--disable-top-border {\n border-start-start-radius: 0;\n border-start-end-radius: 0;\n border-top-width: 0;\n}\n.ht-empty-data-state--disable-inline-border {\n border-start-start-radius: 0;\n border-end-start-radius: 0;\n border-inline-start-width: 0;\n}\n.ht-empty-data-state--disable-bottom-border, .ht-empty-data-state:has(~ .ht-pagination) {\n border-end-start-radius: 0;\n border-end-end-radius: 0;\n border-bottom-width: 0;\n}\n\n@keyframes ht-empty-data-state-spin {\n to {\n transform: rotate(360deg);\n }\n}\n");
120671
120705
 
120672
120706
 
120673
120707
  },
@@ -122588,6 +122622,11 @@ __webpack_require__.d(__webpack_exports__, {
122588
122622
  * @type {object}
122589
122623
  */ themeConfig;
122590
122624
  /**
122625
+ * Unsubscribes from the theme object's change notifications.
122626
+ *
122627
+ * @type {Function|null}
122628
+ */ #unsubscribeTheme = null;
122629
+ /**
122591
122630
  * The theme manager constructor.
122592
122631
  *
122593
122632
  * @param {object} options - The options object.
@@ -122657,7 +122696,8 @@ __webpack_require__.d(__webpack_exports__, {
122657
122696
  this.themeConfig = themeObject.getThemeConfig();
122658
122697
  this.themeClassName = `${THEME_PREFIX}${this.themeConfig.name}`;
122659
122698
  if (typeof themeObject.subscribe === 'function') {
122660
- themeObject.subscribe((config)=>{
122699
+ this.#unsubscribeTheme?.();
122700
+ this.#unsubscribeTheme = themeObject.subscribe((config)=>{
122661
122701
  if (!this.hot?.stylesHandler) {
122662
122702
  return;
122663
122703
  }
@@ -122686,6 +122726,7 @@ __webpack_require__.d(__webpack_exports__, {
122686
122726
  /**
122687
122727
  * Destroys the theme manager.
122688
122728
  */ destroy() {
122729
+ this.#unsubscribeTheme?.();
122689
122730
  this.unmount();
122690
122731
  this.hot.themeManager = null;
122691
122732
  }
@@ -162750,24 +162791,65 @@ __webpack_require__.d(__webpack_exports__, {
162750
162791
  "default": () => (purify)
162751
162792
  });
162752
162793
  /* import */ var dompurify__rspack_import_0 = __webpack_require__(204);
162753
- /*! @license DOMPurify 3.4.2 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.4.2/LICENSE */
162754
-
162755
- const {
162756
- entries,
162757
- setPrototypeOf,
162758
- isFrozen,
162759
- getPrototypeOf,
162760
- getOwnPropertyDescriptor
162761
- } = Object;
162762
- let {
162763
- freeze,
162764
- seal,
162765
- create
162766
- } = Object; // eslint-disable-line import/no-mutable-exports
162767
- let {
162768
- apply,
162769
- construct
162770
- } = typeof Reflect !== 'undefined' && Reflect;
162794
+ /*! @license DOMPurify 3.4.5 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.4.5/LICENSE */
162795
+
162796
+ function _arrayLikeToArray(r, a) {
162797
+ (null == a || a > r.length) && (a = r.length);
162798
+ for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
162799
+ return n;
162800
+ }
162801
+ function _arrayWithHoles(r) {
162802
+ if (Array.isArray(r)) return r;
162803
+ }
162804
+ function _iterableToArrayLimit(r, l) {
162805
+ var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
162806
+ if (null != t) {
162807
+ var e,
162808
+ n,
162809
+ i,
162810
+ u,
162811
+ a = [],
162812
+ f = true,
162813
+ o = false;
162814
+ try {
162815
+ if (i = (t = t.call(r)).next, 0 === l) ; else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
162816
+ } catch (r) {
162817
+ o = true, n = r;
162818
+ } finally {
162819
+ try {
162820
+ if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;
162821
+ } finally {
162822
+ if (o) throw n;
162823
+ }
162824
+ }
162825
+ return a;
162826
+ }
162827
+ }
162828
+ function _nonIterableRest() {
162829
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
162830
+ }
162831
+ function _slicedToArray(r, e) {
162832
+ return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();
162833
+ }
162834
+ function _unsupportedIterableToArray(r, a) {
162835
+ if (r) {
162836
+ if ("string" == typeof r) return _arrayLikeToArray(r, a);
162837
+ var t = {}.toString.call(r).slice(8, -1);
162838
+ return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
162839
+ }
162840
+ }
162841
+
162842
+ const entries = Object.entries,
162843
+ setPrototypeOf = Object.setPrototypeOf,
162844
+ isFrozen = Object.isFrozen,
162845
+ getPrototypeOf = Object.getPrototypeOf,
162846
+ getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
162847
+ let freeze = Object.freeze,
162848
+ seal = Object.seal,
162849
+ create = Object.create; // eslint-disable-line import/no-mutable-exports
162850
+ let _ref = typeof Reflect !== 'undefined' && Reflect,
162851
+ apply = _ref.apply,
162852
+ construct = _ref.construct;
162771
162853
  if (!freeze) {
162772
162854
  freeze = function freeze(x) {
162773
162855
  return x;
@@ -162904,7 +162986,10 @@ function cleanArray(array) {
162904
162986
  */
162905
162987
  function clone(object) {
162906
162988
  const newObject = create(null);
162907
- for (const [property, value] of entries(object)) {
162989
+ for (const _ref2 of entries(object)) {
162990
+ var _ref3 = _slicedToArray(_ref2, 2);
162991
+ const property = _ref3[0];
162992
+ const value = _ref3[1];
162908
162993
  const isPropertyExist = objectHasOwnProperty(object, property);
162909
162994
  if (isPropertyExist) {
162910
162995
  if (arrayIsArray(value)) {
@@ -163018,15 +163103,14 @@ const mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mgly
163018
163103
  const mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);
163019
163104
  const text = freeze(['#text']);
163020
163105
 
163021
- const html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'exportparts', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inert', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'part', 'pattern', 'placeholder', 'playsinline', 'popover', 'popovertarget', 'popovertargetaction', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'slot', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'wrap', 'xmlns']);
163106
+ const html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'command', 'commandfor', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'exportparts', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inert', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'part', 'pattern', 'placeholder', 'playsinline', 'popover', 'popovertarget', 'popovertargetaction', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'slot', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'wrap', 'xmlns']);
163022
163107
  const svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'amplitude', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'exponent', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'intercept', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'mask-type', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'slope', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'tablevalues', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);
163023
163108
  const mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnalign', 'columnlines', 'columnspacing', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lquote', 'lspace', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);
163024
163109
  const xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);
163025
163110
 
163026
- // eslint-disable-next-line unicorn/better-regex
163027
- const MUSTACHE_EXPR = seal(/\{\{[\w\W]*|[\w\W]*\}\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode
163028
- const ERB_EXPR = seal(/<%[\w\W]*|[\w\W]*%>/gm);
163029
- const TMPLIT_EXPR = seal(/\$\{[\w\W]*/gm); // eslint-disable-line unicorn/better-regex
163111
+ const MUSTACHE_EXPR = seal(/{{[\w\W]*|^[\w\W]*}}/g);
163112
+ const ERB_EXPR = seal(/<%[\w\W]*|^[\w\W]*%>/g);
163113
+ const TMPLIT_EXPR = seal(/\${[\w\W]*/g);
163030
163114
  const DATA_ATTR = seal(/^data-[\-\w.\u00B7-\uFFFF]+$/); // eslint-disable-line no-useless-escape
163031
163115
  const ARIA_ATTR = seal(/^aria-[\-\w]+$/); // eslint-disable-line no-useless-escape
163032
163116
  const IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i // eslint-disable-line no-useless-escape
@@ -163037,20 +163121,6 @@ const ATTR_WHITESPACE = seal(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205
163037
163121
  const DOCTYPE_NAME = seal(/^html$/i);
163038
163122
  const CUSTOM_ELEMENT = seal(/^[a-z][.\w]*(-[.\w]+)+$/i);
163039
163123
 
163040
- var EXPRESSIONS = /*#__PURE__*/Object.freeze({
163041
- __proto__: null,
163042
- ARIA_ATTR: ARIA_ATTR,
163043
- ATTR_WHITESPACE: ATTR_WHITESPACE,
163044
- CUSTOM_ELEMENT: CUSTOM_ELEMENT,
163045
- DATA_ATTR: DATA_ATTR,
163046
- DOCTYPE_NAME: DOCTYPE_NAME,
163047
- ERB_EXPR: ERB_EXPR,
163048
- IS_ALLOWED_URI: IS_ALLOWED_URI,
163049
- IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA,
163050
- MUSTACHE_EXPR: MUSTACHE_EXPR,
163051
- TMPLIT_EXPR: TMPLIT_EXPR
163052
- });
163053
-
163054
163124
  /* eslint-disable @typescript-eslint/indent */
163055
163125
  // https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType
163056
163126
  const NODE_TYPE = {
@@ -163117,7 +163187,7 @@ const _createHooksMap = function _createHooksMap() {
163117
163187
  function createDOMPurify() {
163118
163188
  let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();
163119
163189
  const DOMPurify = root => createDOMPurify(root);
163120
- DOMPurify.version = '3.4.2';
163190
+ DOMPurify.version = '3.4.5';
163121
163191
  DOMPurify.removed = [];
163122
163192
  if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document || !window.Element) {
163123
163193
  // Not running in a browser, provide a factory function
@@ -163125,28 +163195,26 @@ function createDOMPurify() {
163125
163195
  DOMPurify.isSupported = false;
163126
163196
  return DOMPurify;
163127
163197
  }
163128
- let {
163129
- document
163130
- } = window;
163198
+ let document = window.document;
163131
163199
  const originalDocument = document;
163132
163200
  const currentScript = originalDocument.currentScript;
163133
- const {
163134
- DocumentFragment,
163135
- HTMLTemplateElement,
163136
- Node,
163137
- Element,
163138
- NodeFilter,
163139
- NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,
163140
- HTMLFormElement,
163141
- DOMParser,
163142
- trustedTypes
163143
- } = window;
163201
+ const DocumentFragment = window.DocumentFragment,
163202
+ HTMLTemplateElement = window.HTMLTemplateElement,
163203
+ Node = window.Node,
163204
+ Element = window.Element,
163205
+ NodeFilter = window.NodeFilter,
163206
+ _window$NamedNodeMap = window.NamedNodeMap,
163207
+ NamedNodeMap = _window$NamedNodeMap === void 0 ? window.NamedNodeMap || window.MozNamedAttrMap : _window$NamedNodeMap,
163208
+ HTMLFormElement = window.HTMLFormElement,
163209
+ DOMParser = window.DOMParser,
163210
+ trustedTypes = window.trustedTypes;
163144
163211
  const ElementPrototype = Element.prototype;
163145
163212
  const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');
163146
163213
  const remove = lookupGetter(ElementPrototype, 'remove');
163147
163214
  const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');
163148
163215
  const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');
163149
163216
  const getParentNode = lookupGetter(ElementPrototype, 'parentNode');
163217
+ const getNodeType = Node && Node.prototype ? lookupGetter(Node.prototype, 'nodeType') : null;
163150
163218
  // As per issue #47, the web-components registry is inherited by a
163151
163219
  // new document created via createHTMLDocument. As per the spec
163152
163220
  // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)
@@ -163161,33 +163229,26 @@ function createDOMPurify() {
163161
163229
  }
163162
163230
  let trustedTypesPolicy;
163163
163231
  let emptyHTML = '';
163164
- const {
163165
- implementation,
163166
- createNodeIterator,
163167
- createDocumentFragment,
163168
- getElementsByTagName
163169
- } = document;
163170
- const {
163171
- importNode
163172
- } = originalDocument;
163232
+ const _document = document,
163233
+ implementation = _document.implementation,
163234
+ createNodeIterator = _document.createNodeIterator,
163235
+ createDocumentFragment = _document.createDocumentFragment,
163236
+ getElementsByTagName = _document.getElementsByTagName;
163237
+ const importNode = originalDocument.importNode;
163173
163238
  let hooks = _createHooksMap();
163174
163239
  /**
163175
163240
  * Expose whether this browser supports running the full DOMPurify.
163176
163241
  */
163177
163242
  DOMPurify.isSupported = typeof entries === 'function' && typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined;
163178
- const {
163179
- MUSTACHE_EXPR,
163180
- ERB_EXPR,
163181
- TMPLIT_EXPR,
163182
- DATA_ATTR,
163183
- ARIA_ATTR,
163184
- IS_SCRIPT_OR_DATA,
163185
- ATTR_WHITESPACE,
163186
- CUSTOM_ELEMENT
163187
- } = EXPRESSIONS;
163188
- let {
163189
- IS_ALLOWED_URI: IS_ALLOWED_URI$1
163190
- } = EXPRESSIONS;
163243
+ const MUSTACHE_EXPR$1 = MUSTACHE_EXPR,
163244
+ ERB_EXPR$1 = ERB_EXPR,
163245
+ TMPLIT_EXPR$1 = TMPLIT_EXPR,
163246
+ DATA_ATTR$1 = DATA_ATTR,
163247
+ ARIA_ATTR$1 = ARIA_ATTR,
163248
+ IS_SCRIPT_OR_DATA$1 = IS_SCRIPT_OR_DATA,
163249
+ ATTR_WHITESPACE$1 = ATTR_WHITESPACE,
163250
+ CUSTOM_ELEMENT$1 = CUSTOM_ELEMENT;
163251
+ let IS_ALLOWED_URI$1 = IS_ALLOWED_URI;
163191
163252
  /**
163192
163253
  * We consider the elements and attributes below to be safe. Ideally
163193
163254
  * don't add any new ones but feel free to remove unwanted ones.
@@ -163707,6 +163768,40 @@ function createDOMPurify() {
163707
163768
  // eslint-disable-next-line no-bitwise
163708
163769
  NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null);
163709
163770
  };
163771
+ /**
163772
+ * Strip template-engine expressions ({{...}}, ${...}, <%...%>) from the
163773
+ * character data of an element subtree. Used as the final safety net for
163774
+ * SAFE_FOR_TEMPLATES on every DOM-returning code path so that expressions
163775
+ * which only form after text-node normalization (e.g. fragments split across
163776
+ * stripped elements) cannot survive into a template-evaluating framework.
163777
+ *
163778
+ * Walks text/comment/CDATA/processing-instruction nodes and mutates `.data`
163779
+ * in place rather than round-tripping through innerHTML. This preserves
163780
+ * descendant node references (important for IN_PLACE callers), avoids a
163781
+ * serialize/reparse cycle, and reads literal character data — which means
163782
+ * `<%...%>` in text content matches the ERB regex against its real bytes
163783
+ * instead of the HTML-entity-escaped form innerHTML would produce.
163784
+ *
163785
+ * Attribute values are not visited here; SAFE_FOR_TEMPLATES handling for
163786
+ * attributes is performed during the per-node `_sanitizeAttributes` pass.
163787
+ *
163788
+ * @param node The root element whose character data should be scrubbed.
163789
+ */
163790
+ const _scrubTemplateExpressions = function _scrubTemplateExpressions(node) {
163791
+ node.normalize();
163792
+ const walker = createNodeIterator.call(node.ownerDocument || node, node,
163793
+ // eslint-disable-next-line no-bitwise
163794
+ NodeFilter.SHOW_TEXT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_CDATA_SECTION | NodeFilter.SHOW_PROCESSING_INSTRUCTION, null);
163795
+ let currentNode = walker.nextNode();
163796
+ while (currentNode) {
163797
+ let data = currentNode.data;
163798
+ arrayForEach([MUSTACHE_EXPR$1, ERB_EXPR$1, TMPLIT_EXPR$1], expr => {
163799
+ data = stringReplace(data, expr, ' ');
163800
+ });
163801
+ currentNode.data = data;
163802
+ currentNode = walker.nextNode();
163803
+ }
163804
+ };
163710
163805
  /**
163711
163806
  * _isClobbered
163712
163807
  *
@@ -163717,13 +163812,31 @@ function createDOMPurify() {
163717
163812
  return element instanceof HTMLFormElement && (typeof element.nodeName !== 'string' || typeof element.textContent !== 'string' || typeof element.removeChild !== 'function' || !(element.attributes instanceof NamedNodeMap) || typeof element.removeAttribute !== 'function' || typeof element.setAttribute !== 'function' || typeof element.namespaceURI !== 'string' || typeof element.insertBefore !== 'function' || typeof element.hasChildNodes !== 'function');
163718
163813
  };
163719
163814
  /**
163720
- * Checks whether the given object is a DOM node.
163815
+ * Checks whether the given object is a DOM node, including nodes that
163816
+ * originate from a different window/realm (e.g. an iframe's
163817
+ * contentDocument). The previous `value instanceof Node` check was
163818
+ * realm-bound: nodes from a different window failed it, causing
163819
+ * sanitize() to silently stringify them and reset IN_PLACE to false,
163820
+ * returning the original node unsanitized. See GHSA-4w3q-35jp-p934.
163821
+ *
163822
+ * Implementation: call the cached `nodeType` getter from Node.prototype
163823
+ * directly on the value. This bypasses any clobbered instance property
163824
+ * (e.g. a child element named "nodeType") and works across realms
163825
+ * because the WebIDL `nodeType` getter reads an internal slot that
163826
+ * every real Node has, regardless of which window minted it.
163721
163827
  *
163722
163828
  * @param value object to check whether it's a DOM node
163723
- * @return true is object is a DOM node
163829
+ * @return true if value is a DOM node from any realm
163724
163830
  */
163725
163831
  const _isNode = function _isNode(value) {
163726
- return typeof Node === 'function' && value instanceof Node;
163832
+ if (!getNodeType || typeof value !== 'object' || value === null) {
163833
+ return false;
163834
+ }
163835
+ try {
163836
+ return typeof getNodeType(value) === 'number';
163837
+ } catch (_) {
163838
+ return false;
163839
+ }
163727
163840
  };
163728
163841
  function _executeHooks(hooks, currentNode, data) {
163729
163842
  arrayForEach(hooks, hook => {
@@ -163815,7 +163928,7 @@ function createDOMPurify() {
163815
163928
  if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {
163816
163929
  /* Get the element's text content */
163817
163930
  content = currentNode.textContent;
163818
- arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {
163931
+ arrayForEach([MUSTACHE_EXPR$1, ERB_EXPR$1, TMPLIT_EXPR$1], expr => {
163819
163932
  content = stringReplace(content, expr, ' ');
163820
163933
  });
163821
163934
  if (currentNode.textContent !== content) {
@@ -163852,7 +163965,7 @@ function createDOMPurify() {
163852
163965
  (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)
163853
163966
  XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)
163854
163967
  We don't need to check the value; it's always URI safe. */
163855
- if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) ; else if (!nameIsPermitted || FORBID_ATTR[lcName]) {
163968
+ if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR$1, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR$1, lcName)) ; else if (!nameIsPermitted || FORBID_ATTR[lcName]) {
163856
163969
  if (
163857
163970
  // First condition does a very basic check if a) it's basically a valid custom element tagname AND
163858
163971
  // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck
@@ -163864,7 +163977,7 @@ function createDOMPurify() {
163864
163977
  return false;
163865
163978
  }
163866
163979
  /* Check value is safe. First, is attr inert? If so, is safe */
163867
- } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if (value) {
163980
+ } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE$1, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA$1, stringReplace(value, ATTR_WHITESPACE$1, ''))) ; else if (value) {
163868
163981
  return false;
163869
163982
  } else ;
163870
163983
  return true;
@@ -163882,7 +163995,7 @@ function createDOMPurify() {
163882
163995
  * @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false.
163883
163996
  */
163884
163997
  const _isBasicCustomElement = function _isBasicCustomElement(tagName) {
163885
- return !RESERVED_CUSTOM_ELEMENT_NAMES[stringToLowerCase(tagName)] && regExpTest(CUSTOM_ELEMENT, tagName);
163998
+ return !RESERVED_CUSTOM_ELEMENT_NAMES[stringToLowerCase(tagName)] && regExpTest(CUSTOM_ELEMENT$1, tagName);
163886
163999
  };
163887
164000
  /**
163888
164001
  * _sanitizeAttributes
@@ -163897,9 +164010,7 @@ function createDOMPurify() {
163897
164010
  const _sanitizeAttributes = function _sanitizeAttributes(currentNode) {
163898
164011
  /* Execute a hook if present */
163899
164012
  _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);
163900
- const {
163901
- attributes
163902
- } = currentNode;
164013
+ const attributes = currentNode.attributes;
163903
164014
  /* Check if we have attributes; if not we might have a text node */
163904
164015
  if (!attributes || _isClobbered(currentNode)) {
163905
164016
  return;
@@ -163915,11 +164026,9 @@ function createDOMPurify() {
163915
164026
  /* Go backwards over all attributes; safely remove bad ones */
163916
164027
  while (l--) {
163917
164028
  const attr = attributes[l];
163918
- const {
163919
- name,
163920
- namespaceURI,
163921
- value: attrValue
163922
- } = attr;
164029
+ const name = attr.name,
164030
+ namespaceURI = attr.namespaceURI,
164031
+ attrValue = attr.value;
163923
164032
  const lcName = transformCaseFunc(name);
163924
164033
  const initValue = attrValue;
163925
164034
  let value = name === 'value' ? initValue : stringTrim(initValue);
@@ -163967,7 +164076,7 @@ function createDOMPurify() {
163967
164076
  }
163968
164077
  /* Sanitize attribute content to be template-safe */
163969
164078
  if (SAFE_FOR_TEMPLATES) {
163970
- arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {
164079
+ arrayForEach([MUSTACHE_EXPR$1, ERB_EXPR$1, TMPLIT_EXPR$1], expr => {
163971
164080
  value = stringReplace(value, expr, ' ');
163972
164081
  });
163973
164082
  }
@@ -164041,6 +164150,49 @@ function createDOMPurify() {
164041
164150
  /* Execute a hook if present */
164042
164151
  _executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);
164043
164152
  };
164153
+ /**
164154
+ * _sanitizeAttachedShadowRoots
164155
+ *
164156
+ * Walks `root` and feeds every attached shadow root we encounter into
164157
+ * the existing _sanitizeShadowDOM pipeline. The default node iterator
164158
+ * does not descend into shadow trees, so nodes inside an attached
164159
+ * shadow root would otherwise be skipped entirely.
164160
+ *
164161
+ * Two real input paths put attached shadow roots in front of us:
164162
+ * 1. IN_PLACE on a DOM node that already has shadow roots attached.
164163
+ * 2. DOM-node input where importNode(dirty, true) deep-clones the
164164
+ * shadow root because it was created with `clonable: true`.
164165
+ *
164166
+ * This pass runs once, up front, so the main iteration loop (and the
164167
+ * existing _sanitizeShadowDOM template-content recursion) stay
164168
+ * untouched — string-input paths are not affected.
164169
+ *
164170
+ * @param root the subtree root to walk for attached shadow roots
164171
+ */
164172
+ const _sanitizeAttachedShadowRoots2 = function _sanitizeAttachedShadowRoots(root) {
164173
+ if (root.nodeType === NODE_TYPE.element && root.shadowRoot instanceof DocumentFragment) {
164174
+ const sr = root.shadowRoot;
164175
+ // Recurse first so that nested shadow roots are reached even if
164176
+ // _sanitizeShadowDOM removes hosts at this level.
164177
+ _sanitizeAttachedShadowRoots2(sr);
164178
+ _sanitizeShadowDOM2(sr);
164179
+ }
164180
+ // Snapshot children before recursing. Sanitization of one subtree
164181
+ // (e.g. via an uponSanitizeShadowNode hook) may detach siblings,
164182
+ // and naive nextSibling traversal would silently skip the rest of
164183
+ // the list once a node is detached.
164184
+ const childNodes = root.childNodes;
164185
+ if (!childNodes) {
164186
+ return;
164187
+ }
164188
+ const snapshot = [];
164189
+ arrayForEach(childNodes, child => {
164190
+ arrayPush(snapshot, child);
164191
+ });
164192
+ for (const child of snapshot) {
164193
+ _sanitizeAttachedShadowRoots2(child);
164194
+ }
164195
+ };
164044
164196
  // eslint-disable-next-line complexity
164045
164197
  DOMPurify.sanitize = function (dirty) {
164046
164198
  let cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
@@ -164085,7 +164237,10 @@ function createDOMPurify() {
164085
164237
  throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');
164086
164238
  }
164087
164239
  }
164088
- } else if (dirty instanceof Node) {
164240
+ /* Sanitize attached shadow roots before the main iterator runs.
164241
+ The iterator does not descend into shadow trees. */
164242
+ _sanitizeAttachedShadowRoots2(dirty);
164243
+ } else if (_isNode(dirty)) {
164089
164244
  /* If dirty is a DOM element, append to an empty document to avoid
164090
164245
  elements being stripped by the parser */
164091
164246
  body = _initDocument('<!---->');
@@ -164099,6 +164254,10 @@ function createDOMPurify() {
164099
164254
  // eslint-disable-next-line unicorn/prefer-dom-node-append
164100
164255
  body.appendChild(importedNode);
164101
164256
  }
164257
+ /* Clonable shadow roots are deep-cloned by importNode(); sanitize
164258
+ them before the main iterator runs, since the iterator does not
164259
+ descend into shadow trees. */
164260
+ _sanitizeAttachedShadowRoots2(importedNode);
164102
164261
  } else {
164103
164262
  /* Exit directly if we have nothing to do */
164104
164263
  if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT &&
@@ -164132,17 +164291,15 @@ function createDOMPurify() {
164132
164291
  }
164133
164292
  /* If we sanitized `dirty` in-place, return it. */
164134
164293
  if (IN_PLACE) {
164294
+ if (SAFE_FOR_TEMPLATES) {
164295
+ _scrubTemplateExpressions(dirty);
164296
+ }
164135
164297
  return dirty;
164136
164298
  }
164137
164299
  /* Return sanitized string or DOM */
164138
164300
  if (RETURN_DOM) {
164139
164301
  if (SAFE_FOR_TEMPLATES) {
164140
- body.normalize();
164141
- let html = body.innerHTML;
164142
- arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {
164143
- html = stringReplace(html, expr, ' ');
164144
- });
164145
- body.innerHTML = html;
164302
+ _scrubTemplateExpressions(body);
164146
164303
  }
164147
164304
  if (RETURN_DOM_FRAGMENT) {
164148
164305
  returnNode = createDocumentFragment.call(body.ownerDocument);
@@ -164172,7 +164329,7 @@ function createDOMPurify() {
164172
164329
  }
164173
164330
  /* Sanitize final string template-safe */
164174
164331
  if (SAFE_FOR_TEMPLATES) {
164175
- arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {
164332
+ arrayForEach([MUSTACHE_EXPR$1, ERB_EXPR$1, TMPLIT_EXPR$1], expr => {
164176
164333
  serializedHTML = stringReplace(serializedHTML, expr, ' ');
164177
164334
  });
164178
164335
  }