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.
- package/CHANGELOG.md +8 -0
- package/base.js +2 -2
- package/base.mjs +2 -2
- package/dataMap/metaManager/metaSchema.js +4 -2
- package/dataMap/metaManager/metaSchema.mjs +4 -2
- package/dist/handsontable.full.js +223 -44
- package/dist/handsontable.full.min.js +129 -129
- package/dist/handsontable.js +223 -44
- package/dist/handsontable.min.js +129 -129
- package/dist/themes/classic.js +2 -2
- package/dist/themes/classic.min.js +2 -2
- package/dist/themes/horizon.js +2 -2
- package/dist/themes/horizon.min.js +2 -2
- package/dist/themes/main.js +2 -2
- package/dist/themes/main.min.js +2 -2
- package/dist/themes/static/variables/colors/ant.js +2 -2
- package/dist/themes/static/variables/colors/ant.min.js +2 -2
- package/dist/themes/static/variables/colors/classic.js +2 -2
- package/dist/themes/static/variables/colors/classic.min.js +2 -2
- package/dist/themes/static/variables/colors/horizon.js +2 -2
- package/dist/themes/static/variables/colors/horizon.min.js +2 -2
- package/dist/themes/static/variables/colors/main.js +2 -2
- package/dist/themes/static/variables/colors/main.min.js +2 -2
- package/dist/themes/static/variables/colors/material.js +2 -2
- package/dist/themes/static/variables/colors/material.min.js +2 -2
- package/dist/themes/static/variables/colors/shadcn.js +2 -2
- package/dist/themes/static/variables/colors/shadcn.min.js +2 -2
- package/dist/themes/static/variables/density.js +2 -2
- package/dist/themes/static/variables/density.min.js +2 -2
- package/dist/themes/static/variables/helpers/iconsMap.js +2 -2
- package/dist/themes/static/variables/helpers/iconsMap.min.js +2 -2
- package/dist/themes/static/variables/icons/horizon.js +2 -2
- package/dist/themes/static/variables/icons/horizon.min.js +2 -2
- package/dist/themes/static/variables/icons/main.js +2 -2
- package/dist/themes/static/variables/icons/main.min.js +2 -2
- package/dist/themes/static/variables/sizing.js +2 -2
- package/dist/themes/static/variables/sizing.min.js +2 -2
- package/dist/themes/static/variables/tokens/classic.js +2 -2
- package/dist/themes/static/variables/tokens/classic.min.js +2 -2
- package/dist/themes/static/variables/tokens/horizon.js +2 -2
- package/dist/themes/static/variables/tokens/horizon.min.js +2 -2
- package/dist/themes/static/variables/tokens/main.js +2 -2
- package/dist/themes/static/variables/tokens/main.min.js +2 -2
- package/helpers/mixed.js +5 -5
- package/helpers/mixed.mjs +5 -5
- package/package.json +1 -1
- package/styles/handsontable.css +2 -2
- package/styles/handsontable.min.css +2 -2
- package/styles/handsontableStyles.js +1 -1
- package/styles/handsontableStyles.mjs +1 -1
- package/styles/ht-icons-horizon.min.css +2 -2
- package/styles/ht-icons-main.min.css +2 -2
- package/styles/ht-theme-classic-no-icons.min.css +2 -2
- package/styles/ht-theme-classic.min.css +2 -2
- package/styles/ht-theme-horizon-no-icons.min.css +2 -2
- package/styles/ht-theme-horizon.min.css +2 -2
- package/styles/ht-theme-main-no-icons.min.css +2 -2
- package/styles/ht-theme-main.min.css +2 -2
- package/utils/entitlementLicenseKey/constants.d.ts +7 -1
- package/utils/entitlementLicenseKey/constants.js +5 -1
- package/utils/entitlementLicenseKey/constants.mjs +6 -1
- package/utils/entitlementLicenseKey/encoding.d.ts +1 -1
- package/utils/entitlementLicenseKey/encoding.js +4 -1
- package/utils/entitlementLicenseKey/encoding.mjs +4 -1
- package/utils/entitlementLicenseKey/extractKeyData.d.ts +47 -8
- package/utils/entitlementLicenseKey/extractKeyData.js +155 -14
- package/utils/entitlementLicenseKey/extractKeyData.mjs +188 -23
- package/utils/entitlementLicenseKey/types.d.ts +5 -0
- package/utils/licenseBranding/index.js +2 -2
- package/utils/licenseBranding/index.mjs +2 -2
- package/utils/licenseNotification.js +2 -2
- package/utils/licenseNotification.mjs +2 -2
package/dist/handsontable.js
CHANGED
|
@@ -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.
|
|
29
|
-
* Release date:
|
|
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
|
|
|
@@ -17892,8 +17892,8 @@ Handsontable.hooks = _core_hooks__rspack_import_12.Hooks.getSingleton();
|
|
|
17892
17892
|
Handsontable.CellCoords = _3rdparty_walkontable_src__rspack_import_0["default"];
|
|
17893
17893
|
Handsontable.CellRange = _3rdparty_walkontable_src__rspack_import_1["default"];
|
|
17894
17894
|
Handsontable.packageName = 'handsontable';
|
|
17895
|
-
Handsontable.buildDate = "
|
|
17896
|
-
Handsontable.version = "18.1.
|
|
17895
|
+
Handsontable.buildDate = "07/10/2026 09:25:10";
|
|
17896
|
+
Handsontable.version = "18.1.2-rc2";
|
|
17897
17897
|
Handsontable.languages = {
|
|
17898
17898
|
dictionaryKeys: _i18n_registry__rspack_import_13,
|
|
17899
17899
|
getLanguageDictionary: _i18n_registry__rspack_import_14.getLanguageDictionary,
|
|
@@ -35498,8 +35498,10 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
35498
35498
|
* licenseKey: 'xxxxx-xxxxx-xxxxx-xxxxx-xxxxx', // your commercial license key
|
|
35499
35499
|
*
|
|
35500
35500
|
* // for an entitlement license key (trial, subscription, or perpetual),
|
|
35501
|
-
* // pass the whole key string exactly as you received it
|
|
35502
|
-
*
|
|
35501
|
+
* // pass the whole key string exactly as you received it – the key
|
|
35502
|
+
* // protects its text too, so the `[...]` block on its own is not a valid key;
|
|
35503
|
+
* // the text contains quotes, so use a template literal
|
|
35504
|
+
* licenseKey: `This is a Handsontable license key for Acme Corp, ... for the "Acme Portal" project. ... [eyJwcm9kdWN0cyI6...3a4f8361]`,
|
|
35503
35505
|
*
|
|
35504
35506
|
* // for non-commercial use
|
|
35505
35507
|
* licenseKey: 'non-commercial-and-evaluation',
|
|
@@ -50265,7 +50267,7 @@ function _injectProductInfo(param) {
|
|
|
50265
50267
|
}
|
|
50266
50268
|
const hasValidType = !isEmpty(key);
|
|
50267
50269
|
const isNonCommercial = typeof key === 'string' && (key.toLowerCase() === 'non-commercial-and-evaluation' || key.toLowerCase() === 'ht68e-1f2b7-47158-70b05-0842f');
|
|
50268
|
-
const hotVersion = "18.1.
|
|
50270
|
+
const hotVersion = "18.1.2-rc2";
|
|
50269
50271
|
let keyValidityDate;
|
|
50270
50272
|
let consoleMessageState = 'invalid';
|
|
50271
50273
|
let domMessageState = 'invalid';
|
|
@@ -50276,7 +50278,7 @@ function _injectProductInfo(param) {
|
|
|
50276
50278
|
domMessageState = 'valid';
|
|
50277
50279
|
} else if (hasValidType || schemaValidity) {
|
|
50278
50280
|
if (schemaValidity) {
|
|
50279
|
-
const resolvedReleaseDate = releaseDate ?? "
|
|
50281
|
+
const resolvedReleaseDate = releaseDate ?? "07/10/2026" ?? '';
|
|
50280
50282
|
const [dd, mm, yyyy] = resolvedReleaseDate.split('/').map(Number);
|
|
50281
50283
|
const releaseDays = Math.floor(Date.UTC(yyyy, mm - 1, dd) / 8.64e7);
|
|
50282
50284
|
const keyValidityDays = _extractTime(key);
|
|
@@ -50420,7 +50422,7 @@ function _injectProductInfo(param) {
|
|
|
50420
50422
|
// to the build-time value here while the emitter keeps the empty string, and the two would
|
|
50421
50423
|
// disagree about one key: the emitter reads no date at all (so the key is valid) while this reads
|
|
50422
50424
|
// the build date (so the key may be expired).
|
|
50423
|
-
const resolvedReleaseDate = releaseDate ?? "
|
|
50425
|
+
const resolvedReleaseDate = releaseDate ?? "07/10/2026" ?? '';
|
|
50424
50426
|
const [dd, mm, yyyy] = resolvedReleaseDate.split('/').map(Number);
|
|
50425
50427
|
const releaseDays = Math.floor(Date.UTC(yyyy, mm - 1, dd) / 8.64e7);
|
|
50426
50428
|
const keyValidityDays = _extractTime(normalizedKey);
|
|
@@ -50478,7 +50480,7 @@ function _injectProductInfo(param) {
|
|
|
50478
50480
|
}
|
|
50479
50481
|
// `||`, not `??`: a caller resolving the build constant in a broken way passes '' (not
|
|
50480
50482
|
// undefined), and the empty string must still fall back to the build-time value.
|
|
50481
|
-
const resolvedReleaseDate = releaseDate || "
|
|
50483
|
+
const resolvedReleaseDate = releaseDate || "07/10/2026" || 0;
|
|
50482
50484
|
const lifecycle = (0,_utils_entitlementLicenseKey__rspack_import_5.classifyEntitlement)(entitlement, {
|
|
50483
50485
|
now: Date.now(),
|
|
50484
50486
|
buildDate: _releaseDateToIsoDate(resolvedReleaseDate)
|
|
@@ -50513,7 +50515,7 @@ function _injectProductInfo(param) {
|
|
|
50513
50515
|
const params = {
|
|
50514
50516
|
daysRemaining: lifecycle.daysRemaining,
|
|
50515
50517
|
licensedUntil: lifecycle.licensedUntil ?? undefined,
|
|
50516
|
-
hotVersion: "18.1.
|
|
50518
|
+
hotVersion: "18.1.2-rc2"
|
|
50517
50519
|
};
|
|
50518
50520
|
if (channels.console && !_entitlementNotified.has(key ?? '')) {
|
|
50519
50521
|
// An unreadable key reuses the frozen legacy copy - it is the same failure, and the
|
|
@@ -118195,7 +118197,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
118195
118197
|
__webpack_require__.d(__webpack_exports__, {
|
|
118196
118198
|
"default": () => (__rspack_default_export)
|
|
118197
118199
|
});
|
|
118198
|
-
/* 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");
|
|
118200
|
+
/* 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");
|
|
118199
118201
|
|
|
118200
118202
|
|
|
118201
118203
|
},
|
|
@@ -125561,14 +125563,20 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
125561
125563
|
MILLISECONDS_PER_DAY: () => (MILLISECONDS_PER_DAY),
|
|
125562
125564
|
NO_CONSOLE_WARNS_FLAG: () => (NO_CONSOLE_WARNS_FLAG),
|
|
125563
125565
|
NO_UI_WARNS_FLAG: () => (NO_UI_WARNS_FLAG),
|
|
125566
|
+
PROSE_DIGEST_LENGTH: () => (PROSE_DIGEST_LENGTH),
|
|
125564
125567
|
TRIAL_FLAG: () => (TRIAL_FLAG)
|
|
125565
125568
|
});
|
|
125566
125569
|
/**
|
|
125567
|
-
* The length of the checksum
|
|
125570
|
+
* The length of the checksum that closes the machine-readable
|
|
125568
125571
|
* block of every entitlement license key.
|
|
125569
125572
|
*
|
|
125570
125573
|
* @type {number}
|
|
125571
125574
|
*/ const CHECKSUM_LENGTH = 128;
|
|
125575
|
+
/**
|
|
125576
|
+
* The length of the value a current key stores for its text.
|
|
125577
|
+
*
|
|
125578
|
+
* @type {number}
|
|
125579
|
+
*/ const PROSE_DIGEST_LENGTH = 64;
|
|
125572
125580
|
/**
|
|
125573
125581
|
* The two mutually exclusive date fields of a product entry. Exactly one of
|
|
125574
125582
|
* them is present:
|
|
@@ -125869,7 +125877,10 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
125869
125877
|
* @param {string} isoDate The date to parse.
|
|
125870
125878
|
* @returns {number|null}
|
|
125871
125879
|
*/ function parseIsoDateToTimestamp(isoDate) {
|
|
125872
|
-
|
|
125880
|
+
// Only a string is a date. Checked before the text test on purpose: an array
|
|
125881
|
+
// like `['2027-08-12']` stringifies to a valid date and would otherwise pass,
|
|
125882
|
+
// and an object whose `toString` is not a function would throw.
|
|
125883
|
+
const match = typeof isoDate === 'string' ? /^(\d{4})-(\d{2})-(\d{2})$/.exec(isoDate) : null;
|
|
125873
125884
|
if (match === null) {
|
|
125874
125885
|
return null;
|
|
125875
125886
|
}
|
|
@@ -125896,24 +125907,103 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
125896
125907
|
12(__unused_rspack_module, __webpack_exports__, __webpack_require__) {
|
|
125897
125908
|
__webpack_require__.r(__webpack_exports__);
|
|
125898
125909
|
__webpack_require__.d(__webpack_exports__, {
|
|
125910
|
+
canonicalizeProse: () => (canonicalizeProse),
|
|
125911
|
+
computePayloadChecksum: () => (computePayloadChecksum),
|
|
125912
|
+
computeProseDigest: () => (computeProseDigest),
|
|
125899
125913
|
defineOwn: () => (defineOwn),
|
|
125900
125914
|
extractEntitlementKeyData: () => (extractEntitlementKeyData),
|
|
125901
125915
|
getProductEntitlement: () => (getProductEntitlement)
|
|
125902
125916
|
});
|
|
125903
|
-
/* import */ var
|
|
125904
|
-
/* import */ var
|
|
125917
|
+
/* import */ var _constants__rspack_import_2 = __webpack_require__(13);
|
|
125918
|
+
/* import */ var _sha512__rspack_import_0 = __webpack_require__(14);
|
|
125905
125919
|
/* import */ var _encoding__rspack_import_1 = __webpack_require__(15);
|
|
125906
125920
|
|
|
125907
125921
|
|
|
125908
125922
|
|
|
125909
125923
|
/**
|
|
125910
|
-
* The
|
|
125911
|
-
*
|
|
125912
|
-
* split by a fixed length from the right.
|
|
125924
|
+
* The alphabets of the two parts of the machine-readable block. The second
|
|
125925
|
+
* part has a fixed length, so the two are split from the right.
|
|
125913
125926
|
*
|
|
125914
125927
|
* @type {RegExp}
|
|
125915
125928
|
*/ const ENCODED_PAYLOAD = /^[A-Za-z0-9\-_]+$/;
|
|
125916
125929
|
const CHECKSUM = /^[0-9a-f]+$/;
|
|
125930
|
+
/**
|
|
125931
|
+
* The whitespace the reader ignores, in the text and inside the block: TAB,
|
|
125932
|
+
* LF, VT, FF, CR, SPACE, NO-BREAK SPACE,
|
|
125933
|
+
* OGHAM SPACE MARK, the U+2000-U+200A spaces, LINE SEPARATOR, PARAGRAPH
|
|
125934
|
+
* SEPARATOR, NARROW NO-BREAK SPACE, MEDIUM MATHEMATICAL SPACE, IDEOGRAPHIC
|
|
125935
|
+
* SPACE, and the BOM.
|
|
125936
|
+
*
|
|
125937
|
+
* Listed explicitly instead of `\s`, whose set has changed between JavaScript
|
|
125938
|
+
* engines (U+180E) and differs in other languages (U+0085), so it matches the
|
|
125939
|
+
* key generator exactly.
|
|
125940
|
+
*
|
|
125941
|
+
* @type {RegExp}
|
|
125942
|
+
*/ const PROSE_WHITESPACE = /[\t\n\v\f\r \u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/g;
|
|
125943
|
+
/**
|
|
125944
|
+
* A line break or tab that was saved as text - a backslash followed by "n",
|
|
125945
|
+
* "r", or "t" - also ignored.
|
|
125946
|
+
*
|
|
125947
|
+
* Several places a key is stored keep a line break that way rather than as a
|
|
125948
|
+
* real one: a single-quoted or unquoted `.env` value, Docker's `--env-file`,
|
|
125949
|
+
* and many CI secret fields. The block survives that intact, so without this
|
|
125950
|
+
* a genuine key would fail only because of how it was stored. The generator
|
|
125951
|
+
* strips backslashes from every free-text field, so a key it issues never
|
|
125952
|
+
* carries one of its own.
|
|
125953
|
+
*
|
|
125954
|
+
* @type {RegExp}
|
|
125955
|
+
*/ const ESCAPED_WHITESPACE = /\\[nrt]/g;
|
|
125956
|
+
/**
|
|
125957
|
+
* Removes every escaped line break or tab (`\n`, `\r`, `\t` saved as text) and
|
|
125958
|
+
* then every whitespace character, in that order.
|
|
125959
|
+
*
|
|
125960
|
+
* The block is one long word, so a mail client or an editor that wraps the key
|
|
125961
|
+
* can break it across lines, and a `.env` file can save that line break as the
|
|
125962
|
+
* text `\n`. The block's alphabet has neither, so removing them cannot change
|
|
125963
|
+
* a genuine block.
|
|
125964
|
+
*
|
|
125965
|
+
* @param {string} text The text to remove the whitespace from.
|
|
125966
|
+
* @returns {string}
|
|
125967
|
+
*/ function removeWhitespace(text) {
|
|
125968
|
+
return text.replace(ESCAPED_WHITESPACE, '').replace(PROSE_WHITESPACE, '');
|
|
125969
|
+
}
|
|
125970
|
+
/**
|
|
125971
|
+
* Brings the human-readable text of a key to the form the key protects.
|
|
125972
|
+
*
|
|
125973
|
+
* Only the whitespace, its escaped forms, and the Unicode composition are
|
|
125974
|
+
* ignored. A mail client that rewraps the text (also between two CJK
|
|
125975
|
+
* characters or inside a word) or collapses a blank line, a `.env` file that
|
|
125976
|
+
* saves a line break as `\n`, or a system that stores "u" + U+0308 instead of
|
|
125977
|
+
* U+00FC leaves the key valid. A changed, added, or removed letter, digit, or
|
|
125978
|
+
* symbol does not.
|
|
125979
|
+
* Exported for the test key builder; the library calls `extractEntitlementKeyData`.
|
|
125980
|
+
*
|
|
125981
|
+
* @param {string} prose The text in front of the machine-readable block.
|
|
125982
|
+
* @returns {string}
|
|
125983
|
+
*/ function canonicalizeProse(prose) {
|
|
125984
|
+
// NFC runs last: a line break between a letter and its combining mark (an
|
|
125985
|
+
// NFD copy rewrapped there) has to be gone before the two can compose.
|
|
125986
|
+
return removeWhitespace(prose).normalize('NFC');
|
|
125987
|
+
}
|
|
125988
|
+
/**
|
|
125989
|
+
* Computes the checksum that closes the block. It must match the canonical
|
|
125990
|
+
* reader in every key format, so Handsontable 18.1 keeps reading newer keys.
|
|
125991
|
+
* Exported for the test key builder.
|
|
125992
|
+
*
|
|
125993
|
+
* @param {string} encodedPayload The encoded payload.
|
|
125994
|
+
* @returns {string}
|
|
125995
|
+
*/ function computePayloadChecksum(encodedPayload) {
|
|
125996
|
+
return (0,_sha512__rspack_import_0.sha512)((0,_encoding__rspack_import_1.stringToUtf8Bytes)(encodedPayload));
|
|
125997
|
+
}
|
|
125998
|
+
/**
|
|
125999
|
+
* Computes the value a current key stores for its text. Exported for the test
|
|
126000
|
+
* key builder.
|
|
126001
|
+
*
|
|
126002
|
+
* @param {string} canonicalProse The text, already passed through `canonicalizeProse`.
|
|
126003
|
+
* @returns {string}
|
|
126004
|
+
*/ function computeProseDigest(canonicalProse) {
|
|
126005
|
+
return (0,_sha512__rspack_import_0.sha512)((0,_encoding__rspack_import_1.stringToUtf8Bytes)(canonicalProse)).slice(0, _constants__rspack_import_2.PROSE_DIGEST_LENGTH);
|
|
126006
|
+
}
|
|
125917
126007
|
/**
|
|
125918
126008
|
* Reports own-property presence without trusting a payload's inherited or
|
|
125919
126009
|
* overridden `hasOwnProperty`.
|
|
@@ -125950,6 +126040,39 @@ const CHECKSUM = /^[0-9a-f]+$/;
|
|
|
125950
126040
|
*/ function isStringArray(value) {
|
|
125951
126041
|
return Array.isArray(value) && value.every((item)=>typeof item === 'string');
|
|
125952
126042
|
}
|
|
126043
|
+
/**
|
|
126044
|
+
* Freezes the value and everything nested in it. The read result is shared
|
|
126045
|
+
* between callers (see the memo below), so a caller that sorted or pushed into
|
|
126046
|
+
* it would silently rewrite what the next caller reads.
|
|
126047
|
+
*
|
|
126048
|
+
* It walks with an explicit stack, not by recursion. An unknown extra field is
|
|
126049
|
+
* kept as it is, and a key can nest one thousands of levels deep - recursion
|
|
126050
|
+
* would then overflow the call stack and throw out of the reader, where a key
|
|
126051
|
+
* is only ever allowed to read as data or as `null`.
|
|
126052
|
+
*
|
|
126053
|
+
* @param {*} value The value to freeze.
|
|
126054
|
+
* @returns {*}
|
|
126055
|
+
*/ function deepFreeze(value) {
|
|
126056
|
+
const pending = [
|
|
126057
|
+
value
|
|
126058
|
+
];
|
|
126059
|
+
while(pending.length > 0){
|
|
126060
|
+
const current = pending.pop();
|
|
126061
|
+
if (isFreezable(current)) {
|
|
126062
|
+
Object.freeze(current);
|
|
126063
|
+
Object.keys(current).forEach((key)=>pending.push(current[key]));
|
|
126064
|
+
}
|
|
126065
|
+
}
|
|
126066
|
+
return value;
|
|
126067
|
+
}
|
|
126068
|
+
/**
|
|
126069
|
+
* Narrows an unknown value to an object (or array) that is not frozen yet.
|
|
126070
|
+
*
|
|
126071
|
+
* @param {*} value The value to check.
|
|
126072
|
+
* @returns {boolean}
|
|
126073
|
+
*/ function isFreezable(value) {
|
|
126074
|
+
return value !== null && typeof value === 'object' && !Object.isFrozen(value);
|
|
126075
|
+
}
|
|
125953
126076
|
/**
|
|
125954
126077
|
* Adds an own, ordinary property.
|
|
125955
126078
|
*
|
|
@@ -125995,14 +126118,14 @@ const CHECKSUM = /^[0-9a-f]+$/;
|
|
|
125995
126118
|
if (!isStringArray(entry.capabilities)) {
|
|
125996
126119
|
return null;
|
|
125997
126120
|
}
|
|
125998
|
-
const presentDateFields =
|
|
126121
|
+
const presentDateFields = _constants__rspack_import_2.DATE_FIELDS.filter((field)=>entry[field] !== undefined);
|
|
125999
126122
|
// Exactly one date per product. "Both" and "neither" are each a different
|
|
126000
126123
|
// commercial shape that the format cannot express, so neither may be silently
|
|
126001
126124
|
// resolved by whichever field the reader happens to look at first.
|
|
126002
126125
|
if (presentDateFields.length !== 1) {
|
|
126003
126126
|
return null;
|
|
126004
126127
|
}
|
|
126005
|
-
if ((0,_encoding__rspack_import_1.parseIsoDateToTimestamp)(
|
|
126128
|
+
if ((0,_encoding__rspack_import_1.parseIsoDateToTimestamp)(entry[presentDateFields[0]]) === null) {
|
|
126006
126129
|
return null;
|
|
126007
126130
|
}
|
|
126008
126131
|
if (!isNonNegativeInteger(entry.notice) || !isNonNegativeInteger(entry.grace)) {
|
|
@@ -126027,6 +126150,41 @@ const CHECKSUM = /^[0-9a-f]+$/;
|
|
|
126027
126150
|
defineOwn(normalized, presentDateFields[0], entry[presentDateFields[0]]);
|
|
126028
126151
|
return normalized;
|
|
126029
126152
|
}
|
|
126153
|
+
/**
|
|
126154
|
+
* Reads the format version of a payload. Returns `null` for a value no
|
|
126155
|
+
* generator writes. A version newer than this reader knows is accepted, so a
|
|
126156
|
+
* build already in the field keeps reading newer keys.
|
|
126157
|
+
*
|
|
126158
|
+
* @param {object} payload The decoded payload.
|
|
126159
|
+
* @returns {number|null}
|
|
126160
|
+
*/ function readFormatVersion(payload) {
|
|
126161
|
+
// Own properties only, so a value another script put on `Object.prototype`
|
|
126162
|
+
// cannot change how a key is read.
|
|
126163
|
+
if (!hasOwn(payload, 'v')) {
|
|
126164
|
+
return 1;
|
|
126165
|
+
}
|
|
126166
|
+
if (!isNonNegativeInteger(payload.v) || payload.v < 2) {
|
|
126167
|
+
return null;
|
|
126168
|
+
}
|
|
126169
|
+
return payload.v;
|
|
126170
|
+
}
|
|
126171
|
+
/**
|
|
126172
|
+
* Checks that the text of a current key is intact and that nothing but
|
|
126173
|
+
* whitespace follows its block. A key always states its terms, so the bare
|
|
126174
|
+
* block is rejected. A key in the earlier format is read the way Handsontable
|
|
126175
|
+
* 18.1 reads it.
|
|
126176
|
+
*
|
|
126177
|
+
* @param {object} payload The decoded payload.
|
|
126178
|
+
* @param {string} prose The text in front of the block.
|
|
126179
|
+
* @param {string} textAfterBlock The text after the block.
|
|
126180
|
+
* @returns {boolean}
|
|
126181
|
+
*/ function coversItsText(payload, prose, textAfterBlock) {
|
|
126182
|
+
if (canonicalizeProse(textAfterBlock) !== '') {
|
|
126183
|
+
return false;
|
|
126184
|
+
}
|
|
126185
|
+
const canonicalProse = canonicalizeProse(prose);
|
|
126186
|
+
return canonicalProse !== '' && hasOwn(payload, 'prose') && typeof payload.prose === 'string' && computeProseDigest(canonicalProse) === payload.prose;
|
|
126187
|
+
}
|
|
126030
126188
|
/**
|
|
126031
126189
|
* Reads and verifies one key. Split out from the memoized public entry point so
|
|
126032
126190
|
* the memo can wrap every exit path uniformly.
|
|
@@ -126044,16 +126202,16 @@ const CHECKSUM = /^[0-9a-f]+$/;
|
|
|
126044
126202
|
if (blockEnd === -1) {
|
|
126045
126203
|
return null;
|
|
126046
126204
|
}
|
|
126047
|
-
const content = licenseKey.slice(blockStart + 1, blockEnd);
|
|
126048
|
-
if (content.length <=
|
|
126205
|
+
const content = removeWhitespace(licenseKey.slice(blockStart + 1, blockEnd));
|
|
126206
|
+
if (content.length <= _constants__rspack_import_2.CHECKSUM_LENGTH) {
|
|
126049
126207
|
return null;
|
|
126050
126208
|
}
|
|
126051
|
-
const encodedPayload = content.slice(0, -
|
|
126052
|
-
const checksum = content.slice(-
|
|
126209
|
+
const encodedPayload = content.slice(0, -_constants__rspack_import_2.CHECKSUM_LENGTH);
|
|
126210
|
+
const checksum = content.slice(-_constants__rspack_import_2.CHECKSUM_LENGTH);
|
|
126053
126211
|
if (!ENCODED_PAYLOAD.test(encodedPayload) || !CHECKSUM.test(checksum)) {
|
|
126054
126212
|
return null;
|
|
126055
126213
|
}
|
|
126056
|
-
if ((
|
|
126214
|
+
if (computePayloadChecksum(encodedPayload) !== checksum) {
|
|
126057
126215
|
return null;
|
|
126058
126216
|
}
|
|
126059
126217
|
const payloadJson = (0,_encoding__rspack_import_1.base64ToString)(encodedPayload);
|
|
@@ -126069,6 +126227,13 @@ const CHECKSUM = /^[0-9a-f]+$/;
|
|
|
126069
126227
|
if (!isPlainObject(payload) || !isPlainObject(payload.products)) {
|
|
126070
126228
|
return null;
|
|
126071
126229
|
}
|
|
126230
|
+
const version = readFormatVersion(payload);
|
|
126231
|
+
if (version === null) {
|
|
126232
|
+
return null;
|
|
126233
|
+
}
|
|
126234
|
+
if (version >= 2 && !coversItsText(payload, licenseKey.slice(0, blockStart), licenseKey.slice(blockEnd + 1))) {
|
|
126235
|
+
return null;
|
|
126236
|
+
}
|
|
126072
126237
|
const products = {};
|
|
126073
126238
|
const entries = payload.products;
|
|
126074
126239
|
let malformed = false;
|
|
@@ -126083,40 +126248,54 @@ const CHECKSUM = /^[0-9a-f]+$/;
|
|
|
126083
126248
|
if (malformed) {
|
|
126084
126249
|
return null;
|
|
126085
126250
|
}
|
|
126086
|
-
return {
|
|
126251
|
+
return deepFreeze({
|
|
126252
|
+
version,
|
|
126087
126253
|
products
|
|
126088
|
-
};
|
|
126254
|
+
});
|
|
126089
126255
|
}
|
|
126090
126256
|
// The license key is read twice per grid init - the bottom bar
|
|
126091
126257
|
// (`initLicenseNotification`) and the branding UI (`initLicenseBranding`) each resolve the license
|
|
126092
|
-
// state - and reading runs the full
|
|
126093
|
-
// the second read free. The returned data is
|
|
126258
|
+
// state - and reading runs the full verification and decoding. A one-entry memo on the key makes
|
|
126259
|
+
// the second read free. The returned data is frozen, as in the canonical reader, so sharing one
|
|
126094
126260
|
// object is safe.
|
|
126095
126261
|
let memoizedKey = null;
|
|
126096
126262
|
let memoizedData = null;
|
|
126097
126263
|
/**
|
|
126098
126264
|
* Extracts the machine-readable data from an entitlement license key.
|
|
126099
126265
|
*
|
|
126100
|
-
* The
|
|
126101
|
-
*
|
|
126102
|
-
*
|
|
126266
|
+
* The key is verified first, so the returned data is guaranteed to belong to
|
|
126267
|
+
* an intact key. A malformed or tampered key reads as `null` - reporting an
|
|
126268
|
+
* invalid key is the caller's job, not this function's.
|
|
126269
|
+
*
|
|
126270
|
+
* A current key protects its text as well: edited or removed text (the bare
|
|
126271
|
+
* `[...]` block), or anything but whitespace after the block, reads as `null`.
|
|
126272
|
+
* A key in the earlier format reads the way Handsontable 18.1 reads it. The
|
|
126273
|
+
* verification rules are those of the canonical reader in the private
|
|
126274
|
+
* `license-key` repository.
|
|
126103
126275
|
*
|
|
126104
|
-
*
|
|
126105
|
-
*
|
|
126106
|
-
*
|
|
126107
|
-
*
|
|
126108
|
-
* it makes the key unreadable, exactly as it does for the key generator.
|
|
126276
|
+
* The caller passes the whole key. The text is never parsed, and its
|
|
126277
|
+
* whitespace and Unicode composition are ignored, so rewrapped or re-pasted
|
|
126278
|
+
* text still validates. Whitespace inside the block is ignored too, so a
|
|
126279
|
+
* block wrapped by a mail client still validates.
|
|
126109
126280
|
*
|
|
126110
126281
|
* Unknown products, capability tokens and flags are all tolerated, so nothing
|
|
126111
126282
|
* about reading a key depends on the commercial vocabulary.
|
|
126112
126283
|
*
|
|
126284
|
+
* The result is frozen. Copy an array before sorting or changing it.
|
|
126285
|
+
*
|
|
126113
126286
|
* @param {string} licenseKey The license key to extract the data from.
|
|
126114
126287
|
* @returns {EntitlementKeyData|null}
|
|
126115
126288
|
*/ function extractEntitlementKeyData(licenseKey) {
|
|
126116
|
-
|
|
126117
|
-
|
|
126118
|
-
|
|
126119
|
-
|
|
126289
|
+
if (typeof licenseKey !== 'string') {
|
|
126290
|
+
return null;
|
|
126291
|
+
}
|
|
126292
|
+
if (licenseKey !== memoizedKey) {
|
|
126293
|
+
// Read first, remember second. Were the key remembered before the read,
|
|
126294
|
+
// a read that throws would leave the new key paired with the previous
|
|
126295
|
+
// key's data, and the next read of the new key would return it.
|
|
126296
|
+
const data = readEntitlementKeyData(licenseKey);
|
|
126297
|
+
memoizedKey = licenseKey;
|
|
126298
|
+
memoizedData = data;
|
|
126120
126299
|
}
|
|
126121
126300
|
return memoizedData;
|
|
126122
126301
|
}
|
|
@@ -127476,7 +127655,7 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
127476
127655
|
// The bundler inlines `process.env.HOT_RELEASE_DATE` to a string literal (the bare read cannot
|
|
127477
127656
|
// crash); a guard is left un-inlined and compiles to `false` in browser bundles, blanking the date
|
|
127478
127657
|
// and silently killing expired-key detection.
|
|
127479
|
-
const releaseDate = "
|
|
127658
|
+
const releaseDate = "07/10/2026" || 0;
|
|
127480
127659
|
mountBrandingSurface(hotInstance, (0,_helpers_mixed__rspack_import_3._getLicenseState)(hotInstance.getSettings().licenseKey, releaseDate));
|
|
127481
127660
|
}
|
|
127482
127661
|
|
|
@@ -127755,7 +127934,7 @@ const LICENSE_INFO_CLASS = 'hot-display-license-info';
|
|
|
127755
127934
|
// inlined - it survives as `typeof process !== 'undefined' && "..."`, which is `false` in every
|
|
127756
127935
|
// browser bundle, blanks the release date, and silently kills expired-key detection. That was the
|
|
127757
127936
|
// 18.0.0 regression this read restores; re-adding the guard reintroduces it.
|
|
127758
|
-
const releaseDate = "
|
|
127937
|
+
const releaseDate = "07/10/2026" || 0;
|
|
127759
127938
|
const notificationElement = (0,_helpers_mixed__rspack_import_2._injectProductInfo)({
|
|
127760
127939
|
className: LICENSE_INFO_CLASS,
|
|
127761
127940
|
key: licenseKey,
|