diff --git a/.github/workflows/backend-tests.yml b/.github/workflows/backend-tests.yml index ee641f075..432cc9732 100644 --- a/.github/workflows/backend-tests.yml +++ b/.github/workflows/backend-tests.yml @@ -23,7 +23,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: "18" + node-version: "22" check-latest: true cache: 'yarn' diff --git a/.github/workflows/build-prod.yml b/.github/workflows/build-prod.yml index cd1ff8c28..526a50342 100644 --- a/.github/workflows/build-prod.yml +++ b/.github/workflows/build-prod.yml @@ -24,7 +24,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: "18" + node-version: "22" check-latest: true cache: 'yarn' diff --git a/.github/workflows/convert-cci-list.yml b/.github/workflows/convert-cci-list.yml new file mode 100644 index 000000000..8671bfdc2 --- /dev/null +++ b/.github/workflows/convert-cci-list.yml @@ -0,0 +1,60 @@ +name: Convert CCI List XML to JSON + +on: + push: + branches: ['master'] + + # Run this workflow on the 1st day at 00:00 every month + schedule: + - cron: '0 0 1 * *' + +env: + # This URL is super brittle with how links constantly get changed. + CCI_LIST_ZIP_URL: https://dl.dod.cyber.mil/wp-content/uploads/stigs/zip/U_CCI_List.zip + +jobs: + convert-cci-list: + runs-on: ubuntu-22.04 + steps: + - name: Checkout the code + uses: actions/checkout@v4 + - run: git fetch --prune --unshallow + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '18' + check-latest: true + cache: 'yarn' + + - name: Install project dependencies + run: yarn install --frozen-lockfile + + - name: Download CCI List + run: | + curl -o U_CCI_List.zip $CCI_LIST_ZIP_URL && unzip U_CCI_List.zip + + - name: Get publish date of CCI List + id: publish-date + uses: mavrosxristoforos/get-xml-info@2.0 + with: + xml-file: 'U_CCI_List.xml' + xpath: '/*[local-name()="cci_list"]/*[local-name()="metadata"]/*[local-name()="publishdate"]' + namespaces: '{"ns": "http://iase.disa.mil/cci"}' + + - name: Set directory environment variables for next step + run: | + echo "ROOT_DIRECTORY=$(pwd)" >> $GITHUB_ENV + echo "OUTPUT_DIRECTORY=$(pwd)/libs/hdf-converters/src/mappings" >> $GITHUB_ENV + + - name: Convert CCI List XML to CCI->NIST, CCI->Definitions, and NIST->CCI JSON files + run: yarn workspace @mitre/hdf-converters cciListXml2json -i $ROOT_DIRECTORY/U_CCI_List.xml -n $OUTPUT_DIRECTORY/U_CCI_List.nist.json -d $OUTPUT_DIRECTORY/U_CCI_List.defs.json -c $OUTPUT_DIRECTORY/U_CCI_List.cci.json + + - name: Commit changes to produced JSON files + run: | + git config --local user.email "saf@groups.mitre.org" + git config --local user.name "MITRE SAF Automation" + git add $OUTPUT_DIRECTORY/U_CCI_List.nist.json $OUTPUT_DIRECTORY/U_CCI_List.defs.json $OUTPUT_DIRECTORY/U_CCI_List.cci.json + git commit -sm "Update CCI List to the current NIST and definition mappings as of $DATETIME" + git push + env: + DATETIME: ${{steps.publish-date.outputs.info}} diff --git a/.github/workflows/e2e-ui-tests.yml b/.github/workflows/e2e-ui-tests.yml index c3e917954..02155db82 100644 --- a/.github/workflows/e2e-ui-tests.yml +++ b/.github/workflows/e2e-ui-tests.yml @@ -39,7 +39,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: "18" + node-version: "22" check-latest: true cache: 'yarn' diff --git a/.github/workflows/frontend-tests.yml b/.github/workflows/frontend-tests.yml index 176d87055..41280c24d 100644 --- a/.github/workflows/frontend-tests.yml +++ b/.github/workflows/frontend-tests.yml @@ -23,7 +23,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: "18" + node-version: "22" check-latest: true cache: 'yarn' diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml index 8bb2dc680..2ac776102 100644 --- a/.github/workflows/gh-pages.yml +++ b/.github/workflows/gh-pages.yml @@ -14,7 +14,7 @@ jobs: - name: setup node uses: actions/setup-node@v4 with: - node-version: "18" + node-version: "22" check-latest: true cache: 'yarn' diff --git a/.github/workflows/hdfconverter-tests.yml b/.github/workflows/hdfconverter-tests.yml index 711edc184..ca197f6f3 100644 --- a/.github/workflows/hdfconverter-tests.yml +++ b/.github/workflows/hdfconverter-tests.yml @@ -29,7 +29,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: "18" + node-version: "22" check-latest: true cache: 'yarn' diff --git a/.github/workflows/inspecjs-tests.yml b/.github/workflows/inspecjs-tests.yml index b7d52dc9e..ae7a8111e 100644 --- a/.github/workflows/inspecjs-tests.yml +++ b/.github/workflows/inspecjs-tests.yml @@ -19,7 +19,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: "18" + node-version: "22" check-latest: true cache: 'yarn' diff --git a/.github/workflows/linter.yml b/.github/workflows/linter.yml index 468736528..fd5c6f618 100644 --- a/.github/workflows/linter.yml +++ b/.github/workflows/linter.yml @@ -23,7 +23,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: "18" + node-version: "22" check-latest: true cache: 'yarn' diff --git a/.github/workflows/push-to-npm.yml b/.github/workflows/push-to-npm.yml index 1020f6418..838a36363 100644 --- a/.github/workflows/push-to-npm.yml +++ b/.github/workflows/push-to-npm.yml @@ -13,7 +13,7 @@ jobs: - name: setup node uses: actions/setup-node@v4 with: - node-version: "18" + node-version: "22" check-latest: true registry-url: 'https://registry.npmjs.org' cache: 'yarn' @@ -46,7 +46,7 @@ jobs: - uses: actions/setup-node@v4 if: always() with: - node-version: "18" + node-version: "22" check-latest: true registry-url: 'https://npm.pkg.github.com' cache: 'yarn' diff --git a/.nvmrc b/.nvmrc index 3c032078a..2bd5a0a98 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -18 +22 diff --git a/CHANGELOG b/CHANGELOG index 4a22103fb..3689cc30d 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,96 @@ +v2.11.1 +- Update to node22 - requires nodejs 22 at minimum now @Amndeep7 (#6440) + +## Dependency Updates + +- Bump eslint-plugin-vue from 9.31.0 to 9.32.0 @dependabot (#6439) +- Bump @aws-sdk/client-s3 from 3.701.0 to 3.703.0 @dependabot (#6438) +- Bump @types/node from 22.10.0 to 22.10.1 @dependabot (#6433) +- Bump @nestjs/common from 10.4.11 to 10.4.12 @dependabot (#6437) +- Bump @nestjs/platform-express from 10.4.11 to 10.4.12 @dependabot (#6434) +- Bump @nestjs/core from 10.4.11 to 10.4.12 @dependabot (#6435) +- Bump @nestjs/testing from 10.4.11 to 10.4.12 @dependabot (#6436) +- Bump @nestjs/testing from 10.4.9 to 10.4.11 @dependabot (#6429) +- Bump @aws-sdk/client-config-service from 3.699.0 to 3.702.0 @dependabot (#6430) +- Bump @nestjs/common from 10.4.9 to 10.4.11 @dependabot (#6431) +- Bump @nestjs/platform-express from 10.4.9 to 10.4.11 @dependabot (#6432) +- Bump @nestjs/core from 10.4.9 to 10.4.11 @dependabot (#6428) +- Bump @aws-sdk/client-s3 from 3.700.0 to 3.701.0 @dependabot (#6424) +- Bump prettier from 3.3.3 to 3.4.1 @dependabot (#6425) +- Bump @types/node from 22.9.4 to 22.10.0 @dependabot (#6427) +- Bump @types/express-session from 1.18.0 to 1.18.1 @dependabot (#6426) +- Bump @nestjs/core from 10.4.8 to 10.4.9 @dependabot (#6420) +- Bump oauth2-mock-server from 7.1.2 to 7.2.0 @dependabot (#6418) +- Bump @nestjs/common from 10.4.8 to 10.4.9 @dependabot (#6419) +- Bump @nestjs/testing from 10.4.8 to 10.4.9 @dependabot (#6416) +- Bump @nestjs/platform-express from 10.4.8 to 10.4.9 @dependabot (#6422) +- Bump @aws-sdk/client-s3 from 3.698.0 to 3.700.0 @dependabot (#6421) +- Bump @types/node from 22.9.2 to 22.9.4 @dependabot (#6423) +- Bump axios from 1.7.7 to 1.7.8 @dependabot (#6415) +- Bump @types/node from 22.9.1 to 22.9.2 @dependabot (#6411) +- Bump @aws-sdk/client-config-service from 3.696.0 to 3.699.0 @dependabot (#6410) +- Bump @aws-sdk/client-s3 from 3.697.0 to 3.698.0 @dependabot (#6405) +- Bump csv-stringify from 6.5.1 to 6.5.2 @dependabot (#6407) +- Bump dotenv-cli from 7.4.3 to 7.4.4 @dependabot (#6406) +- Bump @aws-sdk/client-s3 from 3.696.0 to 3.697.0 @dependabot (#6404) +- Bump @nestjs/cli from 10.4.7 to 10.4.8 @dependabot (#6403) +- Bump cypress from 13.15.2 to 13.16.0 @dependabot (#6400) +- Bump @aws-sdk/client-s3 from 3.691.0 to 3.696.0 @dependabot (#6397) +- Bump @types/node from 22.9.0 to 22.9.1 @dependabot (#6399) +- Bump @aws-sdk/client-config-service from 3.693.0 to 3.696.0 @dependabot (#6398) +- Bump @nestjs/testing from 10.4.7 to 10.4.8 @dependabot (#6394) +- Bump yaml from 2.6.0 to 2.6.1 @dependabot (#6396) +- Bump dotenv-cli from 7.4.2 to 7.4.3 @dependabot (#6395) +- Bump @nestjs/common from 10.4.7 to 10.4.8 @dependabot (#6390) +- Bump @nestjs/platform-express from 10.4.7 to 10.4.8 @dependabot (#6389) +- Bump @aws-sdk/client-config-service from 3.692.0 to 3.693.0 @dependabot (#6391) +- Bump @nestjs/core from 10.4.7 to 10.4.8 @dependabot (#6388) +- Bump @aws-sdk/client-config-service from 3.687.0 to 3.692.0 @dependabot (#6387) +- Bump @aws-sdk/client-sts from 3.691.0 to 3.692.0 @dependabot (#6385) +- Bump tailwindcss from 3.4.14 to 3.4.15 @dependabot (#6384) +- Bump @smithy/node-http-handler from 3.2.5 to 3.3.1 @dependabot (#6383) +- Bump winston from 3.16.0 to 3.17.0 @dependabot (#6376) +- Bump @aws-sdk/client-s3 from 3.689.0 to 3.691.0 @dependabot (#6380) +- Bump eslint-plugin-vue from 9.30.0 to 9.31.0 @dependabot (#6377) +- Bump @aws-sdk/client-s3 from 3.688.0 to 3.689.0 @dependabot (#6379) +- Bump uuid from 11.0.2 to 11.0.3 @dependabot (#6378) +- Bump @aws-sdk/client-s3 from 3.685.0 to 3.688.0 @dependabot (#6375) +- Bump @aws-sdk/client-config-service from 3.682.0 to 3.687.0 @dependabot (#6372) +- Bump @types/vuelidate from 0.7.21 to 0.7.22 @dependabot (#6369) +- Bump @nestjs/testing from 10.4.6 to 10.4.7 @dependabot (#6365) +- Bump @nestjs/common from 10.4.6 to 10.4.7 @dependabot (#6367) +- Bump @nestjs/platform-express from 10.4.6 to 10.4.7 @dependabot (#6366) +- Bump @nestjs/core from 10.4.6 to 10.4.7 @dependabot (#6364) +- Bump cypress from 13.15.1 to 13.15.2 @dependabot (#6363) +- Bump @nestjs/cli from 10.4.5 to 10.4.7 @dependabot (#6361) +- Bump @types/node from 22.8.6 to 22.9.0 @dependabot (#6360) +- Bump winston from 3.15.0 to 3.16.0 @dependabot (#6357) +- Bump @aws-sdk/client-s3 from 3.682.0 to 3.685.0 @dependabot (#6358) +- Bump typedoc from 0.26.10 to 0.26.11 @dependabot (#6356) +- Bump lerna from 8.1.8 to 8.1.9 @dependabot (#6353) +- Bump mock-fs from 5.4.0 to 5.4.1 @dependabot (#6354) +- Bump @types/node from 22.8.4 to 22.8.6 @dependabot (#6355) +- Bump core-js from 3.38.1 to 3.39.0 @dependabot (#6350) +- Bump sass-loader from 16.0.2 to 16.0.3 @dependabot (#6351) +- Bump @casl/ability from 6.7.1 to 6.7.2 @dependabot (#6349) +- Bump @aws-sdk/client-config-service from 3.679.0 to 3.682.0 @dependabot (#6346) +- Bump eslint-plugin-vue from 9.29.1 to 9.30.0 @dependabot (#6338) +- Bump @types/node from 22.8.1 to 22.8.4 @dependabot (#6345) +- Bump @types/lodash from 4.17.12 to 4.17.13 @dependabot (#6343) +- Bump uuid from 10.0.0 to 11.0.2 @dependabot (#6341) +- Bump @aws-sdk/client-s3 from 3.679.0 to 3.682.0 @dependabot (#6344) +- Bump tsx from 4.19.1 to 4.19.2 @dependabot (#6337) +- Bump @nestjs/schematics from 10.2.2 to 10.2.3 @dependabot (#6339) +- Bump @types/node from 22.7.9 to 22.8.1 @dependabot (#6333) +- Bump elliptic from 6.5.7 to 6.6.0 @dependabot (#6335) +- Bump rexml from 3.3.6 to 3.3.9 in /libs/inspecjs @dependabot (#6334) +- Bump sequelize from 6.37.4 to 6.37.5 @dependabot (#6332) +- Bump @aws-sdk/client-config-service from 3.678.0 to 3.679.0 @dependabot (#6328) +- Bump @aws-sdk/client-s3 from 3.678.0 to 3.679.0 @dependabot (#6329) +- Bump pg from 8.13.0 to 8.13.1 @dependabot (#6327) +- Bump cypress from 13.15.0 to 13.15.1 @dependabot (#6326) +- Bump @types/prismjs from 1.26.4 to 1.26.5 @dependabot (#6320) + v2.10.20 - Dependency track mapper @Amndeep7 (#6307) diff --git a/Dockerfile b/Dockerfile index ee28db491..b73476907 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -ARG BASE_CONTAINER=registry.access.redhat.com/ubi8/nodejs-18-minimal:1 +ARG BASE_CONTAINER=registry.access.redhat.com/ubi9/nodejs-22-minimal:1 FROM $BASE_CONTAINER AS builder diff --git a/Dockerfile.lite b/Dockerfile.lite index 5a248acba..3dbe0b1f8 100644 --- a/Dockerfile.lite +++ b/Dockerfile.lite @@ -1,4 +1,4 @@ -ARG BUILD_CONTAINER=registry.access.redhat.com/ubi8/nodejs-18-minimal:1 +ARG BUILD_CONTAINER=registry.access.redhat.com/ubi9/nodejs-22-minimal:1 ARG BASE_CONTAINER=nginx:alpine FROM $BUILD_CONTAINER AS builder diff --git a/VERSION b/VERSION index 51efd9233..d6509f096 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -v2.10.20 +v2.11.1 diff --git a/apps/backend/package.json b/apps/backend/package.json index 4f1752823..6aaa98516 100644 --- a/apps/backend/package.json +++ b/apps/backend/package.json @@ -1,6 +1,6 @@ { "name": "heimdall-server", - "version": "2.10.20", + "version": "2.11.0", "description": "", "license": "Apache-2.0", "author": "", diff --git a/apps/backend/src/config/config.service.spec.ts b/apps/backend/src/config/config.service.spec.ts index 7368c9fd7..ddef55c38 100644 --- a/apps/backend/src/config/config.service.spec.ts +++ b/apps/backend/src/config/config.service.spec.ts @@ -122,7 +122,7 @@ describe('Config Service', () => { }) }); expect(() => new ConfigService()).toThrowError( - "EACCES: permission denied, open '.env'" + "EACCES, permission denied '.env'" ); }); diff --git a/apps/frontend/package.json b/apps/frontend/package.json index 41d79baac..afe72e135 100644 --- a/apps/frontend/package.json +++ b/apps/frontend/package.json @@ -1,7 +1,7 @@ { "name": "@mitre/heimdall-lite", - "version": "2.10.20", - "description": "Heimdall-Lite 2 is a JavaScript based security results viewer and review tool supporting multiple security results formats, such as: InSpec, SonarQube, OWASP-Zap and Fortify which you can load locally or from S3 and other data sources.", + "version": "2.11.1", + "description": "Heimdall-Lite 2 is a JavaScript based security results viewer and review tool supporting multiple security results formats, such as: InSpec, SonarQube, OWASP-Zap, and Fortify which you can load locally or from S3 and other data sources.", "repository": { "type": "git", "url": "https://github.com/mitre/heimdall2" @@ -76,7 +76,7 @@ "file-saver": "^2.0.2", "highlight.js": "^11.0.0", "html-loader": "^5.0.0", - "inspecjs": "^2.10.16", + "inspecjs": "^2.11.0", "lodash": "4.17.21", "lru-cache": "^10.1.0", "luxon": "^3.0.1", @@ -85,7 +85,7 @@ "prismjs": "^1.29.0", "rimraf": "^5.0.0", "roboto-fontface": "*", - "sanitize-html": "~2.13.0", + "sanitize-html": "~2.14.0", "sass": "~1.32.6", "sass-loader": "^16.0.0", "search-query-parser": "^1.5.5", @@ -133,7 +133,7 @@ "prismjs": "1.29.0" }, "engines": { - "node": "^18.19.0" + "node": ">=22" }, "branch": "/blob/master/", "changelog": "/releases", diff --git a/apps/frontend/public/static/export/style.css b/apps/frontend/public/static/export/style.css index f0a826f9d..fab184e44 100644 --- a/apps/frontend/public/static/export/style.css +++ b/apps/frontend/public/static/export/style.css @@ -1 +1 @@ -*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::-ms-backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.14 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid #e5e7eb;-webkit-box-sizing:border-box;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{-webkit-text-size-adjust:100%;-webkit-font-feature-settings:normal;font-feature-settings:normal;-webkit-tap-highlight-color:transparent;font-family:Roboto,sans-serif;font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{-webkit-font-feature-settings:normal;font-feature-settings:normal;font-family:ui-monospace,monospace;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{-webkit-font-feature-settings:inherit;font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#9ca3af;opacity:1}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#9ca3af;opacity:1}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]:where(:not([hidden=until-found])){display:none}input[type=range]::-webkit-slider-thumb{appearance:none;-moz-appearance:none;-webkit-appearance:none;background:#3b71ca;border:0;border-radius:9999px;cursor:pointer;height:1rem;width:1rem}input[type=range]:disabled::-webkit-slider-thumb,input[type=range]:disabled:focus::-webkit-slider-thumb{background:#a3a3a3}input[type=range]:disabled:active::-webkit-slider-thumb{background:#a3a3a3}input[type=range]::-moz-range-thumb{appearance:none;-moz-appearance:none;-webkit-appearance:none;background:#3b71ca;border:0;border-radius:9999px;cursor:pointer;height:1rem;width:1rem}input[type=range]:disabled::-moz-range-thumb{background:#a3a3a3}input[type=range]::-moz-range-progress{background:#3061af}input[type=range]::-ms-fill-lower{background:#3061af}input[type=range]:focus{outline:none}input[type=range]:focus::-webkit-slider-thumb{background:#3061af}input[type=range]:active::-webkit-slider-thumb{background:#285192}.collapse{visibility:collapse}.relative{position:relative}.top-0{top:0}.z-10{z-index:10}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-6{margin-left:1.5rem;margin-right:1.5rem}.my-1{margin-bottom:.25rem;margin-top:.25rem}.my-2{margin-bottom:.5rem;margin-top:.5rem}.my-3{margin-bottom:.75rem;margin-top:.75rem}.my-4{margin-bottom:1rem;margin-top:1rem}.-mr-1{margin-right:-.25rem}.mb-0{margin-bottom:0}.mb-2{margin-bottom:.5rem}.ml-auto{margin-left:auto}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.block{display:block}.inline-block{display:inline-block}.flex{display:-webkit-box;display:-ms-flexbox;display:flex}.inline-flex{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-1{height:.25rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.w-1\/2{width:50%}.w-24{width:6rem}.w-28{width:7rem}.w-32{width:8rem}.w-36{width:9rem}.w-40{width:10rem}.w-5{width:1.25rem}.w-56{width:14rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-full{width:100%}.min-w-full{min-width:100%}.shrink{-ms-flex-negative:1;flex-shrink:1}.shrink-0{-ms-flex-negative:0;flex-shrink:0}.border-separate{border-collapse:separate}.border-spacing-x-2{--tw-border-spacing-x:0.5rem;border-spacing:var(--tw-border-spacing-x) var(--tw-border-spacing-y)}.rotate-\[-180deg\]{--tw-rotate:-180deg;-webkit-transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.grid-flow-row{grid-auto-flow:row}.grid-flow-col{grid-auto-flow:column}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-wrap{-ms-flex-wrap:wrap;flex-wrap:wrap}.items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.justify-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.gap-x-2{-webkit-column-gap:.5rem;-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-6{-webkit-column-gap:1.5rem;-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-y-1{row-gap:.25rem}.gap-y-2{row-gap:.5rem}.overflow-hidden{overflow:hidden}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-xl{border-radius:.75rem}.rounded-t-xl{border-top-left-radius:.75rem;border-top-right-radius:.75rem}.border{border-width:1px}.border-4{border-width:4px}.border-b{border-bottom-width:1px}.border-r{border-right-width:1px}.border-black{--tw-border-opacity:1;border-color:rgb(0 0 0/var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.bg-gray-300{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.fill-\[\#336dec\]{fill:#336dec}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.py-4{padding-bottom:1rem;padding-top:1rem}.py-6{padding-top:1.5rem}.pb-6,.py-6{padding-bottom:1.5rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pl-8{padding-left:2rem}.pr-1{padding-right:.25rem}.pt-1{padding-top:.25rem}.text-left{text-align:left}.text-center{text-align:center}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity))}.underline{text-decoration-line:underline}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);-webkit-box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.transition{-webkit-transition-duration:.15s;transition-duration:.15s;-webkit-transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform,-webkit-filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform,-webkit-filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-box-shadow,-webkit-transform,-webkit-filter,-webkit-backdrop-filter;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{-webkit-transition-duration:.15s;transition-duration:.15s;-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-200{-webkit-transition-duration:.2s;transition-duration:.2s}.ease-in-out{-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1)}.\[overflow-anchor\:none\]{overflow-anchor:none}.odd\:bg-gray-100:nth-child(odd){--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.even\:bg-white:nth-child(2n){--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.hover\:z-\[2\]:hover{z-index:2}.focus\:z-\[3\]:focus{z-index:3}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.group[data-te-collapse-collapsed] .group-\[\[data-te-collapse-collapsed\]\]\:mr-0{margin-right:0}.group[data-te-collapse-collapsed] .group-\[\[data-te-collapse-collapsed\]\]\:rotate-0{--tw-rotate:0deg;-webkit-transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group[data-te-collapse-collapsed] .group-\[\[data-te-collapse-collapsed\]\]\:fill-\[\#212529\]{fill:#212529}@media (prefers-reduced-motion:reduce){.motion-reduce\:transition-none{-webkit-transition-property:none;transition-property:none}}@media (min-width:640px){.sm\:block{display:block}.sm\:grid{display:grid}.sm\:hidden{display:none}.sm\:w-40{width:10rem}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-\[10\%_90\%\]{grid-template-columns:10% 90%}.sm\:break-words{overflow-wrap:break-word}.sm\:font-normal{font-weight:400}.sm\:no-underline{text-decoration-line:none}}@media (min-width:768px){.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width:1024px){.lg\:sticky{position:sticky}.lg\:block{display:block}.lg\:grid{display:grid}.lg\:hidden{display:none}.lg\:w-32{width:8rem}.lg\:w-36{width:9rem}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:break-normal{overflow-wrap:normal;word-break:normal}.lg\:pl-9{padding-left:2.25rem}}@media (min-width:1280px){.xl\:w-52{width:13rem}.xl\:grid-flow-col{grid-auto-flow:column}.xl\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media print{.print\:block{display:block}.print\:hidden{display:none}.print\:border-none{border-style:none}.print\:border-black{--tw-border-opacity:1;border-color:rgb(0 0 0/var(--tw-border-opacity))}.print\:bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.print\:text-left{text-align:left}.print\:text-2xl{font-size:1.5rem;line-height:2rem}}.\[\&\:not\(\[data-te-collapse-collapsed\]\)\]\:bg-blue-200:not([data-te-collapse-collapsed]){--tw-bg-opacity:1;background-color:rgb(191 219 254/var(--tw-bg-opacity))}.\[\&\:not\(\[data-te-collapse-collapsed\]\)\]\:text-blue-900:not([data-te-collapse-collapsed]){--tw-text-opacity:1;color:rgb(30 58 138/var(--tw-text-opacity))}.\[\&\:not\(\[data-te-collapse-collapsed\]\)\]\:\[box-shadow\:inset_0_-1px_0_rgba\(229\2c 231\2c 235\)\]:not([data-te-collapse-collapsed]){-webkit-box-shadow:inset 0 -1px 0 #e5e7eb;box-shadow:inset 0 -1px 0 #e5e7eb}.\[\&\[data-te-dropdown-show\]\]\:grid[data-te-dropdown-show]{display:grid} \ No newline at end of file +*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::-ms-backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.15 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid #e5e7eb;-webkit-box-sizing:border-box;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{-webkit-text-size-adjust:100%;-webkit-font-feature-settings:normal;font-feature-settings:normal;-webkit-tap-highlight-color:transparent;font-family:Roboto,sans-serif;font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{-webkit-font-feature-settings:normal;font-feature-settings:normal;font-family:ui-monospace,monospace;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{-webkit-font-feature-settings:inherit;font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#9ca3af;opacity:1}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#9ca3af;opacity:1}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]:where(:not([hidden=until-found])){display:none}input[type=range]::-webkit-slider-thumb{appearance:none;-moz-appearance:none;-webkit-appearance:none;background:#3b71ca;border:0;border-radius:9999px;cursor:pointer;height:1rem;width:1rem}input[type=range]:disabled::-webkit-slider-thumb,input[type=range]:disabled:focus::-webkit-slider-thumb{background:#a3a3a3}input[type=range]:disabled:active::-webkit-slider-thumb{background:#a3a3a3}input[type=range]::-moz-range-thumb{appearance:none;-moz-appearance:none;-webkit-appearance:none;background:#3b71ca;border:0;border-radius:9999px;cursor:pointer;height:1rem;width:1rem}input[type=range]:disabled::-moz-range-thumb{background:#a3a3a3}input[type=range]::-moz-range-progress{background:#3061af}input[type=range]::-ms-fill-lower{background:#3061af}input[type=range]:focus{outline:none}input[type=range]:focus::-webkit-slider-thumb{background:#3061af}input[type=range]:active::-webkit-slider-thumb{background:#285192}.collapse{visibility:collapse}.relative{position:relative}.top-0{top:0}.z-10{z-index:10}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-6{margin-left:1.5rem;margin-right:1.5rem}.my-1{margin-bottom:.25rem;margin-top:.25rem}.my-2{margin-bottom:.5rem;margin-top:.5rem}.my-3{margin-bottom:.75rem;margin-top:.75rem}.my-4{margin-bottom:1rem;margin-top:1rem}.-mr-1{margin-right:-.25rem}.mb-0{margin-bottom:0}.mb-2{margin-bottom:.5rem}.ml-auto{margin-left:auto}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.block{display:block}.inline-block{display:inline-block}.flex{display:-webkit-box;display:-ms-flexbox;display:flex}.inline-flex{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-1{height:.25rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.w-1\/2{width:50%}.w-24{width:6rem}.w-28{width:7rem}.w-32{width:8rem}.w-36{width:9rem}.w-40{width:10rem}.w-5{width:1.25rem}.w-56{width:14rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-full{width:100%}.min-w-full{min-width:100%}.shrink{-ms-flex-negative:1;flex-shrink:1}.shrink-0{-ms-flex-negative:0;flex-shrink:0}.border-separate{border-collapse:separate}.border-spacing-x-2{--tw-border-spacing-x:0.5rem;border-spacing:var(--tw-border-spacing-x) var(--tw-border-spacing-y)}.rotate-\[-180deg\]{--tw-rotate:-180deg;-webkit-transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.grid-flow-row{grid-auto-flow:row}.grid-flow-col{grid-auto-flow:column}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-wrap{-ms-flex-wrap:wrap;flex-wrap:wrap}.items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.justify-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.gap-x-2{-webkit-column-gap:.5rem;-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-6{-webkit-column-gap:1.5rem;-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-y-1{row-gap:.25rem}.gap-y-2{row-gap:.5rem}.overflow-hidden{overflow:hidden}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-xl{border-radius:.75rem}.rounded-t-xl{border-top-left-radius:.75rem;border-top-right-radius:.75rem}.border{border-width:1px}.border-4{border-width:4px}.border-b{border-bottom-width:1px}.border-r{border-right-width:1px}.border-black{--tw-border-opacity:1;border-color:rgb(0 0 0/var(--tw-border-opacity,1))}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.bg-gray-300{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity,1))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.fill-\[\#336dec\]{fill:#336dec}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.py-4{padding-bottom:1rem;padding-top:1rem}.py-6{padding-top:1.5rem}.pb-6,.py-6{padding-bottom:1.5rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pl-8{padding-left:2rem}.pr-1{padding-right:.25rem}.pt-1{padding-top:.25rem}.text-left{text-align:left}.text-center{text-align:center}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.underline{text-decoration-line:underline}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);-webkit-box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.transition{-webkit-transition-duration:.15s;transition-duration:.15s;-webkit-transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform,-webkit-filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform,-webkit-filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-box-shadow,-webkit-transform,-webkit-filter,-webkit-backdrop-filter;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{-webkit-transition-duration:.15s;transition-duration:.15s;-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-200{-webkit-transition-duration:.2s;transition-duration:.2s}.ease-in-out{-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1)}.\[overflow-anchor\:none\]{overflow-anchor:none}.odd\:bg-gray-100:nth-child(odd){--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.even\:bg-white:nth-child(2n){--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.hover\:z-\[2\]:hover{z-index:2}.focus\:z-\[3\]:focus{z-index:3}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.group[data-te-collapse-collapsed] .group-\[\[data-te-collapse-collapsed\]\]\:mr-0{margin-right:0}.group[data-te-collapse-collapsed] .group-\[\[data-te-collapse-collapsed\]\]\:rotate-0{--tw-rotate:0deg;-webkit-transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group[data-te-collapse-collapsed] .group-\[\[data-te-collapse-collapsed\]\]\:fill-\[\#212529\]{fill:#212529}@media (prefers-reduced-motion:reduce){.motion-reduce\:transition-none{-webkit-transition-property:none;transition-property:none}}@media (min-width:640px){.sm\:block{display:block}.sm\:grid{display:grid}.sm\:hidden{display:none}.sm\:w-40{width:10rem}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-\[10\%_90\%\]{grid-template-columns:10% 90%}.sm\:break-words{overflow-wrap:break-word}.sm\:font-normal{font-weight:400}.sm\:no-underline{text-decoration-line:none}}@media (min-width:768px){.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width:1024px){.lg\:sticky{position:sticky}.lg\:block{display:block}.lg\:grid{display:grid}.lg\:hidden{display:none}.lg\:w-32{width:8rem}.lg\:w-36{width:9rem}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:break-normal{overflow-wrap:normal;word-break:normal}.lg\:pl-9{padding-left:2.25rem}}@media (min-width:1280px){.xl\:w-52{width:13rem}.xl\:grid-flow-col{grid-auto-flow:column}.xl\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media print{.print\:block{display:block}.print\:hidden{display:none}.print\:border-none{border-style:none}.print\:border-black{--tw-border-opacity:1;border-color:rgb(0 0 0/var(--tw-border-opacity,1))}.print\:bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.print\:text-left{text-align:left}.print\:text-2xl{font-size:1.5rem;line-height:2rem}}.\[\&\:not\(\[data-te-collapse-collapsed\]\)\]\:bg-blue-200:not([data-te-collapse-collapsed]){--tw-bg-opacity:1;background-color:rgb(191 219 254/var(--tw-bg-opacity,1))}.\[\&\:not\(\[data-te-collapse-collapsed\]\)\]\:text-blue-900:not([data-te-collapse-collapsed]){--tw-text-opacity:1;color:rgb(30 58 138/var(--tw-text-opacity,1))}.\[\&\:not\(\[data-te-collapse-collapsed\]\)\]\:\[box-shadow\:inset_0_-1px_0_rgba\(229\2c 231\2c 235\)\]:not([data-te-collapse-collapsed]){-webkit-box-shadow:inset 0 -1px 0 #e5e7eb;box-shadow:inset 0 -1px 0 #e5e7eb}.\[\&\[data-te-dropdown-show\]\]\:grid[data-te-dropdown-show]{display:grid} \ No newline at end of file diff --git a/apps/frontend/src/components/cards/controltable/ControlRowHeader.vue b/apps/frontend/src/components/cards/controltable/ControlRowHeader.vue index 29186cfc0..3437ce50d 100644 --- a/apps/frontend/src/components/cards/controltable/ControlRowHeader.vue +++ b/apps/frontend/src/components/cards/controltable/ControlRowHeader.vue @@ -142,9 +142,12 @@