handsontable 18.1.1 → 18.1.2-rc2

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 (72) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/base.js +2 -2
  3. package/base.mjs +2 -2
  4. package/dataMap/metaManager/metaSchema.js +4 -2
  5. package/dataMap/metaManager/metaSchema.mjs +4 -2
  6. package/dist/handsontable.full.js +223 -44
  7. package/dist/handsontable.full.min.js +129 -129
  8. package/dist/handsontable.js +223 -44
  9. package/dist/handsontable.min.js +129 -129
  10. package/dist/themes/classic.js +2 -2
  11. package/dist/themes/classic.min.js +2 -2
  12. package/dist/themes/horizon.js +2 -2
  13. package/dist/themes/horizon.min.js +2 -2
  14. package/dist/themes/main.js +2 -2
  15. package/dist/themes/main.min.js +2 -2
  16. package/dist/themes/static/variables/colors/ant.js +2 -2
  17. package/dist/themes/static/variables/colors/ant.min.js +2 -2
  18. package/dist/themes/static/variables/colors/classic.js +2 -2
  19. package/dist/themes/static/variables/colors/classic.min.js +2 -2
  20. package/dist/themes/static/variables/colors/horizon.js +2 -2
  21. package/dist/themes/static/variables/colors/horizon.min.js +2 -2
  22. package/dist/themes/static/variables/colors/main.js +2 -2
  23. package/dist/themes/static/variables/colors/main.min.js +2 -2
  24. package/dist/themes/static/variables/colors/material.js +2 -2
  25. package/dist/themes/static/variables/colors/material.min.js +2 -2
  26. package/dist/themes/static/variables/colors/shadcn.js +2 -2
  27. package/dist/themes/static/variables/colors/shadcn.min.js +2 -2
  28. package/dist/themes/static/variables/density.js +2 -2
  29. package/dist/themes/static/variables/density.min.js +2 -2
  30. package/dist/themes/static/variables/helpers/iconsMap.js +2 -2
  31. package/dist/themes/static/variables/helpers/iconsMap.min.js +2 -2
  32. package/dist/themes/static/variables/icons/horizon.js +2 -2
  33. package/dist/themes/static/variables/icons/horizon.min.js +2 -2
  34. package/dist/themes/static/variables/icons/main.js +2 -2
  35. package/dist/themes/static/variables/icons/main.min.js +2 -2
  36. package/dist/themes/static/variables/sizing.js +2 -2
  37. package/dist/themes/static/variables/sizing.min.js +2 -2
  38. package/dist/themes/static/variables/tokens/classic.js +2 -2
  39. package/dist/themes/static/variables/tokens/classic.min.js +2 -2
  40. package/dist/themes/static/variables/tokens/horizon.js +2 -2
  41. package/dist/themes/static/variables/tokens/horizon.min.js +2 -2
  42. package/dist/themes/static/variables/tokens/main.js +2 -2
  43. package/dist/themes/static/variables/tokens/main.min.js +2 -2
  44. package/helpers/mixed.js +5 -5
  45. package/helpers/mixed.mjs +5 -5
  46. package/package.json +1 -1
  47. package/styles/handsontable.css +2 -2
  48. package/styles/handsontable.min.css +2 -2
  49. package/styles/handsontableStyles.js +1 -1
  50. package/styles/handsontableStyles.mjs +1 -1
  51. package/styles/ht-icons-horizon.min.css +2 -2
  52. package/styles/ht-icons-main.min.css +2 -2
  53. package/styles/ht-theme-classic-no-icons.min.css +2 -2
  54. package/styles/ht-theme-classic.min.css +2 -2
  55. package/styles/ht-theme-horizon-no-icons.min.css +2 -2
  56. package/styles/ht-theme-horizon.min.css +2 -2
  57. package/styles/ht-theme-main-no-icons.min.css +2 -2
  58. package/styles/ht-theme-main.min.css +2 -2
  59. package/utils/entitlementLicenseKey/constants.d.ts +7 -1
  60. package/utils/entitlementLicenseKey/constants.js +5 -1
  61. package/utils/entitlementLicenseKey/constants.mjs +6 -1
  62. package/utils/entitlementLicenseKey/encoding.d.ts +1 -1
  63. package/utils/entitlementLicenseKey/encoding.js +4 -1
  64. package/utils/entitlementLicenseKey/encoding.mjs +4 -1
  65. package/utils/entitlementLicenseKey/extractKeyData.d.ts +47 -8
  66. package/utils/entitlementLicenseKey/extractKeyData.js +155 -14
  67. package/utils/entitlementLicenseKey/extractKeyData.mjs +188 -23
  68. package/utils/entitlementLicenseKey/types.d.ts +5 -0
  69. package/utils/licenseBranding/index.js +2 -2
  70. package/utils/licenseBranding/index.mjs +2 -2
  71. package/utils/licenseNotification.js +2 -2
  72. package/utils/licenseNotification.mjs +2 -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: 18.1.1
29
- * Release date: 15/09/2026 (built at 15/09/2026 08:36:14)
28
+ * Version: 18.1.2-rc2
29
+ * Release date: 07/10/2026 (built at 07/10/2026 09:25:10)
30
30
  */
31
31
  (function webpackUniversalModuleDefinition(root, factory) {
32
32
 
@@ -27931,8 +27931,8 @@ Handsontable.hooks = _core_hooks__rspack_import_12.Hooks.getSingleton();
27931
27931
  Handsontable.CellCoords = _3rdparty_walkontable_src__rspack_import_0["default"];
27932
27932
  Handsontable.CellRange = _3rdparty_walkontable_src__rspack_import_1["default"];
27933
27933
  Handsontable.packageName = 'handsontable';
27934
- Handsontable.buildDate = "15/09/2026 08:36:14";
27935
- Handsontable.version = "18.1.1";
27934
+ Handsontable.buildDate = "07/10/2026 09:25:10";
27935
+ Handsontable.version = "18.1.2-rc2";
27936
27936
  Handsontable.languages = {
27937
27937
  dictionaryKeys: _i18n_registry__rspack_import_13,
27938
27938
  getLanguageDictionary: _i18n_registry__rspack_import_14.getLanguageDictionary,
@@ -45587,8 +45587,10 @@ __webpack_require__.d(__webpack_exports__, {
45587
45587
  * licenseKey: 'xxxxx-xxxxx-xxxxx-xxxxx-xxxxx', // your commercial license key
45588
45588
  *
45589
45589
  * // for an entitlement license key (trial, subscription, or perpetual),
45590
- * // pass the whole key string exactly as you received it
45591
- * licenseKey: 'This is a Handsontable license key for Acme Corp, ... [eyJwcm9kdWN0cyI6...3a4f8361]',
45590
+ * // pass the whole key string exactly as you received it – the key
45591
+ * // protects its text too, so the `[...]` block on its own is not a valid key;
45592
+ * // the text contains quotes, so use a template literal
45593
+ * licenseKey: `This is a Handsontable license key for Acme Corp, ... for the "Acme Portal" project. ... [eyJwcm9kdWN0cyI6...3a4f8361]`,
45592
45594
  *
45593
45595
  * // for non-commercial use
45594
45596
  * licenseKey: 'non-commercial-and-evaluation',
@@ -60409,7 +60411,7 @@ function _injectProductInfo(param) {
60409
60411
  }
60410
60412
  const hasValidType = !isEmpty(key);
60411
60413
  const isNonCommercial = typeof key === 'string' && (key.toLowerCase() === 'non-commercial-and-evaluation' || key.toLowerCase() === 'ht68e-1f2b7-47158-70b05-0842f');
60412
- const hotVersion = "18.1.1";
60414
+ const hotVersion = "18.1.2-rc2";
60413
60415
  let keyValidityDate;
60414
60416
  let consoleMessageState = 'invalid';
60415
60417
  let domMessageState = 'invalid';
@@ -60420,7 +60422,7 @@ function _injectProductInfo(param) {
60420
60422
  domMessageState = 'valid';
60421
60423
  } else if (hasValidType || schemaValidity) {
60422
60424
  if (schemaValidity) {
60423
- const resolvedReleaseDate = releaseDate ?? "15/09/2026" ?? '';
60425
+ const resolvedReleaseDate = releaseDate ?? "07/10/2026" ?? '';
60424
60426
  const [dd, mm, yyyy] = resolvedReleaseDate.split('/').map(Number);
60425
60427
  const releaseDays = Math.floor(Date.UTC(yyyy, mm - 1, dd) / 8.64e7);
60426
60428
  const keyValidityDays = _extractTime(key);
@@ -60564,7 +60566,7 @@ function _injectProductInfo(param) {
60564
60566
  // to the build-time value here while the emitter keeps the empty string, and the two would
60565
60567
  // disagree about one key: the emitter reads no date at all (so the key is valid) while this reads
60566
60568
  // the build date (so the key may be expired).
60567
- const resolvedReleaseDate = releaseDate ?? "15/09/2026" ?? '';
60569
+ const resolvedReleaseDate = releaseDate ?? "07/10/2026" ?? '';
60568
60570
  const [dd, mm, yyyy] = resolvedReleaseDate.split('/').map(Number);
60569
60571
  const releaseDays = Math.floor(Date.UTC(yyyy, mm - 1, dd) / 8.64e7);
60570
60572
  const keyValidityDays = _extractTime(normalizedKey);
@@ -60622,7 +60624,7 @@ function _injectProductInfo(param) {
60622
60624
  }
60623
60625
  // `||`, not `??`: a caller resolving the build constant in a broken way passes '' (not
60624
60626
  // undefined), and the empty string must still fall back to the build-time value.
60625
- const resolvedReleaseDate = releaseDate || "15/09/2026" || 0;
60627
+ const resolvedReleaseDate = releaseDate || "07/10/2026" || 0;
60626
60628
  const lifecycle = (0,_utils_entitlementLicenseKey__rspack_import_5.classifyEntitlement)(entitlement, {
60627
60629
  now: Date.now(),
60628
60630
  buildDate: _releaseDateToIsoDate(resolvedReleaseDate)
@@ -60657,7 +60659,7 @@ function _injectProductInfo(param) {
60657
60659
  const params = {
60658
60660
  daysRemaining: lifecycle.daysRemaining,
60659
60661
  licensedUntil: lifecycle.licensedUntil ?? undefined,
60660
- hotVersion: "18.1.1"
60662
+ hotVersion: "18.1.2-rc2"
60661
60663
  };
60662
60664
  if (channels.console && !_entitlementNotified.has(key ?? '')) {
60663
60665
  // An unreadable key reuses the frozen legacy copy - it is the same failure, and the
@@ -128926,7 +128928,7 @@ __webpack_require__.r(__webpack_exports__);
128926
128928
  __webpack_require__.d(__webpack_exports__, {
128927
128929
  "default": () => (__rspack_default_export)
128928
128930
  });
128929
- /* 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 67,200.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: 18.1.1\n * Release date: 15/09/2026 (built at 15/09/2026 08:36:12)\n */\n@charset \"UTF-8\";\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.ht-root-wrapper.ht-shadow-dom {\n isolation: isolate;\n}\n.ht-root-wrapper.ht-slot-bottom-filled .ht-wrapper:not(.htHorizontallyScrollableByWindow) .ht_master .wtHolder, .ht-root-wrapper.ht-slot-bottom-filled .ht-wrapper:not(.htVerticallyScrollableByWindow) .ht_master .wtHolder, .ht-root-wrapper.ht-slot-top-filled .ht-wrapper:not(.htHorizontallyScrollableByWindow) .ht_master .wtHolder, .ht-root-wrapper.ht-slot-top-filled .ht-wrapper:not(.htVerticallyScrollableByWindow) .ht_master .wtHolder {\n background-color: var(--ht-background-color);\n box-shadow: inset 0 0 0 1px var(--ht-border-color);\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 position: relative;\n flex: 1 1 auto;\n min-height: 0;\n}\n\n.ht-grid-content {\n height: 100%;\n}\n\n.ht-slot-top, .ht-slot-bottom {\n flex: 0 0 auto;\n overflow-x: auto;\n}\n\n.ht-slot-element {\n width: 100%;\n box-sizing: border-box;\n border: 1px solid var(--ht-border-color);\n}\n\n.ht-slot-top > .ht-slot-element:not(:first-of-type) {\n border-top-width: 0;\n}\n.ht-slot-top > .ht-slot-element:last-of-type {\n border-bottom-width: 0;\n}\n\n.ht-slot-bottom > .ht-slot-element:not(:last-of-type) {\n border-bottom-width: 0;\n}\n.ht-slot-bottom > .ht-slot-element:first-of-type {\n border-top-width: 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 height: 100%;\n width: 100%;\n}\n.handsontable.ht-wrapper:not(.htFirstDatasetColumnNotRendered) :where(table.htCore > tbody > tr, .htGhostTable > table > tbody > tr) > td:first-of-type {\n border-inline-start-width: 1px;\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:not(.htHorizontallyScrollableByWindow).htHasScrollX .ht_master .wtHolder, .handsontable:not(.htHorizontallyScrollableByWindow).htHasScrollY .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 box-shadow: inset 0 0 0 1px var(--ht-border-color);\n}\n.handsontable :where(table.htCore > tbody, .htGhostTable > table > tbody) > tr.ht__row_even > th {\n background-color: var(--ht-row-header-even-background-color);\n}\n.handsontable :where(table.htCore > tbody, .htGhostTable > table > tbody) > tr.ht__row_even > td {\n background-color: var(--ht-row-cell-even-background-color);\n}\n.handsontable :where(table.htCore > tbody, .htGhostTable > table > tbody) > tr.ht__row_odd > th {\n background-color: var(--ht-row-header-odd-background-color);\n}\n.handsontable :where(table.htCore > tbody, .htGhostTable > table > tbody) > tr.ht__row_odd > td {\n background-color: var(--ht-row-cell-odd-background-color);\n}\n.handsontable :where(table.htCore > thead > tr, .htGhostTable > table > thead > tr, table.htCore > tbody > tr, .htGhostTable > table > tbody > tr) > th,\n.handsontable :where(table.htCore > tbody > tr, .htGhostTable > table > tbody > tr) > 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 :where(table.htCore > thead > tr, .htGhostTable > table > thead > tr, table.htCore > tbody > tr, .htGhostTable > table > tbody > tr) > th.invisibleSelection,\n.handsontable :where(table.htCore > tbody > tr, .htGhostTable > table > tbody > tr) > td.invisibleSelection {\n outline: none;\n}\n.handsontable :where(table.htCore > thead > tr, .htGhostTable > table > thead > tr, table.htCore > tbody > tr, .htGhostTable > table > tbody > tr) > th.invisibleSelection::selection,\n.handsontable :where(table.htCore > tbody > tr, .htGhostTable > table > tbody > tr) > td.invisibleSelection::selection {\n background: transparent;\n}\n.handsontable :where(table.htCore > thead > tr, .htGhostTable > table > thead > tr, table.htCore > tbody > tr, .htGhostTable > table > tbody > tr) > 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 :where(table.htCore > thead > tr, .htGhostTable > table > thead > tr, table.htCore > tbody > tr, .htGhostTable > table > tbody > tr) > 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 :where(table.htCore > thead > tr, .htGhostTable > table > thead > tr, table.htCore > tbody > tr, .htGhostTable > table > tbody > tr) > th:last-child.ht__active_highlight {\n border-inline-end-color: var(--ht-header-active-border-color);\n}\n.handsontable :where(table.htCore > thead > tr, .htGhostTable > table > thead > tr, table.htCore > tbody > tr, .htGhostTable > table > tbody > tr) > th:first-child {\n border-inline-start-color: var(--ht-border-color);\n}\n.handsontable :where(table.htCore > thead > tr, .htGhostTable > table > thead > tr, table.htCore > tbody > tr, .htGhostTable > table > tbody > tr) > th:first-child.ht__active_highlight {\n border-inline-start-color: var(--ht-header-active-border-color);\n}\n.handsontable :where(table.htCore > thead > tr, .htGhostTable > table > thead > tr, table.htCore > tbody > tr, .htGhostTable > table > tbody > tr) > th:first-child, .handsontable :where(table.htCore > thead > tr, .htGhostTable > table > thead > tr, table.htCore > tbody > tr, .htGhostTable > table > tbody > tr) > th:nth-child(2) {\n border-inline-start-width: 1px;\n}\n.handsontable :where(table.htCore > thead > tr, .htGhostTable > table > thead > tr, table.htCore > tbody > tr, .htGhostTable > table > tbody > tr) > th.current {\n box-shadow: inset 0 0 0 1px var(--ht-cell-selection-border-color);\n}\n.handsontable :where(table.htCore > thead > tr, .htGhostTable > table > thead > tr, table.htCore > tbody > tr, .htGhostTable > table > tbody > tr) > th.active {\n color: var(--ht-header-active-foreground-color);\n background-color: var(--ht-header-active-background-color);\n}\n.handsontable :where(table.htCore > thead > tr, .htGhostTable > table > thead > tr, table.htCore > tbody > tr, .htGhostTable > table > tbody > tr) > th.ht__highlight {\n color: var(--ht-header-highlighted-foreground-color);\n background-color: var(--ht-header-highlighted-background-color);\n}\n.handsontable :where(table.htCore > thead > tr, .htGhostTable > table > thead > tr, table.htCore > tbody > tr, .htGhostTable > table > tbody > tr) > 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 :where(table.htCore > thead > tr, .htGhostTable > table > thead > tr, table.htCore > tbody > tr, .htGhostTable > table > tbody > tr) > th.ht__active_highlight-prev {\n border-inline-end-color: var(--ht-header-active-border-color);\n}\n.handsontable :where(table.htCore > thead > tr, .htGhostTable > table > thead > tr, table.htCore > tbody > tr, .htGhostTable > table > tbody > tr) > th.ht__active_highlight-seam {\n border-inline-end-color: var(--ht-header-active-border-color);\n}\n.handsontable :where(table.htCore, .htGhostTable > table) > tbody > tr.ht__row_odd > th.ht__highlight, .handsontable :where(table.htCore, .htGhostTable > table) > 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 :where(table.htCore, .htGhostTable > table) > tbody > tr.ht__row_odd > th.ht__active_highlight, .handsontable :where(table.htCore, .htGhostTable > table) > 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 :where(table.htCore, .htGhostTable > table) > tbody > tr:first-of-type > th:first-child:empty::after,\n.handsontable :where(table.htCore, .htGhostTable > table) > 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 :where(table.htCore, .htGhostTable > table) > 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 :where(table.htCore, .htGhostTable > table) > tbody > tr > th .relative {\n padding: var(--ht-cell-vertical-padding) var(--ht-cell-horizontal-padding);\n min-height: 100%;\n}\n.handsontable :where(table.htCore, .htGhostTable > table) > tbody > tr > td:first-child {\n border-inline-start-color: var(--ht-border-color);\n}\n.handsontable :where(table.htCore, .htGhostTable > table) > tbody > tr > td:last-child {\n border-inline-end-color: var(--ht-border-color);\n}\n.handsontable :where(table.htCore, .htGhostTable > table) > tbody > tr > th.ht__active_highlight-prev-row {\n border-bottom-color: var(--ht-header-active-border-color);\n}\n.handsontable :where(table.htCore, .htGhostTable > table) > thead > tr > th {\n padding: 0;\n}\n.handsontable :where(table.htCore, .htGhostTable > table) > thead > tr > th.ht__active_highlight {\n box-shadow: -1px 0 0 0 var(--ht-header-active-border-color);\n}\n.handsontable :where(table.htCore, .htGhostTable > table) > 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 :where(table.htCore, .htGhostTable > table) > 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 :where(table.htCore > thead, table.htCore > tbody, .htGhostTable > table > thead, .htGhostTable > table > tbody) > tr:first-child > th,\n.handsontable :where(table.htCore > thead, table.htCore > tbody, .htGhostTable > table > thead, .htGhostTable > table > tbody) > tr:first-child > td {\n border-top-color: var(--ht-border-color);\n border-top-width: 1px;\n}\n.handsontable :where(table.htCore > thead, table.htCore > tbody, .htGhostTable > table > thead, .htGhostTable > table > tbody) > tr:first-child > th.ht__active_highlight, .handsontable :where(table.htCore > thead, table.htCore > tbody, .htGhostTable > table > thead, .htGhostTable > table > tbody) > tr:first-child > th.ht__active_highlight-row-seam-bottom,\n.handsontable :where(table.htCore > thead, table.htCore > tbody, .htGhostTable > table > thead, .htGhostTable > table > tbody) > tr:first-child > td.ht__active_highlight,\n.handsontable :where(table.htCore > thead, table.htCore > tbody, .htGhostTable > table > thead, .htGhostTable > table > tbody) > tr:first-child > td.ht__active_highlight-row-seam-bottom {\n border-top-color: var(--ht-header-active-border-color);\n}\n.handsontable :where(table.htCore > thead, table.htCore > tbody, .htGhostTable > table > thead, .htGhostTable > table > tbody) > tr:last-child > th,\n.handsontable :where(table.htCore > thead, table.htCore > tbody, .htGhostTable > table > thead, .htGhostTable > table > tbody) > tr:last-child > td {\n border-bottom-color: var(--ht-border-color);\n}\n.handsontable :where(table.htCore > thead, table.htCore > tbody, .htGhostTable > table > thead, .htGhostTable > table > tbody) > tr:last-child > th.ht__active_highlight, .handsontable :where(table.htCore > thead, table.htCore > tbody, .htGhostTable > table > thead, .htGhostTable > table > tbody) > tr:last-child > th.ht__active_highlight-row-seam-top,\n.handsontable :where(table.htCore > thead, table.htCore > tbody, .htGhostTable > table > thead, .htGhostTable > table > tbody) > tr:last-child > td.ht__active_highlight,\n.handsontable :where(table.htCore > thead, table.htCore > tbody, .htGhostTable > table > thead, .htGhostTable > table > tbody) > tr:last-child > td.ht__active_highlight-row-seam-top {\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] :where(table.htCore > tbody > tr, .htGhostTable > table > tbody > tr) > td:first-of-type {\n border-inline-start-width: 1px;\n}\n.handsontable :where(table.htCore, .htGhostTable > table) > 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.htCore, .handsontable:where(.htGhostTable) > table,\n.handsontable :where(table.htCore, .htGhostTable > table) > thead,\n.handsontable :where(table.htCore, .htGhostTable > table) > tbody,\n.handsontable input:not(:where(table.htCore > tbody > tr > td:not(.htCustomMenuRenderer) *:not(.htCheckboxRendererInput), .htGhostTable > table > tbody > tr > td:not(.htCustomMenuRenderer) *:not(.htCheckboxRendererInput))),\n.handsontable textarea:not(:where(table.htCore > tbody > tr > td:not(.htCustomMenuRenderer) *:not(.htCheckboxRendererInput), .htGhostTable > table > tbody > tr > td:not(.htCustomMenuRenderer) *:not(.htCheckboxRendererInput))),\n.handsontable div:not(:where(table.htCore > tbody > tr > td:not(.htCustomMenuRenderer) *:not(.htCheckboxRendererInput), .htGhostTable > table > tbody > tr > td:not(.htCustomMenuRenderer) *:not(.htCheckboxRendererInput))) {\n box-sizing: content-box;\n}\n.handsontable input:not(:where(table.htCore > tbody > tr > td:not(.htCustomMenuRenderer) *:not(.htCheckboxRendererInput), .htGhostTable > table > tbody > tr > td:not(.htCustomMenuRenderer) *:not(.htCheckboxRendererInput))),\n.handsontable textarea:not(:where(table.htCore > tbody > tr > td:not(.htCustomMenuRenderer) *:not(.htCheckboxRendererInput), .htGhostTable > table > tbody > tr > td:not(.htCustomMenuRenderer) *:not(.htCheckboxRendererInput))) {\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 :where(table.htCore, .htGhostTable > table) > colgroup > col {\n width: 64px;\n}\n.handsontable :where(table.htCore, .htGhostTable > table) > colgroup > col.rowHeader {\n width: 64px;\n}\n.handsontable :where(table.htCore, .htGhostTable > table) > colgroup > 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 :where(table.htCore > thead, table.htCore > tbody, .htGhostTable > table > thead, .htGhostTable > table > tbody) > tr.hidden {\n display: none;\n}\n.handsontable :where(table.htCore > thead, table.htCore > tbody, .htGhostTable > table > thead, .htGhostTable > table > tbody) > tr.hidden > td,\n.handsontable :where(table.htCore > thead, table.htCore > tbody, .htGhostTable > table > thead, .htGhostTable > table > tbody) > tr.hidden > th {\n display: none;\n}\n.handsontable a:not(:where(table.htCore > tbody > tr > td:not(.htCustomMenuRenderer) *:not(.htCheckboxRendererInput), .htGhostTable > table > tbody > tr > td:not(.htCustomMenuRenderer) *:not(.htCheckboxRendererInput))) {\n color: var(--ht-link-color);\n}\n.handsontable a:not(:where(table.htCore > tbody > tr > td:not(.htCustomMenuRenderer) *:not(.htCheckboxRendererInput), .htGhostTable > table > tbody > tr > td:not(.htCustomMenuRenderer) *:not(.htCheckboxRendererInput))):hover {\n color: var(--ht-link-hover-color);\n}\n.handsontable .ht_clone_top :where(table.htCore > thead > tr) > 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 :where(table.htCore > thead > tr) > th:nth-child(2) {\n border-inline-start-width: 0;\n border-inline-end-width: 1px;\n}\n.handsontable.htRowHeaders :where(table.htCore) > thead > tr > th:nth-child(2) {\n border-inline-start-width: 1px;\n}\n.handsontable .ht_master:not(.innerBorderInlineStart):not(.emptyColumns) :where(table.htCore) > tbody > tr > th,\n.handsontable .ht_master:not(.innerBorderInlineStart):not(.emptyColumns) :where(table.htCore) > thead > tr > th:first-child,\n.handsontable .ht_master:not(.innerBorderInlineStart):not(.emptyColumns) ~ .handsontable:not(.htGhostTable) :where(table.htCore) > tbody > tr > th,\n.handsontable .ht_master:not(.innerBorderInlineStart):not(.emptyColumns) ~ .handsontable:not(.ht_clone_top):not(.htGhostTable) :where(table.htCore) > 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) :where(table.htCore) > thead > tr:last-child > th, .handsontable .ht_master:not(.innerBorderTop):not(.innerBorderBottom) ~ .handsontable :where(table.htCore) > thead > tr:last-child > th,\n.handsontable .ht_master:not(.innerBorderTop):not(.innerBorderBottom) :where(table.htCore) > thead > tr.lastChild > th, .handsontable .ht_master:not(.innerBorderTop):not(.innerBorderBottom) ~ .handsontable :where(table.htCore) > thead > tr.lastChild > th {\n border-bottom-width: 0;\n}\n.handsontable.htAutoRowSize .ht_master.innerBorderTop :where(table.htCore) > tbody > tr:first-child > th,\n.handsontable.htAutoRowSize .ht_master.innerBorderTop :where(table.htCore) > tbody > tr:first-child > td {\n border-top-width: 0;\n}\n.handsontable.htAutoRowSize .ht_master.innerBorderTop ~ .ht_clone_inline_start :where(table.htCore) > tbody > tr:first-child > th,\n.handsontable.htAutoRowSize .ht_master.innerBorderTop ~ .ht_clone_inline_start :where(table.htCore) > 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 :where(table.htCore > tbody > tr, .htGhostTable > table > tbody > tr) > td[dir=ltr] {\n border-inline-end-width: 0;\n border-inline-start-width: 1px;\n}\n[dir=rtl].handsontable :where(table.htCore, .htGhostTable > table) > 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 {\n border-radius: var(--ht-border-radius);\n}\n.handsontable.ht-wrapper:not(.htColumnHeaders) .ht_master .htCore > tbody > tr:first-child > td:first-child {\n border-start-start-radius: var(--ht-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-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-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-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-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-border-radius);\n}\n.handsontable.ht-wrapper .ht_master .wtHolder {\n border-radius: var(--ht-border-radius);\n}\n.handsontable.ht-wrapper .ht_master .htCore {\n border-radius: var(--ht-border-radius);\n}\n.handsontable.ht-wrapper .ht_master .htCore > thead > tr:first-child > th:first-child {\n border-start-start-radius: var(--ht-border-radius);\n}\n.handsontable.ht-wrapper .ht_master .htCore > thead > tr:first-child > th:not(.hiddenHeader).htLastVisibleHeader {\n border-start-end-radius: var(--ht-border-radius);\n}\n.handsontable.ht-wrapper .ht_master .htCore > thead > tr:last-child > th:first-child {\n border-end-start-radius: var(--ht-border-radius);\n}\n.handsontable.ht-wrapper .ht_master .htCore > thead > tr:last-child > th:not(.hiddenHeader).htLastVisibleHeader {\n border-end-end-radius: var(--ht-border-radius);\n}\n.handsontable.ht-wrapper .ht_master .htCore > tbody > tr:last-child > td:first-child {\n border-end-start-radius: var(--ht-border-radius);\n}\n.handsontable.ht-wrapper .ht_master .htCore > tbody > tr:last-child > td:last-child {\n border-end-end-radius: var(--ht-border-radius);\n}\n.handsontable.ht-wrapper .ht_clone_top_inline_start_corner .htCore {\n border-start-start-radius: var(--ht-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-border-radius);\n}\n.handsontable.ht-wrapper .ht_clone_top .htCore {\n border-start-start-radius: var(--ht-border-radius);\n border-start-end-radius: var(--ht-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-border-radius);\n}\n.handsontable.ht-wrapper .ht_clone_top .htCore > thead > tr:first-child > th:not(.hiddenHeader).htLastVisibleHeader {\n border-start-end-radius: var(--ht-border-radius);\n}\n.handsontable.ht-wrapper .ht_clone_inline_start .htCore {\n border-start-start-radius: var(--ht-border-radius);\n border-end-start-radius: var(--ht-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-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-border-radius);\n}\n.handsontable.ht-wrapper .ht_clone_bottom_inline_start_corner .htCore {\n border-end-start-radius: var(--ht-border-radius);\n}\n.handsontable.ht-wrapper .ht_clone_bottom_inline_start_corner .htCore > :where(thead, tbody) > tr:last-child > th:first-child,\n.handsontable.ht-wrapper .ht_clone_bottom_inline_start_corner .htCore > :where(thead, tbody) > tr:last-child > td:first-child {\n border-end-start-radius: var(--ht-border-radius);\n}\n.handsontable.ht-wrapper .ht_clone_bottom .htCore {\n border-end-start-radius: var(--ht-border-radius);\n border-end-end-radius: var(--ht-border-radius);\n}\n.handsontable.ht-wrapper .ht_clone_bottom .htCore > :where(thead, tbody) > tr:last-child > th:first-child,\n.handsontable.ht-wrapper .ht_clone_bottom .htCore > :where(thead, tbody) > tr:last-child > td:first-child {\n border-end-start-radius: var(--ht-border-radius);\n}\n.handsontable.ht-wrapper .ht_clone_bottom .htCore > :where(thead, tbody) > tr:last-child > th:last-child,\n.handsontable.ht-wrapper .ht_clone_bottom .htCore > :where(thead, tbody) > tr:last-child > td:last-child {\n border-end-end-radius: var(--ht-border-radius);\n}\n.handsontable.ht-wrapper.htHasScrollX:not(.htHorizontallyScrollableByWindow) .htCore {\n border-end-start-radius: 0;\n border-end-end-radius: 0;\n}\n.handsontable.ht-wrapper.htHasScrollX:not(.htHorizontallyScrollableByWindow) .htCore > thead > tr:last-child > th:first-child,\n.handsontable.ht-wrapper.htHasScrollX:not(.htHorizontallyScrollableByWindow) .htCore > tbody > tr:last-child > td:first-child,\n.handsontable.ht-wrapper.htHasScrollX:not(.htHorizontallyScrollableByWindow) .htCore > tbody > tr:last-child > th:first-child {\n border-end-start-radius: 0;\n}\n.handsontable.ht-wrapper.htHasScrollX:not(.htHorizontallyScrollableByWindow) .htCore > thead > tr:last-child > th:not(.hiddenHeader).htLastVisibleHeader,\n.handsontable.ht-wrapper.htHasScrollX:not(.htHorizontallyScrollableByWindow) .htCore > tbody > tr:last-child > td:last-child,\n.handsontable.ht-wrapper.htHasScrollX:not(.htHorizontallyScrollableByWindow) .htCore > tbody > tr:last-child > th:last-child {\n border-end-end-radius: 0;\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:not(.hiddenHeader).htLastVisibleHeader,\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;\n}\n.handsontable.ht-wrapper.htHasScrollY:not(.htVerticallyScrollableByWindow) .htCore > thead > tr:last-child > th:not(.hiddenHeader).htLastVisibleHeader,\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;\n}\n\n.ht-root-wrapper {\n border-radius: var(--ht-border-radius);\n}\n.ht-root-wrapper.ht-slot-bottom-filled .ht-wrapper,\n.ht-root-wrapper.ht-slot-bottom-filled .ht_master .wtHolder {\n border-end-start-radius: 0;\n border-end-end-radius: 0;\n}\n.ht-root-wrapper.ht-slot-bottom-filled .htCore {\n border-end-start-radius: 0 !important;\n border-end-end-radius: 0 !important;\n}\n.ht-root-wrapper.ht-slot-bottom-filled .htCore > thead > tr:last-child > th:first-child,\n.ht-root-wrapper.ht-slot-bottom-filled .htCore > tbody > tr:last-child > td:first-child,\n.ht-root-wrapper.ht-slot-bottom-filled .htCore > tbody > tr:last-child > th:first-child {\n border-end-start-radius: 0 !important;\n}\n.ht-root-wrapper.ht-slot-bottom-filled .htCore > thead > tr:last-child > th:not(.hiddenHeader).htLastVisibleHeader,\n.ht-root-wrapper.ht-slot-bottom-filled .htCore > tbody > tr:last-child > td:last-child,\n.ht-root-wrapper.ht-slot-bottom-filled .htCore > tbody > tr:last-child > th:last-child {\n border-end-end-radius: 0 !important;\n}\n.ht-root-wrapper.ht-slot-top-filled .ht-wrapper,\n.ht-root-wrapper.ht-slot-top-filled .ht_master .wtHolder {\n border-start-start-radius: 0;\n border-start-end-radius: 0;\n}\n.ht-root-wrapper.ht-slot-top-filled .htCore {\n border-start-start-radius: 0 !important;\n border-start-end-radius: 0 !important;\n}\n.ht-root-wrapper.ht-slot-top-filled .htCore > thead > tr:first-child > th:first-child,\n.ht-root-wrapper.ht-slot-top-filled .htCore > tbody > tr:first-child > td:first-child,\n.ht-root-wrapper.ht-slot-top-filled .htCore > tbody > tr:first-child > th:first-child {\n border-start-start-radius: 0 !important;\n}\n.ht-root-wrapper.ht-slot-top-filled .htCore > thead > tr:first-child > th:not(.hiddenHeader).htLastVisibleHeader,\n.ht-root-wrapper.ht-slot-top-filled .htCore > tbody > tr:first-child > td:last-child,\n.ht-root-wrapper.ht-slot-top-filled .htCore > tbody > tr:first-child > th:last-child {\n border-start-end-radius: 0 !important;\n}\n.ht-root-wrapper .ht-slot-element {\n border-radius: var(--ht-border-radius);\n}\n.ht-root-wrapper .ht-slot-bottom > .ht-slot-element:not(:last-of-type) {\n border-radius: 0;\n}\n.ht-root-wrapper .ht-slot-bottom > .ht-slot-element:last-of-type {\n border-start-start-radius: 0;\n border-start-end-radius: 0;\n}\n.ht-root-wrapper .ht-slot-top > .ht-slot-element:not(:first-of-type) {\n border-radius: 0;\n}\n.ht-root-wrapper .ht-slot-top > .ht-slot-element:first-of-type {\n border-end-start-radius: 0;\n border-end-end-radius: 0;\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 .wtSelectionHandle {\n position: absolute;\n box-sizing: border-box;\n z-index: 115;\n background: var(--ht-cell-selection-handle-background-color);\n border: var(--ht-cell-selection-handle-border-width) solid var(--ht-cell-selection-handle-border-color);\n border-radius: var(--ht-cell-selection-handle-border-radius);\n animation: ht-selection-handle-fade-in var(--ht-table-transition) ease-in-out backwards;\n}\n.handsontable .wtSelectionHandle:hover {\n background: color-mix(in srgb, var(--ht-cell-selection-handle-border-color) 30%, var(--ht-cell-selection-handle-background-color));\n}\n@media (prefers-reduced-motion: reduce) {\n .handsontable .wtSelectionHandle {\n animation: none;\n }\n}\n.handsontable .wtSelectionHandle--top,\n.handsontable .wtSelectionHandle--bottom {\n width: var(--ht-cell-selection-handle-length);\n height: var(--ht-cell-selection-handle-size);\n cursor: ns-resize;\n}\n.handsontable .wtSelectionHandle--start,\n.handsontable .wtSelectionHandle--end {\n width: var(--ht-cell-selection-handle-size);\n height: var(--ht-cell-selection-handle-length);\n cursor: ew-resize;\n}\n.handsontable.ht__resizing-selection--top .wtSelectionHandle:not(.wtSelectionHandle--top), .handsontable.ht__resizing-selection--bottom .wtSelectionHandle:not(.wtSelectionHandle--bottom), .handsontable.ht__resizing-selection--start .wtSelectionHandle:not(.wtSelectionHandle--start), .handsontable.ht__resizing-selection--end .wtSelectionHandle:not(.wtSelectionHandle--end) {\n display: none !important;\n}\n.handsontable.ht__resizing-selection--top,\n.handsontable.ht__resizing-selection--top *, .handsontable.ht__resizing-selection--bottom,\n.handsontable.ht__resizing-selection--bottom * {\n cursor: ns-resize !important;\n}\n.handsontable.ht__resizing-selection--start,\n.handsontable.ht__resizing-selection--start *, .handsontable.ht__resizing-selection--end,\n.handsontable.ht__resizing-selection--end * {\n cursor: ew-resize !important;\n}\n.handsontable.ht__resizing-selection--top .wtSelectionHandle--top, .handsontable.ht__resizing-selection--bottom .wtSelectionHandle--bottom, .handsontable.ht__resizing-selection--start .wtSelectionHandle--start, .handsontable.ht__resizing-selection--end .wtSelectionHandle--end {\n background: color-mix(in srgb, var(--ht-cell-selection-handle-border-color) 30%, var(--ht-cell-selection-handle-background-color));\n}\n.handsontable .wtMoveZone {\n cursor: grab;\n}\n.handsontable .wtMoveZone:active {\n cursor: grabbing;\n}\n.handsontable.ht__moving {\n cursor: grabbing;\n}\n.handsontable.ht__moving * {\n cursor: grabbing !important;\n}\n.handsontable.ht__moving .wtBorder.area,\n.handsontable.ht__moving .wtBorder.current {\n display: none !important;\n}\n.handsontable.ht__moving .wtSelectionHandle,\n.handsontable.ht__moving .wtMoveZone {\n visibility: hidden !important;\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: 110;\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@keyframes ht-selection-handle-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\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 min-width: 300px;\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.ht-license-badge-wrapper {\n position: absolute;\n inset: 0;\n overflow: hidden;\n z-index: 1050;\n pointer-events: none;\n}\n\n.ht-license-badge-on .ht-license-badge-corner thead tr:first-child th:first-child::after {\n content: \"\";\n position: absolute;\n inset: 0;\n margin: auto;\n inset-inline-start: clamp(0px, 100% - var(--ht-license-badge-size, 16px), 6px);\n inline-size: min(var(--ht-license-badge-size, 16px), 100%);\n block-size: min(var(--ht-license-badge-size, 16px), 100%);\n background-color: var(--ht-license-badge-color, var(--ht-disabled-color, #a3a3a3));\n pointer-events: none;\n -webkit-mask-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg width=%2714.8626%27 height=%2716%27 viewBox=%270 0 14.8626 16%27 fill=%27none%27 xmlns=%27http://www.w3.org/2000/svg%27%3E%3Cpath d=%27M0 0H3.28665V4.35577H7.03576V0H10.306V11.407H7.03576V6.90834H3.28665V11.407H0V0Z%27 fill=%27%23000%27/%3E%3Cpath d=%27M11.0991 12.236H14.8633V16.0001H11.0991V12.236Z%27 fill=%27%23000%27/%3E%3C/svg%3E\");\n mask-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg width=%2714.8626%27 height=%2716%27 viewBox=%270 0 14.8626 16%27 fill=%27none%27 xmlns=%27http://www.w3.org/2000/svg%27%3E%3Cpath d=%27M0 0H3.28665V4.35577H7.03576V0H10.306V11.407H7.03576V6.90834H3.28665V11.407H0V0Z%27 fill=%27%23000%27/%3E%3Cpath d=%27M11.0991 12.236H14.8633V16.0001H11.0991V12.236Z%27 fill=%27%23000%27/%3E%3C/svg%3E\");\n -webkit-mask-size: contain;\n mask-size: contain;\n -webkit-mask-repeat: no-repeat;\n mask-repeat: no-repeat;\n -webkit-mask-position: center;\n mask-position: center;\n}\n\n.ht-license-badge-on .ht-license-badge-corner thead tr:first-child th:first-child:hover::after {\n background-color: var(--ht-license-badge-hover-color, var(--ht-read-only-color, #68696c));\n}\n\n[dir=rtl] .ht-license-badge-on .ht-license-badge-corner thead tr:first-child th:first-child::after {\n inset-inline-start: 0;\n inset-inline-end: clamp(0px, 100% - var(--ht-license-badge-size, 16px), 6px);\n}\n\n.ht-license-badge {\n position: absolute;\n inset-block-start: 0;\n inset-inline-start: 0;\n inline-size: 1px;\n block-size: 1px;\n margin: 0;\n padding: 0;\n border: 0;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n background: transparent;\n color: transparent;\n}\n\n.ht-license-popover {\n font-family: var(--ht-font-family), -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n position: absolute;\n inset-block-start: 0;\n inset-inline-start: var(--ht-license-badge-area-width, 50px);\n inset-inline-end: 0;\n z-index: 1051;\n display: none;\n flex-direction: column;\n inline-size: auto;\n max-inline-size: min(var(--ht-license-popover-width, 320px), 100vw - 32px);\n max-block-size: 100%;\n overflow: visible;\n padding: 16px;\n border-radius: var(--ht-border-radius, 8px);\n border-start-start-radius: 0;\n background-color: var(--ht-license-popover-background-color, #16171a);\n color: var(--ht-license-popover-foreground-color, #fff);\n font-size: var(--ht-font-size-small, 12px);\n line-height: var(--ht-line-height-small, 18px);\n text-align: start;\n pointer-events: auto;\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}\n.ht-license-popover::before {\n content: \"\";\n position: absolute;\n inset-block-start: 0;\n inset-inline-end: 100%;\n inline-size: 0;\n block-size: 0;\n border-block-start: var(--ht-license-popover-tail-size, 5px) solid var(--ht-license-popover-background-color, #16171a);\n border-inline-start: var(--ht-license-popover-tail-size, 5px) solid transparent;\n}\n\n.ht-license-popover__content {\n min-block-size: 0;\n overflow-y: auto;\n}\n\n.ht-license-badge-wrapper.is-corner-hover:not(.is-dismissed) .ht-license-popover,\n.ht-license-badge-wrapper:not(.is-dismissed):hover .ht-license-popover,\n.ht-license-popover.is-open {\n display: flex;\n}\n\n.ht-license-badge-wrapper.is-cornerless .ht-license-badge {\n display: none;\n}\n.ht-license-badge-wrapper.is-cornerless .ht-license-popover {\n inset-inline-start: 0;\n border-start-start-radius: var(--ht-border-radius, 8px);\n}\n.ht-license-badge-wrapper.is-cornerless .ht-license-popover::before {\n display: none;\n}\n\n.ht-license-popover__title {\n margin-block-end: 8px;\n padding-inline-end: 16px;\n font-weight: bold;\n}\n\n.ht-license-popover__body {\n margin: 0 0 12px;\n color: var(--ht-license-popover-body-color, #d5d6d8);\n}\n\n.ht-license-popover__link {\n color: var(--ht-license-popover-link-color, #3ba0ff);\n text-decoration: none;\n}\n.ht-license-popover__link:hover {\n text-decoration: underline;\n}\n\n.ht-license-popover__close {\n position: absolute;\n inset-block-start: 12px;\n inset-inline-end: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n inline-size: 20px;\n block-size: 20px;\n padding: 0;\n border: 0;\n background: transparent;\n color: inherit;\n cursor: pointer;\n line-height: 1;\n}\n.ht-license-popover__close::before {\n content: \"✕\";\n font-size: 14px;\n}\n\n.ht-dialog.ht-license-lock {\n z-index: 1070;\n}\n.ht-dialog.ht-license-lock::before {\n content: \"\";\n position: absolute;\n inset-block-start: 0;\n inset-inline: 0;\n block-size: calc(var(--ht-line-height, 20px) + var(--ht-density-cell-vertical, 4px) * 2);\n background-color: var(--ht-header-background-color);\n border-block-end: 1px solid var(--ht-cell-horizontal-border-color, var(--ht-border-color));\n}\n.ht-dialog.ht-license-lock::after {\n content: \"\";\n position: absolute;\n inset-block-start: calc(var(--ht-density-cell-vertical, 4px) + (var(--ht-line-height, 20px) - var(--ht-license-badge-size, 16px)) / 2);\n inset-inline-start: var(--ht-cell-horizontal-padding, 8px);\n inline-size: var(--ht-license-badge-size, 16px);\n block-size: var(--ht-license-badge-size, 16px);\n background-color: var(--ht-license-badge-color, var(--ht-disabled-color, #a3a3a3));\n -webkit-mask-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg width=%2714.8626%27 height=%2716%27 viewBox=%270 0 14.8626 16%27 fill=%27none%27 xmlns=%27http://www.w3.org/2000/svg%27%3E%3Cpath d=%27M0 0H3.28665V4.35577H7.03576V0H10.306V11.407H7.03576V6.90834H3.28665V11.407H0V0Z%27 fill=%27%23000%27/%3E%3Cpath d=%27M11.0991 12.236H14.8633V16.0001H11.0991V12.236Z%27 fill=%27%23000%27/%3E%3C/svg%3E\");\n mask-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg width=%2714.8626%27 height=%2716%27 viewBox=%270 0 14.8626 16%27 fill=%27none%27 xmlns=%27http://www.w3.org/2000/svg%27%3E%3Cpath d=%27M0 0H3.28665V4.35577H7.03576V0H10.306V11.407H7.03576V6.90834H3.28665V11.407H0V0Z%27 fill=%27%23000%27/%3E%3Cpath d=%27M11.0991 12.236H14.8633V16.0001H11.0991V12.236Z%27 fill=%27%23000%27/%3E%3C/svg%3E\");\n -webkit-mask-size: contain;\n mask-size: contain;\n -webkit-mask-repeat: no-repeat;\n mask-repeat: no-repeat;\n}\n.ht-dialog.ht-license-lock .ht-dialog__content-wrapper {\n padding-block-start: calc(var(--ht-line-height, 20px) + var(--ht-density-cell-vertical, 4px) * 2);\n}\n.ht-dialog.ht-license-lock .ht-dialog__content-wrapper-inner,\n.ht-dialog.ht-license-lock .ht-dialog__content {\n min-inline-size: 0;\n}\n.ht-dialog.ht-license-lock a.ht-button {\n display: inline-block;\n text-decoration: none;\n}\n.ht-dialog.ht-license-lock .ht-dialog__title,\n.ht-dialog.ht-license-lock .ht-dialog__description {\n word-break: break-word;\n overflow-wrap: break-word;\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.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 :where(table.htCore) > 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 box-shadow: none !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 --ht-cell-vertical-padding: 4px;\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: var(--ht-cell-vertical-padding) 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 td a.ht-hyperlink {\n color: var(--ht-link-color);\n text-decoration: underline;\n}\n.handsontable td a.ht-hyperlink:hover {\n color: var(--ht-link-hover-color);\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 .colHeader.columnSorting.sortAction {\n box-sizing: border-box;\n flex-grow: 0;\n margin-inline: auto;\n min-width: min(var(--ht-icon-size, 16px) + 8px, 100%);\n max-width: 100%;\n position: static;\n}\n.handsontable .colHeader.columnSorting.sortAction::before, .handsontable .colHeader.columnSorting.sortAction::after {\n margin-inline: var(--ht-sort-indicator-offset);\n margin-inline-end: var(--ht-sort-indicator-offset-end);\n}\n.handsontable .htLeft .colHeader.columnSorting.sortAction {\n margin-left: 0;\n margin-right: auto;\n}\n.handsontable .htRight .colHeader.columnSorting.sortAction {\n margin-left: auto;\n margin-right: 0;\n}\n.handsontable th .relative {\n --ht-sort-indicator-offset: var(--ht-cell-horizontal-padding);\n --ht-sort-indicator-offset-end: var(--ht-cell-horizontal-padding);\n --ht-sort-indicator-reserve: var(--ht-cell-horizontal-padding);\n --ht-sort-indicator-reserve-end: var(--ht-sort-indicator-reserve);\n --ht-header-button-slot: calc(var(--ht-icon-size, 16px) + 2px);\n}\n.handsontable .relative.has-header-button {\n --ht-sort-indicator-offset-end: calc(\n var(--ht-cell-horizontal-padding) + var(--ht-icon-size, 16px) +\n (var(--ht-icon-button-hit-area-size, 24px) - var(--ht-icon-size, 16px)) * 0.5\n );\n --ht-sort-indicator-reserve-end: var(--ht-cell-horizontal-padding);\n}\n.handsontable .relative.has-sort-indicator.has-header-button {\n column-gap: calc(2px + var(--ht-header-button-slot));\n}\n.handsontable .relative.has-sort-indicator {\n --ht-sort-indicator-reserve: calc(var(--ht-cell-horizontal-padding) + var(--ht-icon-size, 16px) + 2px);\n padding-inline-end: var(--ht-sort-indicator-reserve-end);\n}\n.handsontable .relative.htRight.has-sort-indicator,\n.handsontable .htRight .relative.has-sort-indicator {\n padding-inline-start: var(--ht-sort-indicator-reserve);\n padding-inline-end: var(--ht-cell-horizontal-padding);\n --ht-header-button-slot: 0px;\n}\n.handsontable .columnSorting:not(.indicatorDisabled) {\n position: relative;\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::before {\n left: 2px;\n right: auto;\n text-align: left;\n}\n\n[dir=rtl] .handsontable .relative.htRight.has-sort-indicator,\n[dir=rtl] .handsontable .htRight .relative.has-sort-indicator {\n padding-inline-start: var(--ht-cell-horizontal-padding);\n padding-inline-end: var(--ht-sort-indicator-reserve-end);\n --ht-header-button-slot: calc(var(--ht-icon-size, 16px) + 2px);\n}\n[dir=rtl] .handsontable .relative.htLeft.has-sort-indicator,\n[dir=rtl] .handsontable .htLeft .relative.has-sort-indicator {\n padding-inline-start: var(--ht-sort-indicator-reserve);\n padding-inline-end: var(--ht-cell-horizontal-padding);\n --ht-header-button-slot: 0px;\n}\n[dir=rtl] .handsontable .columnSorting.sortAction::before {\n left: 2px;\n right: auto;\n text-align: left;\n}\n[dir=rtl] .handsontable .htLeft .columnSorting.sortAction::before {\n left: auto;\n right: 2px;\n text-align: right;\n}\n\n.htGhostTable .htCore .relative {\n --ht-sort-indicator-offset: 0px;\n --ht-sort-indicator-offset-end: 0px;\n --ht-header-button-slot: 0px;\n}\n\n.htGhostTable .htCore .relative.has-header-button {\n --ht-sort-indicator-reserve: var(--ht-cell-horizontal-padding);\n --ht-sort-indicator-reserve-end: var(--ht-cell-horizontal-padding);\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 :where(table.htCore > thead > tr) > th:nth-child(2), .handsontable .htRowHeaders .ht_master.innerBorderInlineStart ~ .ht_clone_inline_start :where(table.htCore > tbody > tr) > 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__active_highlight, .handsontable.ht__manualColumnMove.after-selection--columns thead th.ht__highlight, .handsontable.ht__manualColumnMove.after-selection--columns thead th.ht__active_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-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-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-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-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-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 width: 100%;\n color: var(--ht-pagination-bar-foreground-color);\n background: var(--ht-pagination-bar-background-color);\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:not(.ht-slot-element) {\n border: 1px solid var(--ht-border-color);\n border-radius: var(--ht-border-radius);\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 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\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-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-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-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 {\n border-end-start-radius: 0;\n border-end-end-radius: 0;\n border-bottom-width: 0;\n}\n\n.ht-root-wrapper.ht-slot-bottom-filled .ht-empty-data-state {\n border-end-start-radius: 0;\n border-end-end-radius: 0;\n}\n\n@keyframes ht-empty-data-state-spin {\n to {\n transform: rotate(360deg);\n }\n}\n");
128931
+ /* 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 67,200.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: 18.1.2-rc2\n * Release date: 07/10/2026 (built at 07/10/2026 09:25:08)\n */\n@charset \"UTF-8\";\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.ht-root-wrapper.ht-shadow-dom {\n isolation: isolate;\n}\n.ht-root-wrapper.ht-slot-bottom-filled .ht-wrapper:not(.htHorizontallyScrollableByWindow) .ht_master .wtHolder, .ht-root-wrapper.ht-slot-bottom-filled .ht-wrapper:not(.htVerticallyScrollableByWindow) .ht_master .wtHolder, .ht-root-wrapper.ht-slot-top-filled .ht-wrapper:not(.htHorizontallyScrollableByWindow) .ht_master .wtHolder, .ht-root-wrapper.ht-slot-top-filled .ht-wrapper:not(.htVerticallyScrollableByWindow) .ht_master .wtHolder {\n background-color: var(--ht-background-color);\n box-shadow: inset 0 0 0 1px var(--ht-border-color);\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 position: relative;\n flex: 1 1 auto;\n min-height: 0;\n}\n\n.ht-grid-content {\n height: 100%;\n}\n\n.ht-slot-top, .ht-slot-bottom {\n flex: 0 0 auto;\n overflow-x: auto;\n}\n\n.ht-slot-element {\n width: 100%;\n box-sizing: border-box;\n border: 1px solid var(--ht-border-color);\n}\n\n.ht-slot-top > .ht-slot-element:not(:first-of-type) {\n border-top-width: 0;\n}\n.ht-slot-top > .ht-slot-element:last-of-type {\n border-bottom-width: 0;\n}\n\n.ht-slot-bottom > .ht-slot-element:not(:last-of-type) {\n border-bottom-width: 0;\n}\n.ht-slot-bottom > .ht-slot-element:first-of-type {\n border-top-width: 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 height: 100%;\n width: 100%;\n}\n.handsontable.ht-wrapper:not(.htFirstDatasetColumnNotRendered) :where(table.htCore > tbody > tr, .htGhostTable > table > tbody > tr) > td:first-of-type {\n border-inline-start-width: 1px;\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:not(.htHorizontallyScrollableByWindow).htHasScrollX .ht_master .wtHolder, .handsontable:not(.htHorizontallyScrollableByWindow).htHasScrollY .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 box-shadow: inset 0 0 0 1px var(--ht-border-color);\n}\n.handsontable :where(table.htCore > tbody, .htGhostTable > table > tbody) > tr.ht__row_even > th {\n background-color: var(--ht-row-header-even-background-color);\n}\n.handsontable :where(table.htCore > tbody, .htGhostTable > table > tbody) > tr.ht__row_even > td {\n background-color: var(--ht-row-cell-even-background-color);\n}\n.handsontable :where(table.htCore > tbody, .htGhostTable > table > tbody) > tr.ht__row_odd > th {\n background-color: var(--ht-row-header-odd-background-color);\n}\n.handsontable :where(table.htCore > tbody, .htGhostTable > table > tbody) > tr.ht__row_odd > td {\n background-color: var(--ht-row-cell-odd-background-color);\n}\n.handsontable :where(table.htCore > thead > tr, .htGhostTable > table > thead > tr, table.htCore > tbody > tr, .htGhostTable > table > tbody > tr) > th,\n.handsontable :where(table.htCore > tbody > tr, .htGhostTable > table > tbody > tr) > 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 :where(table.htCore > thead > tr, .htGhostTable > table > thead > tr, table.htCore > tbody > tr, .htGhostTable > table > tbody > tr) > th.invisibleSelection,\n.handsontable :where(table.htCore > tbody > tr, .htGhostTable > table > tbody > tr) > td.invisibleSelection {\n outline: none;\n}\n.handsontable :where(table.htCore > thead > tr, .htGhostTable > table > thead > tr, table.htCore > tbody > tr, .htGhostTable > table > tbody > tr) > th.invisibleSelection::selection,\n.handsontable :where(table.htCore > tbody > tr, .htGhostTable > table > tbody > tr) > td.invisibleSelection::selection {\n background: transparent;\n}\n.handsontable :where(table.htCore > thead > tr, .htGhostTable > table > thead > tr, table.htCore > tbody > tr, .htGhostTable > table > tbody > tr) > 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 :where(table.htCore > thead > tr, .htGhostTable > table > thead > tr, table.htCore > tbody > tr, .htGhostTable > table > tbody > tr) > 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 :where(table.htCore > thead > tr, .htGhostTable > table > thead > tr, table.htCore > tbody > tr, .htGhostTable > table > tbody > tr) > th:last-child.ht__active_highlight {\n border-inline-end-color: var(--ht-header-active-border-color);\n}\n.handsontable :where(table.htCore > thead > tr, .htGhostTable > table > thead > tr, table.htCore > tbody > tr, .htGhostTable > table > tbody > tr) > th:first-child {\n border-inline-start-color: var(--ht-border-color);\n}\n.handsontable :where(table.htCore > thead > tr, .htGhostTable > table > thead > tr, table.htCore > tbody > tr, .htGhostTable > table > tbody > tr) > th:first-child.ht__active_highlight {\n border-inline-start-color: var(--ht-header-active-border-color);\n}\n.handsontable :where(table.htCore > thead > tr, .htGhostTable > table > thead > tr, table.htCore > tbody > tr, .htGhostTable > table > tbody > tr) > th:first-child, .handsontable :where(table.htCore > thead > tr, .htGhostTable > table > thead > tr, table.htCore > tbody > tr, .htGhostTable > table > tbody > tr) > th:nth-child(2) {\n border-inline-start-width: 1px;\n}\n.handsontable :where(table.htCore > thead > tr, .htGhostTable > table > thead > tr, table.htCore > tbody > tr, .htGhostTable > table > tbody > tr) > th.current {\n box-shadow: inset 0 0 0 1px var(--ht-cell-selection-border-color);\n}\n.handsontable :where(table.htCore > thead > tr, .htGhostTable > table > thead > tr, table.htCore > tbody > tr, .htGhostTable > table > tbody > tr) > th.active {\n color: var(--ht-header-active-foreground-color);\n background-color: var(--ht-header-active-background-color);\n}\n.handsontable :where(table.htCore > thead > tr, .htGhostTable > table > thead > tr, table.htCore > tbody > tr, .htGhostTable > table > tbody > tr) > th.ht__highlight {\n color: var(--ht-header-highlighted-foreground-color);\n background-color: var(--ht-header-highlighted-background-color);\n}\n.handsontable :where(table.htCore > thead > tr, .htGhostTable > table > thead > tr, table.htCore > tbody > tr, .htGhostTable > table > tbody > tr) > 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 :where(table.htCore > thead > tr, .htGhostTable > table > thead > tr, table.htCore > tbody > tr, .htGhostTable > table > tbody > tr) > th.ht__active_highlight-prev {\n border-inline-end-color: var(--ht-header-active-border-color);\n}\n.handsontable :where(table.htCore > thead > tr, .htGhostTable > table > thead > tr, table.htCore > tbody > tr, .htGhostTable > table > tbody > tr) > th.ht__active_highlight-seam {\n border-inline-end-color: var(--ht-header-active-border-color);\n}\n.handsontable :where(table.htCore, .htGhostTable > table) > tbody > tr.ht__row_odd > th.ht__highlight, .handsontable :where(table.htCore, .htGhostTable > table) > 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 :where(table.htCore, .htGhostTable > table) > tbody > tr.ht__row_odd > th.ht__active_highlight, .handsontable :where(table.htCore, .htGhostTable > table) > 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 :where(table.htCore, .htGhostTable > table) > tbody > tr:first-of-type > th:first-child:empty::after,\n.handsontable :where(table.htCore, .htGhostTable > table) > 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 :where(table.htCore, .htGhostTable > table) > 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 :where(table.htCore, .htGhostTable > table) > tbody > tr > th .relative {\n padding: var(--ht-cell-vertical-padding) var(--ht-cell-horizontal-padding);\n min-height: 100%;\n}\n.handsontable :where(table.htCore, .htGhostTable > table) > tbody > tr > td:first-child {\n border-inline-start-color: var(--ht-border-color);\n}\n.handsontable :where(table.htCore, .htGhostTable > table) > tbody > tr > td:last-child {\n border-inline-end-color: var(--ht-border-color);\n}\n.handsontable :where(table.htCore, .htGhostTable > table) > tbody > tr > th.ht__active_highlight-prev-row {\n border-bottom-color: var(--ht-header-active-border-color);\n}\n.handsontable :where(table.htCore, .htGhostTable > table) > thead > tr > th {\n padding: 0;\n}\n.handsontable :where(table.htCore, .htGhostTable > table) > thead > tr > th.ht__active_highlight {\n box-shadow: -1px 0 0 0 var(--ht-header-active-border-color);\n}\n.handsontable :where(table.htCore, .htGhostTable > table) > 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 :where(table.htCore, .htGhostTable > table) > 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 :where(table.htCore > thead, table.htCore > tbody, .htGhostTable > table > thead, .htGhostTable > table > tbody) > tr:first-child > th,\n.handsontable :where(table.htCore > thead, table.htCore > tbody, .htGhostTable > table > thead, .htGhostTable > table > tbody) > tr:first-child > td {\n border-top-color: var(--ht-border-color);\n border-top-width: 1px;\n}\n.handsontable :where(table.htCore > thead, table.htCore > tbody, .htGhostTable > table > thead, .htGhostTable > table > tbody) > tr:first-child > th.ht__active_highlight, .handsontable :where(table.htCore > thead, table.htCore > tbody, .htGhostTable > table > thead, .htGhostTable > table > tbody) > tr:first-child > th.ht__active_highlight-row-seam-bottom,\n.handsontable :where(table.htCore > thead, table.htCore > tbody, .htGhostTable > table > thead, .htGhostTable > table > tbody) > tr:first-child > td.ht__active_highlight,\n.handsontable :where(table.htCore > thead, table.htCore > tbody, .htGhostTable > table > thead, .htGhostTable > table > tbody) > tr:first-child > td.ht__active_highlight-row-seam-bottom {\n border-top-color: var(--ht-header-active-border-color);\n}\n.handsontable :where(table.htCore > thead, table.htCore > tbody, .htGhostTable > table > thead, .htGhostTable > table > tbody) > tr:last-child > th,\n.handsontable :where(table.htCore > thead, table.htCore > tbody, .htGhostTable > table > thead, .htGhostTable > table > tbody) > tr:last-child > td {\n border-bottom-color: var(--ht-border-color);\n}\n.handsontable :where(table.htCore > thead, table.htCore > tbody, .htGhostTable > table > thead, .htGhostTable > table > tbody) > tr:last-child > th.ht__active_highlight, .handsontable :where(table.htCore > thead, table.htCore > tbody, .htGhostTable > table > thead, .htGhostTable > table > tbody) > tr:last-child > th.ht__active_highlight-row-seam-top,\n.handsontable :where(table.htCore > thead, table.htCore > tbody, .htGhostTable > table > thead, .htGhostTable > table > tbody) > tr:last-child > td.ht__active_highlight,\n.handsontable :where(table.htCore > thead, table.htCore > tbody, .htGhostTable > table > thead, .htGhostTable > table > tbody) > tr:last-child > td.ht__active_highlight-row-seam-top {\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] :where(table.htCore > tbody > tr, .htGhostTable > table > tbody > tr) > td:first-of-type {\n border-inline-start-width: 1px;\n}\n.handsontable :where(table.htCore, .htGhostTable > table) > 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.htCore, .handsontable:where(.htGhostTable) > table,\n.handsontable :where(table.htCore, .htGhostTable > table) > thead,\n.handsontable :where(table.htCore, .htGhostTable > table) > tbody,\n.handsontable input:not(:where(table.htCore > tbody > tr > td:not(.htCustomMenuRenderer) *:not(.htCheckboxRendererInput), .htGhostTable > table > tbody > tr > td:not(.htCustomMenuRenderer) *:not(.htCheckboxRendererInput))),\n.handsontable textarea:not(:where(table.htCore > tbody > tr > td:not(.htCustomMenuRenderer) *:not(.htCheckboxRendererInput), .htGhostTable > table > tbody > tr > td:not(.htCustomMenuRenderer) *:not(.htCheckboxRendererInput))),\n.handsontable div:not(:where(table.htCore > tbody > tr > td:not(.htCustomMenuRenderer) *:not(.htCheckboxRendererInput), .htGhostTable > table > tbody > tr > td:not(.htCustomMenuRenderer) *:not(.htCheckboxRendererInput))) {\n box-sizing: content-box;\n}\n.handsontable input:not(:where(table.htCore > tbody > tr > td:not(.htCustomMenuRenderer) *:not(.htCheckboxRendererInput), .htGhostTable > table > tbody > tr > td:not(.htCustomMenuRenderer) *:not(.htCheckboxRendererInput))),\n.handsontable textarea:not(:where(table.htCore > tbody > tr > td:not(.htCustomMenuRenderer) *:not(.htCheckboxRendererInput), .htGhostTable > table > tbody > tr > td:not(.htCustomMenuRenderer) *:not(.htCheckboxRendererInput))) {\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 :where(table.htCore, .htGhostTable > table) > colgroup > col {\n width: 64px;\n}\n.handsontable :where(table.htCore, .htGhostTable > table) > colgroup > col.rowHeader {\n width: 64px;\n}\n.handsontable :where(table.htCore, .htGhostTable > table) > colgroup > 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 :where(table.htCore > thead, table.htCore > tbody, .htGhostTable > table > thead, .htGhostTable > table > tbody) > tr.hidden {\n display: none;\n}\n.handsontable :where(table.htCore > thead, table.htCore > tbody, .htGhostTable > table > thead, .htGhostTable > table > tbody) > tr.hidden > td,\n.handsontable :where(table.htCore > thead, table.htCore > tbody, .htGhostTable > table > thead, .htGhostTable > table > tbody) > tr.hidden > th {\n display: none;\n}\n.handsontable a:not(:where(table.htCore > tbody > tr > td:not(.htCustomMenuRenderer) *:not(.htCheckboxRendererInput), .htGhostTable > table > tbody > tr > td:not(.htCustomMenuRenderer) *:not(.htCheckboxRendererInput))) {\n color: var(--ht-link-color);\n}\n.handsontable a:not(:where(table.htCore > tbody > tr > td:not(.htCustomMenuRenderer) *:not(.htCheckboxRendererInput), .htGhostTable > table > tbody > tr > td:not(.htCustomMenuRenderer) *:not(.htCheckboxRendererInput))):hover {\n color: var(--ht-link-hover-color);\n}\n.handsontable .ht_clone_top :where(table.htCore > thead > tr) > 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 :where(table.htCore > thead > tr) > th:nth-child(2) {\n border-inline-start-width: 0;\n border-inline-end-width: 1px;\n}\n.handsontable.htRowHeaders :where(table.htCore) > thead > tr > th:nth-child(2) {\n border-inline-start-width: 1px;\n}\n.handsontable .ht_master:not(.innerBorderInlineStart):not(.emptyColumns) :where(table.htCore) > tbody > tr > th,\n.handsontable .ht_master:not(.innerBorderInlineStart):not(.emptyColumns) :where(table.htCore) > thead > tr > th:first-child,\n.handsontable .ht_master:not(.innerBorderInlineStart):not(.emptyColumns) ~ .handsontable:not(.htGhostTable) :where(table.htCore) > tbody > tr > th,\n.handsontable .ht_master:not(.innerBorderInlineStart):not(.emptyColumns) ~ .handsontable:not(.ht_clone_top):not(.htGhostTable) :where(table.htCore) > 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) :where(table.htCore) > thead > tr:last-child > th, .handsontable .ht_master:not(.innerBorderTop):not(.innerBorderBottom) ~ .handsontable :where(table.htCore) > thead > tr:last-child > th,\n.handsontable .ht_master:not(.innerBorderTop):not(.innerBorderBottom) :where(table.htCore) > thead > tr.lastChild > th, .handsontable .ht_master:not(.innerBorderTop):not(.innerBorderBottom) ~ .handsontable :where(table.htCore) > thead > tr.lastChild > th {\n border-bottom-width: 0;\n}\n.handsontable.htAutoRowSize .ht_master.innerBorderTop :where(table.htCore) > tbody > tr:first-child > th,\n.handsontable.htAutoRowSize .ht_master.innerBorderTop :where(table.htCore) > tbody > tr:first-child > td {\n border-top-width: 0;\n}\n.handsontable.htAutoRowSize .ht_master.innerBorderTop ~ .ht_clone_inline_start :where(table.htCore) > tbody > tr:first-child > th,\n.handsontable.htAutoRowSize .ht_master.innerBorderTop ~ .ht_clone_inline_start :where(table.htCore) > 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 :where(table.htCore > tbody > tr, .htGhostTable > table > tbody > tr) > td[dir=ltr] {\n border-inline-end-width: 0;\n border-inline-start-width: 1px;\n}\n[dir=rtl].handsontable :where(table.htCore, .htGhostTable > table) > 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 {\n border-radius: var(--ht-border-radius);\n}\n.handsontable.ht-wrapper:not(.htColumnHeaders) .ht_master .htCore > tbody > tr:first-child > td:first-child {\n border-start-start-radius: var(--ht-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-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-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-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-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-border-radius);\n}\n.handsontable.ht-wrapper .ht_master .wtHolder {\n border-radius: var(--ht-border-radius);\n}\n.handsontable.ht-wrapper .ht_master .htCore {\n border-radius: var(--ht-border-radius);\n}\n.handsontable.ht-wrapper .ht_master .htCore > thead > tr:first-child > th:first-child {\n border-start-start-radius: var(--ht-border-radius);\n}\n.handsontable.ht-wrapper .ht_master .htCore > thead > tr:first-child > th:not(.hiddenHeader).htLastVisibleHeader {\n border-start-end-radius: var(--ht-border-radius);\n}\n.handsontable.ht-wrapper .ht_master .htCore > thead > tr:last-child > th:first-child {\n border-end-start-radius: var(--ht-border-radius);\n}\n.handsontable.ht-wrapper .ht_master .htCore > thead > tr:last-child > th:not(.hiddenHeader).htLastVisibleHeader {\n border-end-end-radius: var(--ht-border-radius);\n}\n.handsontable.ht-wrapper .ht_master .htCore > tbody > tr:last-child > td:first-child {\n border-end-start-radius: var(--ht-border-radius);\n}\n.handsontable.ht-wrapper .ht_master .htCore > tbody > tr:last-child > td:last-child {\n border-end-end-radius: var(--ht-border-radius);\n}\n.handsontable.ht-wrapper .ht_clone_top_inline_start_corner .htCore {\n border-start-start-radius: var(--ht-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-border-radius);\n}\n.handsontable.ht-wrapper .ht_clone_top .htCore {\n border-start-start-radius: var(--ht-border-radius);\n border-start-end-radius: var(--ht-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-border-radius);\n}\n.handsontable.ht-wrapper .ht_clone_top .htCore > thead > tr:first-child > th:not(.hiddenHeader).htLastVisibleHeader {\n border-start-end-radius: var(--ht-border-radius);\n}\n.handsontable.ht-wrapper .ht_clone_inline_start .htCore {\n border-start-start-radius: var(--ht-border-radius);\n border-end-start-radius: var(--ht-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-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-border-radius);\n}\n.handsontable.ht-wrapper .ht_clone_bottom_inline_start_corner .htCore {\n border-end-start-radius: var(--ht-border-radius);\n}\n.handsontable.ht-wrapper .ht_clone_bottom_inline_start_corner .htCore > :where(thead, tbody) > tr:last-child > th:first-child,\n.handsontable.ht-wrapper .ht_clone_bottom_inline_start_corner .htCore > :where(thead, tbody) > tr:last-child > td:first-child {\n border-end-start-radius: var(--ht-border-radius);\n}\n.handsontable.ht-wrapper .ht_clone_bottom .htCore {\n border-end-start-radius: var(--ht-border-radius);\n border-end-end-radius: var(--ht-border-radius);\n}\n.handsontable.ht-wrapper .ht_clone_bottom .htCore > :where(thead, tbody) > tr:last-child > th:first-child,\n.handsontable.ht-wrapper .ht_clone_bottom .htCore > :where(thead, tbody) > tr:last-child > td:first-child {\n border-end-start-radius: var(--ht-border-radius);\n}\n.handsontable.ht-wrapper .ht_clone_bottom .htCore > :where(thead, tbody) > tr:last-child > th:last-child,\n.handsontable.ht-wrapper .ht_clone_bottom .htCore > :where(thead, tbody) > tr:last-child > td:last-child {\n border-end-end-radius: var(--ht-border-radius);\n}\n.handsontable.ht-wrapper.htHasScrollX:not(.htHorizontallyScrollableByWindow) .htCore {\n border-end-start-radius: 0;\n border-end-end-radius: 0;\n}\n.handsontable.ht-wrapper.htHasScrollX:not(.htHorizontallyScrollableByWindow) .htCore > thead > tr:last-child > th:first-child,\n.handsontable.ht-wrapper.htHasScrollX:not(.htHorizontallyScrollableByWindow) .htCore > tbody > tr:last-child > td:first-child,\n.handsontable.ht-wrapper.htHasScrollX:not(.htHorizontallyScrollableByWindow) .htCore > tbody > tr:last-child > th:first-child {\n border-end-start-radius: 0;\n}\n.handsontable.ht-wrapper.htHasScrollX:not(.htHorizontallyScrollableByWindow) .htCore > thead > tr:last-child > th:not(.hiddenHeader).htLastVisibleHeader,\n.handsontable.ht-wrapper.htHasScrollX:not(.htHorizontallyScrollableByWindow) .htCore > tbody > tr:last-child > td:last-child,\n.handsontable.ht-wrapper.htHasScrollX:not(.htHorizontallyScrollableByWindow) .htCore > tbody > tr:last-child > th:last-child {\n border-end-end-radius: 0;\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:not(.hiddenHeader).htLastVisibleHeader,\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;\n}\n.handsontable.ht-wrapper.htHasScrollY:not(.htVerticallyScrollableByWindow) .htCore > thead > tr:last-child > th:not(.hiddenHeader).htLastVisibleHeader,\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;\n}\n\n.ht-root-wrapper {\n border-radius: var(--ht-border-radius);\n}\n.ht-root-wrapper.ht-slot-bottom-filled .ht-wrapper,\n.ht-root-wrapper.ht-slot-bottom-filled .ht_master .wtHolder {\n border-end-start-radius: 0;\n border-end-end-radius: 0;\n}\n.ht-root-wrapper.ht-slot-bottom-filled .htCore {\n border-end-start-radius: 0 !important;\n border-end-end-radius: 0 !important;\n}\n.ht-root-wrapper.ht-slot-bottom-filled .htCore > thead > tr:last-child > th:first-child,\n.ht-root-wrapper.ht-slot-bottom-filled .htCore > tbody > tr:last-child > td:first-child,\n.ht-root-wrapper.ht-slot-bottom-filled .htCore > tbody > tr:last-child > th:first-child {\n border-end-start-radius: 0 !important;\n}\n.ht-root-wrapper.ht-slot-bottom-filled .htCore > thead > tr:last-child > th:not(.hiddenHeader).htLastVisibleHeader,\n.ht-root-wrapper.ht-slot-bottom-filled .htCore > tbody > tr:last-child > td:last-child,\n.ht-root-wrapper.ht-slot-bottom-filled .htCore > tbody > tr:last-child > th:last-child {\n border-end-end-radius: 0 !important;\n}\n.ht-root-wrapper.ht-slot-top-filled .ht-wrapper,\n.ht-root-wrapper.ht-slot-top-filled .ht_master .wtHolder {\n border-start-start-radius: 0;\n border-start-end-radius: 0;\n}\n.ht-root-wrapper.ht-slot-top-filled .htCore {\n border-start-start-radius: 0 !important;\n border-start-end-radius: 0 !important;\n}\n.ht-root-wrapper.ht-slot-top-filled .htCore > thead > tr:first-child > th:first-child,\n.ht-root-wrapper.ht-slot-top-filled .htCore > tbody > tr:first-child > td:first-child,\n.ht-root-wrapper.ht-slot-top-filled .htCore > tbody > tr:first-child > th:first-child {\n border-start-start-radius: 0 !important;\n}\n.ht-root-wrapper.ht-slot-top-filled .htCore > thead > tr:first-child > th:not(.hiddenHeader).htLastVisibleHeader,\n.ht-root-wrapper.ht-slot-top-filled .htCore > tbody > tr:first-child > td:last-child,\n.ht-root-wrapper.ht-slot-top-filled .htCore > tbody > tr:first-child > th:last-child {\n border-start-end-radius: 0 !important;\n}\n.ht-root-wrapper .ht-slot-element {\n border-radius: var(--ht-border-radius);\n}\n.ht-root-wrapper .ht-slot-bottom > .ht-slot-element:not(:last-of-type) {\n border-radius: 0;\n}\n.ht-root-wrapper .ht-slot-bottom > .ht-slot-element:last-of-type {\n border-start-start-radius: 0;\n border-start-end-radius: 0;\n}\n.ht-root-wrapper .ht-slot-top > .ht-slot-element:not(:first-of-type) {\n border-radius: 0;\n}\n.ht-root-wrapper .ht-slot-top > .ht-slot-element:first-of-type {\n border-end-start-radius: 0;\n border-end-end-radius: 0;\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 .wtSelectionHandle {\n position: absolute;\n box-sizing: border-box;\n z-index: 115;\n background: var(--ht-cell-selection-handle-background-color);\n border: var(--ht-cell-selection-handle-border-width) solid var(--ht-cell-selection-handle-border-color);\n border-radius: var(--ht-cell-selection-handle-border-radius);\n animation: ht-selection-handle-fade-in var(--ht-table-transition) ease-in-out backwards;\n}\n.handsontable .wtSelectionHandle:hover {\n background: color-mix(in srgb, var(--ht-cell-selection-handle-border-color) 30%, var(--ht-cell-selection-handle-background-color));\n}\n@media (prefers-reduced-motion: reduce) {\n .handsontable .wtSelectionHandle {\n animation: none;\n }\n}\n.handsontable .wtSelectionHandle--top,\n.handsontable .wtSelectionHandle--bottom {\n width: var(--ht-cell-selection-handle-length);\n height: var(--ht-cell-selection-handle-size);\n cursor: ns-resize;\n}\n.handsontable .wtSelectionHandle--start,\n.handsontable .wtSelectionHandle--end {\n width: var(--ht-cell-selection-handle-size);\n height: var(--ht-cell-selection-handle-length);\n cursor: ew-resize;\n}\n.handsontable.ht__resizing-selection--top .wtSelectionHandle:not(.wtSelectionHandle--top), .handsontable.ht__resizing-selection--bottom .wtSelectionHandle:not(.wtSelectionHandle--bottom), .handsontable.ht__resizing-selection--start .wtSelectionHandle:not(.wtSelectionHandle--start), .handsontable.ht__resizing-selection--end .wtSelectionHandle:not(.wtSelectionHandle--end) {\n display: none !important;\n}\n.handsontable.ht__resizing-selection--top,\n.handsontable.ht__resizing-selection--top *, .handsontable.ht__resizing-selection--bottom,\n.handsontable.ht__resizing-selection--bottom * {\n cursor: ns-resize !important;\n}\n.handsontable.ht__resizing-selection--start,\n.handsontable.ht__resizing-selection--start *, .handsontable.ht__resizing-selection--end,\n.handsontable.ht__resizing-selection--end * {\n cursor: ew-resize !important;\n}\n.handsontable.ht__resizing-selection--top .wtSelectionHandle--top, .handsontable.ht__resizing-selection--bottom .wtSelectionHandle--bottom, .handsontable.ht__resizing-selection--start .wtSelectionHandle--start, .handsontable.ht__resizing-selection--end .wtSelectionHandle--end {\n background: color-mix(in srgb, var(--ht-cell-selection-handle-border-color) 30%, var(--ht-cell-selection-handle-background-color));\n}\n.handsontable .wtMoveZone {\n cursor: grab;\n}\n.handsontable .wtMoveZone:active {\n cursor: grabbing;\n}\n.handsontable.ht__moving {\n cursor: grabbing;\n}\n.handsontable.ht__moving * {\n cursor: grabbing !important;\n}\n.handsontable.ht__moving .wtBorder.area,\n.handsontable.ht__moving .wtBorder.current {\n display: none !important;\n}\n.handsontable.ht__moving .wtSelectionHandle,\n.handsontable.ht__moving .wtMoveZone {\n visibility: hidden !important;\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: 110;\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@keyframes ht-selection-handle-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\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 min-width: 300px;\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.ht-license-badge-wrapper {\n position: absolute;\n inset: 0;\n overflow: hidden;\n z-index: 1050;\n pointer-events: none;\n}\n\n.ht-license-badge-on .ht-license-badge-corner thead tr:first-child th:first-child::after {\n content: \"\";\n position: absolute;\n inset: 0;\n margin: auto;\n inset-inline-start: clamp(0px, 100% - var(--ht-license-badge-size, 16px), 6px);\n inline-size: min(var(--ht-license-badge-size, 16px), 100%);\n block-size: min(var(--ht-license-badge-size, 16px), 100%);\n background-color: var(--ht-license-badge-color, var(--ht-disabled-color, #a3a3a3));\n pointer-events: none;\n -webkit-mask-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg width=%2714.8626%27 height=%2716%27 viewBox=%270 0 14.8626 16%27 fill=%27none%27 xmlns=%27http://www.w3.org/2000/svg%27%3E%3Cpath d=%27M0 0H3.28665V4.35577H7.03576V0H10.306V11.407H7.03576V6.90834H3.28665V11.407H0V0Z%27 fill=%27%23000%27/%3E%3Cpath d=%27M11.0991 12.236H14.8633V16.0001H11.0991V12.236Z%27 fill=%27%23000%27/%3E%3C/svg%3E\");\n mask-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg width=%2714.8626%27 height=%2716%27 viewBox=%270 0 14.8626 16%27 fill=%27none%27 xmlns=%27http://www.w3.org/2000/svg%27%3E%3Cpath d=%27M0 0H3.28665V4.35577H7.03576V0H10.306V11.407H7.03576V6.90834H3.28665V11.407H0V0Z%27 fill=%27%23000%27/%3E%3Cpath d=%27M11.0991 12.236H14.8633V16.0001H11.0991V12.236Z%27 fill=%27%23000%27/%3E%3C/svg%3E\");\n -webkit-mask-size: contain;\n mask-size: contain;\n -webkit-mask-repeat: no-repeat;\n mask-repeat: no-repeat;\n -webkit-mask-position: center;\n mask-position: center;\n}\n\n.ht-license-badge-on .ht-license-badge-corner thead tr:first-child th:first-child:hover::after {\n background-color: var(--ht-license-badge-hover-color, var(--ht-read-only-color, #68696c));\n}\n\n[dir=rtl] .ht-license-badge-on .ht-license-badge-corner thead tr:first-child th:first-child::after {\n inset-inline-start: 0;\n inset-inline-end: clamp(0px, 100% - var(--ht-license-badge-size, 16px), 6px);\n}\n\n.ht-license-badge {\n position: absolute;\n inset-block-start: 0;\n inset-inline-start: 0;\n inline-size: 1px;\n block-size: 1px;\n margin: 0;\n padding: 0;\n border: 0;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n background: transparent;\n color: transparent;\n}\n\n.ht-license-popover {\n font-family: var(--ht-font-family), -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n position: absolute;\n inset-block-start: 0;\n inset-inline-start: var(--ht-license-badge-area-width, 50px);\n inset-inline-end: 0;\n z-index: 1051;\n display: none;\n flex-direction: column;\n inline-size: auto;\n max-inline-size: min(var(--ht-license-popover-width, 320px), 100vw - 32px);\n max-block-size: 100%;\n overflow: visible;\n padding: 16px;\n border-radius: var(--ht-border-radius, 8px);\n border-start-start-radius: 0;\n background-color: var(--ht-license-popover-background-color, #16171a);\n color: var(--ht-license-popover-foreground-color, #fff);\n font-size: var(--ht-font-size-small, 12px);\n line-height: var(--ht-line-height-small, 18px);\n text-align: start;\n pointer-events: auto;\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}\n.ht-license-popover::before {\n content: \"\";\n position: absolute;\n inset-block-start: 0;\n inset-inline-end: 100%;\n inline-size: 0;\n block-size: 0;\n border-block-start: var(--ht-license-popover-tail-size, 5px) solid var(--ht-license-popover-background-color, #16171a);\n border-inline-start: var(--ht-license-popover-tail-size, 5px) solid transparent;\n}\n\n.ht-license-popover__content {\n min-block-size: 0;\n overflow-y: auto;\n}\n\n.ht-license-badge-wrapper.is-corner-hover:not(.is-dismissed) .ht-license-popover,\n.ht-license-badge-wrapper:not(.is-dismissed):hover .ht-license-popover,\n.ht-license-popover.is-open {\n display: flex;\n}\n\n.ht-license-badge-wrapper.is-cornerless .ht-license-badge {\n display: none;\n}\n.ht-license-badge-wrapper.is-cornerless .ht-license-popover {\n inset-inline-start: 0;\n border-start-start-radius: var(--ht-border-radius, 8px);\n}\n.ht-license-badge-wrapper.is-cornerless .ht-license-popover::before {\n display: none;\n}\n\n.ht-license-popover__title {\n margin-block-end: 8px;\n padding-inline-end: 16px;\n font-weight: bold;\n}\n\n.ht-license-popover__body {\n margin: 0 0 12px;\n color: var(--ht-license-popover-body-color, #d5d6d8);\n}\n\n.ht-license-popover__link {\n color: var(--ht-license-popover-link-color, #3ba0ff);\n text-decoration: none;\n}\n.ht-license-popover__link:hover {\n text-decoration: underline;\n}\n\n.ht-license-popover__close {\n position: absolute;\n inset-block-start: 12px;\n inset-inline-end: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n inline-size: 20px;\n block-size: 20px;\n padding: 0;\n border: 0;\n background: transparent;\n color: inherit;\n cursor: pointer;\n line-height: 1;\n}\n.ht-license-popover__close::before {\n content: \"✕\";\n font-size: 14px;\n}\n\n.ht-dialog.ht-license-lock {\n z-index: 1070;\n}\n.ht-dialog.ht-license-lock::before {\n content: \"\";\n position: absolute;\n inset-block-start: 0;\n inset-inline: 0;\n block-size: calc(var(--ht-line-height, 20px) + var(--ht-density-cell-vertical, 4px) * 2);\n background-color: var(--ht-header-background-color);\n border-block-end: 1px solid var(--ht-cell-horizontal-border-color, var(--ht-border-color));\n}\n.ht-dialog.ht-license-lock::after {\n content: \"\";\n position: absolute;\n inset-block-start: calc(var(--ht-density-cell-vertical, 4px) + (var(--ht-line-height, 20px) - var(--ht-license-badge-size, 16px)) / 2);\n inset-inline-start: var(--ht-cell-horizontal-padding, 8px);\n inline-size: var(--ht-license-badge-size, 16px);\n block-size: var(--ht-license-badge-size, 16px);\n background-color: var(--ht-license-badge-color, var(--ht-disabled-color, #a3a3a3));\n -webkit-mask-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg width=%2714.8626%27 height=%2716%27 viewBox=%270 0 14.8626 16%27 fill=%27none%27 xmlns=%27http://www.w3.org/2000/svg%27%3E%3Cpath d=%27M0 0H3.28665V4.35577H7.03576V0H10.306V11.407H7.03576V6.90834H3.28665V11.407H0V0Z%27 fill=%27%23000%27/%3E%3Cpath d=%27M11.0991 12.236H14.8633V16.0001H11.0991V12.236Z%27 fill=%27%23000%27/%3E%3C/svg%3E\");\n mask-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg width=%2714.8626%27 height=%2716%27 viewBox=%270 0 14.8626 16%27 fill=%27none%27 xmlns=%27http://www.w3.org/2000/svg%27%3E%3Cpath d=%27M0 0H3.28665V4.35577H7.03576V0H10.306V11.407H7.03576V6.90834H3.28665V11.407H0V0Z%27 fill=%27%23000%27/%3E%3Cpath d=%27M11.0991 12.236H14.8633V16.0001H11.0991V12.236Z%27 fill=%27%23000%27/%3E%3C/svg%3E\");\n -webkit-mask-size: contain;\n mask-size: contain;\n -webkit-mask-repeat: no-repeat;\n mask-repeat: no-repeat;\n}\n.ht-dialog.ht-license-lock .ht-dialog__content-wrapper {\n padding-block-start: calc(var(--ht-line-height, 20px) + var(--ht-density-cell-vertical, 4px) * 2);\n}\n.ht-dialog.ht-license-lock .ht-dialog__content-wrapper-inner,\n.ht-dialog.ht-license-lock .ht-dialog__content {\n min-inline-size: 0;\n}\n.ht-dialog.ht-license-lock a.ht-button {\n display: inline-block;\n text-decoration: none;\n}\n.ht-dialog.ht-license-lock .ht-dialog__title,\n.ht-dialog.ht-license-lock .ht-dialog__description {\n word-break: break-word;\n overflow-wrap: break-word;\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.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 :where(table.htCore) > 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 box-shadow: none !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 --ht-cell-vertical-padding: 4px;\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: var(--ht-cell-vertical-padding) 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 td a.ht-hyperlink {\n color: var(--ht-link-color);\n text-decoration: underline;\n}\n.handsontable td a.ht-hyperlink:hover {\n color: var(--ht-link-hover-color);\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 .colHeader.columnSorting.sortAction {\n box-sizing: border-box;\n flex-grow: 0;\n margin-inline: auto;\n min-width: min(var(--ht-icon-size, 16px) + 8px, 100%);\n max-width: 100%;\n position: static;\n}\n.handsontable .colHeader.columnSorting.sortAction::before, .handsontable .colHeader.columnSorting.sortAction::after {\n margin-inline: var(--ht-sort-indicator-offset);\n margin-inline-end: var(--ht-sort-indicator-offset-end);\n}\n.handsontable .htLeft .colHeader.columnSorting.sortAction {\n margin-left: 0;\n margin-right: auto;\n}\n.handsontable .htRight .colHeader.columnSorting.sortAction {\n margin-left: auto;\n margin-right: 0;\n}\n.handsontable th .relative {\n --ht-sort-indicator-offset: var(--ht-cell-horizontal-padding);\n --ht-sort-indicator-offset-end: var(--ht-cell-horizontal-padding);\n --ht-sort-indicator-reserve: var(--ht-cell-horizontal-padding);\n --ht-sort-indicator-reserve-end: var(--ht-sort-indicator-reserve);\n --ht-header-button-slot: calc(var(--ht-icon-size, 16px) + 2px);\n}\n.handsontable .relative.has-header-button {\n --ht-sort-indicator-offset-end: calc(\n var(--ht-cell-horizontal-padding) + var(--ht-icon-size, 16px) +\n (var(--ht-icon-button-hit-area-size, 24px) - var(--ht-icon-size, 16px)) * 0.5\n );\n --ht-sort-indicator-reserve-end: var(--ht-cell-horizontal-padding);\n}\n.handsontable .relative.has-sort-indicator.has-header-button {\n column-gap: calc(2px + var(--ht-header-button-slot));\n}\n.handsontable .relative.has-sort-indicator {\n --ht-sort-indicator-reserve: calc(var(--ht-cell-horizontal-padding) + var(--ht-icon-size, 16px) + 2px);\n padding-inline-end: var(--ht-sort-indicator-reserve-end);\n}\n.handsontable .relative.htRight.has-sort-indicator,\n.handsontable .htRight .relative.has-sort-indicator {\n padding-inline-start: var(--ht-sort-indicator-reserve);\n padding-inline-end: var(--ht-cell-horizontal-padding);\n --ht-header-button-slot: 0px;\n}\n.handsontable .columnSorting:not(.indicatorDisabled) {\n position: relative;\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::before {\n left: 2px;\n right: auto;\n text-align: left;\n}\n\n[dir=rtl] .handsontable .relative.htRight.has-sort-indicator,\n[dir=rtl] .handsontable .htRight .relative.has-sort-indicator {\n padding-inline-start: var(--ht-cell-horizontal-padding);\n padding-inline-end: var(--ht-sort-indicator-reserve-end);\n --ht-header-button-slot: calc(var(--ht-icon-size, 16px) + 2px);\n}\n[dir=rtl] .handsontable .relative.htLeft.has-sort-indicator,\n[dir=rtl] .handsontable .htLeft .relative.has-sort-indicator {\n padding-inline-start: var(--ht-sort-indicator-reserve);\n padding-inline-end: var(--ht-cell-horizontal-padding);\n --ht-header-button-slot: 0px;\n}\n[dir=rtl] .handsontable .columnSorting.sortAction::before {\n left: 2px;\n right: auto;\n text-align: left;\n}\n[dir=rtl] .handsontable .htLeft .columnSorting.sortAction::before {\n left: auto;\n right: 2px;\n text-align: right;\n}\n\n.htGhostTable .htCore .relative {\n --ht-sort-indicator-offset: 0px;\n --ht-sort-indicator-offset-end: 0px;\n --ht-header-button-slot: 0px;\n}\n\n.htGhostTable .htCore .relative.has-header-button {\n --ht-sort-indicator-reserve: var(--ht-cell-horizontal-padding);\n --ht-sort-indicator-reserve-end: var(--ht-cell-horizontal-padding);\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 :where(table.htCore > thead > tr) > th:nth-child(2), .handsontable .htRowHeaders .ht_master.innerBorderInlineStart ~ .ht_clone_inline_start :where(table.htCore > tbody > tr) > 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__active_highlight, .handsontable.ht__manualColumnMove.after-selection--columns thead th.ht__highlight, .handsontable.ht__manualColumnMove.after-selection--columns thead th.ht__active_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-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-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-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-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-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 width: 100%;\n color: var(--ht-pagination-bar-foreground-color);\n background: var(--ht-pagination-bar-background-color);\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:not(.ht-slot-element) {\n border: 1px solid var(--ht-border-color);\n border-radius: var(--ht-border-radius);\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 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\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-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-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-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 {\n border-end-start-radius: 0;\n border-end-end-radius: 0;\n border-bottom-width: 0;\n}\n\n.ht-root-wrapper.ht-slot-bottom-filled .ht-empty-data-state {\n border-end-start-radius: 0;\n border-end-end-radius: 0;\n}\n\n@keyframes ht-empty-data-state-spin {\n to {\n transform: rotate(360deg);\n }\n}\n");
128930
128932
 
128931
128933
 
128932
128934
  },
@@ -136330,14 +136332,20 @@ __webpack_require__.d(__webpack_exports__, {
136330
136332
  MILLISECONDS_PER_DAY: () => (MILLISECONDS_PER_DAY),
136331
136333
  NO_CONSOLE_WARNS_FLAG: () => (NO_CONSOLE_WARNS_FLAG),
136332
136334
  NO_UI_WARNS_FLAG: () => (NO_UI_WARNS_FLAG),
136335
+ PROSE_DIGEST_LENGTH: () => (PROSE_DIGEST_LENGTH),
136333
136336
  TRIAL_FLAG: () => (TRIAL_FLAG)
136334
136337
  });
136335
136338
  /**
136336
- * The length of the checksum (SHA-512 as hex) that closes the machine-readable
136339
+ * The length of the checksum that closes the machine-readable
136337
136340
  * block of every entitlement license key.
136338
136341
  *
136339
136342
  * @type {number}
136340
136343
  */ const CHECKSUM_LENGTH = 128;
136344
+ /**
136345
+ * The length of the value a current key stores for its text.
136346
+ *
136347
+ * @type {number}
136348
+ */ const PROSE_DIGEST_LENGTH = 64;
136341
136349
  /**
136342
136350
  * The two mutually exclusive date fields of a product entry. Exactly one of
136343
136351
  * them is present:
@@ -136640,7 +136648,10 @@ __webpack_require__.d(__webpack_exports__, {
136640
136648
  * @param {string} isoDate The date to parse.
136641
136649
  * @returns {number|null}
136642
136650
  */ function parseIsoDateToTimestamp(isoDate) {
136643
- const match = /^(\d{4})-(\d{2})-(\d{2})$/.exec(`${isoDate}`);
136651
+ // Only a string is a date. Checked before the text test on purpose: an array
136652
+ // like `['2027-08-12']` stringifies to a valid date and would otherwise pass,
136653
+ // and an object whose `toString` is not a function would throw.
136654
+ const match = typeof isoDate === 'string' ? /^(\d{4})-(\d{2})-(\d{2})$/.exec(isoDate) : null;
136644
136655
  if (match === null) {
136645
136656
  return null;
136646
136657
  }
@@ -136668,24 +136679,103 @@ __webpack_require__.d(__webpack_exports__, {
136668
136679
  "use strict";
136669
136680
  __webpack_require__.r(__webpack_exports__);
136670
136681
  __webpack_require__.d(__webpack_exports__, {
136682
+ canonicalizeProse: () => (canonicalizeProse),
136683
+ computePayloadChecksum: () => (computePayloadChecksum),
136684
+ computeProseDigest: () => (computeProseDigest),
136671
136685
  defineOwn: () => (defineOwn),
136672
136686
  extractEntitlementKeyData: () => (extractEntitlementKeyData),
136673
136687
  getProductEntitlement: () => (getProductEntitlement)
136674
136688
  });
136675
- /* import */ var _constants__rspack_import_0 = __webpack_require__(215);
136676
- /* import */ var _sha512__rspack_import_2 = __webpack_require__(216);
136689
+ /* import */ var _constants__rspack_import_2 = __webpack_require__(215);
136690
+ /* import */ var _sha512__rspack_import_0 = __webpack_require__(216);
136677
136691
  /* import */ var _encoding__rspack_import_1 = __webpack_require__(217);
136678
136692
 
136679
136693
 
136680
136694
 
136681
136695
  /**
136682
- * The alphabet of the encoded payload - URL-safe base64 without padding. The
136683
- * checksum (lowercase hex) is a subset of it, which is what lets the two be
136684
- * split by a fixed length from the right.
136696
+ * The alphabets of the two parts of the machine-readable block. The second
136697
+ * part has a fixed length, so the two are split from the right.
136685
136698
  *
136686
136699
  * @type {RegExp}
136687
136700
  */ const ENCODED_PAYLOAD = /^[A-Za-z0-9\-_]+$/;
136688
136701
  const CHECKSUM = /^[0-9a-f]+$/;
136702
+ /**
136703
+ * The whitespace the reader ignores, in the text and inside the block: TAB,
136704
+ * LF, VT, FF, CR, SPACE, NO-BREAK SPACE,
136705
+ * OGHAM SPACE MARK, the U+2000-U+200A spaces, LINE SEPARATOR, PARAGRAPH
136706
+ * SEPARATOR, NARROW NO-BREAK SPACE, MEDIUM MATHEMATICAL SPACE, IDEOGRAPHIC
136707
+ * SPACE, and the BOM.
136708
+ *
136709
+ * Listed explicitly instead of `\s`, whose set has changed between JavaScript
136710
+ * engines (U+180E) and differs in other languages (U+0085), so it matches the
136711
+ * key generator exactly.
136712
+ *
136713
+ * @type {RegExp}
136714
+ */ const PROSE_WHITESPACE = /[\t\n\v\f\r \u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/g;
136715
+ /**
136716
+ * A line break or tab that was saved as text - a backslash followed by "n",
136717
+ * "r", or "t" - also ignored.
136718
+ *
136719
+ * Several places a key is stored keep a line break that way rather than as a
136720
+ * real one: a single-quoted or unquoted `.env` value, Docker's `--env-file`,
136721
+ * and many CI secret fields. The block survives that intact, so without this
136722
+ * a genuine key would fail only because of how it was stored. The generator
136723
+ * strips backslashes from every free-text field, so a key it issues never
136724
+ * carries one of its own.
136725
+ *
136726
+ * @type {RegExp}
136727
+ */ const ESCAPED_WHITESPACE = /\\[nrt]/g;
136728
+ /**
136729
+ * Removes every escaped line break or tab (`\n`, `\r`, `\t` saved as text) and
136730
+ * then every whitespace character, in that order.
136731
+ *
136732
+ * The block is one long word, so a mail client or an editor that wraps the key
136733
+ * can break it across lines, and a `.env` file can save that line break as the
136734
+ * text `\n`. The block's alphabet has neither, so removing them cannot change
136735
+ * a genuine block.
136736
+ *
136737
+ * @param {string} text The text to remove the whitespace from.
136738
+ * @returns {string}
136739
+ */ function removeWhitespace(text) {
136740
+ return text.replace(ESCAPED_WHITESPACE, '').replace(PROSE_WHITESPACE, '');
136741
+ }
136742
+ /**
136743
+ * Brings the human-readable text of a key to the form the key protects.
136744
+ *
136745
+ * Only the whitespace, its escaped forms, and the Unicode composition are
136746
+ * ignored. A mail client that rewraps the text (also between two CJK
136747
+ * characters or inside a word) or collapses a blank line, a `.env` file that
136748
+ * saves a line break as `\n`, or a system that stores "u" + U+0308 instead of
136749
+ * U+00FC leaves the key valid. A changed, added, or removed letter, digit, or
136750
+ * symbol does not.
136751
+ * Exported for the test key builder; the library calls `extractEntitlementKeyData`.
136752
+ *
136753
+ * @param {string} prose The text in front of the machine-readable block.
136754
+ * @returns {string}
136755
+ */ function canonicalizeProse(prose) {
136756
+ // NFC runs last: a line break between a letter and its combining mark (an
136757
+ // NFD copy rewrapped there) has to be gone before the two can compose.
136758
+ return removeWhitespace(prose).normalize('NFC');
136759
+ }
136760
+ /**
136761
+ * Computes the checksum that closes the block. It must match the canonical
136762
+ * reader in every key format, so Handsontable 18.1 keeps reading newer keys.
136763
+ * Exported for the test key builder.
136764
+ *
136765
+ * @param {string} encodedPayload The encoded payload.
136766
+ * @returns {string}
136767
+ */ function computePayloadChecksum(encodedPayload) {
136768
+ return (0,_sha512__rspack_import_0.sha512)((0,_encoding__rspack_import_1.stringToUtf8Bytes)(encodedPayload));
136769
+ }
136770
+ /**
136771
+ * Computes the value a current key stores for its text. Exported for the test
136772
+ * key builder.
136773
+ *
136774
+ * @param {string} canonicalProse The text, already passed through `canonicalizeProse`.
136775
+ * @returns {string}
136776
+ */ function computeProseDigest(canonicalProse) {
136777
+ return (0,_sha512__rspack_import_0.sha512)((0,_encoding__rspack_import_1.stringToUtf8Bytes)(canonicalProse)).slice(0, _constants__rspack_import_2.PROSE_DIGEST_LENGTH);
136778
+ }
136689
136779
  /**
136690
136780
  * Reports own-property presence without trusting a payload's inherited or
136691
136781
  * overridden `hasOwnProperty`.
@@ -136722,6 +136812,39 @@ const CHECKSUM = /^[0-9a-f]+$/;
136722
136812
  */ function isStringArray(value) {
136723
136813
  return Array.isArray(value) && value.every((item)=>typeof item === 'string');
136724
136814
  }
136815
+ /**
136816
+ * Freezes the value and everything nested in it. The read result is shared
136817
+ * between callers (see the memo below), so a caller that sorted or pushed into
136818
+ * it would silently rewrite what the next caller reads.
136819
+ *
136820
+ * It walks with an explicit stack, not by recursion. An unknown extra field is
136821
+ * kept as it is, and a key can nest one thousands of levels deep - recursion
136822
+ * would then overflow the call stack and throw out of the reader, where a key
136823
+ * is only ever allowed to read as data or as `null`.
136824
+ *
136825
+ * @param {*} value The value to freeze.
136826
+ * @returns {*}
136827
+ */ function deepFreeze(value) {
136828
+ const pending = [
136829
+ value
136830
+ ];
136831
+ while(pending.length > 0){
136832
+ const current = pending.pop();
136833
+ if (isFreezable(current)) {
136834
+ Object.freeze(current);
136835
+ Object.keys(current).forEach((key)=>pending.push(current[key]));
136836
+ }
136837
+ }
136838
+ return value;
136839
+ }
136840
+ /**
136841
+ * Narrows an unknown value to an object (or array) that is not frozen yet.
136842
+ *
136843
+ * @param {*} value The value to check.
136844
+ * @returns {boolean}
136845
+ */ function isFreezable(value) {
136846
+ return value !== null && typeof value === 'object' && !Object.isFrozen(value);
136847
+ }
136725
136848
  /**
136726
136849
  * Adds an own, ordinary property.
136727
136850
  *
@@ -136767,14 +136890,14 @@ const CHECKSUM = /^[0-9a-f]+$/;
136767
136890
  if (!isStringArray(entry.capabilities)) {
136768
136891
  return null;
136769
136892
  }
136770
- const presentDateFields = _constants__rspack_import_0.DATE_FIELDS.filter((field)=>entry[field] !== undefined);
136893
+ const presentDateFields = _constants__rspack_import_2.DATE_FIELDS.filter((field)=>entry[field] !== undefined);
136771
136894
  // Exactly one date per product. "Both" and "neither" are each a different
136772
136895
  // commercial shape that the format cannot express, so neither may be silently
136773
136896
  // resolved by whichever field the reader happens to look at first.
136774
136897
  if (presentDateFields.length !== 1) {
136775
136898
  return null;
136776
136899
  }
136777
- if ((0,_encoding__rspack_import_1.parseIsoDateToTimestamp)(`${entry[presentDateFields[0]]}`) === null) {
136900
+ if ((0,_encoding__rspack_import_1.parseIsoDateToTimestamp)(entry[presentDateFields[0]]) === null) {
136778
136901
  return null;
136779
136902
  }
136780
136903
  if (!isNonNegativeInteger(entry.notice) || !isNonNegativeInteger(entry.grace)) {
@@ -136799,6 +136922,41 @@ const CHECKSUM = /^[0-9a-f]+$/;
136799
136922
  defineOwn(normalized, presentDateFields[0], entry[presentDateFields[0]]);
136800
136923
  return normalized;
136801
136924
  }
136925
+ /**
136926
+ * Reads the format version of a payload. Returns `null` for a value no
136927
+ * generator writes. A version newer than this reader knows is accepted, so a
136928
+ * build already in the field keeps reading newer keys.
136929
+ *
136930
+ * @param {object} payload The decoded payload.
136931
+ * @returns {number|null}
136932
+ */ function readFormatVersion(payload) {
136933
+ // Own properties only, so a value another script put on `Object.prototype`
136934
+ // cannot change how a key is read.
136935
+ if (!hasOwn(payload, 'v')) {
136936
+ return 1;
136937
+ }
136938
+ if (!isNonNegativeInteger(payload.v) || payload.v < 2) {
136939
+ return null;
136940
+ }
136941
+ return payload.v;
136942
+ }
136943
+ /**
136944
+ * Checks that the text of a current key is intact and that nothing but
136945
+ * whitespace follows its block. A key always states its terms, so the bare
136946
+ * block is rejected. A key in the earlier format is read the way Handsontable
136947
+ * 18.1 reads it.
136948
+ *
136949
+ * @param {object} payload The decoded payload.
136950
+ * @param {string} prose The text in front of the block.
136951
+ * @param {string} textAfterBlock The text after the block.
136952
+ * @returns {boolean}
136953
+ */ function coversItsText(payload, prose, textAfterBlock) {
136954
+ if (canonicalizeProse(textAfterBlock) !== '') {
136955
+ return false;
136956
+ }
136957
+ const canonicalProse = canonicalizeProse(prose);
136958
+ return canonicalProse !== '' && hasOwn(payload, 'prose') && typeof payload.prose === 'string' && computeProseDigest(canonicalProse) === payload.prose;
136959
+ }
136802
136960
  /**
136803
136961
  * Reads and verifies one key. Split out from the memoized public entry point so
136804
136962
  * the memo can wrap every exit path uniformly.
@@ -136816,16 +136974,16 @@ const CHECKSUM = /^[0-9a-f]+$/;
136816
136974
  if (blockEnd === -1) {
136817
136975
  return null;
136818
136976
  }
136819
- const content = licenseKey.slice(blockStart + 1, blockEnd);
136820
- if (content.length <= _constants__rspack_import_0.CHECKSUM_LENGTH) {
136977
+ const content = removeWhitespace(licenseKey.slice(blockStart + 1, blockEnd));
136978
+ if (content.length <= _constants__rspack_import_2.CHECKSUM_LENGTH) {
136821
136979
  return null;
136822
136980
  }
136823
- const encodedPayload = content.slice(0, -_constants__rspack_import_0.CHECKSUM_LENGTH);
136824
- const checksum = content.slice(-_constants__rspack_import_0.CHECKSUM_LENGTH);
136981
+ const encodedPayload = content.slice(0, -_constants__rspack_import_2.CHECKSUM_LENGTH);
136982
+ const checksum = content.slice(-_constants__rspack_import_2.CHECKSUM_LENGTH);
136825
136983
  if (!ENCODED_PAYLOAD.test(encodedPayload) || !CHECKSUM.test(checksum)) {
136826
136984
  return null;
136827
136985
  }
136828
- if ((0,_sha512__rspack_import_2.sha512)((0,_encoding__rspack_import_1.stringToUtf8Bytes)(encodedPayload)) !== checksum) {
136986
+ if (computePayloadChecksum(encodedPayload) !== checksum) {
136829
136987
  return null;
136830
136988
  }
136831
136989
  const payloadJson = (0,_encoding__rspack_import_1.base64ToString)(encodedPayload);
@@ -136841,6 +136999,13 @@ const CHECKSUM = /^[0-9a-f]+$/;
136841
136999
  if (!isPlainObject(payload) || !isPlainObject(payload.products)) {
136842
137000
  return null;
136843
137001
  }
137002
+ const version = readFormatVersion(payload);
137003
+ if (version === null) {
137004
+ return null;
137005
+ }
137006
+ if (version >= 2 && !coversItsText(payload, licenseKey.slice(0, blockStart), licenseKey.slice(blockEnd + 1))) {
137007
+ return null;
137008
+ }
136844
137009
  const products = {};
136845
137010
  const entries = payload.products;
136846
137011
  let malformed = false;
@@ -136855,40 +137020,54 @@ const CHECKSUM = /^[0-9a-f]+$/;
136855
137020
  if (malformed) {
136856
137021
  return null;
136857
137022
  }
136858
- return {
137023
+ return deepFreeze({
137024
+ version,
136859
137025
  products
136860
- };
137026
+ });
136861
137027
  }
136862
137028
  // The license key is read twice per grid init - the bottom bar
136863
137029
  // (`initLicenseNotification`) and the branding UI (`initLicenseBranding`) each resolve the license
136864
- // state - and reading runs the full SHA-512 + base64 + JSON parse. A one-entry memo on the key makes
136865
- // the second read free. The returned data is treated as read-only by every caller, so sharing one
137030
+ // state - and reading runs the full verification and decoding. A one-entry memo on the key makes
137031
+ // the second read free. The returned data is frozen, as in the canonical reader, so sharing one
136866
137032
  // object is safe.
136867
137033
  let memoizedKey = null;
136868
137034
  let memoizedData = null;
136869
137035
  /**
136870
137036
  * Extracts the machine-readable data from an entitlement license key.
136871
137037
  *
136872
- * The checksum is verified first, so the returned data is guaranteed to belong
136873
- * to an intact block. A malformed or tampered key reads as `null` - reporting
136874
- * an invalid key is the caller's job, not this function's.
137038
+ * The key is verified first, so the returned data is guaranteed to belong to
137039
+ * an intact key. A malformed or tampered key reads as `null` - reporting an
137040
+ * invalid key is the caller's job, not this function's.
137041
+ *
137042
+ * A current key protects its text as well: edited or removed text (the bare
137043
+ * `[...]` block), or anything but whitespace after the block, reads as `null`.
137044
+ * A key in the earlier format reads the way Handsontable 18.1 reads it. The
137045
+ * verification rules are those of the canonical reader in the private
137046
+ * `license-key` repository.
136875
137047
  *
136876
- * Only the bracketed block matters. The prose in front of it is neither parsed
136877
- * nor covered by the checksum, so the caller may pass the whole key or just the
136878
- * `[...]` block, and rewrapped or re-pasted prose still validates. The block
136879
- * itself has to be intact: its alphabet has no whitespace, so a newline inside
136880
- * it makes the key unreadable, exactly as it does for the key generator.
137048
+ * The caller passes the whole key. The text is never parsed, and its
137049
+ * whitespace and Unicode composition are ignored, so rewrapped or re-pasted
137050
+ * text still validates. Whitespace inside the block is ignored too, so a
137051
+ * block wrapped by a mail client still validates.
136881
137052
  *
136882
137053
  * Unknown products, capability tokens and flags are all tolerated, so nothing
136883
137054
  * about reading a key depends on the commercial vocabulary.
136884
137055
  *
137056
+ * The result is frozen. Copy an array before sorting or changing it.
137057
+ *
136885
137058
  * @param {string} licenseKey The license key to extract the data from.
136886
137059
  * @returns {EntitlementKeyData|null}
136887
137060
  */ function extractEntitlementKeyData(licenseKey) {
136888
- const key = `${licenseKey}`;
136889
- if (key !== memoizedKey) {
136890
- memoizedKey = key;
136891
- memoizedData = readEntitlementKeyData(key);
137061
+ if (typeof licenseKey !== 'string') {
137062
+ return null;
137063
+ }
137064
+ if (licenseKey !== memoizedKey) {
137065
+ // Read first, remember second. Were the key remembered before the read,
137066
+ // a read that throws would leave the new key paired with the previous
137067
+ // key's data, and the next read of the new key would return it.
137068
+ const data = readEntitlementKeyData(licenseKey);
137069
+ memoizedKey = licenseKey;
137070
+ memoizedData = data;
136892
137071
  }
136893
137072
  return memoizedData;
136894
137073
  }
@@ -138254,7 +138433,7 @@ __webpack_require__.d(__webpack_exports__, {
138254
138433
  // The bundler inlines `process.env.HOT_RELEASE_DATE` to a string literal (the bare read cannot
138255
138434
  // crash); a guard is left un-inlined and compiles to `false` in browser bundles, blanking the date
138256
138435
  // and silently killing expired-key detection.
138257
- const releaseDate = "15/09/2026" || 0;
138436
+ const releaseDate = "07/10/2026" || 0;
138258
138437
  mountBrandingSurface(hotInstance, (0,_helpers_mixed__rspack_import_3._getLicenseState)(hotInstance.getSettings().licenseKey, releaseDate));
138259
138438
  }
138260
138439
 
@@ -138535,7 +138714,7 @@ const LICENSE_INFO_CLASS = 'hot-display-license-info';
138535
138714
  // inlined - it survives as `typeof process !== 'undefined' && "..."`, which is `false` in every
138536
138715
  // browser bundle, blanks the release date, and silently kills expired-key detection. That was the
138537
138716
  // 18.0.0 regression this read restores; re-adding the guard reintroduces it.
138538
- const releaseDate = "15/09/2026" || 0;
138717
+ const releaseDate = "07/10/2026" || 0;
138539
138718
  const notificationElement = (0,_helpers_mixed__rspack_import_2._injectProductInfo)({
138540
138719
  className: LICENSE_INFO_CLASS,
138541
138720
  key: licenseKey,