diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 91edd72bf9..a367baad58 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -34,7 +34,7 @@ jobs: #- name: Make sure configuration was exported in correct language (en or und) # run: | # OUTPUT=$(grep -oP '^langcode: \b(?!(?:en|und)\b)\w+' conf -R || true) - # + # if [ ! -z "$OUTPUT" ]; then # echo "Found configuration that does not match the pattern 'langcode: (en|und)':" >> $GITHUB_STEP_SUMMARY # echo "$OUTPUT" >> $GITHUB_STEP_SUMMARY diff --git a/.github/workflows/update-config.yml b/.github/workflows/update-config.yml index 1a7d61f701..d36258dd60 100644 --- a/.github/workflows/update-config.yml +++ b/.github/workflows/update-config.yml @@ -24,6 +24,12 @@ jobs: steps: - uses: actions/checkout@v4 + - name: Check if required secrets are set + env: + AUTOMATIC_UPDATE_TOKEN: ${{ secrets.AUTOMATIC_UPDATE_TOKEN }} + if: env.AUTOMATIC_UPDATE_TOKEN == '' + run: exit 1 + - name: Download latest dump env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -77,6 +83,7 @@ jobs: uses: peter-evans/create-pull-request@v6 with: commit-message: Update configuration + token: ${{ secrets.AUTOMATIC_UPDATE_TOKEN }} title: Automatic update labels: auto-update body: | diff --git a/.platform/schema b/.platform/schema index f11c82a4cb..9a037142aa 100644 --- a/.platform/schema +++ b/.platform/schema @@ -1 +1 @@ -9 \ No newline at end of file +10 \ No newline at end of file diff --git a/compose.override.yml b/compose.override.yml index fe608792e8..381542bd74 100644 --- a/compose.override.yml +++ b/compose.override.yml @@ -1,7 +1,7 @@ services: e2e: container_name: "${COMPOSE_PROJECT_NAME}-e2e" - image: mcr.microsoft.com/playwright:v1.41.0-jammy + image: mcr.microsoft.com/playwright:v1.48.0-jammy ipc: host network_mode: host tty: true diff --git a/composer.json b/composer.json index 4054766f3a..5247d4dba9 100644 --- a/composer.json +++ b/composer.json @@ -6,7 +6,7 @@ "homepage": "https://github.com/City-of-Helsinki/drupal-helfi-platform", "minimum-stability": "dev", "prefer-stable": true, - "version": "2024.14", + "version": "2024.16", "require": { "ext-json": "*", "composer/installers": "^1.9", @@ -56,7 +56,6 @@ "drupal/potx": "^1.0", "drupal/purge_users": "^3.1", "drupal/radioactivity": "^4.0", - "drupal/raven": "^5.0", "drupal/redis": "^1.7", "drupal/remove_http_headers": "^2.0.1", "drupal/restui": "^1.21", diff --git a/composer.lock b/composer.lock index 8667022bd0..e1cda871e5 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "ce4104284d63679dfc9b04271c9f9c5a", + "content-hash": "8c0754a03ad8e1e9a27cbc8b5220de66", "packages": [ { "name": "asm89/stack-cors", @@ -1037,16 +1037,16 @@ }, { "name": "consolidation/output-formatters", - "version": "4.5.0", + "version": "4.6.0", "source": { "type": "git", "url": "https://github.com/consolidation/output-formatters.git", - "reference": "7a611b01eb48eb19cd54672339fc08c0985bf540" + "reference": "5fd5656718d7068a02d046f418a7ba873d5abbfe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/consolidation/output-formatters/zipball/7a611b01eb48eb19cd54672339fc08c0985bf540", - "reference": "7a611b01eb48eb19cd54672339fc08c0985bf540", + "url": "https://api.github.com/repos/consolidation/output-formatters/zipball/5fd5656718d7068a02d046f418a7ba873d5abbfe", + "reference": "5fd5656718d7068a02d046f418a7ba873d5abbfe", "shasum": "" }, "require": { @@ -1085,9 +1085,9 @@ "description": "Format text by applying transformations provided by plug-in formatters.", "support": { "issues": "https://github.com/consolidation/output-formatters/issues", - "source": "https://github.com/consolidation/output-formatters/tree/4.5.0" + "source": "https://github.com/consolidation/output-formatters/tree/4.6.0" }, - "time": "2024-04-02T15:18:52+00:00" + "time": "2024-10-18T14:02:48+00:00" }, { "name": "consolidation/robo", @@ -3113,16 +3113,16 @@ }, { "name": "drupal/core", - "version": "10.3.6", + "version": "10.3.10", "source": { "type": "git", "url": "https://github.com/drupal/core.git", - "reference": "168ec99f2012aeb4e93c6c7dd4a90dc919ae96c6" + "reference": "3ebb71e9c4ef0c13f683353547551fca49f9a144" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/drupal/core/zipball/168ec99f2012aeb4e93c6c7dd4a90dc919ae96c6", - "reference": "168ec99f2012aeb4e93c6c7dd4a90dc919ae96c6", + "url": "https://api.github.com/repos/drupal/core/zipball/3ebb71e9c4ef0c13f683353547551fca49f9a144", + "reference": "3ebb71e9c4ef0c13f683353547551fca49f9a144", "shasum": "" }, "require": { @@ -3168,7 +3168,7 @@ "symfony/serializer": "^6.4", "symfony/validator": "^6.4", "symfony/yaml": "^6.4", - "twig/twig": "^3.14.0" + "twig/twig": "^3.14.2" }, "conflict": { "drush/drush": "<12.4.3" @@ -3271,9 +3271,9 @@ ], "description": "Drupal is an open source content management platform powering millions of websites and applications.", "support": { - "source": "https://github.com/drupal/core/tree/10.3.6" + "source": "https://github.com/drupal/core/tree/10.3.10" }, - "time": "2024-10-03T08:58:13+00:00" + "time": "2024-11-22T12:51:33+00:00" }, { "name": "drupal/core-composer-scaffold", @@ -5404,6 +5404,10 @@ "name": "Sascha Eggenberger (saschaeggi)", "homepage": "https://www.drupal.org/u/saschaeggi", "role": "Maintainer" + }, + { + "name": "saschaeggi", + "homepage": "https://www.drupal.org/user/1999056" } ], "description": "Gin Toolbar for Frontend use", @@ -5482,16 +5486,16 @@ }, { "name": "drupal/hdbt", - "version": "6.7.11", + "version": "6.7.19", "source": { "type": "git", "url": "https://github.com/City-of-Helsinki/drupal-hdbt.git", - "reference": "5f9902895d8690e0167af2b8df37e84798c1ab8b" + "reference": "2fadf070e0fee0baf582073856f47f9c62669d17" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/City-of-Helsinki/drupal-hdbt/zipball/5f9902895d8690e0167af2b8df37e84798c1ab8b", - "reference": "5f9902895d8690e0167af2b8df37e84798c1ab8b", + "url": "https://api.github.com/repos/City-of-Helsinki/drupal-hdbt/zipball/2fadf070e0fee0baf582073856f47f9c62669d17", + "reference": "2fadf070e0fee0baf582073856f47f9c62669d17", "shasum": "" }, "require": { @@ -5510,10 +5514,10 @@ "Drupal" ], "support": { - "source": "https://github.com/City-of-Helsinki/drupal-hdbt/tree/6.7.11", + "source": "https://github.com/City-of-Helsinki/drupal-hdbt/tree/6.7.19", "issues": "https://github.com/City-of-Helsinki/drupal-hdbt/issues" }, - "time": "2024-10-11T08:54:21+00:00" + "time": "2024-10-23T10:00:39+00:00" }, { "name": "drupal/hdbt_admin", @@ -5604,16 +5608,16 @@ }, { "name": "drupal/helfi_api_base", - "version": "2.7.14", + "version": "2.7.11", "source": { "type": "git", "url": "https://github.com/City-of-Helsinki/drupal-module-helfi-api-base.git", - "reference": "d149db10862c62980427c0ad124d0e54c7b97902" + "reference": "77ba93f8f9b02bb3e74344e1de0c50caf4d1557c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/City-of-Helsinki/drupal-module-helfi-api-base/zipball/d149db10862c62980427c0ad124d0e54c7b97902", - "reference": "d149db10862c62980427c0ad124d0e54c7b97902", + "url": "https://api.github.com/repos/City-of-Helsinki/drupal-module-helfi-api-base/zipball/77ba93f8f9b02bb3e74344e1de0c50caf4d1557c", + "reference": "77ba93f8f9b02bb3e74344e1de0c50caf4d1557c", "shasum": "" }, "require": { @@ -5643,10 +5647,10 @@ ], "description": "Helfi - API Base", "support": { - "source": "https://github.com/City-of-Helsinki/drupal-module-helfi-api-base/tree/2.7.14", + "source": "https://github.com/City-of-Helsinki/drupal-module-helfi-api-base/tree/2.7.11", "issues": "https://github.com/City-of-Helsinki/drupal-module-helfi-api-base/issues" }, - "time": "2024-11-07T10:23:06+00:00" + "time": "2024-10-23T08:01:57+00:00" }, { "name": "drupal/helfi_atv", @@ -5714,16 +5718,16 @@ }, { "name": "drupal/helfi_azure_fs", - "version": "2.0.7", + "version": "2.0.8", "source": { "type": "git", "url": "https://github.com/City-of-Helsinki/drupal-module-helfi-azure-fs.git", - "reference": "f35b0a703e2da09374c4ca137dd6519274db552a" + "reference": "c1ce8909d3ab797bd75e391ed6d80c06b82799c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/City-of-Helsinki/drupal-module-helfi-azure-fs/zipball/f35b0a703e2da09374c4ca137dd6519274db552a", - "reference": "f35b0a703e2da09374c4ca137dd6519274db552a", + "url": "https://api.github.com/repos/City-of-Helsinki/drupal-module-helfi-azure-fs/zipball/c1ce8909d3ab797bd75e391ed6d80c06b82799c9", + "reference": "c1ce8909d3ab797bd75e391ed6d80c06b82799c9", "shasum": "" }, "require": { @@ -5740,9 +5744,6 @@ "type": "drupal-module", "extra": { "patches": { - "drupal/core": { - "UHF-10533 D10.3 images": "https://raw.githubusercontent.com/City-of-Helsinki/drupal-module-helfi-azure-fs/f933226cdd9b046d76757d4f885d3d3567365264/patches/UHF-10533-d10-images.patch" - }, "twistor/flysystem-stream-wrapper": { "PHP 8.2 support (https://www.drupal.org/project/flysystem/issues/3387094)": "https://raw.githubusercontent.com/City-of-Helsinki/drupal-module-helfi-azure-fs/ddb222622b92d1c2b7db975a84167a00579a1ad0/patches/3387094-add-context-property-to-stream-wrapper.patch" }, @@ -5756,10 +5757,10 @@ ], "description": "Helfi - Azure FS", "support": { - "source": "https://github.com/City-of-Helsinki/drupal-module-helfi-azure-fs/tree/2.0.7", + "source": "https://github.com/City-of-Helsinki/drupal-module-helfi-azure-fs/tree/2.0.8", "issues": "https://github.com/City-of-Helsinki/drupal-module-helfi-azure-fs/issues" }, - "time": "2024-10-11T07:42:06+00:00" + "time": "2024-10-23T12:15:22+00:00" }, { "name": "drupal/helfi_drupal_tools", @@ -5767,12 +5768,12 @@ "source": { "type": "git", "url": "https://github.com/City-of-Helsinki/drupal-tools.git", - "reference": "8df65343c4ff937dcf143827e3182f10b8b1b4b6" + "reference": "53ad81c4249c6dd38deea3f6014ad0b1be47f2db" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/City-of-Helsinki/drupal-tools/zipball/8df65343c4ff937dcf143827e3182f10b8b1b4b6", - "reference": "8df65343c4ff937dcf143827e3182f10b8b1b4b6", + "url": "https://api.github.com/repos/City-of-Helsinki/drupal-tools/zipball/53ad81c4249c6dd38deea3f6014ad0b1be47f2db", + "reference": "53ad81c4249c6dd38deea3f6014ad0b1be47f2db", "shasum": "" }, "require": { @@ -5844,7 +5845,7 @@ "source": "https://github.com/City-of-Helsinki/drupal-tools/tree/main", "issues": "https://github.com/City-of-Helsinki/drupal-tools/issues" }, - "time": "2024-09-24T07:18:32+00:00" + "time": "2024-10-23T10:28:01+00:00" }, { "name": "drupal/helfi_formtool_embed", @@ -5950,16 +5951,16 @@ }, { "name": "drupal/helfi_platform_config", - "version": "4.6.15", + "version": "4.6.20", "source": { "type": "git", "url": "https://github.com/City-of-Helsinki/drupal-helfi-platform-config.git", - "reference": "96e619f1399be1140cef46c5dd67cce2a035613e" + "reference": "f5451a53f0e83dcf1fc811c9ced0687f43cd4b7f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/City-of-Helsinki/drupal-helfi-platform-config/zipball/96e619f1399be1140cef46c5dd67cce2a035613e", - "reference": "96e619f1399be1140cef46c5dd67cce2a035613e", + "url": "https://api.github.com/repos/City-of-Helsinki/drupal-helfi-platform-config/zipball/f5451a53f0e83dcf1fc811c9ced0687f43cd4b7f", + "reference": "f5451a53f0e83dcf1fc811c9ced0687f43cd4b7f", "shasum": "" }, "require": { @@ -6078,23 +6079,23 @@ ], "description": "HELfi platform config", "support": { - "source": "https://github.com/City-of-Helsinki/drupal-helfi-platform-config/tree/4.6.15", + "source": "https://github.com/City-of-Helsinki/drupal-helfi-platform-config/tree/4.6.20", "issues": "https://github.com/City-of-Helsinki/drupal-helfi-platform-config/issues" }, - "time": "2024-10-14T06:10:36+00:00" + "time": "2024-10-24T12:01:48+00:00" }, { "name": "drupal/helfi_proxy", - "version": "3.3.0", + "version": "3.3.1", "source": { "type": "git", "url": "https://github.com/City-of-Helsinki/drupal-module-helfi-proxy.git", - "reference": "efdf8d46f8b0f0114ab079f61661d1909b2a870e" + "reference": "0372472dbcc0ae1cea760a8d455b729ead9978f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/City-of-Helsinki/drupal-module-helfi-proxy/zipball/efdf8d46f8b0f0114ab079f61661d1909b2a870e", - "reference": "efdf8d46f8b0f0114ab079f61661d1909b2a870e", + "url": "https://api.github.com/repos/City-of-Helsinki/drupal-module-helfi-proxy/zipball/0372472dbcc0ae1cea760a8d455b729ead9978f6", + "reference": "0372472dbcc0ae1cea760a8d455b729ead9978f6", "shasum": "" }, "require": { @@ -6123,10 +6124,10 @@ ], "description": "Provides various fixes so we can serve multiple Drupal instances in one domain.", "support": { - "source": "https://github.com/City-of-Helsinki/drupal-module-helfi-proxy/tree/3.3.0", + "source": "https://github.com/City-of-Helsinki/drupal-module-helfi-proxy/tree/3.3.1", "issues": "https://github.com/City-of-Helsinki/drupal-module-helfi-proxy/issues" }, - "time": "2024-06-26T05:50:50+00:00" + "time": "2024-10-25T05:12:00+00:00" }, { "name": "drupal/helfi_tpr", @@ -6983,17 +6984,17 @@ }, { "name": "drupal/linkit", - "version": "6.1.5", + "version": "6.1.6", "source": { "type": "git", "url": "https://git.drupalcode.org/project/linkit.git", - "reference": "6.1.5" + "reference": "6.1.6" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/linkit-6.1.5.zip", - "reference": "6.1.5", - "shasum": "ce2e0f545e5213874e658a44ed3ef606b80b760d" + "url": "https://ftp.drupal.org/files/projects/linkit-6.1.6.zip", + "reference": "6.1.6", + "shasum": "113d8e569cfb92f8d7feb0a2f7713953c0715e92" }, "require": { "drupal/core": "^10.1" @@ -7005,8 +7006,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "6.1.5", - "datestamp": "1728680387", + "version": "6.1.6", + "datestamp": "1729189029", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -8296,20 +8297,20 @@ }, { "name": "drupal/raven", - "version": "5.0.19", + "version": "6.0.10", "source": { "type": "git", "url": "https://git.drupalcode.org/project/raven.git", - "reference": "5.0.19" + "reference": "6.0.10" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/raven-5.0.19.zip", - "reference": "5.0.19", - "shasum": "7ff86084a389c0740a42aa1d23b5fbcaa1a42d9f" + "url": "https://ftp.drupal.org/files/projects/raven-6.0.10.zip", + "reference": "6.0.10", + "shasum": "df0cce5b87bd76ce933d88afd91ebcd75741d329" }, "require": { - "drupal/core": "^10.1 || ^11", + "drupal/core": "^10.2 || ^11", "sentry/sentry": "^4.9" }, "require-dev": { @@ -8320,8 +8321,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "5.0.19", - "datestamp": "1728261182", + "version": "6.0.10", + "datestamp": "1728022661", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -8514,7 +8515,7 @@ ], "authors": [ { - "name": "Heine", + "name": "heine", "homepage": "https://www.drupal.org/user/17943" }, { @@ -9516,30 +9517,30 @@ }, { "name": "drupal/tfa", - "version": "1.8.0", + "version": "1.9.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/tfa.git", - "reference": "8.x-1.8" + "reference": "8.x-1.9" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/tfa-8.x-1.8.zip", - "reference": "8.x-1.8", - "shasum": "fda56a048fc15d2d24601981785d3974cd29acd9" + "url": "https://ftp.drupal.org/files/projects/tfa-8.x-1.9.zip", + "reference": "8.x-1.9", + "shasum": "1d42020673e8c29259dd9b6b2a7c1f974e66a415" }, "require": { "chillerlan/php-qrcode": "^1.0.9 || ^2.0 || ^3.2 || ^4.0", "christian-riesen/otp": "^2.1", - "drupal/core": "^8 || ^9 || ^10", + "drupal/core": "^8 || ^9 || ^10 || ^11", "drupal/encrypt": "~3.0", "php": ">=7.0" }, "require-dev": { "drupal/encrypt": "*", "drupal/key": "*", - "drupal/services": "^4 || ^5", - "drush/drush": "^10 || ^11 || ^12", + "drupal/services": "*", + "drush/drush": "^10 || ^11 || ^12 || ^13", "mglaman/phpstan-drupal": "^1.1", "phpstan/extension-installer": "^1.2", "phpstan/phpstan": "^1.9", @@ -9549,8 +9550,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-1.8", - "datestamp": "1727892298", + "version": "8.x-1.9", + "datestamp": "1729138391", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -10072,42 +10073,39 @@ }, { "name": "drupal/views_bulk_operations", - "version": "4.2.7", + "version": "4.3.1", "source": { "type": "git", "url": "https://git.drupalcode.org/project/views_bulk_operations.git", - "reference": "4.2.7" + "reference": "4.3.1" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/views_bulk_operations-4.2.7.zip", - "reference": "4.2.7", - "shasum": "25c9fa531ac49664a361fdd2202eec0a6e53bc61" + "url": "https://ftp.drupal.org/files/projects/views_bulk_operations-4.3.1.zip", + "reference": "4.3.1", + "shasum": "1089fe41ddb01313f34d55e19e8f3a5157889430" }, "require": { - "drupal/core": "^9.4 || ^10 || ^11", - "php": ">=7.4.0" + "drupal/core": "^10.3 || ^11" + }, + "conflict": { + "drush/drush": "<12.5.1" }, "require-dev": { - "drush/drush": "^12" + "drush/drush": "^12 || ^13" }, "suggest": { - "drush/drush": "^11 || ^12" + "drush/drush": "^12 || ^13" }, "type": "drupal-module", "extra": { "drupal": { - "version": "4.2.7", - "datestamp": "1717665214", + "version": "4.3.1", + "datestamp": "1729683242", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" } - }, - "drush": { - "services": { - "drush.services.yml": "^10 || ^11" - } } }, "notification-url": "https://packages.drupal.org/8/downloads", @@ -11071,29 +11069,29 @@ }, { "name": "fileeye/mimemap", - "version": "2.1.2", + "version": "2.2.0", "source": { "type": "git", "url": "https://github.com/FileEye/MimeMap.git", - "reference": "2cb60da59d5c6fb881a78b481d513c4c68a1a93c" + "reference": "c8c686cc6f77316b23128a83334877debf645dfb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FileEye/MimeMap/zipball/2cb60da59d5c6fb881a78b481d513c4c68a1a93c", - "reference": "2cb60da59d5c6fb881a78b481d513c4c68a1a93c", + "url": "https://api.github.com/repos/FileEye/MimeMap/zipball/c8c686cc6f77316b23128a83334877debf645dfb", + "reference": "c8c686cc6f77316b23128a83334877debf645dfb", "shasum": "" }, "require": { - "php": ">=7.4" + "php": ">=8.1" }, "require-dev": { "composer-runtime-api": "^2.0.0", - "sebastian/comparator": ">=4", - "sebastian/diff": ">=4", - "symfony/console": ">=5.4", - "symfony/filesystem": ">=5.4", - "symfony/var-dumper": ">=5.4", - "symfony/yaml": ">=5.4" + "sebastian/comparator": ">=5", + "sebastian/diff": ">=5", + "symfony/console": ">=6.4", + "symfony/filesystem": ">=6.4", + "symfony/var-dumper": ">=6.4", + "symfony/yaml": ">=6.4" }, "bin": [ "bin/fileeye-mimemap" @@ -11123,9 +11121,9 @@ ], "support": { "issues": "https://github.com/FileEye/MimeMap/issues", - "source": "https://github.com/FileEye/MimeMap/tree/2.1.2" + "source": "https://github.com/FileEye/MimeMap/tree/2.2.0" }, - "time": "2024-06-29T16:52:07+00:00" + "time": "2024-10-20T18:59:36+00:00" }, { "name": "fileeye/pel", @@ -11647,16 +11645,16 @@ }, { "name": "guzzlehttp/promises", - "version": "2.0.3", + "version": "2.0.4", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "6ea8dd08867a2a42619d65c3deb2c0fcbf81c8f8" + "reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/6ea8dd08867a2a42619d65c3deb2c0fcbf81c8f8", - "reference": "6ea8dd08867a2a42619d65c3deb2c0fcbf81c8f8", + "url": "https://api.github.com/repos/guzzle/promises/zipball/f9c436286ab2892c7db7be8c8da4ef61ccf7b455", + "reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455", "shasum": "" }, "require": { @@ -11710,7 +11708,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/2.0.3" + "source": "https://github.com/guzzle/promises/tree/2.0.4" }, "funding": [ { @@ -11726,7 +11724,7 @@ "type": "tidelift" } ], - "time": "2024-07-18T10:29:17+00:00" + "time": "2024-10-17T10:06:22+00:00" }, { "name": "guzzlehttp/psr7", @@ -11970,16 +11968,16 @@ }, { "name": "league/container", - "version": "4.2.2", + "version": "4.2.3", "source": { "type": "git", "url": "https://github.com/thephpleague/container.git", - "reference": "ff346319ca1ff0e78277dc2311a42107cc1aab88" + "reference": "72f9bebe7bd623007782a40f5ec305661ab706d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/container/zipball/ff346319ca1ff0e78277dc2311a42107cc1aab88", - "reference": "ff346319ca1ff0e78277dc2311a42107cc1aab88", + "url": "https://api.github.com/repos/thephpleague/container/zipball/72f9bebe7bd623007782a40f5ec305661ab706d8", + "reference": "72f9bebe7bd623007782a40f5ec305661ab706d8", "shasum": "" }, "require": { @@ -12040,7 +12038,7 @@ ], "support": { "issues": "https://github.com/thephpleague/container/issues", - "source": "https://github.com/thephpleague/container/tree/4.2.2" + "source": "https://github.com/thephpleague/container/tree/4.2.3" }, "funding": [ { @@ -12048,7 +12046,7 @@ "type": "github" } ], - "time": "2024-03-13T13:12:53+00:00" + "time": "2024-10-23T12:06:58+00:00" }, { "name": "league/flysystem", @@ -13481,16 +13479,16 @@ }, { "name": "pear/pear-core-minimal", - "version": "v1.10.15", + "version": "v1.10.16", "source": { "type": "git", "url": "https://github.com/pear/pear-core-minimal.git", - "reference": "ce0adade8b97561656ace07cdaac4751c271ea8c" + "reference": "c0f51b45f50683bf5bbf558036854ebc9b54d033" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pear/pear-core-minimal/zipball/ce0adade8b97561656ace07cdaac4751c271ea8c", - "reference": "ce0adade8b97561656ace07cdaac4751c271ea8c", + "url": "https://api.github.com/repos/pear/pear-core-minimal/zipball/c0f51b45f50683bf5bbf558036854ebc9b54d033", + "reference": "c0f51b45f50683bf5bbf558036854ebc9b54d033", "shasum": "" }, "require": { @@ -13526,7 +13524,7 @@ "issues": "http://pear.php.net/bugs/search.php?cmd=display&package_name[]=PEAR", "source": "https://github.com/pear/pear-core-minimal" }, - "time": "2024-03-16T18:41:45+00:00" + "time": "2024-11-24T22:27:58+00:00" }, { "name": "pear/pear_exception", @@ -15263,16 +15261,16 @@ }, { "name": "symfony/console", - "version": "v6.4.12", + "version": "v6.4.15", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "72d080eb9edf80e36c19be61f72c98ed8273b765" + "reference": "f1fc6f47283e27336e7cebb9e8946c8de7bff9bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/72d080eb9edf80e36c19be61f72c98ed8273b765", - "reference": "72d080eb9edf80e36c19be61f72c98ed8273b765", + "url": "https://api.github.com/repos/symfony/console/zipball/f1fc6f47283e27336e7cebb9e8946c8de7bff9bd", + "reference": "f1fc6f47283e27336e7cebb9e8946c8de7bff9bd", "shasum": "" }, "require": { @@ -15337,7 +15335,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.12" + "source": "https://github.com/symfony/console/tree/v6.4.15" }, "funding": [ { @@ -15353,20 +15351,20 @@ "type": "tidelift" } ], - "time": "2024-09-20T08:15:52+00:00" + "time": "2024-11-06T14:19:14+00:00" }, { "name": "symfony/dependency-injection", - "version": "v6.4.12", + "version": "v6.4.15", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "cfb9d34a1cdd4911bc737a5358fd1cf8ebfb536e" + "reference": "70ab1f65a4516ef741e519ea938e6aa465e6aa36" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/cfb9d34a1cdd4911bc737a5358fd1cf8ebfb536e", - "reference": "cfb9d34a1cdd4911bc737a5358fd1cf8ebfb536e", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/70ab1f65a4516ef741e519ea938e6aa465e6aa36", + "reference": "70ab1f65a4516ef741e519ea938e6aa465e6aa36", "shasum": "" }, "require": { @@ -15418,7 +15416,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v6.4.12" + "source": "https://github.com/symfony/dependency-injection/tree/v6.4.15" }, "funding": [ { @@ -15434,7 +15432,7 @@ "type": "tidelift" } ], - "time": "2024-09-20T08:18:25+00:00" + "time": "2024-11-09T06:56:25+00:00" }, { "name": "symfony/deprecation-contracts", @@ -15505,16 +15503,16 @@ }, { "name": "symfony/error-handler", - "version": "v6.4.10", + "version": "v6.4.14", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "231f1b2ee80f72daa1972f7340297d67439224f0" + "reference": "9e024324511eeb00983ee76b9aedc3e6ecd993d9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/231f1b2ee80f72daa1972f7340297d67439224f0", - "reference": "231f1b2ee80f72daa1972f7340297d67439224f0", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/9e024324511eeb00983ee76b9aedc3e6ecd993d9", + "reference": "9e024324511eeb00983ee76b9aedc3e6ecd993d9", "shasum": "" }, "require": { @@ -15560,7 +15558,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.4.10" + "source": "https://github.com/symfony/error-handler/tree/v6.4.14" }, "funding": [ { @@ -15576,20 +15574,20 @@ "type": "tidelift" } ], - "time": "2024-07-26T12:30:32+00:00" + "time": "2024-11-05T15:34:40+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v6.4.8", + "version": "v6.4.13", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "8d7507f02b06e06815e56bb39aa0128e3806208b" + "reference": "0ffc48080ab3e9132ea74ef4e09d8dcf26bf897e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/8d7507f02b06e06815e56bb39aa0128e3806208b", - "reference": "8d7507f02b06e06815e56bb39aa0128e3806208b", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/0ffc48080ab3e9132ea74ef4e09d8dcf26bf897e", + "reference": "0ffc48080ab3e9132ea74ef4e09d8dcf26bf897e", "shasum": "" }, "require": { @@ -15640,7 +15638,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.4.8" + "source": "https://github.com/symfony/event-dispatcher/tree/v6.4.13" }, "funding": [ { @@ -15656,7 +15654,7 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:49:08+00:00" + "time": "2024-09-25T14:18:03+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -15736,16 +15734,16 @@ }, { "name": "symfony/filesystem", - "version": "v6.4.12", + "version": "v6.4.13", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "f810e3cbdf7fdc35983968523d09f349fa9ada12" + "reference": "4856c9cf585d5a0313d8d35afd681a526f038dd3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/f810e3cbdf7fdc35983968523d09f349fa9ada12", - "reference": "f810e3cbdf7fdc35983968523d09f349fa9ada12", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/4856c9cf585d5a0313d8d35afd681a526f038dd3", + "reference": "4856c9cf585d5a0313d8d35afd681a526f038dd3", "shasum": "" }, "require": { @@ -15782,7 +15780,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v6.4.12" + "source": "https://github.com/symfony/filesystem/tree/v6.4.13" }, "funding": [ { @@ -15798,20 +15796,20 @@ "type": "tidelift" } ], - "time": "2024-09-16T16:01:33+00:00" + "time": "2024-10-25T15:07:50+00:00" }, { "name": "symfony/finder", - "version": "v6.4.11", + "version": "v6.4.13", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "d7eb6daf8cd7e9ac4976e9576b32042ef7253453" + "reference": "daea9eca0b08d0ed1dc9ab702a46128fd1be4958" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/d7eb6daf8cd7e9ac4976e9576b32042ef7253453", - "reference": "d7eb6daf8cd7e9ac4976e9576b32042ef7253453", + "url": "https://api.github.com/repos/symfony/finder/zipball/daea9eca0b08d0ed1dc9ab702a46128fd1be4958", + "reference": "daea9eca0b08d0ed1dc9ab702a46128fd1be4958", "shasum": "" }, "require": { @@ -15846,7 +15844,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v6.4.11" + "source": "https://github.com/symfony/finder/tree/v6.4.13" }, "funding": [ { @@ -15862,20 +15860,20 @@ "type": "tidelift" } ], - "time": "2024-08-13T14:27:37+00:00" + "time": "2024-10-01T08:30:56+00:00" }, { "name": "symfony/http-foundation", - "version": "v6.4.12", + "version": "v6.4.15", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "133ac043875f59c26c55e79cf074562127cce4d2" + "reference": "9b3165eb2f04aeaa1a5a2cfef73e63fe3b22dff6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/133ac043875f59c26c55e79cf074562127cce4d2", - "reference": "133ac043875f59c26c55e79cf074562127cce4d2", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/9b3165eb2f04aeaa1a5a2cfef73e63fe3b22dff6", + "reference": "9b3165eb2f04aeaa1a5a2cfef73e63fe3b22dff6", "shasum": "" }, "require": { @@ -15885,12 +15883,12 @@ "symfony/polyfill-php83": "^1.27" }, "conflict": { - "symfony/cache": "<6.3" + "symfony/cache": "<6.4.12|>=7.0,<7.1.5" }, "require-dev": { "doctrine/dbal": "^2.13.1|^3|^4", "predis/predis": "^1.1|^2.0", - "symfony/cache": "^6.3|^7.0", + "symfony/cache": "^6.4.12|^7.1.5", "symfony/dependency-injection": "^5.4|^6.0|^7.0", "symfony/expression-language": "^5.4|^6.0|^7.0", "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4|^7.0", @@ -15923,7 +15921,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.4.12" + "source": "https://github.com/symfony/http-foundation/tree/v6.4.15" }, "funding": [ { @@ -15939,20 +15937,20 @@ "type": "tidelift" } ], - "time": "2024-09-20T08:18:25+00:00" + "time": "2024-11-08T16:09:24+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.4.12", + "version": "v6.4.15", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "96df83d51b5f78804f70c093b97310794fd6257b" + "reference": "b002a5b3947653c5aee3adac2a024ea615fd3ff5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/96df83d51b5f78804f70c093b97310794fd6257b", - "reference": "96df83d51b5f78804f70c093b97310794fd6257b", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/b002a5b3947653c5aee3adac2a024ea615fd3ff5", + "reference": "b002a5b3947653c5aee3adac2a024ea615fd3ff5", "shasum": "" }, "require": { @@ -16037,7 +16035,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.4.12" + "source": "https://github.com/symfony/http-kernel/tree/v6.4.15" }, "funding": [ { @@ -16053,20 +16051,20 @@ "type": "tidelift" } ], - "time": "2024-09-21T06:02:57+00:00" + "time": "2024-11-13T13:57:37+00:00" }, { "name": "symfony/mailer", - "version": "v6.4.12", + "version": "v6.4.13", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "b6a25408c569ae2366b3f663a4edad19420a9c26" + "reference": "c2f7e0d8d7ac8fe25faccf5d8cac462805db2663" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/b6a25408c569ae2366b3f663a4edad19420a9c26", - "reference": "b6a25408c569ae2366b3f663a4edad19420a9c26", + "url": "https://api.github.com/repos/symfony/mailer/zipball/c2f7e0d8d7ac8fe25faccf5d8cac462805db2663", + "reference": "c2f7e0d8d7ac8fe25faccf5d8cac462805db2663", "shasum": "" }, "require": { @@ -16117,7 +16115,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v6.4.12" + "source": "https://github.com/symfony/mailer/tree/v6.4.13" }, "funding": [ { @@ -16133,20 +16131,20 @@ "type": "tidelift" } ], - "time": "2024-09-08T12:30:05+00:00" + "time": "2024-09-25T14:18:03+00:00" }, { "name": "symfony/mime", - "version": "v6.4.12", + "version": "v6.4.13", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "abe16ee7790b16aa525877419deb0f113953f0e1" + "reference": "1de1cf14d99b12c7ebbb850491ec6ae3ed468855" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/abe16ee7790b16aa525877419deb0f113953f0e1", - "reference": "abe16ee7790b16aa525877419deb0f113953f0e1", + "url": "https://api.github.com/repos/symfony/mime/zipball/1de1cf14d99b12c7ebbb850491ec6ae3ed468855", + "reference": "1de1cf14d99b12c7ebbb850491ec6ae3ed468855", "shasum": "" }, "require": { @@ -16202,7 +16200,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v6.4.12" + "source": "https://github.com/symfony/mime/tree/v6.4.13" }, "funding": [ { @@ -16218,7 +16216,7 @@ "type": "tidelift" } ], - "time": "2024-09-20T08:18:25+00:00" + "time": "2024-10-25T15:07:50+00:00" }, { "name": "symfony/options-resolver", @@ -17146,16 +17144,16 @@ }, { "name": "symfony/process", - "version": "v6.4.12", + "version": "v6.4.15", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "3f94e5f13ff58df371a7ead461b6e8068900fbb3" + "reference": "3cb242f059c14ae08591c5c4087d1fe443564392" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/3f94e5f13ff58df371a7ead461b6e8068900fbb3", - "reference": "3f94e5f13ff58df371a7ead461b6e8068900fbb3", + "url": "https://api.github.com/repos/symfony/process/zipball/3cb242f059c14ae08591c5c4087d1fe443564392", + "reference": "3cb242f059c14ae08591c5c4087d1fe443564392", "shasum": "" }, "require": { @@ -17187,7 +17185,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.4.12" + "source": "https://github.com/symfony/process/tree/v6.4.15" }, "funding": [ { @@ -17203,20 +17201,20 @@ "type": "tidelift" } ], - "time": "2024-09-17T12:47:12+00:00" + "time": "2024-11-06T14:19:14+00:00" }, { "name": "symfony/psr-http-message-bridge", - "version": "v6.4.11", + "version": "v6.4.13", "source": { "type": "git", "url": "https://github.com/symfony/psr-http-message-bridge.git", - "reference": "74835ba54eca99a38f374f7a6d932fa510124773" + "reference": "c9cf83326a1074f83a738fc5320945abf7fb7fec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/74835ba54eca99a38f374f7a6d932fa510124773", - "reference": "74835ba54eca99a38f374f7a6d932fa510124773", + "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/c9cf83326a1074f83a738fc5320945abf7fb7fec", + "reference": "c9cf83326a1074f83a738fc5320945abf7fb7fec", "shasum": "" }, "require": { @@ -17270,7 +17268,7 @@ "psr-7" ], "support": { - "source": "https://github.com/symfony/psr-http-message-bridge/tree/v6.4.11" + "source": "https://github.com/symfony/psr-http-message-bridge/tree/v6.4.13" }, "funding": [ { @@ -17286,20 +17284,20 @@ "type": "tidelift" } ], - "time": "2024-08-14T13:55:58+00:00" + "time": "2024-09-25T14:18:03+00:00" }, { "name": "symfony/routing", - "version": "v6.4.12", + "version": "v6.4.13", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "a7c8036bd159486228dc9be3e846a00a0dda9f9f" + "reference": "640a74250d13f9c30d5ca045b6aaaabcc8215278" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/a7c8036bd159486228dc9be3e846a00a0dda9f9f", - "reference": "a7c8036bd159486228dc9be3e846a00a0dda9f9f", + "url": "https://api.github.com/repos/symfony/routing/zipball/640a74250d13f9c30d5ca045b6aaaabcc8215278", + "reference": "640a74250d13f9c30d5ca045b6aaaabcc8215278", "shasum": "" }, "require": { @@ -17353,7 +17351,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.4.12" + "source": "https://github.com/symfony/routing/tree/v6.4.13" }, "funding": [ { @@ -17369,20 +17367,20 @@ "type": "tidelift" } ], - "time": "2024-09-20T08:32:26+00:00" + "time": "2024-10-01T08:30:56+00:00" }, { "name": "symfony/serializer", - "version": "v6.4.12", + "version": "v6.4.15", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "10ae9c1b90f4809ccb7277cc8fe8d80b3af4412c" + "reference": "9d862d66198f3c2e30404228629ef4c18d5d608e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/10ae9c1b90f4809ccb7277cc8fe8d80b3af4412c", - "reference": "10ae9c1b90f4809ccb7277cc8fe8d80b3af4412c", + "url": "https://api.github.com/repos/symfony/serializer/zipball/9d862d66198f3c2e30404228629ef4c18d5d608e", + "reference": "9d862d66198f3c2e30404228629ef4c18d5d608e", "shasum": "" }, "require": { @@ -17451,7 +17449,7 @@ "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/serializer/tree/v6.4.12" + "source": "https://github.com/symfony/serializer/tree/v6.4.15" }, "funding": [ { @@ -17467,7 +17465,7 @@ "type": "tidelift" } ], - "time": "2024-09-20T08:15:52+00:00" + "time": "2024-10-23T13:25:59+00:00" }, { "name": "symfony/service-contracts", @@ -17554,16 +17552,16 @@ }, { "name": "symfony/string", - "version": "v6.4.12", + "version": "v6.4.15", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "f8a1ccebd0997e16112dfecfd74220b78e5b284b" + "reference": "73a5e66ea2e1677c98d4449177c5a9cf9d8b4c6f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/f8a1ccebd0997e16112dfecfd74220b78e5b284b", - "reference": "f8a1ccebd0997e16112dfecfd74220b78e5b284b", + "url": "https://api.github.com/repos/symfony/string/zipball/73a5e66ea2e1677c98d4449177c5a9cf9d8b4c6f", + "reference": "73a5e66ea2e1677c98d4449177c5a9cf9d8b4c6f", "shasum": "" }, "require": { @@ -17620,7 +17618,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.4.12" + "source": "https://github.com/symfony/string/tree/v6.4.15" }, "funding": [ { @@ -17636,7 +17634,7 @@ "type": "tidelift" } ], - "time": "2024-09-20T08:15:52+00:00" + "time": "2024-11-13T13:31:12+00:00" }, { "name": "symfony/translation", @@ -17813,16 +17811,16 @@ }, { "name": "symfony/validator", - "version": "v6.4.12", + "version": "v6.4.15", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "6da1f0a1ee73d060a411d832cbe0539cfe9bbaa0" + "reference": "7541055cdaf54ff95f0735bf703d313374e8b20b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/6da1f0a1ee73d060a411d832cbe0539cfe9bbaa0", - "reference": "6da1f0a1ee73d060a411d832cbe0539cfe9bbaa0", + "url": "https://api.github.com/repos/symfony/validator/zipball/7541055cdaf54ff95f0735bf703d313374e8b20b", + "reference": "7541055cdaf54ff95f0735bf703d313374e8b20b", "shasum": "" }, "require": { @@ -17890,7 +17888,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v6.4.12" + "source": "https://github.com/symfony/validator/tree/v6.4.15" }, "funding": [ { @@ -17906,20 +17904,20 @@ "type": "tidelift" } ], - "time": "2024-09-20T08:18:25+00:00" + "time": "2024-11-08T15:28:48+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.4.11", + "version": "v6.4.15", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "ee14c8254a480913268b1e3b1cba8045ed122694" + "reference": "38254d5a5ac2e61f2b52f9caf54e7aa3c9d36b80" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/ee14c8254a480913268b1e3b1cba8045ed122694", - "reference": "ee14c8254a480913268b1e3b1cba8045ed122694", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/38254d5a5ac2e61f2b52f9caf54e7aa3c9d36b80", + "reference": "38254d5a5ac2e61f2b52f9caf54e7aa3c9d36b80", "shasum": "" }, "require": { @@ -17975,7 +17973,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.4.11" + "source": "https://github.com/symfony/var-dumper/tree/v6.4.15" }, "funding": [ { @@ -17991,20 +17989,20 @@ "type": "tidelift" } ], - "time": "2024-08-30T16:03:21+00:00" + "time": "2024-11-08T15:28:48+00:00" }, { "name": "symfony/var-exporter", - "version": "v7.1.2", + "version": "v7.1.6", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "b80a669a2264609f07f1667f891dbfca25eba44c" + "reference": "90173ef89c40e7c8c616653241048705f84130ef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/b80a669a2264609f07f1667f891dbfca25eba44c", - "reference": "b80a669a2264609f07f1667f891dbfca25eba44c", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/90173ef89c40e7c8c616653241048705f84130ef", + "reference": "90173ef89c40e7c8c616653241048705f84130ef", "shasum": "" }, "require": { @@ -18051,7 +18049,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v7.1.2" + "source": "https://github.com/symfony/var-exporter/tree/v7.1.6" }, "funding": [ { @@ -18067,20 +18065,20 @@ "type": "tidelift" } ], - "time": "2024-06-28T08:00:31+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/yaml", - "version": "v6.4.12", + "version": "v6.4.13", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "762ee56b2649659380e0ef4d592d807bc17b7971" + "reference": "e99b4e94d124b29ee4cf3140e1b537d2dad8cec9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/762ee56b2649659380e0ef4d592d807bc17b7971", - "reference": "762ee56b2649659380e0ef4d592d807bc17b7971", + "url": "https://api.github.com/repos/symfony/yaml/zipball/e99b4e94d124b29ee4cf3140e1b537d2dad8cec9", + "reference": "e99b4e94d124b29ee4cf3140e1b537d2dad8cec9", "shasum": "" }, "require": { @@ -18123,7 +18121,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v6.4.12" + "source": "https://github.com/symfony/yaml/tree/v6.4.13" }, "funding": [ { @@ -18139,7 +18137,7 @@ "type": "tidelift" } ], - "time": "2024-09-17T12:47:12+00:00" + "time": "2024-09-25T14:18:03+00:00" }, { "name": "t4web/composer-lock-parser", @@ -18242,16 +18240,16 @@ }, { "name": "twig/twig", - "version": "v3.14.0", + "version": "v3.15.0", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "126b2c97818dbff0cdf3fbfc881aedb3d40aae72" + "reference": "2d5b3964cc21d0188633d7ddce732dc8e874db02" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/126b2c97818dbff0cdf3fbfc881aedb3d40aae72", - "reference": "126b2c97818dbff0cdf3fbfc881aedb3d40aae72", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/2d5b3964cc21d0188633d7ddce732dc8e874db02", + "reference": "2d5b3964cc21d0188633d7ddce732dc8e874db02", "shasum": "" }, "require": { @@ -18305,7 +18303,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.14.0" + "source": "https://github.com/twigphp/Twig/tree/v3.15.0" }, "funding": [ { @@ -18317,7 +18315,7 @@ "type": "tidelift" } ], - "time": "2024-09-09T17:55:12+00:00" + "time": "2024-11-17T15:59:19+00:00" }, { "name": "twistor/flysystem-stream-wrapper", @@ -20607,16 +20605,16 @@ }, { "name": "php-http/discovery", - "version": "1.19.4", + "version": "1.20.0", "source": { "type": "git", "url": "https://github.com/php-http/discovery.git", - "reference": "0700efda8d7526335132360167315fdab3aeb599" + "reference": "82fe4c73ef3363caed49ff8dd1539ba06044910d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/discovery/zipball/0700efda8d7526335132360167315fdab3aeb599", - "reference": "0700efda8d7526335132360167315fdab3aeb599", + "url": "https://api.github.com/repos/php-http/discovery/zipball/82fe4c73ef3363caed49ff8dd1539ba06044910d", + "reference": "82fe4c73ef3363caed49ff8dd1539ba06044910d", "shasum": "" }, "require": { @@ -20680,9 +20678,9 @@ ], "support": { "issues": "https://github.com/php-http/discovery/issues", - "source": "https://github.com/php-http/discovery/tree/1.19.4" + "source": "https://github.com/php-http/discovery/tree/1.20.0" }, - "time": "2024-03-29T13:00:05+00:00" + "time": "2024-10-02T11:20:13+00:00" }, { "name": "php-http/guzzle7-adapter", @@ -20748,16 +20746,16 @@ }, { "name": "php-http/httplug", - "version": "2.4.0", + "version": "2.4.1", "source": { "type": "git", "url": "https://github.com/php-http/httplug.git", - "reference": "625ad742c360c8ac580fcc647a1541d29e257f67" + "reference": "5cad731844891a4c282f3f3e1b582c46839d22f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/httplug/zipball/625ad742c360c8ac580fcc647a1541d29e257f67", - "reference": "625ad742c360c8ac580fcc647a1541d29e257f67", + "url": "https://api.github.com/repos/php-http/httplug/zipball/5cad731844891a4c282f3f3e1b582c46839d22f4", + "reference": "5cad731844891a4c282f3f3e1b582c46839d22f4", "shasum": "" }, "require": { @@ -20799,9 +20797,9 @@ ], "support": { "issues": "https://github.com/php-http/httplug/issues", - "source": "https://github.com/php-http/httplug/tree/2.4.0" + "source": "https://github.com/php-http/httplug/tree/2.4.1" }, - "time": "2023-04-14T15:10:03+00:00" + "time": "2024-09-23T11:39:58+00:00" }, { "name": "php-http/promise", @@ -20910,16 +20908,16 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "5.4.1", + "version": "5.6.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c" + "reference": "f3558a4c23426d12bffeaab463f8a8d8b681193c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c", - "reference": "9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/f3558a4c23426d12bffeaab463f8a8d8b681193c", + "reference": "f3558a4c23426d12bffeaab463f8a8d8b681193c", "shasum": "" }, "require": { @@ -20928,17 +20926,17 @@ "php": "^7.4 || ^8.0", "phpdocumentor/reflection-common": "^2.2", "phpdocumentor/type-resolver": "^1.7", - "phpstan/phpdoc-parser": "^1.7", + "phpstan/phpdoc-parser": "^1.7|^2.0", "webmozart/assert": "^1.9.1" }, "require-dev": { - "mockery/mockery": "~1.3.5", + "mockery/mockery": "~1.3.5 || ~1.6.0", "phpstan/extension-installer": "^1.1", "phpstan/phpstan": "^1.8", "phpstan/phpstan-mockery": "^1.1", "phpstan/phpstan-webmozart-assert": "^1.2", "phpunit/phpunit": "^9.5", - "vimeo/psalm": "^5.13" + "psalm/phar": "^5.26" }, "type": "library", "extra": { @@ -20968,29 +20966,29 @@ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", "support": { "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.4.1" + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.0" }, - "time": "2024-05-21T05:55:05+00:00" + "time": "2024-11-12T11:25:25+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "1.8.2", + "version": "1.10.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "153ae662783729388a584b4361f2545e4d841e3c" + "reference": "679e3ce485b99e84c775d28e2e96fade9a7fb50a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/153ae662783729388a584b4361f2545e4d841e3c", - "reference": "153ae662783729388a584b4361f2545e4d841e3c", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/679e3ce485b99e84c775d28e2e96fade9a7fb50a", + "reference": "679e3ce485b99e84c775d28e2e96fade9a7fb50a", "shasum": "" }, "require": { "doctrine/deprecations": "^1.0", "php": "^7.3 || ^8.0", "phpdocumentor/reflection-common": "^2.0", - "phpstan/phpdoc-parser": "^1.13" + "phpstan/phpdoc-parser": "^1.18|^2.0" }, "require-dev": { "ext-tokenizer": "*", @@ -21026,9 +21024,9 @@ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.2" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.10.0" }, - "time": "2024-02-23T11:10:43+00:00" + "time": "2024-11-09T15:12:26+00:00" }, { "name": "phpspec/prophecy", @@ -23647,6 +23645,6 @@ "platform": { "ext-json": "*" }, - "platform-dev": [], + "platform-dev": {}, "plugin-api-version": "2.6.0" } diff --git a/conf/cmi/core.entity_form_display.paragraph.curated_event_list.default.yml b/conf/cmi/core.entity_form_display.paragraph.curated_event_list.default.yml new file mode 100644 index 0000000000..2514fff17a --- /dev/null +++ b/conf/cmi/core.entity_form_display.paragraph.curated_event_list.default.yml @@ -0,0 +1,38 @@ +uuid: b5c5ed81-d651-4db2-8d72-a67e7b66390e +langcode: en +status: true +dependencies: + config: + - field.field.paragraph.curated_event_list.field_all_events_link + - field.field.paragraph.curated_event_list.field_events + - paragraphs.paragraphs_type.curated_event_list + module: + - link +_core: + default_config_hash: xbLWsjGFnK8aSW5O_r3mVF5bAlCp8J6wP5mGihlXLfU +id: paragraph.curated_event_list.default +targetEntityType: paragraph +bundle: curated_event_list +mode: default +content: + field_all_events_link: + type: link_default + weight: 1 + region: content + settings: + placeholder_url: '' + placeholder_title: '' + third_party_settings: { } + field_events: + type: entity_reference_autocomplete + weight: 0 + region: content + settings: + match_operator: CONTAINS + match_limit: 5 + size: 60 + placeholder: '' + third_party_settings: { } +hidden: + created: true + status: true diff --git a/conf/cmi/core.entity_view_display.linkedevents_event.linkedevents_event.default.yml b/conf/cmi/core.entity_view_display.linkedevents_event.linkedevents_event.default.yml new file mode 100644 index 0000000000..78ab301eea --- /dev/null +++ b/conf/cmi/core.entity_view_display.linkedevents_event.linkedevents_event.default.yml @@ -0,0 +1,75 @@ +uuid: 22363443-8bc6-4b97-980f-6bfb225edb1b +langcode: en +status: true +dependencies: + config: + - responsive_image.styles.card_teaser + module: + - datetime + - external_entities + - imagecache_external + - linkit +_core: + default_config_hash: HLUzZHxqtb77OIc2B344fWXiNo5fO78woa0r4KmRGcA +id: linkedevents_event.linkedevents_event.default +targetEntityType: linkedevents_event +bundle: linkedevents_event +mode: default +content: + end_time: + type: datetime_default + label: hidden + settings: + timezone_override: '' + format_type: medium + third_party_settings: { } + weight: 3 + region: content + external_link: + type: linkit + label: hidden + settings: + trim_length: 80 + url_only: false + url_plain: false + rel: '' + target: '' + linkit_profile: default + third_party_settings: { } + weight: 4 + region: content + langcode: + type: string_default + label: hidden + settings: { } + third_party_settings: { } + weight: 5 + region: content + main_image: + type: imagecache_external_responsive_image + label: hidden + settings: + imagecache_external_link: '' + imagecache_external_responsive_style: card_teaser + third_party_settings: { } + weight: 1 + region: content + start_time: + type: datetime_default + label: hidden + settings: + timezone_override: '' + format_type: medium + third_party_settings: { } + weight: 2 + region: content + title: + type: string + label: hidden + settings: + link_to_entity: false + third_party_settings: { } + weight: 0 + region: content +hidden: + search_api_excerpt: true diff --git a/conf/cmi/core.entity_view_display.paragraph.curated_event_list.default.yml b/conf/cmi/core.entity_view_display.paragraph.curated_event_list.default.yml new file mode 100644 index 0000000000..966ffdd46e --- /dev/null +++ b/conf/cmi/core.entity_view_display.paragraph.curated_event_list.default.yml @@ -0,0 +1,40 @@ +uuid: 313ec60d-d84a-4e82-9ae3-ee3221c0e631 +langcode: en +status: true +dependencies: + config: + - field.field.paragraph.curated_event_list.field_all_events_link + - field.field.paragraph.curated_event_list.field_events + - paragraphs.paragraphs_type.curated_event_list + module: + - link +_core: + default_config_hash: kSyBcsfddKV9vQJsToglwPaZvKFQSf3GDFPLqkzIfTQ +id: paragraph.curated_event_list.default +targetEntityType: paragraph +bundle: curated_event_list +mode: default +content: + field_all_events_link: + type: link + label: hidden + settings: + trim_length: 80 + url_only: false + url_plain: false + rel: '' + target: '' + third_party_settings: { } + weight: 1 + region: content + field_events: + type: entity_reference_entity_view + label: hidden + settings: + view_mode: default + link: false + third_party_settings: { } + weight: 0 + region: content +hidden: + search_api_excerpt: true diff --git a/conf/cmi/core.extension.yml b/conf/cmi/core.extension.yml index 22d09b7a54..3794c42554 100644 --- a/conf/cmi/core.extension.yml +++ b/conf/cmi/core.extension.yml @@ -54,12 +54,13 @@ module: grants_admin_applications: 0 grants_applicant_info: 0 grants_application_search: 0 - grants_attachments: 0 grants_audit_log: 0 grants_budget_components: 0 grants_club_section: 0 + grants_events: 0 grants_front_banner: 0 grants_industries: 0 + grants_logger: 0 grants_mandate: 0 grants_members: 0 grants_metadata: 0 @@ -103,6 +104,7 @@ module: helfi_paragraphs_columns: 0 helfi_paragraphs_contact_card_listing: 0 helfi_paragraphs_content_cards: 0 + helfi_paragraphs_curated_event_list: 0 helfi_paragraphs_hearings: 0 helfi_paragraphs_hero: 0 helfi_paragraphs_image: 0 @@ -217,9 +219,10 @@ module: webform_translation_permissions: 0 webform_ui: 0 webform_views: 0 - grants_handler: 1 + grants_attachments: 1 menu_admin_per_menu: 1 pathauto: 1 + grants_handler: 2 content_translation: 10 externalauth: 10 views: 10 diff --git a/conf/cmi/external_entities.external_entity_type.linkedevents_event.yml b/conf/cmi/external_entities.external_entity_type.linkedevents_event.yml new file mode 100644 index 0000000000..819ef5ee38 --- /dev/null +++ b/conf/cmi/external_entities.external_entity_type.linkedevents_event.yml @@ -0,0 +1,38 @@ +uuid: 66fe8cbc-203c-40aa-ac7b-6e0e89470312 +langcode: en +status: true +dependencies: { } +_core: + default_config_hash: Ll_0kw3O6gGsRvmdTi7l4K2pwhUrL0yQT4uPcttspmA +id: linkedevents_event +label: 'LinkedEvents: Event' +label_plural: 'LinkedEvents: Events' +description: 'Event entities from https://api.hel.fi/linkedevents.' +read_only: true +generate_aliases: false +field_mapper_id: jsonpath +field_mapper_config: + field_mappings: + id: + value: $.id + uuid: + value: $.id + title: + value: $.title + main_image: + uri: '$.images[0].url' + title: '$.images[0].alt_text' + start_time: + value: $.start_time + end_time: + value: $.end_time + external_link: + uri: $.external_link + title: $.clean_title +storage_client_id: linkedevents_events +storage_client_config: null +persistent_cache_max_age: 0 +annotation_entity_type_id: null +annotation_bundle_id: null +annotation_field_name: null +inherits_annotation_fields: false diff --git a/conf/cmi/field.field.node.landing_page.field_content.yml b/conf/cmi/field.field.node.landing_page.field_content.yml index f79d0bf279..54981785dd 100644 --- a/conf/cmi/field.field.node.landing_page.field_content.yml +++ b/conf/cmi/field.field.node.landing_page.field_content.yml @@ -9,6 +9,7 @@ dependencies: - paragraphs.paragraphs_type.chart - paragraphs.paragraphs_type.columns - paragraphs.paragraphs_type.content_cards + - paragraphs.paragraphs_type.curated_event_list - paragraphs.paragraphs_type.event_list - paragraphs.paragraphs_type.from_library - paragraphs.paragraphs_type.front_banner @@ -65,6 +66,7 @@ settings: service_list_search: service_list_search unit_search: unit_search unit_contact_card: unit_contact_card + curated_event_list: curated_event_list negate: 0 target_bundles_drag_drop: banner: @@ -79,6 +81,9 @@ settings: content_cards: weight: 1 enabled: true + curated_event_list: + weight: 15 + enabled: true event_list: weight: 13 enabled: true diff --git a/conf/cmi/field.field.paragraph.curated_event_list.field_all_events_link.yml b/conf/cmi/field.field.paragraph.curated_event_list.field_all_events_link.yml new file mode 100644 index 0000000000..78d0b93564 --- /dev/null +++ b/conf/cmi/field.field.paragraph.curated_event_list.field_all_events_link.yml @@ -0,0 +1,30 @@ +uuid: b144b934-3c5a-4c5b-ae89-b477bfb8367d +langcode: en +status: true +dependencies: + config: + - field.storage.paragraph.field_all_events_link + - paragraphs.paragraphs_type.curated_event_list + module: + - link +_core: + default_config_hash: FfVydFQYnAcPJkSaTbBQoyzqe8k11WrSJ5tSxAt8b1k +id: paragraph.curated_event_list.field_all_events_link +field_name: field_all_events_link +entity_type: paragraph +bundle: curated_event_list +label: 'All events link' +description: "Add a link to the tapahtumat.hel.fi website. You may also filter the events in the event calendar as desired and copy the page's URL.\r\n

\r\nAlso provide a text for the link, eg. View all events." +required: false +translatable: false +default_value: + - + attributes: { } + uri: 'https://tapahtumat.hel.fi' + title: 'View all events' + options: { } +default_value_callback: '' +settings: + title: 2 + link_type: 16 +field_type: link diff --git a/conf/cmi/field.field.paragraph.curated_event_list.field_events.yml b/conf/cmi/field.field.paragraph.curated_event_list.field_events.yml new file mode 100644 index 0000000000..896f3cdee2 --- /dev/null +++ b/conf/cmi/field.field.paragraph.curated_event_list.field_events.yml @@ -0,0 +1,28 @@ +uuid: 41acbd4d-63ba-4cb7-919c-d6435553d4a9 +langcode: en +status: true +dependencies: + config: + - field.storage.paragraph.field_events + - paragraphs.paragraphs_type.curated_event_list +_core: + default_config_hash: XaOHQv-1E_t55GwYhhyvtA03_7mWbdEbmXA3YhGrHiA +id: paragraph.curated_event_list.field_events +field_name: field_events +entity_type: paragraph +bundle: curated_event_list +label: Events +description: "Pick events to display in the list. You may either search event by their name or enter their ID. \r\n

\r\nYou can find the ID of an event on tapahtumat.hel.fi site from the URL of the page. For example, in the url https://tapahtumat.hel.fi/fi/events/helsinki:agiy4m4ida the helsinki:agiy4m4ida part is the ID of the event.\r\n

\r\nThe page will display the top three events. You can arrange the events by dragging. Expired events will be automatically removed from the page." +required: false +translatable: false +default_value: { } +default_value_callback: '' +settings: + handler: 'default:linkedevents_event' + handler_settings: + target_bundles: null + sort: + field: _none + direction: ASC + auto_create: false +field_type: entity_reference diff --git a/conf/cmi/field.storage.paragraph.field_all_events_link.yml b/conf/cmi/field.storage.paragraph.field_all_events_link.yml new file mode 100644 index 0000000000..046d3b06b4 --- /dev/null +++ b/conf/cmi/field.storage.paragraph.field_all_events_link.yml @@ -0,0 +1,21 @@ +uuid: 1dd4d7e6-e3be-490e-9309-e9380e0c33b4 +langcode: en +status: true +dependencies: + module: + - link + - paragraphs +_core: + default_config_hash: 7QiTeiuYd-9Za2xvC3WVShDfIhAcgIpMYzIV4PX2NLQ +id: paragraph.field_all_events_link +field_name: field_all_events_link +entity_type: paragraph +type: link +settings: { } +module: link +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/conf/cmi/field.storage.paragraph.field_events.yml b/conf/cmi/field.storage.paragraph.field_events.yml new file mode 100644 index 0000000000..aff4e3ba3e --- /dev/null +++ b/conf/cmi/field.storage.paragraph.field_events.yml @@ -0,0 +1,22 @@ +uuid: a381685c-627a-4ba4-8be3-5bb2d2a705bd +langcode: en +status: true +dependencies: + module: + - external_entities + - paragraphs +_core: + default_config_hash: 5xBhIfvn2RSNE7qg7Ep4BljIMo7j78jrEekdHV_eCgo +id: paragraph.field_events +field_name: field_events +entity_type: paragraph +type: entity_reference +settings: + target_type: linkedevents_event +module: core +locked: false +cardinality: -1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/conf/cmi/grants_metadata.settings.yml b/conf/cmi/grants_metadata.settings.yml index 0fbb803dbb..1b97e04b44 100644 --- a/conf/cmi/grants_metadata.settings.yml +++ b/conf/cmi/grants_metadata.settings.yml @@ -299,7 +299,6 @@ third_party_options: 52: 'Liikunnan erityisavustus 2' 53: 'Kulttuurin ja vapaa-ajan erityisavustus 1' 54: 'Kulttuurin ja vapaa-ajan erityisavustus 2' - langcode: en config_import_ignore: - 53 diff --git a/conf/cmi/language/en/webform.webform.liikunta_suunnistuskartta_avustu.yml b/conf/cmi/language/en/webform.webform.liikunta_suunnistuskartta_avustu.yml index 2a002764f5..207508f0c9 100644 --- a/conf/cmi/language/en/webform.webform.liikunta_suunnistuskartta_avustu.yml +++ b/conf/cmi/language/en/webform.webform.liikunta_suunnistuskartta_avustu.yml @@ -75,7 +75,7 @@ elements: |

All the attachments listed below must be submitted for the processing of the grant application. The grant application may be rejected if the attachments are not submitted. If any of the attachments is missing, let us know in the Further clarification on attachments section of the application.

Required attachments

-

For the processing of the grant application, the required attachments are the confirmed attachments approved and signed by the community at its meeting for the previous accounting period and for the operating year for which the grant is being applied for. The attachments concerning the previous accounting period are the financial statements, the annual report, the audit or performance audit report and the minutes of the annual meeting. The attachments for the year for which the grant is being applied for are the budget and action plan.

+

Invoices and receipts for the cost of producing orienteering maps must be submitted only upon request.

Submission of several attachments as a single file

If you wish, you can submit several attachments as a single file under Financial statements or Budget. In this case, under the other attachment headings, indicate “The attachment has been submitted as a single file or with another application.”

Attachments previously submitted to the City of Helsinki

diff --git a/conf/cmi/language/fi/field.field.paragraph.curated_event_list.field_all_events_link.yml b/conf/cmi/language/fi/field.field.paragraph.curated_event_list.field_all_events_link.yml new file mode 100644 index 0000000000..baa2627931 --- /dev/null +++ b/conf/cmi/language/fi/field.field.paragraph.curated_event_list.field_all_events_link.yml @@ -0,0 +1,5 @@ +label: 'Kaikki tapahtumat -linkki' +description: "Lisää likki tapahtumat.hel.fi -sivulle. Voit halutessasi tehdä tapahtumakalenterissa haluamasi tapahtumien rajauksen ja kopioida sivun URL-osoitteen.\r\nLisää myös teksti linkille, esimerkiksi. Katso kaikki tapahtumat" +default_value: + - + title: 'Katso kaikki tapahtumat' diff --git a/conf/cmi/language/fi/field.field.paragraph.curated_event_list.field_events.yml b/conf/cmi/language/fi/field.field.paragraph.curated_event_list.field_events.yml new file mode 100644 index 0000000000..65cac6a6ed --- /dev/null +++ b/conf/cmi/language/fi/field.field.paragraph.curated_event_list.field_events.yml @@ -0,0 +1,2 @@ +label: Tapahtumat +description: "Valitse tapahtumat, jotka näytetään listassa. Voit hakea tapahtumaa sen nimellä tai tapahtuman ID:llä.\r\n

\r\nLöydät tapahtuman ID:n tapahtumat.hel.fi-sivun osoitteesta: esimerkiksi osoitteessa https://tapahtumat.hel.fi/fi/events/helsinki:agiy4m4ida kohta helsinki:agiy4m4ida on tapahtuman ID.\r\n

\r\nSivulla näytetään kolme ylintä tapahtumaa. Voit järjestää tapahtumia raahaamalla. Vanhentuneet tapahtumat poistuvat sivulta automaattisesti." diff --git a/conf/cmi/language/fi/paragraphs.paragraphs_type.curated_event_list.yml b/conf/cmi/language/fi/paragraphs.paragraphs_type.curated_event_list.yml new file mode 100644 index 0000000000..7d8f759d86 --- /dev/null +++ b/conf/cmi/language/fi/paragraphs.paragraphs_type.curated_event_list.yml @@ -0,0 +1,2 @@ +label: 'Kuratoitu tapahtumalista' +description: 'Manuaalisesti ylläpidettävä tapahtumalista tapahtumille Linked Events -rajapinnasta.' diff --git a/conf/cmi/language/sv/webform.webform.liikunta_suunnistuskartta_avustu.yml b/conf/cmi/language/sv/webform.webform.liikunta_suunnistuskartta_avustu.yml index b77a129bba..6b16f2a791 100644 --- a/conf/cmi/language/sv/webform.webform.liikunta_suunnistuskartta_avustu.yml +++ b/conf/cmi/language/sv/webform.webform.liikunta_suunnistuskartta_avustu.yml @@ -77,7 +77,7 @@ elements: | '#markup': |-

Alla bilagor som anges nedan måste lämnas in för behandling av ansökan om understöd. Ansökan om understöd kan avslås om bilagorna inte har lämnats in. Om någon av bilagorna saknas, meddela oss om det i punkten Ytterligare information om bilagor i ansökan.

Erforderliga bilagor

-

För behandling av ansökan om understöd behövs styrkta bilagor från den föregående räkenskapsperioden som samfundet har godkänt och undertecknat vid sitt möte samt bilagor för det verksamhetsår för vilket understödet ansöks. Bilagorna från den föregående räkenskapsperioden är: bokslut, verksamhetsberättelse, revisionsberättelse och protokoll från årsstämman. Bilagorna för det år för vilket understödet ansöks är: budget och verksamhetsplan.

+

Fakturorna och kvittona över kostnaderna för framställning av orienteringskartor ska lämnas endast separat på begäran.

Inlämning av flera bilagor i en fil

Om du vill kan du lämna in flera bilagor i en fil i punkten Bokslut eller budget. Ange i detta fall vid andra bilagor att ”Bilagan har lämnats in som en fil eller i samband med en annan ansökan”.

Bilagor som tidigare lämnats in till Helsingfors stad

diff --git a/conf/cmi/paragraphs.paragraphs_type.curated_event_list.yml b/conf/cmi/paragraphs.paragraphs_type.curated_event_list.yml new file mode 100644 index 0000000000..b729b022a5 --- /dev/null +++ b/conf/cmi/paragraphs.paragraphs_type.curated_event_list.yml @@ -0,0 +1,12 @@ +uuid: 5b0c689e-1733-47ff-ba7c-63923e4f2116 +langcode: en +status: true +dependencies: { } +_core: + default_config_hash: OdlftsJm7cyT434X7pj43aSTgKo7t5f7eYxG3ShBimY +id: curated_event_list +label: 'Curated event list' +icon_uuid: null +icon_default: null +description: 'Event list with curated event picks loaded from Linked Events API.' +behavior_plugins: { } diff --git a/conf/cmi/raven.settings.yml b/conf/cmi/raven.settings.yml index 983d704b24..d2afac6392 100644 --- a/conf/cmi/raven.settings.yml +++ b/conf/cmi/raven.settings.yml @@ -4,14 +4,14 @@ client_key: '' environment: '' release: '' log_levels: - 1: 1 - 2: 2 - 3: 3 - 4: 4 - 5: 0 - 6: 0 - 7: 0 - 8: 0 + emergency: true + alert: true + critical: true + error: true + warning: false + notice: false + info: false + debug: false stack: true timeout: 2.0 message_limit: 2048 diff --git a/conf/cmi/responsive_image.styles.unit_contact_card.yml b/conf/cmi/responsive_image.styles.unit_contact_card.yml index 3893c27faa..3b41081f10 100644 --- a/conf/cmi/responsive_image.styles.unit_contact_card.yml +++ b/conf/cmi/responsive_image.styles.unit_contact_card.yml @@ -3,72 +3,72 @@ langcode: en status: true dependencies: config: - - image.style.1.5_1120w_746h_LQ - - image.style.1.5_1200w_800h_LQ - - image.style.1.5_1298w_866h_LQ - - image.style.1.5_1470w_980h_LQ - - image.style.1.5_1854w_1236h_LQ - - image.style.1.5_560w_373h - - image.style.1.5_600w_400h - - image.style.1.5_649w_433h - - image.style.1.5_735w_490h - - image.style.1.5_927w_618h + - image.style.1.5_1022w_682h_LQ + - image.style.1.5_217w_145h + - image.style.1.5_264w_176h + - image.style.1.5_341w_227h + - image.style.1.5_378w_252h + - image.style.1.5_434w_290h_LQ + - image.style.1.5_511w_341h + - image.style.1.5_528w_352h_LQ + - image.style.1.5_682w_454h_LQ + - image.style.1.5_756w_504h_LQ module: - helfi_image_styles _core: - default_config_hash: j4r0g0EtcwDoFwxEuB3RGVktSuN6LWThnZBfw2SpG6g + default_config_hash: VnnwBYRxRNKSPg5iTbuRmMLcv0ZtU6Tjd4crcbDTeCs id: unit_contact_card label: 'Unit Contact Card' image_style_mappings: - image_mapping_type: image_style - image_mapping: 1.5_649w_433h + image_mapping: 1.5_378w_252h breakpoint_id: helfi_image_styles.xl multiplier: 1x - image_mapping_type: image_style - image_mapping: 1.5_1298w_866h_LQ + image_mapping: 1.5_756w_504h_LQ breakpoint_id: helfi_image_styles.xl multiplier: 2x - image_mapping_type: image_style - image_mapping: 1.5_600w_400h + image_mapping: 1.5_341w_227h breakpoint_id: helfi_image_styles.l multiplier: 1x - image_mapping_type: image_style - image_mapping: 1.5_1200w_800h_LQ + image_mapping: 1.5_682w_454h_LQ breakpoint_id: helfi_image_styles.l multiplier: 2x - image_mapping_type: image_style - image_mapping: 1.5_927w_618h + image_mapping: 1.5_264w_176h breakpoint_id: helfi_image_styles.m multiplier: 1x - image_mapping_type: image_style - image_mapping: 1.5_1854w_1236h_LQ + image_mapping: 1.5_528w_352h_LQ breakpoint_id: helfi_image_styles.m multiplier: 2x - image_mapping_type: image_style - image_mapping: 1.5_735w_490h + image_mapping: 1.5_217w_145h breakpoint_id: helfi_image_styles.s multiplier: 1x - image_mapping_type: image_style - image_mapping: 1.5_1470w_980h_LQ + image_mapping: 1.5_434w_290h_LQ breakpoint_id: helfi_image_styles.s multiplier: 2x - image_mapping_type: image_style - image_mapping: 1.5_560w_373h + image_mapping: 1.5_511w_341h breakpoint_id: helfi_image_styles.xs multiplier: 1x - image_mapping_type: image_style - image_mapping: 1.5_1120w_746h_LQ + image_mapping: 1.5_1022w_682h_LQ breakpoint_id: helfi_image_styles.xs multiplier: 2x breakpoint_group: helfi_image_styles -fallback_image_style: 1.5_735w_490h +fallback_image_style: 1.5_378w_252h diff --git a/conf/cmi/user.role.ad_user.yml b/conf/cmi/user.role.ad_user.yml index d1c3ef4d7b..89763b05b0 100644 --- a/conf/cmi/user.role.ad_user.yml +++ b/conf/cmi/user.role.ad_user.yml @@ -6,6 +6,7 @@ dependencies: - taxonomy.vocabulary.news_tags module: - file + - raven - taxonomy id: ad_user label: 'AD User' @@ -14,3 +15,4 @@ is_admin: null permissions: - 'delete own files' - 'edit terms in news_tags' + - 'send performance traces to sentry' diff --git a/conf/cmi/user.role.admin.yml b/conf/cmi/user.role.admin.yml index c3ee3c3409..601310a188 100644 --- a/conf/cmi/user.role.admin.yml +++ b/conf/cmi/user.role.admin.yml @@ -56,6 +56,7 @@ dependencies: - path - pathauto - publication_date + - raven - redirect - responsive_image - role_delegation @@ -283,6 +284,7 @@ permissions: - 'revert service revisions' - 'schedule publishing of nodes' - 'select account cancellation method' + - 'send performance traces to sentry' - 'set announcement published on date' - 'set landing_page published on date' - 'set page published on date' diff --git a/conf/cmi/user.role.anonymous.yml b/conf/cmi/user.role.anonymous.yml index 3aa3993dde..60e2693019 100644 --- a/conf/cmi/user.role.anonymous.yml +++ b/conf/cmi/user.role.anonymous.yml @@ -8,16 +8,19 @@ dependencies: - helfi_api_base - helfi_tpr - media + - raven - system _core: default_config_hash: EDyVdaROG6pYzyEct43c01Wq4gpATszrk-qR6gqnQ84 id: anonymous -label: 'Anonyymi käyttäjä' +label: 'Anonymous user' weight: -10 is_admin: false permissions: - 'access content' - 'display eu cookie compliance popup' + - 'send javascript errors to sentry' + - 'send performance traces to sentry' - 'view helfi_announcements external entity' - 'view helfi_news external entity' - 'view helfi_news_groups external entity' diff --git a/conf/cmi/user.role.authenticated.yml b/conf/cmi/user.role.authenticated.yml index ecda6e3ca1..d1d55248c8 100644 --- a/conf/cmi/user.role.authenticated.yml +++ b/conf/cmi/user.role.authenticated.yml @@ -16,11 +16,13 @@ dependencies: - helfi_tpr - media - node + - paragraphs + - raven - system _core: default_config_hash: 83Nuup-6oYkkdAsvg3nrR2pBOgtTXEV1JrzpCCLkYLM id: authenticated -label: 'Sisäänkirjautunut käyttäjä' +label: 'Authenticated user' weight: -9 is_admin: false permissions: @@ -29,6 +31,8 @@ permissions: - 'delete own files' - 'display eu cookie compliance popup' - 'edit own address content' + - 'send javascript errors to sentry' + - 'send performance traces to sentry' - 'use text format full_html' - 'use text format minimal' - 'use text format webform_default' @@ -42,3 +46,4 @@ permissions: - 'view remote entities' - 'view tpr_service' - 'view tpr_unit' + - 'view unpublished paragraphs' diff --git a/conf/cmi/user.role.content_producer.yml b/conf/cmi/user.role.content_producer.yml index 8f35351246..c674e78fd1 100644 --- a/conf/cmi/user.role.content_producer.yml +++ b/conf/cmi/user.role.content_producer.yml @@ -35,6 +35,7 @@ dependencies: - path - pathauto - publication_date + - raven - scheduler - system - taxonomy @@ -125,6 +126,7 @@ permissions: - 'revert page revisions' - 'revert service revisions' - 'schedule publishing of nodes' + - 'send performance traces to sentry' - 'set announcement published on date' - 'set landing_page published on date' - 'set page published on date' diff --git a/conf/cmi/user.role.content_producer_industry.yml b/conf/cmi/user.role.content_producer_industry.yml index 5e7d0b7534..09c3a0656a 100644 --- a/conf/cmi/user.role.content_producer_industry.yml +++ b/conf/cmi/user.role.content_producer_industry.yml @@ -18,6 +18,7 @@ dependencies: - override_node_options - paragraphs - path + - raven - scheduler - system - taxonomy @@ -51,6 +52,7 @@ permissions: - 'override service published option' - 'revert service revisions' - 'schedule publishing of nodes' + - 'send performance traces to sentry' - 'translate editable entities' - 'translate interface' - 'update media' diff --git a/conf/cmi/user.role.editor.yml b/conf/cmi/user.role.editor.yml index 603f3c5a78..22a63ffb9f 100644 --- a/conf/cmi/user.role.editor.yml +++ b/conf/cmi/user.role.editor.yml @@ -32,6 +32,7 @@ dependencies: - paragraphs_library - path - publication_date + - raven - redirect - scheduler - system @@ -132,6 +133,7 @@ permissions: - 'revert news_item revisions' - 'revert page revisions' - 'schedule publishing of nodes' + - 'send performance traces to sentry' - 'set announcement published on date' - 'set landing_page published on date' - 'set news_item published on date' diff --git a/conf/cmi/user.role.grants_admin.yml b/conf/cmi/user.role.grants_admin.yml index 715c5b5df6..11293a7ac7 100644 --- a/conf/cmi/user.role.grants_admin.yml +++ b/conf/cmi/user.role.grants_admin.yml @@ -44,6 +44,7 @@ dependencies: - path - pathauto - publication_date + - raven - role_delegation - scheduler - system @@ -214,13 +215,13 @@ permissions: - 'revert service revisions' - 'schedule publishing of nodes' - 'select account cancellation method' + - 'send performance traces to sentry' - 'set announcement published on date' - 'set landing_page published on date' - 'set news_item published on date' - 'set page published on date' - 'translate announcement node' - 'translate any webform' - - 'translate article node' - 'translate avustuslaji taxonomy_term' - 'translate block_content' - 'translate configuration' diff --git a/conf/cmi/user.role.grants_producer.yml b/conf/cmi/user.role.grants_producer.yml index fe781261f6..9f11962e68 100644 --- a/conf/cmi/user.role.grants_producer.yml +++ b/conf/cmi/user.role.grants_producer.yml @@ -3,15 +3,29 @@ langcode: en status: true dependencies: config: + - media.type.file + - media.type.image + - media.type.remote_video - node.type.landing_page - node.type.page - node.type.service + - taxonomy.vocabulary.avustuslaji + - taxonomy.vocabulary.keywords + - taxonomy.vocabulary.news_tags + - taxonomy.vocabulary.target_group + - taxonomy.vocabulary.ukk_kategoriat + - taxonomy.vocabulary.unit_type module: + - block_content + - content_translation - file - locale - media + - menu_link_content - path + - raven - system + - taxonomy - toolbar - view_unpublished - webform @@ -28,8 +42,8 @@ permissions: - 'delete own files' - 'edit any webform' - 'edit terms in news_tags' + - 'send performance traces to sentry' - 'translate any webform' - - 'translate article node' - 'translate avustuslaji taxonomy_term' - 'translate block_content' - 'translate editable entities' diff --git a/conf/cmi/user.role.grants_producer_industry.yml b/conf/cmi/user.role.grants_producer_industry.yml index ad77327c2f..bae9d5d196 100644 --- a/conf/cmi/user.role.grants_producer_industry.yml +++ b/conf/cmi/user.role.grants_producer_industry.yml @@ -11,6 +11,7 @@ dependencies: - locale - media - path + - raven - system - toolbar - view_unpublished @@ -26,6 +27,7 @@ permissions: - 'create url aliases' - 'delete own files' - 'edit any webform' + - 'send performance traces to sentry' - 'translate interface' - 'view any unpublished landing_page content' - 'view any unpublished page content' diff --git a/conf/cmi/user.role.helsinkiprofiili.yml b/conf/cmi/user.role.helsinkiprofiili.yml index 315cafb3c8..cb6fb13043 100644 --- a/conf/cmi/user.role.helsinkiprofiili.yml +++ b/conf/cmi/user.role.helsinkiprofiili.yml @@ -7,6 +7,7 @@ dependencies: - grants_mandate - grants_oma_asiointi - grants_profile + - raven - webform id: helsinkiprofiili label: HelsinkiProfiili @@ -18,5 +19,6 @@ permissions: - 'delete own files' - 'edit own webform submission' - 'get mandates from dvv' + - 'send performance traces to sentry' - 'view own grants_profile' - 'view own webform submission' diff --git a/conf/cmi/user.role.json_api_user.yml b/conf/cmi/user.role.json_api_user.yml index 9871557ef6..7ee500c140 100644 --- a/conf/cmi/user.role.json_api_user.yml +++ b/conf/cmi/user.role.json_api_user.yml @@ -4,6 +4,7 @@ status: true dependencies: module: - file + - raven - webform id: json_api_user label: 'JSON API User' @@ -12,3 +13,4 @@ is_admin: null permissions: - 'access any webform configuration' - 'delete own files' + - 'send performance traces to sentry' diff --git a/conf/cmi/user.role.performance_test_user.yml b/conf/cmi/user.role.performance_test_user.yml index b19cd6f36e..bc331adc52 100644 --- a/conf/cmi/user.role.performance_test_user.yml +++ b/conf/cmi/user.role.performance_test_user.yml @@ -4,9 +4,11 @@ status: true dependencies: module: - file + - raven id: performance_test_user label: 'Performance test user' weight: 8 is_admin: null permissions: - 'delete own files' + - 'send performance traces to sentry' diff --git a/conf/cmi/user.role.read_only.yml b/conf/cmi/user.role.read_only.yml index dfdf13bb4b..bc79e76464 100644 --- a/conf/cmi/user.role.read_only.yml +++ b/conf/cmi/user.role.read_only.yml @@ -11,6 +11,7 @@ dependencies: - helfi_tpr - node - paragraphs + - raven - view_unpublished id: read_only label: 'Vain luku' @@ -18,6 +19,7 @@ weight: -7 is_admin: null permissions: - 'delete own files' + - 'send performance traces to sentry' - 'view any unpublished announcement content' - 'view any unpublished landing_page content' - 'view any unpublished page content' diff --git a/conf/cmi/user.role.survey_editor.yml b/conf/cmi/user.role.survey_editor.yml index 7ba1bc811e..87fcad06df 100644 --- a/conf/cmi/user.role.survey_editor.yml +++ b/conf/cmi/user.role.survey_editor.yml @@ -8,6 +8,7 @@ dependencies: - content_translation - node - publication_date + - raven _core: default_config_hash: CliaTgzCQcvNF9ot3u_EbHnydymXh8bvNgNFlSffj9s id: survey_editor @@ -22,6 +23,7 @@ permissions: - 'edit any survey content' - 'edit own survey content' - 'revert survey revisions' + - 'send performance traces to sentry' - 'set survey published on date' - 'translate survey node' - 'view survey revisions' diff --git a/conf/cmi/webform.webform.liikunta_suunnistuskartta_avustu.yml b/conf/cmi/webform.webform.liikunta_suunnistuskartta_avustu.yml index 38e0fbcce9..72c30e2971 100644 --- a/conf/cmi/webform.webform.liikunta_suunnistuskartta_avustu.yml +++ b/conf/cmi/webform.webform.liikunta_suunnistuskartta_avustu.yml @@ -266,7 +266,7 @@ elements: |- '#markup': |-

Avustushakemuksen käsittelyä varten tulee toimittaa kaikki alla luetellut liitteet. Avustushakemus voidaan hylätä, jos liitteitä ei ole toimitettu. Mikäli joku liitteistä puuttuu kerro siitä hakemuksen Lisäselvitys liitteistä -kohdassa.

Vaaditut liitteet

-

Avustushakemuksen käsittelyä varten tarvitaan vahvistettuja, yhteisön kokouksessaan hyväksymiä ja allekirjoittamia, liitteitä edelliseltä päättyneeltä tilikaudelta sekä liitteitä sille toimintavuodelle, jolle avustusta haetaan. Edellistä tilikautta koskevat liitteet ovat: tilinpäätös, toimintakertomus ja tilin- tai toiminnantarkastuskertomus sekä vuosikokouksen pöytäkirja. Liitteet vuodelle, jolle avustusta haetaan ovat: talousarvio ja toimintasuunnitelma.

+

Suunnistuskarttojen valmistuskustannuksiin liittyvät laskut ja kuitit toimitetaan ainoastaan erikseen pyydettäessä.

Usean liitteen toimittaminen yhtenä tiedostona

Voit halutessasi toimittaa useampia liitteitä yhtenä tiedostona Tilinpäätös tai talousarvio -liitekohdassa. Merkitse tällöin muiden liiteotsikoiden kohdalla ”Liite on toimitettu yhtenä tiedostona tai toisen hakemuksen yhteydessä”.

Helsingin kaupungille aiemmin toimitetut liitteet

@@ -279,7 +279,7 @@ elements: |-
Liitteiden sisältöä ei voi tarkastella jälkikäteen

Huomioithan, että et pysty avaamaan liitteitä sen jälkeen, kun olet liittänyt ne lomakkeelle. Näet liitteestä ainoastaan sen tiedostonimen.

-

Vaikka et voi tarkastella liitteiden sisältä jälkikäteen, lomakkeelle liitetyt liitteet lähtevät lomakkeen muiden tietojen mukana avustushakemuksen käsittelijälle.

+

Vaikka et voi tarkastella liitteiden sisältöä jälkikäteen, lomakkeelle liitetyt liitteet lähtevät lomakkeen muiden tietojen mukana avustushakemuksen käsittelijälle.

extra_info: diff --git a/docker/openshift/crons/base.sh b/docker/openshift/crons/base.sh deleted file mode 100644 index 1e4a42bd25..0000000000 --- a/docker/openshift/crons/base.sh +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/bash - -echo "Starting cron: $(date)" - -# You can add any additional cron "daemons" here: -# -# exec "/crons/some-command.sh" & -# -# Example cron (docker/openshift/crons/some-command.sh): -# @code -# #!/bin/bash -# while true -# do -# drush some-command -# sleep 600 -# done -# @endcode - -# Uncomment this to enable TPR migration cron -exec "/crons/migrate-tpr.sh" & -# Uncomment this to enable Varnish purge cron -exec "/crons/purge-queue.sh" & -# Uncomment this to enable automatic translation updates. -exec "/crons/update-translations.sh" & -# Uncomment this to enable content scheduler -# exec "/crons/content-scheduler.sh" & -exec "/crons/pubsub.sh" & - -while true -do - echo "Running cron: $(date)\n" - drush cron - # Sleep for 10 minutes. - sleep 600 -done diff --git a/docker/openshift/crons/migrate-hearings.sh b/docker/openshift/crons/migrate-hearings.sh deleted file mode 100644 index 9cbea08544..0000000000 --- a/docker/openshift/crons/migrate-hearings.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash - -echo "Starting hearings migration: $(date)" - -while true -do - drush mim helfi_hearings --reset-threshold 43200 --interval 1800 - sleep 900 -done diff --git a/docker/openshift/crons/pubsub.sh b/docker/openshift/crons/pubsub.sh index c20c01a4ca..7589ed46fa 100644 --- a/docker/openshift/crons/pubsub.sh +++ b/docker/openshift/crons/pubsub.sh @@ -1,10 +1,15 @@ #!/bin/bash -#echo "Running PubSub daemon: $(date +'%Y-%m-%dT%H:%M:%S%:z')" +if [ -z "$DRUPAL_PUBSUB_VAULT" ]; then + echo "PubSub is not configured, exiting." + exit 0 +fi -#while true -#do +echo "Running PubSub daemon: $(date +'%Y-%m-%dT%H:%M:%S%:z')" + +while true +do # PubSub process exists with success return code after # certain number of messages and should then be restarted. -# drush helfi:azure:pubsub-listen || exit 1 -#done + drush helfi:azure:pubsub-listen || exit 1 +done diff --git a/e2e/package-lock.json b/e2e/package-lock.json index 73356a29a2..5c07515962 100644 --- a/e2e/package-lock.json +++ b/e2e/package-lock.json @@ -10,7 +10,7 @@ "license": "ISC", "devDependencies": { "@faker-js/faker": "^8.3.1", - "@playwright/test": "^1.41.2", + "@playwright/test": "^1.48.0", "@types/lodash.clonedeep": "^4.5.9", "@types/node": "^20.11.7", "dotenv": "^16.4.1", @@ -34,18 +34,19 @@ } }, "node_modules/@playwright/test": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.41.2.tgz", - "integrity": "sha512-qQB9h7KbibJzrDpkXkYvsmiDJK14FULCCZgEcoe2AvFAS64oCirWTwzTlAYEbKaRxWs5TFesE1Na6izMv3HfGg==", + "version": "1.48.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.48.0.tgz", + "integrity": "sha512-W5lhqPUVPqhtc/ySvZI5Q8X2ztBOUgZ8LbAFy0JQgrXZs2xaILrUcNO3rQjwbLPfGK13+rZsDa1FpG+tqYkT5w==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "playwright": "1.41.2" + "playwright": "1.48.0" }, "bin": { "playwright": "cli.js" }, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/@types/lodash": { @@ -90,6 +91,7 @@ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -105,33 +107,35 @@ "dev": true }, "node_modules/playwright": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.41.2.tgz", - "integrity": "sha512-v0bOa6H2GJChDL8pAeLa/LZC4feoAMbSQm1/jF/ySsWWoaNItvrMP7GEkvEEFyCTUYKMxjQKaTSg5up7nR6/8A==", + "version": "1.48.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.48.0.tgz", + "integrity": "sha512-qPqFaMEHuY/ug8o0uteYJSRfMGFikhUysk8ZvAtfKmUK3kc/6oNl/y3EczF8OFGYIi/Ex2HspMfzYArk6+XQSA==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "playwright-core": "1.41.2" + "playwright-core": "1.48.0" }, "bin": { "playwright": "cli.js" }, "engines": { - "node": ">=16" + "node": ">=18" }, "optionalDependencies": { "fsevents": "2.3.2" } }, "node_modules/playwright-core": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.41.2.tgz", - "integrity": "sha512-VaTvwCA4Y8kxEe+kfm2+uUUw5Lubf38RxF7FpBxLPmGe5sdNkSg5e3ChEigaGrX7qdqT3pt2m/98LiyvU2x6CA==", + "version": "1.48.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.48.0.tgz", + "integrity": "sha512-RBvzjM9rdpP7UUFrQzRwR8L/xR4HyC1QXMzGYTbf1vjw25/ya9NRAVnXi/0fvFopjebvyPzsmoK58xxeEOaVvA==", "dev": true, + "license": "Apache-2.0", "bin": { "playwright-core": "cli.js" }, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/undici-types": { diff --git a/e2e/package.json b/e2e/package.json index 73004b3bb6..98ce4905cf 100644 --- a/e2e/package.json +++ b/e2e/package.json @@ -13,7 +13,7 @@ "license": "ISC", "devDependencies": { "@faker-js/faker": "^8.3.1", - "@playwright/test": "^1.41.2", + "@playwright/test": "^1.48.0", "@types/lodash.clonedeep": "^4.5.9", "@types/node": "^20.11.7", "dotenv": "^16.4.1", diff --git a/public/modules/custom/grants_admin_applications/src/Form/AtvFormBase.php b/public/modules/custom/grants_admin_applications/src/Form/AtvFormBase.php index 30a0f35e80..75d6cbdae4 100644 --- a/public/modules/custom/grants_admin_applications/src/Form/AtvFormBase.php +++ b/public/modules/custom/grants_admin_applications/src/Form/AtvFormBase.php @@ -10,9 +10,9 @@ use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Session\AccountProxyInterface; use Drupal\grants_attachments\AttachmentFixerService; +use Drupal\grants_events\EventsService; use Drupal\grants_handler\ApplicationGetterService; use Drupal\grants_handler\ApplicationHelpers; -use Drupal\grants_handler\EventsService; use Drupal\grants_handler\Helpers; use Drupal\grants_handler\MessageService; use Drupal\helfi_atv\AtvDocument; @@ -62,7 +62,7 @@ public static function create(ContainerInterface $container): self { $container->get('database'), $container->get('grants_handler.application_getter_service'), $container->get('http_client'), - $container->get('grants_handler.events_service'), + $container->get('grants_events.events_service'), $container->get('helfi_atv.atv_service'), $container->get('grants_handler.message_service'), $container->get('current_user'), @@ -200,7 +200,27 @@ public function sendApplicationToIntegrations(AtvDocument $atvDoc, string $appli ->error('Application resending failed: @error', ['@error' => $e->getMessage()]); $this->messenger() ->addError($this->t('Application resending failed: @error', ['@error' => $e->getMessage()])); + + \Sentry\captureException($e); } } + /** + * Handle exceptions. + * + * @param string $message + * Log message prefix. + * @param \Throwable $e + * The exception. + */ + protected function handleException(string $message, \Throwable $e): void { + $uuid = Uuid::uuid4()->toString(); + $this->messenger() + ->addError('Error has occurred and has been logged. ID: @uuid', ['@uuid' => $uuid]); + $this->logger(self::LOGGER_CHANNEL)->error( + "$message: @error, ID: @uuid", + ['@error' => $e->getMessage(), '@uuid' => $uuid] + ); + } + } diff --git a/public/modules/custom/grants_admin_applications/src/Form/ResendApplicationsForm.php b/public/modules/custom/grants_admin_applications/src/Form/ResendApplicationsForm.php index aaf6143b45..abe6d2b072 100644 --- a/public/modules/custom/grants_admin_applications/src/Form/ResendApplicationsForm.php +++ b/public/modules/custom/grants_admin_applications/src/Form/ResendApplicationsForm.php @@ -374,13 +374,7 @@ public function getStatus(array $form, FormStateInterface $formState): void { } } catch (\Exception $e) { - $uuid = Uuid::uuid4()->toString(); - $this->messenger() - ->addError('Error has occured and has been logged. ID: @uuid', ['@uuid' => $uuid]); - $this->logger(self::LOGGER_CHANNEL)->error( - 'Error: status check: @error, ID: @uuid', - ['@error' => $e->getMessage(), '@uuid' => $uuid] - ); + $this->handleException("Error: status check", $e); } } @@ -411,7 +405,7 @@ public function resendApplicationCallback(array $form, FormStateInterface $formS $formState->setRebuild(); } catch (GuzzleException | \Exception $e) { - $this->handleException($e); + $this->handleException("Error: Admin application forms - Resend error", $e); } } @@ -449,25 +443,6 @@ private function handleApplicationNotFound(string $applicationId, FormStateInter $formState->setRebuild(); } - /** - * Handle exceptions. - * - * @param \Exception $e - * The exception. - * - * @return void - * Void. - */ - private function handleException(\Exception $e): void { - $uuid = Uuid::uuid4()->toString(); - $this->messenger() - ->addError('Error has occurred and has been logged. ID: @uuid', ['@uuid' => $uuid]); - $this->logger(self::LOGGER_CHANNEL)->error( - 'Error: Admin application forms - Resend error: @error, ID: @uuid', - ['@error' => $e->getMessage(), '@uuid' => $uuid] - ); - } - /** * Ajax callback event. * diff --git a/public/modules/custom/grants_admin_applications/src/Form/SubmittedApplicationsForm.php b/public/modules/custom/grants_admin_applications/src/Form/SubmittedApplicationsForm.php index 9b61b295f9..44aa1ecd3e 100644 --- a/public/modules/custom/grants_admin_applications/src/Form/SubmittedApplicationsForm.php +++ b/public/modules/custom/grants_admin_applications/src/Form/SubmittedApplicationsForm.php @@ -9,7 +9,6 @@ use Drupal\grants_handler\Helpers; use Drupal\helfi_atv\AtvDocument; use GuzzleHttp\Exception\GuzzleException; -use Ramsey\Uuid\Uuid; use Symfony\Component\HttpFoundation\Request; /** @@ -194,12 +193,7 @@ public function resendApplicationCallback(array $form, FormStateInterface $formS $this->sendApplicationToIntegrations($atvDoc, $transactionId); } catch (GuzzleException | \Exception $e) { - $uuid = Uuid::uuid4()->toString(); - $this->messenger()->addError('Error has occured and has been logged. ID: @uuid', ['@uuid' => $uuid]); - $this->logger(self::LOGGER_CHANNEL)->error( - 'Error: Admin application forms - Resend error: @error, ID: @uuid', - ['@error' => $e->getMessage(), '@uuid' => $uuid] - ); + $this->handleException('Error: Admin application forms - Resend error', $e); } } @@ -289,12 +283,7 @@ function (array $doc) { $formState->setRebuild(); } catch (\Exception $e) { - $uuid = Uuid::uuid4()->toString(); - $this->messenger()->addError('Error has occured and has been logged. ID: @uuid', ['@uuid' => $uuid]); - $this->logger(self::LOGGER_CHANNEL)->error( - 'Error: status check: @error, ID: @uuid', - ['@error' => $e->getMessage(), '@uuid' => $uuid] - ); + $this->handleException('Error: status check', $e); } catch (GuzzleException $e) { } diff --git a/public/modules/custom/grants_attachments/grants_attachments.info.yml b/public/modules/custom/grants_attachments/grants_attachments.info.yml index abda7bddc3..399ac80f5f 100644 --- a/public/modules/custom/grants_attachments/grants_attachments.info.yml +++ b/public/modules/custom/grants_attachments/grants_attachments.info.yml @@ -6,7 +6,7 @@ core_version_requirement: ^9 || ^10 dependencies: - webform - grants_metadata - - grants_handler + - grants_events 'interface translation project': grants_attachments 'interface translation server pattern': modules/custom/grants_attachments/translations/%language.po diff --git a/public/modules/custom/grants_attachments/grants_attachments.services.yml b/public/modules/custom/grants_attachments/grants_attachments.services.yml index e4c6f27dc7..b86c338f44 100644 --- a/public/modules/custom/grants_attachments/grants_attachments.services.yml +++ b/public/modules/custom/grants_attachments/grants_attachments.services.yml @@ -26,11 +26,12 @@ services: '@helfi_atv.atv_service', '@grants_profile.service', '@grants_metadata.atv_schema', - '@grants_handler.events_service', '@helfi_audit_log.audit_log', '@entity_type.manager', '@grants_metadata.application_data_service' ] + calls: + - [ setEventsService, [ '@?grants_events.events_service' ] ] grants_attachments.attachment_fixer_service: class: Drupal\grants_attachments\AttachmentFixerService diff --git a/public/modules/custom/grants_attachments/src/AttachmentHandler.php b/public/modules/custom/grants_attachments/src/AttachmentHandler.php index 63f8319e17..5730e689e3 100644 --- a/public/modules/custom/grants_attachments/src/AttachmentHandler.php +++ b/public/modules/custom/grants_attachments/src/AttachmentHandler.php @@ -12,10 +12,10 @@ use Drupal\Core\StringTranslation\StringTranslationTrait; use Drupal\Core\TempStore\TempStoreException; use Drupal\grants_attachments\Plugin\WebformElement\GrantsAttachments; +use Drupal\grants_events\EventsService; use Drupal\grants_handler\ApplicationHelpers; use Drupal\grants_handler\DebuggableTrait; use Drupal\grants_handler\EventException; -use Drupal\grants_handler\EventsService; use Drupal\grants_handler\Helpers; use Drupal\grants_metadata\ApplicationDataService; use Drupal\grants_metadata\AtvSchema; @@ -67,6 +67,13 @@ class AttachmentHandler { */ protected EntityStorageInterface $fileStorage; + /** + * Events service. + * + * @var \Drupal\grants_events\EventsService + */ + protected EventsService $eventService; + /** * Constructs an AttachmentHandler object. * @@ -82,8 +89,6 @@ class AttachmentHandler { * Profile service. * @param \Drupal\grants_metadata\AtvSchema $atvSchema * ATV schema. - * @param \Drupal\grants_handler\EventsService $eventService - * Events service. * @param \Drupal\helfi_audit_log\AuditLogService $auditLogService * Audit log mandate errors. * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entityTypeManager @@ -101,7 +106,6 @@ public function __construct( protected AtvService $atvService, protected GrantsProfileService $grantsProfileService, protected AtvSchema $atvSchema, - protected EventsService $eventService, protected AuditLogService $auditLogService, EntityTypeManagerInterface $entityTypeManager, protected ApplicationDataService $applicationDataService, @@ -113,6 +117,16 @@ public function __construct( $this->setDebug(NULL); } + /** + * Set the getter service. + * + * @param \Drupal\grants_events\EventsService $eventsService + * Events service. + */ + public function setEventsService(EventsService $eventsService): void { + $this->eventService = $eventsService; + } + /** * Get file fields. * diff --git a/public/modules/custom/grants_attachments/src/Controller/GrantsAttachmentsController.php b/public/modules/custom/grants_attachments/src/Controller/GrantsAttachmentsController.php index c5a4ff4910..65d79e1993 100644 --- a/public/modules/custom/grants_attachments/src/Controller/GrantsAttachmentsController.php +++ b/public/modules/custom/grants_attachments/src/Controller/GrantsAttachmentsController.php @@ -7,10 +7,10 @@ use Drupal\Core\Messenger\MessengerTrait; use Drupal\Core\StringTranslation\StringTranslationTrait; use Drupal\grants_attachments\Plugin\WebformElement\GrantsAttachments; +use Drupal\grants_events\EventsService; use Drupal\grants_handler\ApplicationGetterService; use Drupal\grants_handler\ApplicationStatusService; use Drupal\grants_handler\ApplicationUploaderService; -use Drupal\grants_handler\EventsService; use Drupal\grants_metadata\ApplicationDataService; use Drupal\helfi_atv\AtvService; use Symfony\Component\DependencyInjection\ContainerInterface; @@ -34,7 +34,7 @@ class GrantsAttachmentsController extends ControllerBase { * The helfi_atv service. * @param \Symfony\Component\HttpFoundation\RequestStack $requestStack * Drupal requests. - * @param \Drupal\grants_handler\EventsService $eventsService + * @param \Drupal\grants_events\EventsService $eventsService * Use submission events productively. * @param \Drupal\grants_handler\ApplicationStatusService $applicationStatusService * Application status service. @@ -62,7 +62,7 @@ public static function create(ContainerInterface $container): static { return new static( $container->get('helfi_atv.atv_service'), $container->get('request_stack'), - $container->get('grants_handler.events_service'), + $container->get('grants_events.events_service'), $container->get('grants_handler.application_status_service'), $container->get('grants_metadata.application_data_service'), $container->get('grants_handler.application_getter_service'), diff --git a/public/modules/custom/grants_attachments/src/Plugin/WebformElement/GrantsAttachments.php b/public/modules/custom/grants_attachments/src/Plugin/WebformElement/GrantsAttachments.php index ea2359470f..0511df78b9 100644 --- a/public/modules/custom/grants_attachments/src/Plugin/WebformElement/GrantsAttachments.php +++ b/public/modules/custom/grants_attachments/src/Plugin/WebformElement/GrantsAttachments.php @@ -5,7 +5,7 @@ use Drupal\Core\Form\FormStateInterface; use Drupal\grants_attachments\AttachmentHandler; use Drupal\grants_attachments\Element\GrantsAttachments as ElementGrantsAttachments; -use Drupal\grants_handler\EventsService; +use Drupal\grants_events\EventsService; use Drupal\webform\Plugin\WebformElement\WebformCompositeBase; use Drupal\webform\WebformSubmissionInterface; use Symfony\Component\DependencyInjection\ContainerInterface; @@ -79,7 +79,7 @@ final class GrantsAttachments extends WebformCompositeBase { /** * Events service. * - * @var \Drupal\grants_handler\EventsService + * @var \Drupal\grants_events\EventsService */ protected EventsService $eventsService; @@ -93,7 +93,7 @@ public static function create( $plugin_definition, ): GrantsAttachments { $instance = parent::create($container, $configuration, $plugin_id, $plugin_definition); - $instance->eventsService = $container->get('grants_handler.events_service'); + $instance->eventsService = $container->get('grants_events.events_service'); return $instance; } diff --git a/public/modules/custom/grants_events/grants_events.info.yml b/public/modules/custom/grants_events/grants_events.info.yml new file mode 100644 index 0000000000..e88ed228ff --- /dev/null +++ b/public/modules/custom/grants_events/grants_events.info.yml @@ -0,0 +1,5 @@ +name: 'grants_events' +type: module +description: 'Handle application events' +package: helfi +core_version_requirement: ^10 || ^11 diff --git a/public/modules/custom/grants_events/grants_events.module b/public/modules/custom/grants_events/grants_events.module new file mode 100644 index 0000000000..f55bd612b0 --- /dev/null +++ b/public/modules/custom/grants_events/grants_events.module @@ -0,0 +1,6 @@ + 'AVUSTUS2_MSG_OK', + 'AVUSTUS2_ATT_OK' => 'AVUSTUS2_ATT_OK', + 'STATUS_UPDATE' => 'STATUS_UPDATE', + 'MESSAGE_AVUS2' => 'MESSAGE_AVUS2', + 'MESSAGE_APP' => 'MESSAGE_APP', + 'MESSAGE_READ' => 'MESSAGE_READ', + 'MESSAGE_RESEND' => 'MESSAGE_RESEND', + 'HANDLER_ATT_OK' => 'HANDLER_ATT_OK', + 'HANDLER_ATT_DELETE' => 'HANDLER_ATT_DELETE', + 'HANDLER_RESEND_APP' => 'HANDLER_RESEND_APP', + 'HANDLER_APP_COPIED' => 'HANDLER_APP_COPIED', + 'INTEGRATION_INFO_ATT_OK' => 'INTEGRATION_INFO_ATT_OK', + 'INTEGRATION_INFO_APP_OK' => 'INTEGRATION_INFO_APP_OK', + 'EVENT_INFO' => 'EVENT_INFO', + 'HANDLER_ATT_DELETED' => 'HANDLER_ATT_DELETED', + 'INTEGRATION_ERROR_AVUS2' => 'INTEGRATION_ERROR_AVUS2', + 'INTEGRATION_ERROR_ATV_ATT' => 'INTEGRATION_ERROR_ATV_ATT', + ]; + + /** + * Constructs a MessageService object. + * + * @param \GuzzleHttp\Client $http_client + * Client to post data. + * @param \Drupal\Core\Logger\LoggerChannelFactory $loggerFactory + * Log things. + */ + public function __construct( + Client $http_client, + LoggerChannelFactoryInterface $loggerFactory, + ) { + $this->httpClient = $http_client; + $this->logger = $loggerFactory->get('grants_handler_events_service'); + + $this->endpoint = getenv('AVUSTUS2_EVENT_ENDPOINT'); + $this->username = getenv('AVUSTUS2_USERNAME'); + $this->password = getenv('AVUSTUS2_PASSWORD'); + + $this->setDebug(NULL); + + } + + /** + * Get event types. + * + * @return array|string[] + * Event types. + */ + public function getEventTypes(): array { + return $this->eventTypes; + } + + /** + * Log event to document via event integration. + * + * @param string $applicationNumber + * Application to be logged. + * @param string $eventType + * Type of event, must be configured in this class as active one. + * @param string $eventDescription + * Free message to be added. + * @param string $eventTarget + * Target ID for event. + * @param array $eventData + * If we have already built-up event data, use this. + * + * @return array|null + * EventID if success, otherways NULL + * + * @throws \Drupal\grants_events\EventException + */ + public function logEvent( + string $applicationNumber, + string $eventType, + string $eventDescription, + string $eventTarget, + array $eventData = [], + ): ?array { + + if (empty($eventData)) { + $eventData = self::getEventData($eventType, $applicationNumber, $eventDescription, $eventTarget); + } + + $eventDataJson = Json::encode($eventData); + + if (TRUE === $this->debug) { + $this->logger->debug( + 'Event ID: %eventId, JSON: %json', + [ + '%eventId' => $eventData['eventID'], + '%json' => $eventDataJson, + ]); + } + + try { + + $res = $this->httpClient->post($this->endpoint, [ + 'auth' => [$this->username, $this->password, "Basic"], + 'body' => $eventDataJson, + ]); + + if ($res->getStatusCode() == 200) { + $this->logger->info('Event logged: %eventId, message sent.', ['%eventId' => $eventData['eventID']]); + return $eventData; + } + + } + catch (\Exception $e) { + throw new EventException($e->getMessage()); + } + catch (GuzzleException $e) { + throw new EventException($e->getMessage()); + } + + return NULL; + } + + /** + * Filter events by given key. + * + * @param array $events + * Events to be filtered. + * @param string $typeKey + * Event type wanted. + * + * @return array + * Filtered events. + */ + public function filterEvents(array $events, string $typeKey): array { + $messageEvents = array_filter($events, function ($event) use ($typeKey) { + if ($event['eventType'] == $this->eventTypes[$typeKey]) { + return TRUE; + } + return FALSE; + }); + + return [ + 'events' => $messageEvents, + 'event_targets' => array_column($messageEvents, 'eventTarget'), + 'event_ids' => array_column($messageEvents, 'eventID'), + ]; + } + + /** + * Build event object/array from given data. + * + * @param string $eventType + * Type of event, must be in self::$eventTypes. + * @param string $applicationNumber + * Application number for event. + * @param string $eventDescription + * Event description. + * @param string $eventTarget + * Eent target. + * + * @return array + * Event data in array. + * + * @throws \Drupal\grants_events\EventException + */ + public function getEventData(string $eventType, string $applicationNumber, string $eventDescription, string $eventTarget): array { + $eventData = []; + + if (!in_array($eventType, $this->eventTypes)) { + throw new EventException('Not valid event type: ' . $eventType); + } + else { + $eventData['eventType'] = $eventType; + } + + $eventData['eventID'] = Uuid::uuid4()->toString(); + $eventData['caseId'] = $applicationNumber; + $eventData['eventDescription'] = AtvSchema::sanitizeInput($eventDescription); + $eventData['eventTarget'] = $eventTarget; + + if (!isset($eventData['eventSource'])) { + $eventData['eventSource'] = getenv('EVENTS_SOURCE'); + } + + $dt = new \DateTime(); + $dt->setTimezone(new \DateTimeZone('Europe/Helsinki')); + + $eventData['timeCreated'] = $eventData['timeUpdated'] = $dt->format('Y-m-d\TH:i:s'); + return $eventData; + } + +} diff --git a/public/modules/custom/grants_handler/grants_handler.install b/public/modules/custom/grants_handler/grants_handler.install index edab455b4e..92f47b12dd 100644 --- a/public/modules/custom/grants_handler/grants_handler.install +++ b/public/modules/custom/grants_handler/grants_handler.install @@ -216,6 +216,8 @@ function grants_handler_schema(): array { * Name of field. * @param int $new_length * New length for field. + * + * @throws \Exception */ function _module_change_text_field_max_length($entity_type_id, $field_name, $new_length) { $name = 'field.storage.' . $entity_type_id . "." . $field_name; @@ -369,3 +371,18 @@ function grants_handler_update_9008(&$sandbox) { ->schema() ->createTable('grants_handler_locks', $schema['grants_handler_locks']); } + +/** + * Install grants_events module. + */ +function grants_handler_update_9009(&$sandbox): void { + // Enable the grants_attachments module. + \Drupal::service('module_installer')->install(['grants_events']); +} + +/** + * Manually trigger locale translation. + */ +function grants_handler_update_9010(&$sandbox): void { + _locale_parse_js_file('modules/custom/grants_handler/js/webform.form.unsaved.js'); +} diff --git a/public/modules/custom/grants_handler/grants_handler.libraries.yml b/public/modules/custom/grants_handler/grants_handler.libraries.yml index bde18246cc..9ba38aff5b 100644 --- a/public/modules/custom/grants_handler/grants_handler.libraries.yml +++ b/public/modules/custom/grants_handler/grants_handler.libraries.yml @@ -53,3 +53,11 @@ application-timeout-message: dependencies: - core/jquery - core/drupalSettings + +# Grants Dialog +grants-dialog: + version: 1.0.0 + js: + js/grants-dialog.js: { } + dependencies: + - core/drupal diff --git a/public/modules/custom/grants_handler/grants_handler.module b/public/modules/custom/grants_handler/grants_handler.module index 9ba74435cf..39f5111cd1 100644 --- a/public/modules/custom/grants_handler/grants_handler.module +++ b/public/modules/custom/grants_handler/grants_handler.module @@ -1289,8 +1289,8 @@ function grants_handler_preprocess_webform_submission_handler_details(&$variable $submission = $variables['submission']; $submissionData = $submission->getData(); - /** @var \Drupal\grants_handler\EventsService $eventService */ - $eventService = \Drupal::service('grants_handler.events_service'); + /** @var \Drupal\grants_events\EventsService $eventService */ + $eventService = \Drupal::service('grants_events.events_service'); $handlerEvents = array_filter($submissionData['events'], function ($event) use ($eventService) { if ($event['eventType'] == $eventService->getEventTypes()['EVENT_INFO']) { @@ -1314,7 +1314,7 @@ function grants_handler_preprocess_webform_submission_attachment_list(&$variable $submissionData = $submission->getData(); // Get submission events. - $eventService = \Drupal::service('grants_handler.events_service'); + $eventService = \Drupal::service('grants_events.events_service'); $attachmentEventsHandler = $eventService->filterEvents($submissionData['events'], 'HANDLER_ATT_OK'); $attachments = []; @@ -2100,3 +2100,11 @@ function grants_handler_options_list_alter(array &$options, array $context): voi } } } + +/** + * Implements hook_preprocess_HOOK(). + */ +function grants_handler_preprocess_webform(array &$variables) { + $variables['#attached']['library'][] = 'grants_handler/grants-dialog'; + $variables['#attached']['library'][] = 'hdbt/focus-trap'; +} diff --git a/public/modules/custom/grants_handler/grants_handler.services.yml b/public/modules/custom/grants_handler/grants_handler.services.yml index 7f6beb7e17..c054cdd8b7 100644 --- a/public/modules/custom/grants_handler/grants_handler.services.yml +++ b/public/modules/custom/grants_handler/grants_handler.services.yml @@ -11,11 +11,12 @@ services: '@helfi_helsinki_profiili.userdata', '@http_client', '@logger.factory', - '@grants_handler.events_service', '@helfi_atv.atv_service', '@current_user', '@grants_handler.application_status_service' ] + calls: + - [ setEventsService, [ '@?grants_events.events_service' ] ] grants_handler.navigation_helper: class: Drupal\grants_handler\GrantsHandlerNavigationHelper @@ -28,10 +29,6 @@ services: '@datetime.time' ] - grants_handler.events_service: - class: Drupal\grants_handler\EventsService - arguments: [ '@http_client', '@logger.factory' ] - grants_handler.form_lock_service: class: Drupal\grants_handler\FormLockService arguments: [ diff --git a/public/modules/custom/grants_handler/js/grants-dialog.js b/public/modules/custom/grants_handler/js/grants-dialog.js new file mode 100644 index 0000000000..925eead272 --- /dev/null +++ b/public/modules/custom/grants_handler/js/grants-dialog.js @@ -0,0 +1,110 @@ +(function (Drupal) { + Drupal.dialogFunctions = { + + /** + * Creates a dialog and appends it to the body. + * + * @param {string} dialogContent - The title displayed at the top of the + * dialog. + * @param {string} actionButtonText - The text for the "leave" button. + * @param {string} backButtonText - The text for the "back" button. + * @param {string} closeButtonText - The text for the "close" button that + * closes the dialog. + * @param {Function} actionButtonCallback - The function to execute when + * the "action" button is clicked. + */ + createDialog: (dialogContent, actionButtonText, backButtonText, closeButtonText, actionButtonCallback = null) => { + const dialogTitle = Drupal.t('Attention', {}, { context: 'grants_handler' }); + const actionButtonHTML = actionButtonText && ``; + const backButtonHTML = backButtonText && ``; + const closeButtonHTML = closeButtonText && ``; + + const dialogHTML = ` +
+
+ +
+ ${closeButtonHTML} +

${dialogTitle}

+
+
+ ${dialogContent} +
+
+ ${actionButtonHTML} + ${backButtonHTML} +
+
+
+ `; + + // TODO: Surveys use very similar javascript dialog implementation. + // This and the survey implementation could possibly be merged with some + // refactoring. + + // Add the dialog to the body + document.body.insertAdjacentHTML('beforeend', dialogHTML); + + Drupal.dialogFunctions.setBodyPaddingRight(true); + + Drupal.dialogFunctions.toggleNoScroll(true); + + const actionButton = document.getElementById('helfi-dialog__action-button'); + const backButton = document.getElementById('helfi-dialog__back-button'); + const closeButton = document.getElementById('helfi-dialog__close-button'); + const dialog = document.getElementById('helfi-dialog__container'); + const dialogFocusTrap = window.focusTrap.createFocusTrap('#helfi-dialog__container', { + initialFocus: () => '#helfi-dialog__title' + }); + + // Activate the focus trap so that the user needs to react to the dialog. + dialogFocusTrap.activate(); + + // Add click event listener to action button + if (actionButtonCallback && actionButtonText) { + actionButton.addEventListener('click', actionButtonCallback); + } + + // Add click event listener to back button + backButton.addEventListener('click', () => { + dialogFocusTrap.deactivate(); + Drupal.dialogFunctions.removeDialog(dialog); + }); + + // Add click event listener to close button + closeButton.addEventListener('click', () => { + dialogFocusTrap.deactivate(); + Drupal.dialogFunctions.removeDialog(dialog); + }); + + // Add event listener to ESC button to remove the dialog + document.body.addEventListener('keydown', function (event) { + if (event.key === 'Escape') { + Drupal.dialogFunctions.removeDialog(dialog); + } + }); + }, + + setBodyPaddingRight: (enable) => { + if (enable) { + document.body.style.paddingRight = `${ + window.innerWidth - document.documentElement.clientWidth + }px`; + } + else { + document.body.style.removeProperty('padding-right'); + } + }, + + toggleNoScroll: (enable) => { + const root = document.documentElement; + root.classList.toggle('noscroll', enable); + }, + + removeDialog: (dialog) => { + dialog.remove(); + Drupal.dialogFunctions.toggleNoScroll(false); + Drupal.dialogFunctions.setBodyPaddingRight(false); + } + } +})(Drupal); diff --git a/public/modules/custom/grants_handler/js/webform.form.unsaved.js b/public/modules/custom/grants_handler/js/webform.form.unsaved.js index 3e4ae31671..99e66c6b8d 100644 --- a/public/modules/custom/grants_handler/js/webform.form.unsaved.js +++ b/public/modules/custom/grants_handler/js/webform.form.unsaved.js @@ -46,6 +46,7 @@ // Set the current unsaved flag state. unsaved = value; }, + attach: function (context) { // Detect general unsaved changes. // Look for the 'data-webform-unsaved' attribute which indicates that @@ -109,34 +110,24 @@ } } }; + $('a').on('click', function (event) { let containingElement = document.querySelector('form'); if (unsaved && !containingElement.contains(event.target) && !event.target.getAttribute('href').startsWith('#')) { event.preventDefault(); - const $previewDialog = $('
').appendTo('body'); - Drupal.dialog($previewDialog, { - title: Drupal.t('Are you sure you want to leave? Leave without saving.'), - width: '33%', - closeText: Drupal.t('Close', {}, { context: 'grants_handler' }), - buttons: [ - { - text: Drupal.t('Leave the application'), - click() { - unsaved = false; - $(this).dialog('close'); - modal = true; - window.top.location.href = event.currentTarget.href; - }, - }, - { - text: Drupal.t('Back to application'), - buttonType: 'secondary', - click() { - $(this).dialog('close'); - }, - }, - ], - }).showModal(); + + return Drupal.dialogFunctions.createDialog( + Drupal.t('You have unsaved changes. Are you sure you want to leave?', {}, { context: 'grants_handler' }), + Drupal.t('Leave the application', {}, { context: 'grants_handler' }), + Drupal.t('Back to application', {}, { context: 'grants_handler' }), + Drupal.t('Close', {}, { context: 'grants_handler' }), + () => { + unsaved = false; + const dialog = document.getElementById('helfi-dialog__container'); + Drupal.dialogFunctions.removeDialog(dialog); + window.top.location.href = event.currentTarget.href; + } + ); } }); @@ -144,7 +135,7 @@ $(window).on('beforeunload', function (event) { if (unsaved) { // Show a confirmation dialog when the user tries to refresh or leave the page - const message = Drupal.t('You have unsaved changes. Are you sure you want to leave?'); + const message = Drupal.t('You have unsaved changes. Are you sure you want to leave?', {}, { context: 'grants_handler' }); event.preventDefault(); event.returnValue = message; // For most browsers return message; // For older browsers @@ -155,35 +146,27 @@ $(document).on('keydown', function (e) { if (unsaved && (e.which === 116 || (e.which === 82 && (e.ctrlKey || e.metaKey)))) { e.preventDefault(); // Prevent F5 and Ctrl+R / Cmd+R refresh - const $previewDialog = $('
').appendTo('body'); - Drupal.dialog($previewDialog, { - title: Drupal.t('You have unsaved changes. Are you sure you want to refresh?'), - width: '33%', - closeText: Drupal.t('Close', {}, { context: 'grants_handler' }), - buttons: [ - { - text: Drupal.t('Refresh the page'), - click() { - unsaved = false; - $(this).dialog('close'); - location.reload(); // Perform the refresh - }, - }, - { - text: Drupal.t('Back to application'), - buttonType: 'secondary', - click() { - $(this).dialog('close'); - }, - }, - ], - }).showModal(); + + return Drupal.dialogFunctions.createDialog( + Drupal.t('You have unsaved changes. Are you sure you want to refresh?', {}, { context: 'grants_handler' }), + Drupal.t('Refresh the page', {}, { context: 'grants_handler' }), + Drupal.t('Back to application', {}, { context: 'grants_handler' }), + Drupal.t('Close', {}, { context: 'grants_handler' }), + () => { + unsaved = false; + const dialog = document.getElementById('helfi-dialog__container'); + Drupal.dialogFunctions.removeDialog(dialog); + location.reload(); + } + ); } }); + // Add an event listener for autologout. document.addEventListener('autologout', function () { autologout = true; }); + $(window).on('beforeunload', function () { if (autologout) { return; diff --git a/public/modules/custom/grants_handler/src/ApplicationException.php b/public/modules/custom/grants_handler/src/ApplicationException.php index 217c95ab4e..c73861f7d4 100644 --- a/public/modules/custom/grants_handler/src/ApplicationException.php +++ b/public/modules/custom/grants_handler/src/ApplicationException.php @@ -3,7 +3,7 @@ namespace Drupal\grants_handler; /** - * General error in applicatoin process. + * General error in application process. */ class ApplicationException extends \Exception { diff --git a/public/modules/custom/grants_handler/src/ApplicationUploaderService.php b/public/modules/custom/grants_handler/src/ApplicationUploaderService.php index 64a651ed52..38d88ae063 100644 --- a/public/modules/custom/grants_handler/src/ApplicationUploaderService.php +++ b/public/modules/custom/grants_handler/src/ApplicationUploaderService.php @@ -262,6 +262,9 @@ public function handleApplicationUploadViaIntegration( catch (\Exception $e) { $this->messenger->addError($this->t('Application saving failed, error has been logged.', [], $tOpts)); $this->logger->error('Error saving application: %msg', ['%msg' => $e->getMessage()]); + + \Sentry\captureException($e); + return FALSE; } } diff --git a/public/modules/custom/grants_handler/src/Controller/MessageController.php b/public/modules/custom/grants_handler/src/Controller/MessageController.php index cf92cfe078..dce39f82ad 100644 --- a/public/modules/custom/grants_handler/src/Controller/MessageController.php +++ b/public/modules/custom/grants_handler/src/Controller/MessageController.php @@ -9,10 +9,10 @@ use Drupal\Core\Messenger\MessengerTrait; use Drupal\Core\Render\Renderer; use Drupal\Core\StringTranslation\StringTranslationTrait; +use Drupal\grants_events\EventsService; use Drupal\grants_handler\ApplicationGetterService; use Drupal\grants_handler\DebuggableTrait; use Drupal\grants_handler\EventException; -use Drupal\grants_handler\EventsService; use Drupal\grants_handler\MessageService; use Drupal\helfi_atv\AtvService; use GuzzleHttp\Exception\GuzzleException; @@ -33,7 +33,7 @@ class MessageController extends ControllerBase { /** * The controller constructor. * - * @param \Drupal\grants_handler\EventsService $eventsService + * @param \Drupal\grants_events\EventsService $eventsService * Use submission events productively. * @param \Drupal\grants_handler\MessageService $messageService * Use messages productively. @@ -62,7 +62,7 @@ public function __construct( */ public static function create(ContainerInterface $container): MessageController|static { return new static( - $container->get('grants_handler.events_service'), + $container->get('grants_events.events_service'), $container->get('grants_handler.message_service'), $container->get('request_stack'), $container->get('helfi_atv.atv_service'), diff --git a/public/modules/custom/grants_handler/src/Form/CopyApplicationModalForm.php b/public/modules/custom/grants_handler/src/Form/CopyApplicationModalForm.php index 3c3c6240df..7e2c463eb2 100644 --- a/public/modules/custom/grants_handler/src/Form/CopyApplicationModalForm.php +++ b/public/modules/custom/grants_handler/src/Form/CopyApplicationModalForm.php @@ -10,11 +10,11 @@ use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Render\Renderer; use Drupal\Core\Url; +use Drupal\grants_events\EventsService; use Drupal\grants_handler\ApplicationGetterService; use Drupal\grants_handler\ApplicationInitService; use Drupal\grants_handler\ApplicationStatusService; use Drupal\grants_handler\DebuggableTrait; -use Drupal\grants_handler\EventsService; use GuzzleHttp\Exception\GuzzleException; use Symfony\Component\DependencyInjection\ContainerInterface; @@ -49,7 +49,7 @@ public static function create(ContainerInterface $container): CopyApplicationMod // Create a new form object and inject its services. $form = new static( $container->get('renderer'), - $container->get('grants_handler.events_service'), + $container->get('grants_events.events_service'), $container->get('grants_handler.application_status_service'), $container->get('grants_handler.application_init_service'), $container->get('grants_handler.application_getter_service') diff --git a/public/modules/custom/grants_handler/src/MessageService.php b/public/modules/custom/grants_handler/src/MessageService.php index 6c65dadb5f..419e565994 100644 --- a/public/modules/custom/grants_handler/src/MessageService.php +++ b/public/modules/custom/grants_handler/src/MessageService.php @@ -9,6 +9,7 @@ use Drupal\Core\Logger\LoggerChannelInterface; use Drupal\Core\Session\AccountProxyInterface; use Drupal\Core\StringTranslation\StringTranslationTrait; +use Drupal\grants_events\EventsService; use Drupal\grants_metadata\AtvSchema; use Drupal\helfi_atv\AtvService; use Drupal\helfi_helsinki_profiili\HelsinkiProfiiliUserData; @@ -47,7 +48,7 @@ class MessageService { /** * Log events via integration. * - * @var \Drupal\grants_handler\EventsService + * @var \Drupal\grants_events\EventsService */ protected EventsService $eventsService; @@ -103,8 +104,6 @@ class MessageService { * Client to post data. * @param \Drupal\Core\Logger\LoggerChannelFactoryInterface $loggerFactory * Log things. - * @param \Drupal\grants_handler\EventsService $eventsService - * Log events to atv document. * @param \Drupal\helfi_atv\AtvService $atvService * Access to ATV. * @param \Drupal\Core\Session\AccountProxyInterface $currentUser @@ -116,7 +115,6 @@ public function __construct( HelsinkiProfiiliUserData $helfi_helsinki_profiili_userdata, Client $http_client, LoggerChannelFactoryInterface $loggerFactory, - EventsService $eventsService, AtvService $atvService, AccountProxyInterface $currentUser, ApplicationStatusService $applicationStatusService, @@ -124,7 +122,6 @@ public function __construct( $this->helfiHelsinkiProfiiliUserdata = $helfi_helsinki_profiili_userdata; $this->httpClient = $http_client; $this->logger = $loggerFactory->get('grants_handler_message_service'); - $this->eventsService = $eventsService; $this->atvService = $atvService; $this->currentUser = $currentUser; $this->applicationStatusService = $applicationStatusService; @@ -136,6 +133,16 @@ public function __construct( $this->setDebug(NULL); } + /** + * Set the getter service. + * + * @param \Drupal\grants_events\EventsService $eventsService + * Events service. + */ + public function setEventsService(EventsService $eventsService): void { + $this->eventsService = $eventsService; + } + /** * Send message to backend. * diff --git a/public/modules/custom/grants_handler/src/Plugin/WebformHandler/GrantsHandler.php b/public/modules/custom/grants_handler/src/Plugin/WebformHandler/GrantsHandler.php index c97c6f0070..35dfb62087 100644 --- a/public/modules/custom/grants_handler/src/Plugin/WebformHandler/GrantsHandler.php +++ b/public/modules/custom/grants_handler/src/Plugin/WebformHandler/GrantsHandler.php @@ -1489,13 +1489,9 @@ public function postSaveSubmitForm(): void { ); } } - catch (\Exception $e) { - $this->getLogger('grants_handler') - ->error('Error uploadind application: @error', ['@error' => $e->getMessage()]); - } - catch (GuzzleException $e) { + catch (\Exception | GuzzleException $e) { $this->getLogger('grants_handler') - ->error('Error uploadind application: @error', ['@error' => $e->getMessage()]); + ->error('Error uploading application: @error', ['@error' => $e->getMessage()]); } $this->formLockService->releaseApplicationLock($this->applicationNumber); @@ -1549,27 +1545,22 @@ public function postSave(WebformSubmissionInterface $webform_submission, $update $this->postSaveHandleApplicationNumber($webform_submission); - // If triggering element is either draft save or proper one, - // we want to parse attachments from form. - if ($this->triggeringElement == '::submitForm') { - try { + try { + // If triggering element is either draft save or proper one, + // we want to parse attachments from form. + if ($this->triggeringElement == '::submitForm') { $this->postSaveSubmitForm(); } - catch (GuzzleException $e) { - $this->messenger->addError($this->t('Error saving application. please contact support.')); - $this->getLogger('grants_handler') - ->error('Error saving application: @error', ['@error' => $e->getMessage()]); - } - } - if ($this->triggeringElement == '::submit') { - try { + if ($this->triggeringElement == '::submit') { $this->postSaveSubmit($webform_submission); } - catch (GuzzleException $e) { - $this->messenger->addError($this->t('Error saving application. please contact support.')); - $this->getLogger('grants_handler') - ->error('Error saving application: @error', ['@error' => $e->getMessage()]); - } + } + catch (GuzzleException $e) { + $this->messenger->addError($this->t('Error saving application. please contact support.')); + $this->getLogger('grants_handler') + ->error('Error saving application: @error', ['@error' => $e->getMessage()]); + + \Sentry\captureException($e); } } @@ -1659,6 +1650,8 @@ public function confirmForm( ] ) ); + + \Sentry\captureException($e); } } diff --git a/public/modules/custom/grants_handler/tests/src/Kernel/DataConversionTest.php b/public/modules/custom/grants_handler/tests/src/Kernel/DataConversionTest.php index e7d65adab4..0af24b75cc 100644 --- a/public/modules/custom/grants_handler/tests/src/Kernel/DataConversionTest.php +++ b/public/modules/custom/grants_handler/tests/src/Kernel/DataConversionTest.php @@ -43,6 +43,7 @@ class DataConversionTest extends GrantsKernelTestBase implements ServiceModifier 'helfi_yjdh', // Project modules. 'grants_applicant_info', + 'grants_events', 'grants_attachments', 'grants_budget_components', 'grants_club_section', diff --git a/public/modules/custom/grants_handler/translations/fi.po b/public/modules/custom/grants_handler/translations/fi.po index d14718ea4a..22923ea94b 100644 --- a/public/modules/custom/grants_handler/translations/fi.po +++ b/public/modules/custom/grants_handler/translations/fi.po @@ -1,17 +1,5 @@ -# Finnish translation of City of Helsinki Grants Handler Module -# -msgctxt "grants_handler" msgid "" msgstr "" -"Project-Id-Version: PROJECT VERSION\n" -"POT-Creation-Date: 2022-01-18 16:58+0300\n" -"PO-Revision-Date: 2022-10-12 08:58+0300\n" -"Last-Translator: Petri Leinonen \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" msgctxt "grants_handler" msgid "Print table" @@ -552,16 +540,6 @@ msgstr "Pyyntösi keskeytyi verkkovirheen takia." msgid "Are you sure you want to leave? Leave without saving." msgstr "Oletko varma että haluat keskeyttää lomakkeen täyttämisen? Poistu tallentamatta." -msgctxt "grants_handler" -msgid "Close" -msgstr "Sulje" - -msgid "Leave the application" -msgstr "Poistu hakemukselta" - -msgid "Back to application" -msgstr "Takaisin hakemukselle" - msgctxt "grants_handler" msgid "View application" msgstr "Katsele hakemusta" @@ -653,3 +631,27 @@ msgstr "Poista @item @number" msgctxt "grants_handler" msgid "Refresh the page" msgstr "Lataa sivu uudelleen" + +msgctxt "grants_handler" +msgid "Leave the application" +msgstr "Poistu hakemukselta" + +msgctxt "grants_handler" +msgid "Close" +msgstr "Sulje" + +msgctxt "grants_handler" +msgid "Back to application" +msgstr "Takaisin hakemukselle" + +msgctxt "grants_handler" +msgid "You have unsaved changes. Are you sure you want to refresh?" +msgstr "Sinulla on tallentamattomia muutoksia. Haluatko varmasti ladata sivun uudelleen?" + +msgctxt "grants_handler" +msgid "You have unsaved changes. Are you sure you want to leave?" +msgstr "Sinulla on tallentamattomia muutoksia. Haluatko varmasti poistua hakemukselta?" + +msgctxt "grants_handler" +msgid "Attention" +msgstr "Huomio" diff --git a/public/modules/custom/grants_handler/translations/sv.po b/public/modules/custom/grants_handler/translations/sv.po index 3e7a7f1495..4f0a13a7af 100644 --- a/public/modules/custom/grants_handler/translations/sv.po +++ b/public/modules/custom/grants_handler/translations/sv.po @@ -1,17 +1,5 @@ -# Swedish translation of City of Helsinki Grants Handler Module -# -msgctxt "grants_handler" msgid "" msgstr "" -"Project-Id-Version: PROJECT VERSION\n" -"POT-Creation-Date: 2022-01-18 16:58+0300\n" -"PO-Revision-Date: 2022-10-12 08:58+0300\n" -"Last-Translator: Petri Leinonen \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" msgctxt "grants_handler" msgid "Print table" @@ -548,19 +536,6 @@ msgstr "Din begäran uppfylldes inte på grund av nätverksfel." msgid "Are you sure you want to leave? Leave without saving." msgstr "Är du säker att du vill stänga blanketten? Avsluta utan att spara." -msgctxt "grants_handler" -msgid "Close" -msgstr "Stäng" - -msgid "Leave the application" -msgstr "Avsluta från ansökningshandling" - -msgid "Back to application" -msgstr "Tillbaka till ansökningshandling" - -msgid "Refresh the page" -msgstr "Uppdatera sidan" - msgctxt "grants_handler" msgid "View application" msgstr "Visa ansökning" @@ -648,3 +623,31 @@ msgstr "%mail är inte en giltig e-postadress. Använd formen user@example.com." msgid "Remove @item @number" msgstr "Ta bort @item @number" + +msgctxt "grants_handler" +msgid "Refresh the page" +msgstr "Uppdatera sidan" + +msgctxt "grants_handler" +msgid "Leave the application" +msgstr "Avsluta från ansökningshandling" + +msgctxt "grants_handler" +msgid "Close" +msgstr "Stäng" + +msgctxt "grants_handler" +msgid "Back to application" +msgstr "Tillbaka till ansökningshandling" + +msgctxt "grants_handler" +msgid "You have unsaved changes. Are you sure you want to refresh?" +msgstr "Du har osparade ändringar. Är du säker på att du vill uppdatera?" + +msgctxt "grants_handler" +msgid "You have unsaved changes. Are you sure you want to leave?" +msgstr "Du har osparade ändringar. Är du säker på att du vill lämna?" + +msgctxt "grants_handler" +msgid "Attention" +msgstr "Observera" diff --git a/public/modules/custom/grants_logger/grants_logger.info.yml b/public/modules/custom/grants_logger/grants_logger.info.yml index de39d2fc6e..d490264609 100644 --- a/public/modules/custom/grants_logger/grants_logger.info.yml +++ b/public/modules/custom/grants_logger/grants_logger.info.yml @@ -1,7 +1,9 @@ name: 'Grants Logger' type: module -description: 'Grants logger override.' +description: 'Grants logging customization' package: 'helfi' -core_version_requirement: ^9 || ^10 +core_version_requirement: ^10 || ^11 dependencies: - - helfi_helsinki_profiili + - raven:raven + - helfi_atv:helfi_atv + - helfi_helsinki_profiili:helfi_helsinki_profiili diff --git a/public/modules/custom/grants_logger/grants_logger.services.yml b/public/modules/custom/grants_logger/grants_logger.services.yml index 9877d00fe2..4a9cf5d5b0 100644 --- a/public/modules/custom/grants_logger/grants_logger.services.yml +++ b/public/modules/custom/grants_logger/grants_logger.services.yml @@ -1,6 +1,6 @@ services: - logger.dblog: - class: Drupal\grants_logger\Logger\GrantsLogger - arguments: ['@database', '@logger.log_message_parser', '@helfi_helsinki_profiili.userdata'] - tags: - - { name: logger } + _defaults: + autowire: true + autoconfigure: true + + Drupal\grants_logger\EventSubscriber\SentryEventSubscriber: ~ diff --git a/public/modules/custom/grants_logger/src/EventSubscriber/SentryEventSubscriber.php b/public/modules/custom/grants_logger/src/EventSubscriber/SentryEventSubscriber.php new file mode 100644 index 0000000000..12b69d326f --- /dev/null +++ b/public/modules/custom/grants_logger/src/EventSubscriber/SentryEventSubscriber.php @@ -0,0 +1,49 @@ + 'onAtvException', + HelsinkiProfiiliExceptionEvent::EVENT_ID => 'onHelsinkiProfiiliException', + ]; + } + + /** + * Logs the event to sentry. + * + * @param \Drupal\helfi_atv\Event\AtvServiceExceptionEvent $event + * An exception event. + */ + public function onAtvException(AtvServiceExceptionEvent $event): void { + // Consider ignoring the event if $event is instanceof GuzzleException + // and http error status code is _some_status_code_ if, for example, 404 + // errors cause too much error spam here. + \Sentry\captureException($event->getException()); + } + + /** + * Logs the event to sentry. + * + * @param \Drupal\helfi_helsinki_profiili\Event\HelsinkiProfiiliExceptionEvent $event + * An exception event. + */ + public function onHelsinkiProfiiliException(HelsinkiProfiiliExceptionEvent $event): void { + \Sentry\captureException($event->getException()); + } + +} diff --git a/public/modules/custom/grants_logger/src/Logger/GrantsLogger.php b/public/modules/custom/grants_logger/src/Logger/GrantsLogger.php deleted file mode 100644 index f8fc036a19..0000000000 --- a/public/modules/custom/grants_logger/src/Logger/GrantsLogger.php +++ /dev/null @@ -1,72 +0,0 @@ -connection = $connection; - $this->parser = $parser; - $this->helfiHelsinkiProfiiliUserdata = $helfiHelsinkiProfiiliUserdata; - } - - /** - * {@inheritdoc} - */ - public function log($level, $message, array $context = []): void { - - if ($this->helfiHelsinkiProfiiliUserdata->isAuthenticatedExternally()) { - $userData = $this->helfiHelsinkiProfiiliUserdata->getUserData(); - if ($userData) { - $message = $message . (' (HP UUID: @helfi_hp_uid)'); - $context['@helfi_hp_uid'] = $userData["sub"]; - } - } - - parent::log($level, $message, $context); - } - -} diff --git a/public/modules/custom/grants_metadata/grants_metadata.services.yml b/public/modules/custom/grants_metadata/grants_metadata.services.yml index fca9808161..deeb66bcf9 100644 --- a/public/modules/custom/grants_metadata/grants_metadata.services.yml +++ b/public/modules/custom/grants_metadata/grants_metadata.services.yml @@ -17,4 +17,4 @@ services: '@database' ] calls: - - [ setEventsService, [ '@?grants_handler.events_service' ] ] + - [ setEventsService, [ '@?grants_events.events_service' ] ] diff --git a/public/modules/custom/grants_metadata/src/ApplicationDataService.php b/public/modules/custom/grants_metadata/src/ApplicationDataService.php index 9125424e4b..2d2f18001c 100644 --- a/public/modules/custom/grants_metadata/src/ApplicationDataService.php +++ b/public/modules/custom/grants_metadata/src/ApplicationDataService.php @@ -7,8 +7,8 @@ use Drupal\Core\Logger\LoggerChannelInterface; use Drupal\Core\TypedData\TypedDataInterface; use Drupal\grants_attachments\AttachmentHandler; +use Drupal\grants_events\EventsService; use Drupal\grants_handler\DebuggableTrait; -use Drupal\grants_handler\EventsService; use Drupal\grants_handler\Helpers; /** @@ -40,7 +40,7 @@ final class ApplicationDataService { /** * Events service. * - * @var \Drupal\grants_handler\EventsService + * @var \Drupal\grants_events\EventsService */ protected EventsService $eventsService; @@ -63,7 +63,7 @@ public function __construct( /** * Set the getter service. * - * @param \Drupal\grants_handler\EventsService $eventsService + * @param \Drupal\grants_events\EventsService $eventsService * Events service. */ public function setEventsService(EventsService $eventsService): void { diff --git a/public/modules/custom/grants_metadata/tests/src/Kernel/AtvSchemaTest.php b/public/modules/custom/grants_metadata/tests/src/Kernel/AtvSchemaTest.php index e598954a25..b33245862b 100644 --- a/public/modules/custom/grants_metadata/tests/src/Kernel/AtvSchemaTest.php +++ b/public/modules/custom/grants_metadata/tests/src/Kernel/AtvSchemaTest.php @@ -45,6 +45,7 @@ class AtvSchemaTest extends GrantsKernelTestBase implements ServiceModifierInter 'helfi_yjdh', // Project modules. 'grants_applicant_info', + 'grants_events', 'grants_attachments', 'grants_budget_components', 'grants_club_section', diff --git a/public/modules/custom/grants_profile/grants_profile.libraries.yml b/public/modules/custom/grants_profile/grants_profile.libraries.yml index 788788e0ca..cbee1ec7c5 100644 --- a/public/modules/custom/grants_profile/grants_profile.libraries.yml +++ b/public/modules/custom/grants_profile/grants_profile.libraries.yml @@ -1,11 +1,12 @@ profile_dialog: version: 1.x js: - js/profile_dialog.js: {} + js/profile_dialog.js: { } dependencies: - core/drupal - core/jquery - core/once + - grants_handler/grants-dialog pattern_error: js: diff --git a/public/modules/custom/grants_profile/js/profile_dialog.js b/public/modules/custom/grants_profile/js/profile_dialog.js index 7df4f03785..1ea699707b 100644 --- a/public/modules/custom/grants_profile/js/profile_dialog.js +++ b/public/modules/custom/grants_profile/js/profile_dialog.js @@ -29,58 +29,28 @@ let containingElement = document.querySelector('form'); if ((unset_name) && !containingElement.contains(event.target)) { event.preventDefault(); - const $previewDialog = $( - `
`, - ).appendTo('body'); - Drupal.dialog($previewDialog, { - title: Drupal.t('You need to have a name for your unregistered community or group. Please add a name and save or cancel them.'), - width: '33%', - buttons: [ - { - text: Drupal.t('Back to profile'), - buttonType: 'primary', - click() { - $(this).dialog('close'); - }, - }, - ], - }).showModal(); + return Drupal.dialogFunctions.createDialog( + Drupal.t('You need to have a name for your unregistered community or group. Please add a name and save or cancel them.', {}, { context: 'grants_profile' }), + '', + Drupal.t('Back to profile', {}, { context: 'grants_profile' }), + Drupal.t('Close', {}, { context: 'grants_profile' }), + ); } else if ((current_name !== initial_name) && !containingElement.contains(event.target)) { event.preventDefault(); - const $previewDialog = $( - `
`, - ).appendTo('body'); - Drupal.dialog($previewDialog, { - title: Drupal.t('You have unsaved changes in your profile. Please save or cancel them.'), - width: '33%', - buttons: [ - { - text: Drupal.t('Back to profile'), - buttonType: 'primary', - click() { - $(this).dialog('close'); - }, - }, - ], - }).showModal(); + return Drupal.dialogFunctions.createDialog( + Drupal.t('You have unsaved changes in your profile. Please save or cancel them.', {}, { context: 'grants_profile' }), + '', + Drupal.t('Back to profile', {}, { context: 'grants_profile' }), + Drupal.t('Close', {}, { context: 'grants_profile' }), + ); } else if (($('[data-drupal-selector="edit-isnewprofile"]').val() === 'initialSave') && !containingElement.contains(event.target)) { event.preventDefault(); - const $previewDialog = $( - `
`, - ).appendTo('body'); - Drupal.dialog($previewDialog, { - title: Drupal.t('You have not saved your profile. Please save your profile before leaving the form.'), - width: '33%', - buttons: [ - { - text: Drupal.t('Back to profile'), - buttonType: 'primary', - click() { - $(this).dialog('close'); - }, - }, - ], - }).showModal(); + return Drupal.dialogFunctions.createDialog( + Drupal.t('You have not saved your profile. Please save your profile before leaving the form.', {}, { context: 'grants_profile' }), + '', + Drupal.t('Back to profile', {}, { context: 'grants_profile' }), + Drupal.t('Close', {}, { context: 'grants_profile' }), + ); } is_element_click = false; diff --git a/public/modules/custom/grants_profile/src/GrantsProfileService.php b/public/modules/custom/grants_profile/src/GrantsProfileService.php index 614c213904..b030cd4056 100644 --- a/public/modules/custom/grants_profile/src/GrantsProfileService.php +++ b/public/modules/custom/grants_profile/src/GrantsProfileService.php @@ -303,8 +303,9 @@ public function createNewProfile( $this->logger ->error('Error fetching community data. Error: %error', [ '%error' => $e->getMessage(), - ] - ); + ]); + + \Sentry\captureException($e); } return $newProfile; } diff --git a/public/modules/custom/grants_profile/translations/fi.po b/public/modules/custom/grants_profile/translations/fi.po index cceb749412..56bd6eb892 100644 --- a/public/modules/custom/grants_profile/translations/fi.po +++ b/public/modules/custom/grants_profile/translations/fi.po @@ -1,15 +1,5 @@ -# Finnish translation of City of Helsinki Grants Profile module msgid "" msgstr "" -"Project-Id-Version: 1.0\n" -"POT-Creation-Date: 2022-02-14 11:00+0300\n" -"PO-Revision-Date: 2022-10-12 11:00+0300\n" -"Last-Translator: Petri Leinonen \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" msgctxt "grants_profile" msgid "Delete bank account" @@ -557,9 +547,11 @@ msgctxt "grants_profile" msgid "Connection error" msgstr "Yhteysvirhe" +msgctxt "grants_profile" msgid 'You need to have a name for your unregistered community or group. Please add a name and save or cancel them.' msgstr 'Sinulla täytyy olla nimi rekisteröitymättömälle yhteisöllesi tai ryhmällesi. Lisää nimi ja tallenna tai peruuta ne.' +msgctxt "grants_profile" msgid 'You have unsaved changes in your profile. Please save or cancel them.' msgstr 'Sinulla on tallentamattomia muutoksia profiilissasi. Ole hyvä ja tallenna tai peruuta ne.' @@ -569,15 +561,21 @@ msgstr 'Sinulla on tallentamattomia muutoksia profiilissasi. Oletko varma, että msgid 'You have not saved your profile. Are you sure you want to leave the form?' msgstr 'Et ole tallentanut profiiliasi. Oletko varma, että haluat lähteä lomakkeelta?' +msgctxt "grants_profile" msgid 'You have not saved your profile. Please save your profile before leaving the form.' msgstr 'Et ole tallentanut profiiliasi. Tallenna profiili ennen lomakkeelta poistumista.' msgid 'You need to have a name for your unregistered community or group. Are you sure you want to leave the form?' msgstr 'Sinulla täytyy olla nimi rekisteröitymättömälle yhteisöllesi tai ryhmällesi. Oletko varma, että haluat lähteä lomakkeelta?' +msgctxt "grants_profile" msgid 'Back to profile' msgstr 'Takaisin profiiliin' +msgctxt "grants_profile" +msgid 'Close' +msgstr 'Sulje' + msgctxt "grants_profile" msgid "Fields marked with an asterisk * are required information." msgstr "Tähdellä * merkityt kentät ovat pakollisia tietoja." diff --git a/public/modules/custom/grants_profile/translations/sv.po b/public/modules/custom/grants_profile/translations/sv.po index ae8890b846..6324107914 100644 --- a/public/modules/custom/grants_profile/translations/sv.po +++ b/public/modules/custom/grants_profile/translations/sv.po @@ -1,15 +1,5 @@ -# Swedish translation of City of Helsinki Grants Profile module msgid "" msgstr "" -"Project-Id-Version: 1.0\n" -"POT-Creation-Date: 2022-02-14 11:00+0300\n" -"PO-Revision-Date: 2022-10-12 11:00+0300\n" -"Last-Translator: Petri Leinonen \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" msgctxt "grants_profile" msgid "Delete bank account" @@ -514,9 +504,11 @@ msgctxt "grants_profile" msgid "Connection error" msgstr "Anslutningsfel" +msgctxt "grants_profile" msgid 'You need to have a name for your unregistered community or group. Please add a name and save or cancel them.' msgstr 'Du måste ha ett namn för din icke-registrerad förening eller verksamhetsgrupp. Vänligen lägg till ett namn och spara eller avbryt dem.' +msgctxt "grants_profile" msgid 'You have unsaved changes in your profile. Please save or cancel them.' msgstr 'Du har osparade ändringar i din profil. Spara eller avbryt dem.' @@ -526,15 +518,21 @@ msgstr 'Du har osparade ändringar i din profil. Är du säker på att du vill l msgid 'You have not saved your profile. Are you sure you want to leave the form?' msgstr 'Du har inte sparat din profil. Är du säker på att du vill lämna formuläret?' +msgctxt "grants_profile" msgid 'You have not saved your profile. Please save your profile before leaving the form.' msgstr 'Du har inte sparat din profil. Spara din profil innan du lämnar formuläret.' msgid 'You need to have a name for your unregistered community or group. Are you sure you want to leave the form?' msgstr 'Du måste ha ett namn för din icke-registrerad förening eller verksamhetsgrupp. Är du säker på att du vill lämna formuläret?' +msgctxt "grants_profile" msgid 'Back to profile' msgstr 'Tillbaka till profilen' +msgctxt "grants_profile" +msgid 'Close' +msgstr "Stäng" + msgctxt "grants_profile" msgid "Fields marked with an asterisk * are required information." msgstr "Fält markerade med en asterisk * är obligatorisk information." diff --git a/public/sites/default/settings.php b/public/sites/default/settings.php index 872d57aab5..2f8d1e8e87 100644 --- a/public/sites/default/settings.php +++ b/public/sites/default/settings.php @@ -389,6 +389,11 @@ function drupal_get_env(string|array $variables) : mixed { $default_log_level = getenv('APP_ENV') === 'production' ? 'info' : 'debug'; $settings['helfi_api_base.log_level'] = getenv('LOG_LEVEL') ?: $default_log_level; +// Turn sentry JS error tracking on if SENTRY_DSN_PUBLIC is defined. +if (getenv('SENTRY_DSN_PUBLIC')) { + $config['raven.settings']['javascript_error_handler'] = TRUE; +} + /** * Deployment identifier. * diff --git a/public/themes/custom/hdbt_subtheme/dist/css/styles.min.css b/public/themes/custom/hdbt_subtheme/dist/css/styles.min.css index 7d6b556a59..c792cc8314 100644 --- a/public/themes/custom/hdbt_subtheme/dist/css/styles.min.css +++ b/public/themes/custom/hdbt_subtheme/dist/css/styles.min.css @@ -1 +1 @@ -body{--webform-element-width--input-small: 184px;--webform-element-width--input-medium: 332px;--webform-element-width--input-large: 591px;--webform-element-width--fieldset: 714px}.hel-icon--size-xs,.hds-icon--size-xs{height:16px;width:16px}.hel-icon--size-s,.hds-icon--size-s{height:24px;width:24px}.hel-icon--size-m,.hds-icon--size-m{height:32px;width:32px}.hel-icon--size-l,.hds-icon--size-l{height:48px;width:48px}.hel-icon--size-xl,.hds-icon--size-xl{height:64px;width:64px}.hel-icon.hel-icon--pen-line{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,");mask-image:url("data:image/svg+xml;charset=utf-8,")}.hel-icon.hds-icon--company{background:var(--color-black);-webkit-mask-image:url("data:image/svg+xml;charset=utf-8, ");mask-image:url("data:image/svg+xml;charset=utf-8, ")}.hds-button--secondary:not(.eu-cookie-compliance-default-button):not(.eu-cookie-compliance-save-preferences-button){--background-color: transparent;--background-color-hover: var(--color-black-80);--background-color-focus: transparent;--background-color-hover-focus: var(--color-black-80);--background-color-disabled: transparent;--color: var(--color-black);--color-hover: var(--color-white);--color-focus: var(--color-black);--color-hover-focus: var(--color-black);--color-disabled: var(--color-black-40)}.hds-button--secondary:not(:disabled):not(.eu-cookie-compliance-default-button):not(.eu-cookie-compliance-save-preferences-button),.hds-button--primary:not(:disabled){border-color:transparent;border-color:var(--color-black, transparent)}.hds-button.hds-button--supplementary .hds-button__label{margin:0;padding:0 var(--spacing-2-xs)}.hds-button.hds-button--supplementary::after,.hds-button.hds-button--supplementary::before{display:none !important}.hds-button--supplementary:not(:disabled){--background-color-hover: rgba(0, 0, 0, 0.1);background:rgba(0,0,0,0);border-color:rgba(0,0,0,0)}.hds-button--supplementary:not(:disabled):hover{background-color:var(--background-color-hover)}.hds-button--alert{--background-color: rgb(255, 0, 0)}a.hds-button.webform-button--delete-draft:not(:disabled){text-decoration:none}a.hds-button.webform-button--delete-draft:not(:disabled) .hds-button__label_wrapper{display:inline}a.hds-button.webform-button--delete-draft:not(:disabled) .hds-button__label{text-decoration:underline}a.hds-button.webform-button--delete-draft:not(:disabled):hover .hds-button__label{text-decoration:none}.openid-connect-login-form input[type=submit].hds-button{width:220px}.hds-button__label_wrapper{align-items:center;display:flex}.hds-button__label_wrapper:not(.hds-button)>.hds-button__label{margin:0 var(--spacing-2-xs)}.hds-link{--link-visited-color: var(--color-black);--link-color: var(--color-black)}.hds-card{--background-color: var(--color-white);--border-color: var(--color-black-90);--color: var(--color-black-90);--border-width: 2px;--padding-horizontal: var(--spacing-l);--padding-vertical: var(--spacing-m);background-color:var(--background-color);color:var(--color);padding:var(--padding-vertical) var(--padding-horizontal)}.hds-card--border{border:var(--border-width) solid var(--border-color)}.hds-card__body{display:grid;grid-gap:var(--spacing-m);gap:var(--spacing-m);margin-bottom:var(--spacing-l)}.hds-card__body:last-child{margin-bottom:0}.hds-card__heading{font-size:var(--fontsize-heading-m);font-weight:bold;line-height:var(--lineheight-m)}.hds-card__text{font-size:var(--fontsize-body-m);line-height:var(--lineheight-l)}.hds-card--applicant-role{margin-bottom:var(--spacing-l);margin-right:0;max-width:400px;width:100%}.hds-card__heading-m{font-size:var(--fontsize-heading-m);font-weight:500;letter-spacing:-0.2px;line-height:32px;margin-top:0}.grants-profile--menuitem--login,.grants-profile--menuitem--logout{align-items:center;display:flex;flex-flow:column;font-size:var(--fontsize-body-s);height:var(--spacing-xl);margin-left:var(--spacing-2-xs);margin-right:var(--spacing-2-xs);position:relative;text-align:center;width:var(--spacing-xl)}.grants-profile--menuitem--login .hel-icon,.grants-profile--menuitem--logout .hel-icon{display:block;margin:auto}.grants-profile--menuitem--login-triggertext,.grants-profile--menuitem--logout-triggertext{clip:rect(1px, 1px, 1px, 1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);display:block;max-height:1px;max-width:1px;opacity:0;overflow:hidden;position:absolute;white-space:nowrap}.block--grants-profile--menuitem{align-items:center;display:flex;grid-area:brand;z-index:2}.block--branding{flex-grow:10}.grants-frontpage-info-block{margin-bottom:var(--spacing-layout-xl)}.grants-profile--menuitem{height:var(--spacing-m);margin-left:var(--spacing-2-xs);margin-right:var(--spacing-2-xs);position:relative;width:var(--spacing-m)}@media(min-width: 768px){.grants-profile--menuitem{height:var(--spacing-2-xl);width:var(--spacing-2-xl)}}.grants-profile--menuitem a{text-decoration:none}.grants-profile--menuitem--notifications{background-color:var(--color-error);border:2px var(--color-white) solid;border-radius:50%;color:var(--color-white);font-size:var(--fontsize-body-s);font-weight:bold;height:var(--spacing-xs) 1.25;line-height:var(--spacing-layout-2-xs);position:absolute;right:-5px;text-align:center;top:-5px;width:var(--spacing-xs) 1.25;z-index:2}.grants-profile--menuitem--initials{border-radius:50%;font-weight:bold;height:var(--spacing-m);line-height:var(--spacing-m);text-align:center;vertical-align:middle;width:var(--spacing-m)}@media(min-width: 768px){.grants-profile--menuitem--initials{height:var(--spacing-2-xl);line-height:var(--spacing-2-xl);width:var(--spacing-2-xl)}}.grants-profile--menuitem--initials:hover,.grants-profile--menuitem--initials:active,.grants-profile--menuitem--initials:focus{text-decoration:underline}.grants-profile--menuitem--initials-colorscheme-2{background-color:var(--color-bus);color:var(--color-white)}.grants-profile--menuitem--initials-colorscheme-1{background-color:var(--color-engel);color:var(--color-black)}.grants-profile--menuitem--initials-colorscheme-0{background-color:var(--color-tram);color:var(--color-white)}.sidebar-important-links{margin-top:var(--spacing-2-xl)}.sidebar-important-links .sidebar-text .sidebar-text__text-content>p{padding:var(--spacing-s) var(--spacing-m)}.block--service-page-banner{background-color:var(--color-engel);margin-top:var(--spacing-layout-s);padding:var(--spacing-layout-s)}.block--service-page-banner h2{margin-top:0}.block--service-page-banner .hds-icon{margin-bottom:var(--spacing-layout-s)}.hds-button.service-page-sidebar-link{background-color:var(--hdbt-color-palette--secondary);padding:var(--spacing-xs)}.hds-button.service-page-sidebar-link:hover{color:var(--color-black)}.terms_block{padding-bottom:var(--spacing-4-xl)}#block-servicepageauthblock h2,#block-servicepageanonblock h2{--line-height: 1.3;font-size:1.25rem;font-weight:500;line-height:var(--line-height)}@media(min-width: 992px){#block-servicepageauthblock h2,#block-servicepageanonblock h2{--line-height: 1.1666666667;font-size:1.5rem;font-weight:500}}#block-servicepageauthblock .hds-button,#block-servicepageanonblock .hds-button{margin-top:var(--spacing-m)}.grants-service-page-block{background-color:var(--color-alert-light);margin-top:var(--spacing-m);padding:var(--spacing-m)}.grants-service-page-block h3{font-size:var(--fontsize-heading-s);margin-top:0}.grants-service-page-block .hel-icon{vertical-align:text-bottom}.grants-service-page-block--auth{background-color:var(--color-info-light)}.hel-icon.hel-icon--swap-user{-webkit-mask-image:url('data:image/svg+xml, ');mask-image:url('data:image/svg+xml, ')}.nav-toggle-dropdown--profile .profile__information{background-color:var(--color-silver-light)}.nav-toggle-dropdown--profile .profile__full-name{font-weight:bold}.nav-toggle-dropdown--profile .grants-profile--menuitem--mandate,.nav-toggle-dropdown--profile .grants-profile--menuitem--switch-role{--line-height: 1.5555555556;font-size:1.125rem;font-weight:400;line-height:var(--line-height);border-top:1px solid #ccc;border-bottom:1px solid #ccc;display:block;font-weight:normal;padding:16px;text-decoration:none;width:100%}@media(min-width: 992px){.nav-toggle-dropdown--profile .grants-profile--menuitem--mandate,.nav-toggle-dropdown--profile .grants-profile--menuitem--switch-role{border-bottom:none}}.nav-toggle-dropdown--profile .grants-profile--menuitem--mandate:hover,.nav-toggle-dropdown--profile .grants-profile--menuitem--switch-role:hover{text-decoration:underline}.nav-toggle-dropdown--profile .grants-profile--menuitem--mandate:focus,.nav-toggle-dropdown--profile .grants-profile--menuitem--switch-role:focus{outline:3px solid #000;outline-offset:-3px}.application-timeout-message{display:none;padding-left:16px;padding-left:var(--spacing-s, 16px);position:fixed;right:0;top:50%;z-index:100}.application-timeout-message.slide-in{animation:slide-in-right .5s forwards ease;display:block}.application-timeout-message .close-application-timeout-message{cursor:pointer;font-size:1.25rem;position:absolute;right:1.25rem}@keyframes slide-in-right{from{right:-500px}to{right:1.25rem}}.ui-widget-overlay{z-index:99}.ui-dialog .ui-button:hover{border-width:2px}.ui-dialog .ui-dialog-titlebar-close{top:var(--spacing-s);z-index:1001}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:left}.ui-dialog .ui-dialog-buttonpane{padding:var(--spacing-2-xs) var(--spacing-m)}.ui-dialog .ui-dialog-buttonpane button{margin:0 var(--spacing-xs) 0 0}.ui-dialog .ui-dialog-content{padding:0 1em 1em;position:static;position:initial}.ui-dialog div.ui-dialog-titlebar{padding:0}.ui-dialog-titlebar{background:rgba(0,0,0,0);border:0}.ui-dialog-titlebar-close{background:none;border:none}.ui-dialog-titlebar .ui-dialog-title{display:block;font-size:var(--fontsize-heading-s);overflow:auto;padding:var(--spacing-layout-2-xs) var(--spacing-layout-2-xs) var(--spacing-layout-2-xs) var(--spacing-2-xl);position:relative;white-space:normal}.ui-dialog-title .hel-icon{left:var(--spacing-m);margin-right:var(--spacing-2-xs);position:absolute;top:var(--spacing-s)}.ui-widget-content{border:0 rgba(0,0,0,0) solid}.ui-widget-content h3{margin-top:0}div.ui-widget.ui-widget-content{border-top:var(--spacing-2-xs) solid var(--color-black);max-width:100vw;min-width:300px;padding-top:0}.ui-widget-content span.ui-icon{margin-left:-8px;margin-top:-8px;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E %3Cg fill='none' fill-rule='evenodd'%3E %3Crect width='24' height='24'/%3E %3Cpolygon fill='currentColor' points='18 7.5 13.5 12 18 16.5 16.5 18 12 13.5 7.5 18 6 16.5 10.5 12 6 7.5 7.5 6 12 10.5 16.5 6'/%3E %3C/g%3E %3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E %3Cg fill='none' fill-rule='evenodd'%3E %3Crect width='24' height='24'/%3E %3Cpolygon fill='currentColor' points='18 7.5 13.5 12 18 16.5 16.5 18 12 13.5 7.5 18 6 16.5 10.5 12 6 7.5 7.5 6 12 10.5 16.5 6'/%3E %3C/g%3E %3C/svg%3E");transform:scale(1.5)}.submission-for-copying{margin-bottom:1em;margin-top:1em}.view_application_search_search_api .main-content{margin-top:0}.view_application_search_search_api .search-result-amount--wrapper{align-items:center;display:flex}.view_application_search_search_api .search-result-amount--wrapper p{margin-top:0}.view_application_search_search_api select.search-result-amount{border:1px solid var(--color-black-50);margin-left:var(--spacing-l);margin-right:var(--spacing-2-xs)}.view_application_search_search_api .search-filter-button{background-color:var(--color-black);border-radius:180px;border:0;color:var(--color-white);display:inline-block;margin:0 var(--spacing-2-xs) var(--spacing-2-xs) 0;padding:var(--spacing-2-xs) var(--spacing-xs)}.view_application_search_search_api .search-filter-button:focus{--focus-outline-color: #000000;box-shadow:none;outline:3px solid var(--focus-outline-color);outline:var(--outline-width, 3px) solid var(--focus-outline-color);outline-offset:2px;outline-offset:var(--outline-gutter, 2px)}.view_application_search_search_api .search-filter-button span{vertical-align:middle}.view_application_search_search_api .search-filter-button span.hel-icon:hover{cursor:pointer}.view-application-search-search-api .main-content{margin-top:var(--spacing-layout-s)}.view-application-search-search-api .main-content .view-header{align-items:center;display:flex;margin-bottom:var(--spacing-layout-s)}.application_search--link{display:block;height:100%;padding-bottom:var(--spacing-m);position:relative;text-decoration:none}.application_search--link::after{--icon-size: 1.5rem;background-color:#000;background-size:contain;content:"";display:inline-block;height:calc(var(--line-height) * 1em);height:var(--icon-size, calc(var(--line-height) * 1em));-webkit-mask-image:var(--hel-icon--arrow-right);mask-image:var(--hel-icon--arrow-right);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:calc(var(--line-height) * 1em) calc(var(--line-height) * 1em);mask-size:calc(var(--line-height) * 1em) calc(var(--line-height) * 1em);-webkit-mask-size:var(--icon-size, calc(var(--line-height) * 1em)) var(--icon-size, calc(var(--line-height) * 1em));mask-size:var(--icon-size, calc(var(--line-height) * 1em)) var(--icon-size, calc(var(--line-height) * 1em));vertical-align:bottom;width:calc(var(--line-height) * 1em);width:var(--icon-size, calc(var(--line-height) * 1em));transition:transform .2s linear;bottom:var(--spacing-s);content:"";display:block;flex-shrink:0;left:var(--spacing-m);margin-left:-4px;margin-top:8px;position:absolute}@media(prefers-reduced-motion){.application_search--link::after{transition:none}}@media(min-width: 576px){.application_search--link::after{--icon-size: 3rem;margin-left:-8px;margin-top:16px}}.application_search--link:focus h3,.application_search--link:hover h3{text-decoration:none}.application_search--link:focus::after,.application_search--link:hover::after{transform:translateX(8px)}@media(prefers-reduced-motion){.application_search--link:focus::after,.application_search--link:hover::after{transform:none}}.application_search--filter-wrapper{background:var(--color-black-5)}.application_search--filter-wrapper h2{font-size:var(--fontsize-heading-m);margin-bottom:var(--spacing-layout-s);margin-top:var(--spacing-layout-s)}.application_search--filter-wrapper form{align-items:center;border-bottom:2px solid var(--color-black-20);display:flex;flex-flow:row wrap;gap:var(--spacing-s);justify-content:space-between;margin-bottom:var(--spacing-layout-s);padding-bottom:var(--spacing-layout-s)}.application_search--filter-wrapper form .form-item{margin-bottom:0;min-width:-moz-fit-content;min-width:fit-content;width:calc((100% - var(--spacing-s) - var(--spacing-s))/3)}.application_search--filter-wrapper form .form-item label{color:var(--label-color-default);font-size:var(--fontsize-body-m);font-weight:500;margin-bottom:var(--spacing-3-xs)}.application_search--filter-wrapper form .form-item .grant-applications--select-wrapper{min-width:100%;width:100%}.application_search--filter-wrapper form .hds-text-input:first-child{max-width:none;width:100%}.application_search--filter-wrapper form .hds-text-input:first-child input{width:100%}.application_search--filter-wrapper form .form-actions{align-items:center;display:flex;order:6;padding-top:var(--spacing-m);width:100%}@media(min-width: 768px){.application_search--filter-wrapper form .form-actions{width:17%}}.application_search--filter-wrapper form .form-actions input{min-width:250px;width:100%}.application_search--filter-wrapper form .form-item-items-per-page{display:none}.application_search--filter-wrapper form .form-item-kohderyhma{order:1}.application_search--filter-wrapper form .form-item-avustuslaji{order:2}.application_search--filter-wrapper form .form-item-hakija{order:3}.application_search--filter-wrapper form .form-item-search{max-width:100%;order:4;width:50%}.application_search--filter-wrapper form .form-item-application-open{page-break-before:left;-moz-column-break-before:left;break-before:left;display:block;margin-top:var(--spacing-m);order:5;width:30%}.application_search--filter-wrapper form [data-drupal-selector=edit-reset]{background-color:rgba(0,0,0,0);border:0;color:var(--color-black)}.application_search--filter-wrapper .hds-koros svg pattern{color:var(--color-black-5)}.application_search--filter-wrapper .hero .hero__container{padding-bottom:var(--spacing-m)}.application_search--filters{padding-bottom:var(--spacing-layout-m);padding-top:0}.application_search--rows{display:flex;flex-direction:column;flex-wrap:wrap;justify-content:flex-start;width:100%}@media(min-width: 576px){.application_search--rows{flex-direction:row;margin-left:calc(-1*var(--spacing-m));width:calc(100% + var(--spacing-m))}}.application_search--row{box-shadow:1px 2px 4px 0 rgba(0,0,0,.5);margin-bottom:var(--spacing-l);position:relative;width:100%}@media(min-width: 576px){.application_search--row{margin-left:var(--spacing-m);width:calc(50% - var(--spacing-m))}}@media(min-width: 992px){.application_search--row{width:calc(33.3333333333% - var(--spacing-m))}}.application_search--row h3{font-size:var(--fontsize-heading-m);margin-top:var(--spacing-xs)}.application_search--row .views-field-search-api-excerpt{height:auto;overflow:auto;word-break:normal}.application_search--row .views-field{padding:var(--spacing-xs) var(--spacing-m)}.application_search--row .views-field-field-target-group{padding:0}.application_search--row .views-field-field-avustuslaji{padding:var(--spacing-xs) var(--spacing-m) var(--spacing-layout-m) var(--spacing-m)}.application_search--row .views-field-field-avustuslaji .tag_avustuslaji{background:var(--color-black);border-radius:var(--spacing-m);color:var(--color-white);display:inline-block;margin-bottom:var(--spacing-2-xs);padding:var(--spacing-3-xs) var(--spacing-xs)}.application_search--row .views-field-field-application-period .field-content{align-items:center;display:flex;gap:var(--spacing-s);position:relative}.application_search--row .views-field-field-application-period .field-content span{display:block}.application_search--row .tag_target_group{background:var(--color-black-20);color:var(--color-black);font-size:var(--fontsize-body-s);font-weight:bold;padding:var(--spacing-m);text-align:center;text-transform:uppercase;width:100%}.application_search--row .tag_target_group_12{background:var(--color-brick-medium-light)}.application_search--row .tag_target_group_20{background:var(--color-copper)}.application_search--row .tag_target_group_21{background:var(--color-metro-medium-light)}.application_search--row .tag_target_group_22{background:var(--color-suomenlinna-medium-light)}.application_search--row .tag_target_group_23{background:var(--color-engel)}.application_search--row .tag_target_group_24{background:var(--color-bus-medium-light)}.application_search--row .tag_target_group_25{background:var(--color-coat-of-arms-medium-light)}.application_search--row .tag_target_group_26{background:var(--color-gold-medium-light)}.application_search--row .tag_target_group_27{background:var(--color-tram-medium-light)}.application_search--row .tag_target_group_28{background:var(--color-summer-light)}.application_search--row .tag_target_group_29{background:var(--color-fog)}.application_search--row .tag_target_group_30{background:var(--color-copper-light)}.application_search--row .tag_target_group_31{background:var(--color-gold)}.view-ukk .view-filters{display:none}.view-ukk .ukk_categories{display:block;margin:var(--spacing-xl) 0;padding:0}.view-ukk .ukk_categories li{display:inline-block;list-style:none;margin:var(--spacing-m) var(--spacing-s) 0 0;padding:0}.view-ukk .hero .hero__text-content{max-width:100%}.view-ukk #edit-field-category-target-id{display:flex}.view-ukk #edit-field-category-target-id .hds-radio-button:first-of-type{margin-top:var(--spacing-2-xs)}.view-ukk #edit-field-category-target-id .hds-radio-button .hds-radio-button__input:checked+.hds-radio-button__label{background:var(--color-black);border-radius:var(--spacing-m);color:var(--color-white);padding:var(--spacing-2-xs) var(--spacing-s)}.view-ukk #edit-field-category-target-id .hds-radio-button__label{padding:var(--spacing-2-xs) var(--spacing-s)}.view-ukk #edit-field-category-target-id .hds-radio-button__label::before,.view-ukk #edit-field-category-target-id .hds-radio-button__label::after{display:none}.view-ukk .views-exposed-form fieldset{margin-bottom:0}.view-ukk .views-exposed-form .form-submit{margin-bottom:var(--spacing-l)}.view-ukk .category{background:var(--color-black);border-radius:var(--spacing-m);color:var(--color-white);display:inline-block;padding:var(--spacing-2-xs) var(--spacing-s);text-decoration:none}.view-ukk .category-unselected{background:var(--color-black-20);color:var(--color-black)}.page--select-applicant-role{background-color:var(--color-black-5)}.page--select-applicant-role body{background-color:var(--color-black-5)}.page--select-applicant-role .layout-main-wrapper{background-color:var(--color-black-5)}.page--select-applicant-role .main-content{margin-top:var(--spacing-l)}.page--select-applicant-role h1{margin-top:var(--spacing-l)}.page--select-applicant-role p{margin-bottom:var(--spacing-m)}.node--type-service .errand-service__channels .service-channel__links a[href^="https://avustukset.hel.fi"]{display:none}.node--type-service .service-channel__info p:first-of-type{margin-top:0}.node--type-service .service-channel--mail{display:none}#block-servicepageauthblock-2,#block-servicepageanonblock-2,#block-grantspreviewlink-2{display:none}@media(max-width: 767.9px){#block-servicepageauthblock-2,#block-servicepageanonblock-2,#block-grantspreviewlink-2{display:block;margin:var(--spacing-s)}}@media(max-width: 991.9px){#block-servicepageauthblock-2,#block-servicepageanonblock-2,#block-grantspreviewlink-2{display:block;margin:var(--spacing-l)}}#block-servicepageauthblock-2>.grants-service-page-block>*,#block-servicepageanonblock-2>.grants-service-page-block>*,#block-grantspreviewlink-2>.grants-service-page-block>*{margin:var(--spacing-2-xs) 0 var(--spacing-2-xs) var(--spacing-2-xs)}@media(max-width: 991.9px){#block-servicepageauthblock-2 .node--type-service a.hds-button[href*=uusi-hakemus],#block-servicepageanonblock-2 .node--type-service a.hds-button[href*=uusi-hakemus],#block-grantspreviewlink-2 .node--type-service a.hds-button[href*=uusi-hakemus]{display:none}}.user-login__text-container{background:var(--color-white);max-width:500px;padding:var(--spacing-m)}.user-login__text-container p:first-of-type{margin-top:0}.tabs{--tablist-border-color: var(--color-black-20);--tablist-border-size: 1px;--tab-color: var(--color-black);--tab-font-size: var(--fontsize-body-m);--tab-height: 48px;--tab-min-width: 148px;--tab-spacing: var(--spacing-s);--tab-active-border-size: 5px;--tab-active-border-color: var(--color-black);--tab-focus-outline-size: 2px;--tab-focus-outline-color: var(--color-coat-of-arms);display:flex;flex-flow:row wrap}.tabs--tablist{box-sizing:border-box;flex-grow:1;margin-bottom:-1px;overflow-x:hidden;position:relative;width:100%}.tabs--content-wrapper{width:100%}.tabs--content-wrapper .container{padding-top:1px}.tabs [role=tablist]{box-sizing:border-box;list-style:none;margin:0;padding:var(--tab-focus-outline-size) 0;white-space:nowrap}.tabs [role=tab]{background:rgba(0,0,0,0);border:0;cursor:pointer;display:inline-block;margin:0;outline:none;padding:0}.tabs [role=tab] span{align-items:center;box-sizing:border-box;color:var(--tab-color);display:flex;font-size:var(--tab-font-size);height:var(--tab-height);justify-content:center;margin:0;min-width:var(--tab-min-width);padding:0 var(--tab-spacing);pointer-events:none;position:relative}.tabs [role=tab] span::before{background:var(--tablist-border-color);bottom:0;content:"";height:var(--tablist-border-size);position:absolute;width:100%;z-index:100}.tabs [role=tab] span:hover::before,.tabs [role=tab] span:focus::before,.tabs [role=tab][aria-selected=true] span::before{background-color:var(--tab-active-border-color);bottom:0;content:"";height:var(--tab-active-border-size);position:absolute;width:100%;z-index:100}.tabs [role=tabpanel].is-hidden{display:none}.node--form-page .list-of-links{margin-left:0;margin-top:0;width:100%}@media(min-width: 768px){.node--form-page .list-of-links{margin-top:0}}.node--form-page .list-of-links>.container{padding-top:0}.node--form-page .list-of-links .list-of-links__title{border-top:2px solid var(--color-black-20);margin:0 0 var(--spacing-layout-xl)}@media(min-width: 576px){.node--form-page .list-of-links .list-of-links__container{width:calc(100% - var(--spacing-layout-xl))}}@media(min-width: 768px){.node--form-page .list-of-links .list-of-links__container{width:100%}}.node--form-page .list-of-links .list-of-links__content{height:auto;margin-top:0}@media(min-width: 768px){.node--form-page .list-of-links .list-of-links__content{display:grid;grid-template-columns:auto auto auto;margin:0 var(--spacing-m) 0 0}}.node--form-page .list-of-links .list-of-links__item{align-self:stretch;border-left:4px solid var(--color-copper);margin-right:-4px;padding-left:var(--spacing-m);padding-right:var(--spacing-m)}.list-of-links--without-image .list-of-links__item .list-of-links__item__desc{color:var(--color-black-90);font-size:var(--fontsize-body-m)}.list-of-links--without-image .list-of-links__item .list-of-links__item__title{font-size:var(--fontsize-heading-m)}.js-form-type-webform-custom-composite{--border-width: 2px;--outline-width: 3px;--input-height: 56px;--textarea-height: 149px;--icon-size: var(--spacing-m);--helper-color-default: var(--color-black-60);--helper-color-invalid: var(--color-error);--icon-color-invalid: var(--color-error);--input-background-default: var(--color-white);--input-background-disabled: var(--color-black-10);--input-border-color-default: var(--color-black-50);--input-border-color-hover: var(--color-black-90);--input-border-color-focus: var(--color-black-90);--input-border-color-invalid: var(--color-error);--input-border-color-disabled: var(--color-black-10);--input-color-default: var(--color-black-90);--input-color-disabled: var(--color-black-40);--label-color-default: var(--color-black-90);--label-color-invalid: var(--color-black-90);--placeholder-color: var(--color-black-60);--focus-outline-color: var(--color-coat-of-arms)}.js-form-type-webform-custom-composite a.tabledrag-handle .handle{height:24px;width:24px}.js-form-type-webform-custom-composite input.form-number{background-color:var(--input-background-default);border:var(--border-width) solid var(--input-border-color-default);box-sizing:border-box;color:var(--input-color-default);font-size:1.125em;height:var(--input-height);line-height:normal;padding:0 var(--spacing-s);width:100%}.js-form-type-webform-custom-composite table{border-collapse:collapse;border-spacing:0;margin-bottom:var(--spacing-m)}.js-form-type-webform-custom-composite table td{border-bottom:2px var(--color-black-20) solid;border-top:2px var(--color-black-20) solid;padding-left:var(--spacing-m);padding-top:var(--spacing-m)}@media(max-width: 768px){.js-form-type-webform-custom-composite table td{border:2px var(--color-black-20) solid}}.js-form-type-webform-custom-composite table td.webform-multiple-table--operations{border-bottom:2px var(--color-black-20) solid;border-top:2px var(--color-black-20) solid;padding-left:var(--spacing-m);padding-top:var(--spacing-m)}@media(max-width: 768px){.js-form-type-webform-custom-composite table td.webform-multiple-table--operations{background:var(--color-white);border:2px var(--color-black-20) solid;padding:10px 5px 5px}}.js-form-type-webform-custom-composite table td:first-child{border-left:2px var(--color-black-20) solid}.js-form-type-webform-custom-composite table td:last-child{border-right:2px var(--color-black-20) solid;padding:var(--spacing-s)}@media(min-width: 768px){.js-form-type-webform-custom-composite table td:last-child{min-width:400px;padding:var(--spacing-s) var(--spacing-m)}}div.ui-widget.ui-datepicker{padding:var(--spacing-2-xs)}div.ui-widget.ui-datepicker .ui-datepicker-header span.ui-icon{margin-left:-8px;margin-top:-8px;-webkit-mask-image:none;mask-image:none;transform:none}div.ui-widget.ui-datepicker .ui-datepicker-calendar{border:0;display:table;margin:0;max-width:100%}div.ui-widget.ui-datepicker .ui-datepicker-calendar th,div.ui-widget.ui-datepicker .ui-datepicker-calendar td{min-width:auto}details.accordion{--background-color: var(--color-white);--border-color: var(--color-black-60);--padding-horizontal: var(--spacing-m);--padding-vertical: var(--spacing-m);--header-font-color: var(--color-black-90);--header-font-size: var(--fontsize-heading-m);--header-line-height: var(--lineheight-m);--button-size: 28px;--header-focus-outline-color: var(--color-coat-of-arms);--content-font-color: var(--color-black-90);--content-font-size: var(--fontsize-body-m);--content-line-height: var(--lineheight-l);border-bottom:1px solid var(--border-color)}details.accordion .accordion_content{padding-bottom:var(--padding-vertical)}details.accordion[open] .accordion_heading_container span.hel-icon{transform:rotate(180deg)}.accordion_header{align-items:center;color:var(--header-font-color);display:flex;font-size:var(--header-font-size);font-weight:700;justify-content:space-between;line-height:var(--header-line-height);list-style:none;padding-bottom:var(--padding-vertical);padding-top:var(--padding-vertical);position:relative}.accordion_heading_container{align-items:center;box-sizing:border-box;cursor:pointer;display:grid;grid-template-columns:auto calc(var(--button-size));width:100%}.accordion_heading_container span.hel-icon{height:var(--button-size) !important;width:var(--button-size) !important}.accordion_heading_container span.hel-icon{border:2px solid rgba(0,0,0,0);box-sizing:border-box;margin:auto}.webform-element-description{--helper-color-default: var(--color-black-60);color:var(--helper-color-default);display:block;font-size:var(--fontsize-body-m);line-height:var(--lineheight-l);margin-top:var(--spacing-s)}.webform-element-help{background:var(--color-white);border:2px solid rgba(0,0,0,0);color:var(--hdbt-color-black);height:var(--spacing-layout-xs);margin-right:4px;padding:0;position:absolute;right:0;top:-3px;width:var(--spacing-layout-xs);z-index:10}div[data-tippy-root]{width:350px}.tippy-box{background-color:var(--color-black-5);border-left:var(--spacing-xs) var(--color-coat-of-arms) solid;border-radius:0;color:var(--hdbt-color-black);padding:var(--spacing-s)}.tippy-box .webform-element-help--content{white-space:normal}.tippy-box .webform-element-help--content a:link,.tippy-box .webform-element-help--content a:visited,.tippy-box .webform-element-help--content a:active,.tippy-box .webform-element-help--content a:hover{color:var(--hdbt-color-black)}.tippy-arrow{color:var(--color-black-5)}.webform-element-help--wrapper-short{max-width:-moz-fit-content;max-width:fit-content}.webform-element-help-container--title{--border-width: 2px;--outline-width: 3px;--input-height: 56px;--textarea-height: 149px;--icon-size: var(--spacing-m)}fieldset.grants-fieldset{padding:var(--spacing-s)}@media(min-width: 768px){fieldset.grants-fieldset{min-width:400px;padding:var(--spacing-s) var(--spacing-m)}}fieldset.grants-fieldset .fieldset-wrapper{align-items:flex-end;display:flex;flex-wrap:wrap;gap:0 var(--spacing-layout-2-xs)}fieldset.grants-fieldset .fieldset-wrapper .form-item--error-message{grid-column:1}fieldset.grants-fieldset-short{max-width:var(--webform-element-width--input-large)}fieldset.grants-fieldset-medium{max-width:var(--webform-element-width--fieldset)}fieldset.grants-fieldset-medium .fieldset-wrapper{justify-content:center}fieldset.premises-composite--wrapper.fieldgroup,fieldset.rented-premise-composite--wrapper.fieldgroup,.community_officials_wrapper fieldset.fieldgroup,fieldset.grants-budget-other-cost--wrapper.fieldgroup,fieldset.grants-budget-other-income--wrapper.fieldgroup,fieldset.place-of-operation-composite--wrapper.fieldgroup,fieldset.rent-income-composite--wrapper.fieldgroup,fieldset.rent-cost-composite--wrapper.fieldgroup,fieldset.club-section-composite--wrapper.fieldgroup,fieldset.members-composite--wrapper.fieldgroup,fieldset.orienteering-map-composite--wrapper,.form-item-muu-liite fieldset.grants-attachments--wrapper.fieldgroup{border-width:2px;margin-top:var(--spacing-layout-2-xs);max-width:100%;padding:var(--spacing-s);width:100%}@media(min-width: 768px){fieldset.premises-composite--wrapper.fieldgroup,fieldset.rented-premise-composite--wrapper.fieldgroup,.community_officials_wrapper fieldset.fieldgroup,fieldset.grants-budget-other-cost--wrapper.fieldgroup,fieldset.grants-budget-other-income--wrapper.fieldgroup,fieldset.place-of-operation-composite--wrapper.fieldgroup,fieldset.rent-income-composite--wrapper.fieldgroup,fieldset.rent-cost-composite--wrapper.fieldgroup,fieldset.club-section-composite--wrapper.fieldgroup,fieldset.members-composite--wrapper.fieldgroup,fieldset.orienteering-map-composite--wrapper,.form-item-muu-liite fieldset.grants-attachments--wrapper.fieldgroup{min-width:400px;padding:var(--spacing-s) var(--spacing-m)}}fieldset.premises-composite--wrapper.fieldgroup legend>span.visually-hidden,fieldset.rented-premise-composite--wrapper.fieldgroup legend>span.visually-hidden,.community_officials_wrapper fieldset.fieldgroup legend>span.visually-hidden,fieldset.grants-budget-other-cost--wrapper.fieldgroup legend>span.visually-hidden,fieldset.grants-budget-other-income--wrapper.fieldgroup legend>span.visually-hidden,fieldset.place-of-operation-composite--wrapper.fieldgroup legend>span.visually-hidden,fieldset.rent-income-composite--wrapper.fieldgroup legend>span.visually-hidden,fieldset.rent-cost-composite--wrapper.fieldgroup legend>span.visually-hidden,fieldset.club-section-composite--wrapper.fieldgroup legend>span.visually-hidden,fieldset.members-composite--wrapper.fieldgroup legend>span.visually-hidden,fieldset.orienteering-map-composite--wrapper legend>span.visually-hidden,.form-item-muu-liite fieldset.grants-attachments--wrapper.fieldgroup legend>span.visually-hidden{background:#fff;-webkit-clip-path:initial;clip-path:initial;clip:auto;clip:initial;height:auto;margin-left:calc(var(--spacing-2-xs)*-1);left:auto;overflow:visible;padding:0 var(--spacing-2-xs);top:-12px;width:-moz-max-content;width:max-content}fieldset.premises-composite--wrapper.fieldgroup legend>span.visually-hidden[\:has\(button.webform-element-help\)],fieldset.rented-premise-composite--wrapper.fieldgroup legend>span.visually-hidden[\:has\(button.webform-element-help\)],.community_officials_wrapper fieldset.fieldgroup legend>span.visually-hidden[\:has\(button.webform-element-help\)],fieldset.grants-budget-other-cost--wrapper.fieldgroup legend>span.visually-hidden[\:has\(button.webform-element-help\)],fieldset.grants-budget-other-income--wrapper.fieldgroup legend>span.visually-hidden[\:has\(button.webform-element-help\)],fieldset.place-of-operation-composite--wrapper.fieldgroup legend>span.visually-hidden[\:has\(button.webform-element-help\)],fieldset.rent-income-composite--wrapper.fieldgroup legend>span.visually-hidden[\:has\(button.webform-element-help\)],fieldset.rent-cost-composite--wrapper.fieldgroup legend>span.visually-hidden[\:has\(button.webform-element-help\)],fieldset.club-section-composite--wrapper.fieldgroup legend>span.visually-hidden[\:has\(button.webform-element-help\)],fieldset.members-composite--wrapper.fieldgroup legend>span.visually-hidden[\:has\(button.webform-element-help\)],fieldset.orienteering-map-composite--wrapper legend>span.visually-hidden[\:has\(button.webform-element-help\)],.form-item-muu-liite fieldset.grants-attachments--wrapper.fieldgroup legend>span.visually-hidden[\:has\(button.webform-element-help\)]{padding-right:var(--spacing-xl)}fieldset.premises-composite--wrapper.fieldgroup legend>span.visually-hidden:has(button.webform-element-help),fieldset.rented-premise-composite--wrapper.fieldgroup legend>span.visually-hidden:has(button.webform-element-help),.community_officials_wrapper fieldset.fieldgroup legend>span.visually-hidden:has(button.webform-element-help),fieldset.grants-budget-other-cost--wrapper.fieldgroup legend>span.visually-hidden:has(button.webform-element-help),fieldset.grants-budget-other-income--wrapper.fieldgroup legend>span.visually-hidden:has(button.webform-element-help),fieldset.place-of-operation-composite--wrapper.fieldgroup legend>span.visually-hidden:has(button.webform-element-help),fieldset.rent-income-composite--wrapper.fieldgroup legend>span.visually-hidden:has(button.webform-element-help),fieldset.rent-cost-composite--wrapper.fieldgroup legend>span.visually-hidden:has(button.webform-element-help),fieldset.club-section-composite--wrapper.fieldgroup legend>span.visually-hidden:has(button.webform-element-help),fieldset.members-composite--wrapper.fieldgroup legend>span.visually-hidden:has(button.webform-element-help),fieldset.orienteering-map-composite--wrapper legend>span.visually-hidden:has(button.webform-element-help),.form-item-muu-liite fieldset.grants-attachments--wrapper.fieldgroup legend>span.visually-hidden:has(button.webform-element-help){padding-right:var(--spacing-xl)}@media(min-width: 768px){fieldset.premises-composite--wrapper.fieldgroup legend>span.visually-hidden,fieldset.rented-premise-composite--wrapper.fieldgroup legend>span.visually-hidden,.community_officials_wrapper fieldset.fieldgroup legend>span.visually-hidden,fieldset.grants-budget-other-cost--wrapper.fieldgroup legend>span.visually-hidden,fieldset.grants-budget-other-income--wrapper.fieldgroup legend>span.visually-hidden,fieldset.place-of-operation-composite--wrapper.fieldgroup legend>span.visually-hidden,fieldset.rent-income-composite--wrapper.fieldgroup legend>span.visually-hidden,fieldset.rent-cost-composite--wrapper.fieldgroup legend>span.visually-hidden,fieldset.club-section-composite--wrapper.fieldgroup legend>span.visually-hidden,fieldset.members-composite--wrapper.fieldgroup legend>span.visually-hidden,fieldset.orienteering-map-composite--wrapper legend>span.visually-hidden,.form-item-muu-liite fieldset.grants-attachments--wrapper.fieldgroup legend>span.visually-hidden{left:auto}}.form-item-muu-liite fieldset.grants-attachments--wrapper{margin-bottom:0}fieldset.webform-composite-hidden-title .fieldset-wrapper>.form-item:last-child{margin-bottom:var(--spacing-layout-xs)}.js-form-type-webform-table table{width:100%}.js-form-type-webform-table th{text-align:left}.js-form-type-webform-table td{vertical-align:middle}.js-form-type-webform-table td>div{height:auto;margin-bottom:0}.js-form-type-webform-table td>div label{margin:-1px}.js-form-type-webform-table .hds-text-input label{border:0;clip:rect(0, 0, 0, 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.form-item{margin-bottom:var(--spacing-layout-xs);position:relative}.form-item input[type=date],.form-item input[type=time]{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--input-background-default);border:var(--border-width) solid var(--input-border-color-default);box-sizing:border-box;color:var(--input-color-default);font-size:1.125em;height:var(--input-height);line-height:normal;padding:0 var(--spacing-s);width:100%;will-change:transform,box-shadow}.webform-section{padding-bottom:var(--spacing-layout-2-xs)}.webform-section table:first-of-type{margin-top:0}.form-type-webform-multiple .webform-multiple-table table{max-width:100%;width:100%}@media(min-width: 768px){.form-type-webform-multiple .webform-multiple-table table{width:auto}}.hds-text-input{max-width:-moz-fit-content;max-width:fit-content;width:100%}.webform-section-grid-wrapper{display:grid;grid-template-columns:1fr}@media(min-width: 768px){.webform-section-grid-wrapper{grid-row-gap:var(--spacing-xl);grid-template-columns:1fr 2fr}}.webform-section-grid-wrapper>dt.webform-section-title{color:var(--hdbt-color-black);display:block;flex-shrink:0;font-size:var(--fontsize-heading-s);font-weight:500;-webkit-hyphens:none;hyphens:none;line-height:1;margin-bottom:var(--spacing-3-xs);margin-top:0;padding-right:var(--spacing-2-xl);width:100%}.webform-section-grid-wrapper .webform-section-wrapper{margin-bottom:var(--spacing-layout-xs);padding-left:var(--spacing-2-xl)}@media(min-width: 768px){.webform-section-grid-wrapper .webform-section-wrapper{margin-bottom:0;padding-left:0}}fieldset input[type=button]{margin-top:var(--spacing-m)}.webform-section-wrapper>.description{margin-bottom:var(--spacing-layout-xs)}.grants__page-header{margin-bottom:var(--spacing-layout-l);font-size:2rem}@media(min-width: 768px){.grants__page-header{font-size:3rem}}.webform-section-flex-wrapper{display:flex;flex-flow:row wrap;width:100%;justify-content:left}@media(min-width: 768px){.webform-section-flex-wrapper{flex-flow:row nowrap}.webform-section-flex-wrapper h3+*>*:first-child>label:first-of-type,.webform-section-flex-wrapper h3+*>*:first-child>*:first-child>label:first-of-type{margin-top:var(--spacing-2-xs);padding-top:0}.webform-section-flex-wrapper h3+*>*:first-child>p{line-height:normal;line-height:initial;margin-top:var(--spacing-2-xs)}.webform-section-flex-wrapper h3+*>*:first-child>h4{line-height:normal;line-height:initial;margin-top:var(--spacing-m)}}.webform-section-flex-wrapper .webform-element-help-container--title{position:relative}.webform-section-flex-wrapper>h2.webform-section-title,.webform-section-flex-wrapper>h3.webform-section-title,.webform-section-flex-wrapper>h4.webform-section-title,.webform-section-flex-wrapper>dt.webform-section-title{color:var(--hdbt-color-black);display:block;flex-shrink:0;font-size:24px;font-weight:500;-webkit-hyphens:manual;hyphens:manual;margin-bottom:var(--spacing-3-xs);margin-top:0;padding-right:var(--spacing-2-xl);width:100%}@media(min-width: 768px){.webform-section-flex-wrapper>h2.webform-section-title,.webform-section-flex-wrapper>h3.webform-section-title,.webform-section-flex-wrapper>h4.webform-section-title,.webform-section-flex-wrapper>dt.webform-section-title{font-size:32px;max-width:350px;width:30%}}.webform-section-flex-wrapper h4{font-size:var(--fontsize-heading-m);line-height:38px}.webform-section-flex-wrapper>.webform-section-wrapper{--line-height: 1.5;font-size:var(--fontsize-body-m);width:100%}@media(min-width: 768px){.webform-section-flex-wrapper>.webform-section-wrapper{padding-left:var(--spacing-2-xl)}}.webform-section-flex-wrapper .form-required::after{content:"*";display:inline}.webform-section-flex-wrapper legend,.webform-section-flex-wrapper label{display:block;font-size:var(--fontsize-body-m);font-weight:500;margin-bottom:var(--spacing-2-xs);max-width:-moz-fit-content;max-width:fit-content;position:relative}.webform-section-flex-wrapper legend{padding:0 var(--spacing-2-xs);margin-left:calc(var(--spacing-2-xs)*-1);left:auto}.webform-section-flex-wrapper legend[\:has\(button.webform-element-help\)],.webform-section-flex-wrapper label[\:has\(button.webform-element-help\)]{padding-right:var(--spacing-xl)}.webform-section-flex-wrapper legend:has(button.webform-element-help),.webform-section-flex-wrapper label:has(button.webform-element-help){padding-right:var(--spacing-xl)}.webform-section-flex-wrapper fieldset legend>span[\:has\(button.webform-element-help\)]{padding-right:var(--spacing-xl)}.webform-section-flex-wrapper fieldset legend>span:has(button.webform-element-help){padding-right:var(--spacing-xl)}.webform-section-flex-wrapper fieldset legend>span.fieldset-legend[\:has\(button.webform-element-help\)],.webform-section-flex-wrapper fieldset.fieldgroup legend>span[\:has\(button.webform-element-help\)]:not(.visually-hidden.fieldset-legend){padding-right:var(--spacing-l)}.webform-section-flex-wrapper fieldset legend>span.fieldset-legend:has(button.webform-element-help),.webform-section-flex-wrapper fieldset.fieldgroup legend>span:has(button.webform-element-help):not(.visually-hidden.fieldset-legend){padding-right:var(--spacing-l)}.webform-section-flex-wrapper fieldset legend>span.fieldset-legend[\:has\(button.webform-element-help\)],.webform-section-flex-wrapper fieldset.fieldgroup legend span.fieldset-legend:not(.visually-hidden)[\:has\(button.webform-element-help\)]{padding-right:0}.webform-section-flex-wrapper fieldset legend>span.fieldset-legend:has(button.webform-element-help),.webform-section-flex-wrapper fieldset.fieldgroup legend span.fieldset-legend:not(.visually-hidden):has(button.webform-element-help){padding-right:0}.webform-section-flex-wrapper label.hds-radio-button__label{font-weight:normal}.webform-section-flex-wrapper .checkboxes--wrapper label{font-weight:normal}.webform-section-flex-wrapper .js-form-type-textarea .hds-text-input__input-wrapper{display:block}.webform-section-flex-wrapper .has-error,.webform-section-flex-wrapper .grant-applications--select-wrapper[\:has\(.has-error\)]{border-color:var(--color-error)}.webform-section-flex-wrapper .has-error,.webform-section-flex-wrapper .grant-applications--select-wrapper:has(.has-error){border-color:var(--color-error)}form .hds-text-input__input-wrapper,.hds-text-input__input-wrapper{flex-flow:row wrap}form .hds-text-input__input-wrapper .text-count-wrapper,.hds-text-input__input-wrapper .text-count-wrapper{flex-basis:100%}form .hds-text-input__input-wrapper input.webform--small,form .hds-text-input__input-wrapper textarea.webform--small,.hds-text-input__input-wrapper input.webform--small,.hds-text-input__input-wrapper textarea.webform--small{max-width:var(--webform-element-width--input-small);min-width:var(--webform-element-width--input-small);width:100%}form .hds-text-input__input-wrapper input.webform--medium,form .hds-text-input__input-wrapper textarea.webform--medium,.hds-text-input__input-wrapper input.webform--medium,.hds-text-input__input-wrapper textarea.webform--medium{max-width:var(--webform-element-width--input-medium);min-width:var(--webform-element-width--input-small);width:100%}form .hds-text-input__input-wrapper input.webform--large,form .hds-text-input__input-wrapper textarea.webform--large,.hds-text-input__input-wrapper input.webform--large,.hds-text-input__input-wrapper textarea.webform--large{max-width:var(--webform-element-width--input-large);min-width:var(--webform-element-width--input-small);width:100%}.webform--small div.grant-applications--select-wrapper{max-width:var(--webform-element-width--input-small);min-width:var(--webform-element-width--input-small);width:100%}.webform--medium div.grant-applications--select-wrapper{max-width:var(--webform-element-width--input-medium);min-width:var(--webform-element-width--input-small);width:100%}.webform--large div.grant-applications--select-wrapper{max-width:var(--webform-element-width--input-medium);min-width:var(--webform-element-width--input-small);width:100%}form .hds-checkbox{display:block}form .hds-checkbox label.hds-checkbox__label::after{content:""}fieldset.webform-composite-hidden-title{margin-bottom:var(--spacing-layout-2-xs);margin-top:0}.form-item-bank-account-account-number-select,.form-item-community-address-community-address-select{margin-bottom:0}.grants-profile-grants-profile table thead th h4{margin:0}.hakemus-form-page .main-content{margin-top:0}.hakemus-form-page h1{-webkit-hyphens:auto;hyphens:auto;word-break:break-word}.hakemus-form-errors ul li{list-style-type:none}.community_officials_wrapper .webform-readonly{margin:0}.community_officials_wrapper .hds-text-input__input-wrapper{margin:0}.community_officials_wrapper input[readonly=readonly]{height:1.25rem;margin:0;max-width:330px}.form-item--error-message{color:var(--color-error);margin-bottom:var(--spacing-layout-s);margin-top:var(--spacing-layout-2-xs)}fieldset .form-item--error-message,.community_officials_wrapper .form-item--error-message{margin-bottom:0}.form-item--error-message::before{--icon-size: 1.6rem;background-color:#000;background-size:contain;content:"";display:inline-block;height:calc(var(--line-height) * 1em);height:var(--icon-size, calc(var(--line-height) * 1em));-webkit-mask-image:var(--hel-icon--alert-circle-fill);mask-image:var(--hel-icon--alert-circle-fill);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:calc(var(--line-height) * 1em) calc(var(--line-height) * 1em);mask-size:calc(var(--line-height) * 1em) calc(var(--line-height) * 1em);-webkit-mask-size:var(--icon-size, calc(var(--line-height) * 1em)) var(--icon-size, calc(var(--line-height) * 1em));mask-size:var(--icon-size, calc(var(--line-height) * 1em)) var(--icon-size, calc(var(--line-height) * 1em));vertical-align:bottom;width:calc(var(--line-height) * 1em);width:var(--icon-size, calc(var(--line-height) * 1em));background-color:var(--color-error);content:" ";display:inline-block}input[type=radio]+label.form-required::after{content:""}.hds-radio-button:last-of-type,.hds-checkbox:last-of-type{margin-bottom:0}.hds-radio-button:last-of-type>label,.hds-checkbox:last-of-type>label{margin-bottom:0}@media(min-width: 992px){.place-of-operation-composite--wrapper.fieldgroup .hds-text-input,.club-section-composite--wrapper.fieldgroup .hds-text-input{max-width:100%}}.place-of-operation-composite--wrapper.fieldgroup .hds-radio-button .hds-radio-button__label,.club-section-composite--wrapper.fieldgroup .hds-radio-button .hds-radio-button__label{line-height:var(--lineheight-m) !important}@media(min-width: 992px){.place-of-operation-group__location,.place-of-operation-group__students,.place-of-operation-group__groups,.place-of-operation-group__personnel,.place-of-operation-group__rent,.place-of-operation-group__time{display:flex;justify-content:space-between}}@media(min-width: 992px){.place-of-operation-group__location--address,.place-of-operation-group__students--address,.place-of-operation-group__groups--address,.place-of-operation-group__personnel--address,.place-of-operation-group__rent--address,.place-of-operation-group__time--address{margin-top:0 !important}.place-of-operation-group__location--address,.place-of-operation-group__students--address,.place-of-operation-group__groups--address,.place-of-operation-group__personnel--address,.place-of-operation-group__rent--address,.place-of-operation-group__time--address{width:65%}}@media(min-width: 992px){.place-of-operation-group__location--post-code,.place-of-operation-group__students--post-code,.place-of-operation-group__groups--post-code,.place-of-operation-group__personnel--post-code,.place-of-operation-group__rent--post-code,.place-of-operation-group__time--post-code{margin-top:0 !important}.place-of-operation-group__location--post-code,.place-of-operation-group__students--post-code,.place-of-operation-group__groups--post-code,.place-of-operation-group__personnel--post-code,.place-of-operation-group__rent--post-code,.place-of-operation-group__time--post-code{width:30%}}@media(min-width: 992px){.place-of-operation-group__location--student-count,.place-of-operation-group__location--special-student-count,.place-of-operation-group__location--group-count,.place-of-operation-group__location--special-group-count,.place-of-operation-group__location--personnel-count,.place-of-operation-group__location--rent-amount,.place-of-operation-group__location--time-start,.place-of-operation-group__location--time-end,.place-of-operation-group__students--student-count,.place-of-operation-group__students--special-student-count,.place-of-operation-group__students--group-count,.place-of-operation-group__students--special-group-count,.place-of-operation-group__students--personnel-count,.place-of-operation-group__students--rent-amount,.place-of-operation-group__students--time-start,.place-of-operation-group__students--time-end,.place-of-operation-group__groups--student-count,.place-of-operation-group__groups--special-student-count,.place-of-operation-group__groups--group-count,.place-of-operation-group__groups--special-group-count,.place-of-operation-group__groups--personnel-count,.place-of-operation-group__groups--rent-amount,.place-of-operation-group__groups--time-start,.place-of-operation-group__groups--time-end,.place-of-operation-group__personnel--student-count,.place-of-operation-group__personnel--special-student-count,.place-of-operation-group__personnel--group-count,.place-of-operation-group__personnel--special-group-count,.place-of-operation-group__personnel--personnel-count,.place-of-operation-group__personnel--rent-amount,.place-of-operation-group__personnel--time-start,.place-of-operation-group__personnel--time-end,.place-of-operation-group__rent--student-count,.place-of-operation-group__rent--special-student-count,.place-of-operation-group__rent--group-count,.place-of-operation-group__rent--special-group-count,.place-of-operation-group__rent--personnel-count,.place-of-operation-group__rent--rent-amount,.place-of-operation-group__rent--time-start,.place-of-operation-group__rent--time-end,.place-of-operation-group__time--student-count,.place-of-operation-group__time--special-student-count,.place-of-operation-group__time--group-count,.place-of-operation-group__time--special-group-count,.place-of-operation-group__time--personnel-count,.place-of-operation-group__time--rent-amount,.place-of-operation-group__time--time-start,.place-of-operation-group__time--time-end{margin-top:0 !important}.place-of-operation-group__location--student-count,.place-of-operation-group__location--special-student-count,.place-of-operation-group__location--group-count,.place-of-operation-group__location--special-group-count,.place-of-operation-group__location--personnel-count,.place-of-operation-group__location--rent-amount,.place-of-operation-group__location--time-start,.place-of-operation-group__location--time-end,.place-of-operation-group__students--student-count,.place-of-operation-group__students--special-student-count,.place-of-operation-group__students--group-count,.place-of-operation-group__students--special-group-count,.place-of-operation-group__students--personnel-count,.place-of-operation-group__students--rent-amount,.place-of-operation-group__students--time-start,.place-of-operation-group__students--time-end,.place-of-operation-group__groups--student-count,.place-of-operation-group__groups--special-student-count,.place-of-operation-group__groups--group-count,.place-of-operation-group__groups--special-group-count,.place-of-operation-group__groups--personnel-count,.place-of-operation-group__groups--rent-amount,.place-of-operation-group__groups--time-start,.place-of-operation-group__groups--time-end,.place-of-operation-group__personnel--student-count,.place-of-operation-group__personnel--special-student-count,.place-of-operation-group__personnel--group-count,.place-of-operation-group__personnel--special-group-count,.place-of-operation-group__personnel--personnel-count,.place-of-operation-group__personnel--rent-amount,.place-of-operation-group__personnel--time-start,.place-of-operation-group__personnel--time-end,.place-of-operation-group__rent--student-count,.place-of-operation-group__rent--special-student-count,.place-of-operation-group__rent--group-count,.place-of-operation-group__rent--special-group-count,.place-of-operation-group__rent--personnel-count,.place-of-operation-group__rent--rent-amount,.place-of-operation-group__rent--time-start,.place-of-operation-group__rent--time-end,.place-of-operation-group__time--student-count,.place-of-operation-group__time--special-student-count,.place-of-operation-group__time--group-count,.place-of-operation-group__time--special-group-count,.place-of-operation-group__time--personnel-count,.place-of-operation-group__time--rent-amount,.place-of-operation-group__time--time-start,.place-of-operation-group__time--time-end{width:47.5%}}@media(min-width: 768px){.club-section__participants{display:flex;gap:var(--spacing-l);justify-content:space-between}}.club-section__participants input.form-text.hds-text-input__input{max-width:100%;width:100%}.club-section__totalhours input.form-text.hds-text-input__input{max-width:100%;width:100%}.hel-icon--size-xs{--icon-size: var(--spacing-layout-2-xs)}.hel-icon--size-s{--icon-size: var(--spacing-layout-xs)}.hel-icon--size-m{--icon-size: var(--spacing-layout-s)}.hel-icon--size-l{--icon-size: var(--spacing-layout-m)}.hel-icon--size-xl{--icon-size: var(--spacing-layout-l)}.hds-text-input__input-wrapper[focus-within][\:has\(input\[readonly\]\)]{margin-right:var(--spacing-2-xs);outline:2px var(--color-black) solid;outline-offset:2px}.hds-text-input__input-wrapper[focus-within]:has(input[readonly]){margin-right:var(--spacing-2-xs);outline:2px var(--color-black) solid;outline-offset:2px}.hds-text-input__input-wrapper[focus-within][\:has\(input\[readonly\]\)]{margin-right:var(--spacing-2-xs);outline:2px var(--color-black) solid;outline-offset:2px}.hds-text-input__input-wrapper:focus-within[\:has\(input\[readonly\]\)]{margin-right:var(--spacing-2-xs);outline:2px var(--color-black) solid;outline-offset:2px}.hds-text-input__input-wrapper:focus-within:has(input[readonly]){margin-right:var(--spacing-2-xs);outline:2px var(--color-black) solid;outline-offset:2px}.hds-text-input__input-wrapper[focus-within][\:has\(input\[readonly\]\)] input[readonly]{width:calc(100% - var(--spacing-2-xs))}.hds-text-input__input-wrapper[focus-within]:has(input[readonly]) input[readonly]{width:calc(100% - var(--spacing-2-xs))}.hds-text-input__input-wrapper[focus-within][\:has\(input\[readonly\]\)] input[readonly]{width:calc(100% - var(--spacing-2-xs))}.hds-text-input__input-wrapper:focus-within[\:has\(input\[readonly\]\)] input[readonly]{width:calc(100% - var(--spacing-2-xs))}.hds-text-input__input-wrapper:focus-within:has(input[readonly]) input[readonly]{width:calc(100% - var(--spacing-2-xs))}.form-item-application-number,.form-item-status,.form-item-applicant-type{display:none}.grants-handler__completion{background:var(--color-bus-light);padding:var(--spacing-layout-l) var(--spacing-layout-2-xl)}.grants-handler__completion h2{margin-top:var(--spacing-l)}.grants-handler__completion h3{font-size:1rem;font-weight:bold;margin-top:var(--spacing-m)}.grants-handler__completion__info-row{display:flex;flex-flow:row wrap;gap:var(--spacing-m);justify-content:flex-start;margin-bottom:var(--spacing-m)}.grants-handler__completion__button-row{display:flex;flex-flow:row wrap;gap:var(--spacing-m);justify-content:flex-start}.grants-handler__completion__longtext{margin:var(--spacing-l) 0}.hds-notification.notification-margin-bottom{margin-bottom:var(--spacing-layout-m)}.hds-notification__label{align-items:center}.hds-checkbox__input label{font-weight:normal}fieldset.grants-attachments--wrapper{margin-bottom:var(--spacing-layout-m)}fieldset.grants-attachments--wrapper legend{margin-bottom:var(--spacing-2-xs)}fieldset.grants-attachments--wrapper .form-item--error-message{width:100%}fieldset.grants-attachments--wrapper .js-form-type-managed-file{margin-bottom:0}.grants-applications-managed_file{position:relative}.grants-applications-managed_file label.hds-button--secondary:not(:disabled):not(.eu-cookie-compliance-default-button):not(.eu-cookie-compliance-save-preferences-button){left:0;position:relative}.grants-applications-managed_file label.hds-button--secondary:not(:disabled):not(.eu-cookie-compliance-default-button):not(.eu-cookie-compliance-save-preferences-button)[\:has\(input\:disabled\)]{background-color:transparent;background-color:var(--background-color-disabled, transparent);border-color:transparent;border-color:var(--border-color-disabled, transparent);color:var(--color-disabled);cursor:not-allowed}.grants-applications-managed_file label.hds-button--secondary:not(:disabled):not(.eu-cookie-compliance-default-button):not(.eu-cookie-compliance-save-preferences-button)[\:has\(input\:disabled\)]{background-color:transparent;background-color:var(--background-color-disabled, transparent);border-color:transparent;border-color:var(--border-color-disabled, transparent);color:var(--color-disabled);cursor:not-allowed}.grants-applications-managed_file label.hds-button--secondary:not(:disabled):not(.eu-cookie-compliance-default-button):not(.eu-cookie-compliance-save-preferences-button):has(input:disabled){background-color:transparent;background-color:var(--background-color-disabled, transparent);border-color:transparent;border-color:var(--border-color-disabled, transparent);color:var(--color-disabled);cursor:not-allowed}.grants-applications-managed_file label.hds-button--secondary:not(:disabled):not(.eu-cookie-compliance-default-button):not(.eu-cookie-compliance-save-preferences-button)[focus-within]{background:var(--color-black);border-color:var(--color-white);color:var(--color-white);outline:2px var(--color-black) solid}.grants-applications-managed_file label.hds-button--secondary:not(:disabled):not(.eu-cookie-compliance-default-button):not(.eu-cookie-compliance-save-preferences-button):focus-within{background:var(--color-black);border-color:var(--color-white);color:var(--color-white);outline:2px var(--color-black) solid}.grants-applications-managed_file input[type=file]{opacity:0;position:absolute}.form-managed-file{display:flex;flex-wrap:wrap;white-space:inherit}.form-managed-file>span{background-color:var(--color-info-light);border-bottom:2px dotted var(--color-coat-of-arms);display:inline-block;padding:var(--spacing-s) var(--spacing-2-xs)}.form-managed-file>.file-upload-js-error{flex-basis:100%}.grants-applications-managed_file label.hds-button{display:flex}.grants-attachments--wrapper .webform-readonly{display:none}.webform-multiple-table table{border-collapse:collapse;border:0px var(--color-white) solid;margin-bottom:var(--spacing-2-xs);max-width:-moz-fit-content;max-width:fit-content}.webform-multiple-table .webform-multiple-table--operations-two{min-width:60px}.webform-multiple-table tbody tr,.webform-multiple-table thead tr{align-items:center;justify-content:space-between;width:100%}.webform-multiple-table td,.webform-multiple-table th{max-width:100%;min-width:0;padding:0;width:100%}.webform-multiple-table table thead th{padding:var(--spacing-layout-2-xs)}div.hidden-head table{display:table}div.hidden-head table thead th{padding:0}div.hidden-head table tbody tr{border-bottom:var(--spacing-s) var(--color-white) solid}div.hidden-head table tbody tr:hover{background:rgba(0,0,0,0)}div.table-layout-form input.hds-text-input__input{width:100%}div.table-layout-form table{border:1px var(--color-black) solid;max-width:var(--webform-element-width--input-large)}div.table-layout-form table tbody tr{border:§0px var(--color-black-30) solid}div.table-layout-form table tbody tr td{border:1px var(--color-black-30) solid;padding:0}div.table-layout-form table tbody tr td input.hds-text-input__input[readonly]{padding:var(--spacing-layout-2-xs)}div.table-layout-form table .form-item{margin-bottom:0}.hds-text-input .hds-text-input__input.input--borderless{border:0 rgba(0,0,0,0) solid}#edit-subventions-items thead{background:var(--color-black-90);color:var(--color-white);text-align:left}#edit-subventions-items input.hds-text-input,#edit-subventions-items input.hds-text-input__input{background:rgba(0,0,0,0)}#subventions_table td.webform-multiple-table--operations,#subventions_table th.webform-multiple-table--operations{display:none}#subventions_table input.hds-text-input__input[readonly][name$="[amount]"]{background-color:var(--input-background-disabled);border-color:var(--input-border-color-disabled);color:var(--input-color-disabled);cursor:not-allowed}.form-item-muu-liite .webform-multiple-table--operations{display:none}.hidden-head>label{display:none}.webform-preview .accordion_header{font-size:28px;font-weight:300}@media(min-width: 768px){.webform-preview .accordion_header{font-size:36px;font-weight:500}}.webform-preview label{display:block;font-weight:bold}.grants-profile-grants-profile fieldset{background:var(--color-black-5);border:0 rgba(0,0,0,0) solid;margin:0;max-width:var(--webform-element-width--fieldset);padding:0 var(--spacing-layout-s) var(--spacing-layout-s);top:calc(-1*var(--spacing-m))}.grants-profile-grants-profile fieldset label{margin-bottom:var(--spacing-3-xs)}.grants-profile-grants-profile fieldset legend{font-size:var(--fontsize-body-l);margin-bottom:var(--spacing-m);padding-bottom:var(--spacing-s);position:relative;top:var(--spacing-l)}.grants-profile-grants-profile fieldset .fieldset-wrapper{display:flex;flex-flow:row wrap;justify-content:space-between}.grants-profile-grants-profile fieldset .hds-text-input{max-width:100%}.grants-profile-grants-profile fieldset div[class*=-address-postcode]{width:32%}.grants-profile-grants-profile fieldset div[class*=-address-city]{width:65%}.grants-profile--extrainfo .form-actions .button{margin-right:var(--spacing-2-xs)}.grants-stepper{--grants-stepper-color: var(--color-black);--grants-stepper-background-color: var(--color-white);--grants-stepper-disabled-color: var(--color-black-20);--grants-stepper-selected-step-label-color: var(--color-black-90);--grants-stepper-not-selected-step-label-color: var(--color-black);--grants-step-background-color: var(--color-white);--grants-step-content-color: var(--color-black);--grants-stepper-focus-border-color: var(--color-coat-of-arms);--grants-step-width: 120px;--circle-container-size: 36px;--progress-line-height: 2px;background-color:var(--grants-stepper-background-color);margin-bottom:var(--spacing-layout-m);position:relative}@media(max-width: 725px){.grants-stepper{--grants-step-width: 40px}}@media(max-width: 725px){.grants-stepper .grants-stepper__text{display:none}}.grants-stepper__inner{align-items:flex-start;display:flex;justify-content:space-between;margin:0;-ms-overflow-style:none;padding:0;position:relative;scroll-behavior:smooth;scrollbar-width:none;width:100%}.grants-stepper__lines{display:flex;height:var(--progress-line-height);left:calc(var(--grants-step-width)/2);line-height:var(--lineheight-l);position:absolute;transform:translateY(calc(var(--circle-container-size) / 2 + var(--progress-line-height) / 2));z-index:1}.grants-stepper__line{background-color:var(--grants-stepper-color);display:inline-block;height:100%;position:relative}.grants-stepper__line__disabled{background-color:var(--grants-stepper-disabled-color)}.grants-stepper__steps{background-color:var(--grants-stepper-background-color);box-sizing:border-box;display:flex;flex-shrink:0;justify-content:center;max-width:var(--grants-step-width);min-width:var(--grants-step-width);padding:3px}.grants-stepper__step{align-items:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:rgba(0,0,0,0);border:0;box-sizing:content-box;color:var(--grants-stepper-color);cursor:pointer;display:flex;flex-direction:column;height:100%;justify-content:center;outline:none;overflow:visible;padding:0;position:relative}.grants-stepper__step[disabled],.grants-stepper__step__disabled{color:var(--grants-stepper-disabled-color);cursor:not-allowed}.grants-stepper__step[disabled] .grants-stepper__circle,.grants-stepper__step__disabled .grants-stepper__circle{background-color:var(--grants-stepper-background-color);border:2px solid var(--grants-stepper-disabled-color);color:var(--grants-stepper-disabled-color)}.grants-stepper__step[disabled] .grants-stepper__text,.grants-stepper__step__disabled .grants-stepper__text{color:var(--grants-stepper-disabled-color)}.grants-stepper__step__circle_container{align-items:center;display:flex;height:var(--circle-container-size);justify-content:center;width:var(--circle-container-size);z-index:2}.grants-stepper__step__completed_container{align-items:center;background-color:var(--grants-stepper-color);border-radius:16px;color:var(--color-white);display:none;justify-content:center;outline:2px solid var(--grants-stepper-background-color);padding:4px;vertical-align:middle}.grants-stepper .grants-stepper__error,.grants-stepper .grants-stepper__completed{display:none}.grants-stepper__text{color:var(--grants-stepper-not-selected-step-label-color);font-size:var(--fontsize-body-m);font-weight:500;line-height:var(--lineheight-l);margin-bottom:0;margin-top:6px;padding-left:var(--spacing-4-xs);padding-right:var(--spacing-4-xs);text-align:center;text-decoration:underline}.grants-stepper__circle{align-items:center;background-color:var(--grants-step-background-color);border:2px solid var(--grants-stepper-color);border-radius:16px;color:var(--grants-step-content-color);display:flex;height:28px;justify-content:center;outline:2px solid var(--grants-stepper-background-color);text-align:center;width:28px}.grants-stepper__number{font-size:var(--fontsize-body-m);font-weight:500;line-height:1.15}.grants-stepper .is-active .grants-stepper__circle{border:4px solid var(--grants-stepper-color);border-radius:18px;outline:none}.grants-stepper .is-active .grants-stepper__text{color:var(--grants-stepper-selected-step-label-color);font-weight:700;text-decoration:none}.grants-stepper .is-active .grants-stepper__number{color:var(--grants-stepper-selected-step-label-color);font-weight:700;text-decoration:none}.grants-stepper .is-complete .grants-stepper__container{align-items:center;background-color:var(--grants-stepper-color);border-radius:16px;color:var(--color-white);display:flex;justify-content:center;outline:2px solid var(--grants-stepper-background-color);padding:4px}.grants-stepper .is-complete .grants-stepper__number{display:none}.grants-stepper .is-complete .grants-stepper__completed{display:inline-block}.grants-stepper .is-complete .grants-stepper__circle{opacity:0}.grants-stepper .is-complete .grants-stepper__step__completed_container{display:flex}.grants-stepper .has-errors .grants-stepper__container{align-items:center;background-color:var(--grants-stepper-color);border-radius:16px;color:var(--color-white);display:flex;justify-content:center;outline:2px solid var(--grants-stepper-background-color);padding:4px}.grants-stepper .has-errors .grants-stepper__circle{border-color:var(--color-error);color:var(--color-error)}.grants-stepper .has-errors .grants-stepper__number{display:none}.grants-stepper .has-errors .grants-stepper__error{display:inline-block}.grants-stepper .progress-marker::before{display:none}.grants-stepper .progress-step .progress-marker{color:var(--color-black)}.grants-stepper .progress-step .progress-marker.focus-visible .grants-stepper__circle{outline:2px solid var(--color-black);outline:var(--outline-width, 2px) solid var(--color-black);outline-offset:2px}.grants-stepper .progress-step .progress-marker.focus-visible .grants-stepper__circle{outline:2px solid var(--color-black);outline:var(--outline-width, 2px) solid var(--color-black);outline-offset:2px}.grants-stepper .progress-step .progress-marker:focus-visible .grants-stepper__circle{outline:2px solid var(--color-black);outline:var(--outline-width, 2px) solid var(--color-black);outline-offset:2px}.grants-stepper .progress-step .progress-marker.focus-visible .grants-stepper__text{outline:2px solid var(--color-black);outline:var(--outline-width, 2px) solid var(--color-black)}.grants-stepper .progress-step .progress-marker.focus-visible .grants-stepper__text{outline:2px solid var(--color-black);outline:var(--outline-width, 2px) solid var(--color-black)}.grants-stepper .progress-step .progress-marker:focus-visible .grants-stepper__text{outline:2px solid var(--color-black);outline:var(--outline-width, 2px) solid var(--color-black)}.grants-stepper .progress-step:last-child{flex-grow:1}.grant-applications--select-wrapper{--border-width: 2px;--input-height: 56px;--menu-item-height: 53px;--icon-size: var(--spacing-m);--helper-color-default: var(--color-black-60);--helper-color-invalid: var(--color-error);--icon-color-invalid: var(--color-error);--input-background-default: var(--color-white);--input-background-disabled: var(--color-black-10);--input-border-color-default: var(--color-black-50);--input-border-color-hover: var(--color-black-90);--input-border-color-focus: var(--color-black-90);--input-border-color-invalid: var(--color-error);--input-border-color-disabled: var(--color-black-10);--input-color-default: var(--color-black-90);--input-color-disabled: var(--color-black-40);--label-color-default: var(--color-black-90);--label-color-invalid: var(--color-black-90);--placeholder-color: var(--color-black-60);--focus-outline-color: var(--color-coat-of-arms);align-items:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--input-background-default);border:var(--border-width) solid var(--input-border-color-default);box-sizing:border-box;color:var(--input-color-default);cursor:pointer;display:block;font-size:1.125em;grid-template-areas:"select";line-height:normal;max-width:30ch;min-width:15ch;padding:.25em .5em;position:relative;width:100%}.grant-applications--select-wrapper select{align-items:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:rgba(0,0,0,0);border:none;color:var(--dropdown-color-default);cursor:inherit;display:flex;font-family:inherit;font-size:var(--fontsize-body-l);height:var(--input-height);line-height:inherit;margin:0;min-height:var(--menu-item-height);outline:none;padding:calc(var(--spacing-s) - var(--border-width)*2) var(--spacing-s);width:100%;z-index:1}.grant-applications--select-wrapper select::-ms-expand{display:none}.grant-applications--select-wrapper i.hel-icon{pointer-events:none;position:absolute;right:calc(var(--spacing-s) - var(--border-width)*2);top:calc(var(--spacing-s) - var(--border-width)*2)}.grant-applications--select-wrapper select,.grant-applications--select-wrapper::after{grid-area:select}.grant-applications--select-wrapper:not(.select--multiple)::after{background-color:var(--helper-color-default);-webkit-clip-path:polygon(100% 0%, 0 0%, 50% 100%);clip-path:polygon(100% 0%, 0 0%, 50% 100%);content:"";height:.5em;justify-self:end;width:.8em}.grant-applications--select-wrapper select:focus+.grant-applications--select-focus{border:2px solid var(--focus-outline-color);border-radius:inherit;bottom:-1px;left:-1px;position:absolute;right:-1px;top:-1px}.webform-submission__application_id{border-bottom:1px var(--color-black-20) solid;padding-bottom:var(--spacing-xl)}.webform-submission__application_id--header{font-size:1rem;font-weight:bold}.webform-submission__title-wrapper{padding-top:var(--spacing-2-xl)}.webform-submission__title-wrapper h1{max-width:100%}.webform-submission ul{list-style:none;margin-top:0;padding-left:0}.webform-submission-information{background:var(--color-silver-light);margin-top:var(--spacing-3-xl);padding:var(--spacing-l)}.webform-submission-information .webform-submission-information{margin-top:var(--spacing-l);padding:0}.webform-submission-information h4{margin-top:0}.webform-submission-information h5{font-size:var(--fontsize-body-m);margin-top:var(--spacing-s)}.webform-submission-information__row{display:flex}.webform-submission-information__row-edit{margin-top:var(--spacing-s)}.webform-submission-information__row-top{align-items:center;border-bottom:1px solid var(--color-black-20);justify-content:space-between}@media(max-width: 550px){.webform-submission-information__row-top{display:block}}.webform-submission-information__row-main{flex-flow:row nowrap;gap:var(--spacing-m);justify-content:space-between}@media(max-width: 1179px){.webform-submission-information__row-main{flex-flow:row wrap}}.webform-submission-information__row-main>div{flex:1}@media(max-width: 1179px){.webform-submission-information__row-main>div{flex:auto;width:100%}}.webform-submission-information__row-main>div ul{list-style-type:none;margin-bottom:0;padding-left:0}.webform-submission-information__row-main>div ul li{margin:0;padding:0}.webform-submission-information__supportlinks{display:flex;flex-flow:row nowrap;min-width:-moz-fit-content;min-width:fit-content}.webform-submission-information__supportlinks .hds-loading-spinner{left:0}.webform-submission-information__supportlinks .hds-button{min-width:-moz-fit-content;min-width:fit-content}.hel-icon.hel-icon--copy{-webkit-mask-image:url("data:image/svg+xml,%3Csvg class='Icon-module_icon__1Jtzj icon_hel-icon__1YqNC Icon-module_s__2WGWe icon_hel-icon--size-s__2Lkik' viewBox='0 0 24 24' role='img' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Crect width='24' height='24'%3E%3C/rect%3E%3Cpath fill='currentColor' d='M6,10 L6,12 L5,12 L5,18 L12,18 L12,17 L14,17 L14,19 C14,19.5522847 13.5522847,20 13,20 L4,20 C3.44771525,20 3,19.5522847 3,19 L3,11 C3,10.4477153 3.44771525,10 4,10 L6,10 Z M20,4 C20.5522847,4 21,4.44771525 21,5 L21,15 C21,15.5522847 20.5522847,16 20,16 L8,16 C7.44771525,16 7,15.5522847 7,15 L7,5 C7,4.44771525 7.44771525,4 8,4 L20,4 Z M19,6 L9,6 L9,14 L19,14 L19,6 Z'%3E%3C/path%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg class='Icon-module_icon__1Jtzj icon_hel-icon__1YqNC Icon-module_s__2WGWe icon_hel-icon--size-s__2Lkik' viewBox='0 0 24 24' role='img' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Crect width='24' height='24'%3E%3C/rect%3E%3Cpath fill='currentColor' d='M6,10 L6,12 L5,12 L5,18 L12,18 L12,17 L14,17 L14,19 C14,19.5522847 13.5522847,20 13,20 L4,20 C3.44771525,20 3,19.5522847 3,19 L3,11 C3,10.4477153 3.44771525,10 4,10 L6,10 Z M20,4 C20.5522847,4 21,4.44771525 21,5 L21,15 C21,15.5522847 20.5522847,16 20,16 L8,16 C7.44771525,16 7,15.5522847 7,15 L7,5 C7,4.44771525 7.44771525,4 8,4 L20,4 Z M19,6 L9,6 L9,14 L19,14 L19,6 Z'%3E%3C/path%3E%3C/g%3E%3C/svg%3E")}.webform-submission-form .form-actions{border-top:1px rgba(0,0,0,.6) solid;margin-top:var(--spacing-l);padding-top:var(--spacing-2-xl)}@media(min-width: 768px){.webform-submission-form .form-actions{display:flex;flex-direction:row-reverse}}.webform-submission-form .form-actions .actions{display:flex;flex-wrap:wrap}.webform-submission-form .form-actions button{margin-left:0}@media(min-width: 768px){.webform-submission-form .form-actions button{margin-left:var(--spacing-2-xs)}}.webform-submission-form .form-actions input{margin-bottom:var(--spacing-layout-2-xs);width:100%}@media(min-width: 768px){.webform-submission-form .form-actions input{width:auto}}.webform-submission-form .form-actions input.webform-button--draft{background:rgba(0,0,0,0);border:0 rgba(0,0,0,0) solid;color:var(--hdbt-color-black);order:3;text-decoration:underline}.webform-submission-form .form-actions button.webform-button--next span::after,.webform-submission-form .form-actions button.webform-button--preview span::after{content:">";margin-left:var(--spacing-2-xs)}.webform-submission-form .form-actions button.webform-button--previous span::before{content:"<";margin-right:var(--spacing-2-xs)}.webform-submission-form .form-actions input.webform-button--previous{background:var(--color-white);color:var(--border-color)}.webform-button--draft .hds-button__label::before{background-color:currentColor;background-size:contain;content:"";display:inline-block;flex-shrink:0;height:24px;margin-right:var(--spacing-2-xs);-webkit-mask-image:var(--hel-icon--download-cloud);mask-image:var(--hel-icon--download-cloud);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:24px 24px;mask-size:24px 24px;transition:transform .2s linear;vertical-align:bottom;width:24px}.webform-submission-messages{background:var(--color-silver-light);margin-top:var(--spacing-3-xl);padding:var(--spacing-l)}.webform-submission-messages h4,.webform-submission-messages h5{margin-top:0}.webform-submission-messages hr{margin:var(--spacing-l) 0}.webform-submission-messages__new-message{align-items:center;background:var(--color-alert);display:inline-flex;font-weight:bold;gap:var(--spacing-2-xs);margin-bottom:var(--spacing-m);padding:var(--spacing-2-xs) var(--spacing-xs);text-transform:uppercase}.webform-submission-messages__messages-list{list-style:none;margin:0;padding:0}.webform-submission-messages__message{margin:0;padding:0}.webform-submission-messages__message__attachments{list-style:none}.webform-submission-messages__message .hds-button{margin-top:var(--spacing-s)}.js-form-type-grants-webform-summation-field{max-width:var(--webform-element-width--input-large);text-align:right}.js-form-type-grants-webform-summation-field .grants-webform-summation-field{display:inline-block;padding:var(--spacing-xs) var(--spacing-m)}.webform-print-header,.webform-print-footer{display:none}.webform-print .main-content{display:block}.webform-submission--view-mode-html .hds-text-input,.webform-submission-data-preview-page .hds-text-input,.webform-print-page-html .hds-text-input{max-width:100%}.webform-submission--view-mode-html .print-label,.webform-submission-data-preview-page .print-label,.webform-print-page-html .print-label{display:block;font-size:var(--fontsize-body-m);font-weight:500;margin-bottom:var(--spacing-3-xs);margin-top:0;max-width:-moz-fit-content;max-width:fit-content;padding-right:var(--spacing-xl);position:relative}.webform-submission--view-mode-html .webform-section-flex-wrapper h3+*>*:first-child>*:first-child,.webform-submission--view-mode-html .webform-section-flex-wrapper h3+*>*:first-child>*:first-child label:first-of-type,.webform-submission-data-preview-page .webform-section-flex-wrapper h3+*>*:first-child>*:first-child,.webform-submission-data-preview-page .webform-section-flex-wrapper h3+*>*:first-child>*:first-child label:first-of-type,.webform-print-page-html .webform-section-flex-wrapper h3+*>*:first-child>*:first-child,.webform-print-page-html .webform-section-flex-wrapper h3+*>*:first-child>*:first-child label:first-of-type{line-height:normal}.webform-submission--view-mode-html .print-notification,.webform-submission-data-preview-page .print-notification,.webform-print-page-html .print-notification{border:2px var(--color-black) solid;font-weight:bold;margin-top:var(--spacing-2-xl);padding:var(--spacing-layout-s)}.webform-submission--view-mode-html .print-notification .print-notification--icon,.webform-submission-data-preview-page .print-notification .print-notification--icon,.webform-print-page-html .print-notification .print-notification--icon{height:22px;margin-right:var(--spacing-2-xs);vertical-align:text-top;width:22px}.webform-submission--view-mode-html .webform-print-page-wizard-page~.webform-print-page-wizard-page h2,.webform-submission-data-preview-page .webform-print-page-wizard-page~.webform-print-page-wizard-page h2,.webform-print-page-html .webform-print-page-wizard-page~.webform-print-page-wizard-page h2{page-break-after:avoid;page-break-before:always}.webform-submission--view-mode-html div.hds-text-input__input,.webform-submission-data-preview-page div.hds-text-input__input,.webform-print-page-html div.hds-text-input__input{background:var(--color-white);border:2px var(--color-black) solid;height:var(--spacing-2-xl);width:100%}.webform-submission--view-mode-html div.hds-text-input__textarea,.webform-submission-data-preview-page div.hds-text-input__textarea,.webform-print-page-html div.hds-text-input__textarea{background:var(--color-white);border:2px var(--color-black) solid;height:var(--spacing-layout-2-xl);width:100%}.webform-submission--view-mode-html .webform-section-wrapper .hds-notification,.webform-submission-data-preview-page .webform-section-wrapper .hds-notification,.webform-print-page-html .webform-section-wrapper .hds-notification{margin-top:var(--spacing-s)}.webform-submission--view-mode-html .webform-print-page-body h2,.webform-submission-data-preview-page .webform-print-page-body h2,.webform-print-page-html .webform-print-page-body h2{margin-bottom:var(--spacing-layout-s)}.webform-submission--view-mode-html .webform-print-wrapper-table,.webform-submission-data-preview-page .webform-print-wrapper-table,.webform-print-page-html .webform-print-wrapper-table{border:0 rgba(0,0,0,0) solid;display:table;max-width:100%;overflow-x:visible;overflow-x:initial;width:100%}.webform-submission--view-mode-html .webform-print-wrapper-table thead,.webform-submission--view-mode-html .webform-print-wrapper-table tbody,.webform-submission--view-mode-html .webform-print-wrapper-table tfoot,.webform-submission--view-mode-html .webform-print-wrapper-table tr,.webform-submission--view-mode-html .webform-print-wrapper-table tbody tr:hover,.webform-submission--view-mode-html .webform-print-wrapper-table td,.webform-submission--view-mode-html .webform-print-wrapper-table td:first-child,.webform-submission--view-mode-html .webform-print-wrapper-table th,.webform-submission-data-preview-page .webform-print-wrapper-table thead,.webform-submission-data-preview-page .webform-print-wrapper-table tbody,.webform-submission-data-preview-page .webform-print-wrapper-table tfoot,.webform-submission-data-preview-page .webform-print-wrapper-table tr,.webform-submission-data-preview-page .webform-print-wrapper-table tbody tr:hover,.webform-submission-data-preview-page .webform-print-wrapper-table td,.webform-submission-data-preview-page .webform-print-wrapper-table td:first-child,.webform-submission-data-preview-page .webform-print-wrapper-table th,.webform-print-page-html .webform-print-wrapper-table thead,.webform-print-page-html .webform-print-wrapper-table tbody,.webform-print-page-html .webform-print-wrapper-table tfoot,.webform-print-page-html .webform-print-wrapper-table tr,.webform-print-page-html .webform-print-wrapper-table tbody tr:hover,.webform-print-page-html .webform-print-wrapper-table td,.webform-print-page-html .webform-print-wrapper-table td:first-child,.webform-print-page-html .webform-print-wrapper-table th{background:rgba(0,0,0,0);border:0;color:var(--color-black)}.webform-submission--view-mode-html .webform-print-wrapper-table ul,.webform-submission-data-preview-page .webform-print-wrapper-table ul,.webform-print-page-html .webform-print-wrapper-table ul{margin:0;padding:0}.webform-submission--view-mode-html .webform-print-wrapper-table ul li,.webform-submission-data-preview-page .webform-print-wrapper-table ul li,.webform-print-page-html .webform-print-wrapper-table ul li{border-bottom:1px var(--color-black-50) solid;list-style:none;margin-top:0;padding:1rem 0}.webform-submission--view-mode-html .webform-print-wrapper-table ul li:last-of-type,.webform-submission-data-preview-page .webform-print-wrapper-table ul li:last-of-type,.webform-print-page-html .webform-print-wrapper-table ul li:last-of-type{border-bottom:0 rgba(0,0,0,0) solid}.webform-submission--view-mode-html .webform-print-wrapper-table thead,.webform-submission-data-preview-page .webform-print-wrapper-table thead,.webform-print-page-html .webform-print-wrapper-table thead{display:table-header-group}.webform-submission--view-mode-html .webform-print-wrapper-table thead th,.webform-submission-data-preview-page .webform-print-wrapper-table thead th,.webform-print-page-html .webform-print-wrapper-table thead th{padding:0}.webform-submission--view-mode-html .webform-print-wrapper-table tfoot,.webform-submission-data-preview-page .webform-print-wrapper-table tfoot,.webform-print-page-html .webform-print-wrapper-table tfoot{display:table-footer-group}.webform-submission--view-mode-html .webform-submission-data>section,.webform-submission-data-preview-page .webform-submission-data>section,.webform-print-page-html .webform-submission-data>section{border-top:1px var(--color-black-20) solid;padding-top:var(--spacing-layout-l)}.webform-submission--view-mode-html .webform-submission-data>section>.webform-section-flex-wrapper,.webform-submission-data-preview-page .webform-submission-data>section>.webform-section-flex-wrapper,.webform-print-page-html .webform-submission-data>section>.webform-section-flex-wrapper{display:block}.webform-submission--view-mode-html .webform-submission-data>section>.webform-section-flex-wrapper>h2,.webform-submission-data-preview-page .webform-submission-data>section>.webform-section-flex-wrapper>h2,.webform-print-page-html .webform-submission-data>section>.webform-section-flex-wrapper>h2{font-size:var(--fontsize-heading-l) !important;margin:0 0 2mm !important;padding:0 !important;width:100% !important}.webform-submission--view-mode-html .webform-submission-data>section>.webform-section-flex-wrapper>h2,.webform-submission-data-preview-page .webform-submission-data>section>.webform-section-flex-wrapper>h2,.webform-print-page-html .webform-submission-data>section>.webform-section-flex-wrapper>h2{font-weight:500;min-width:100%}.webform-submission--view-mode-html .webform-submission-data>section>.webform-section-flex-wrapper>.webform-section-wrapper,.webform-submission-data-preview-page .webform-submission-data>section>.webform-section-flex-wrapper>.webform-section-wrapper,.webform-print-page-html .webform-submission-data>section>.webform-section-flex-wrapper>.webform-section-wrapper{padding:6mm 0}.webform-submission--view-mode-html .webform-submission-data>section>.webform-section-flex-wrapper>.webform-section-wrapper label,.webform-submission-data-preview-page .webform-submission-data>section>.webform-section-flex-wrapper>.webform-section-wrapper label,.webform-print-page-html .webform-submission-data>section>.webform-section-flex-wrapper>.webform-section-wrapper label{font-weight:500}.webform-submission--view-mode-html .webform-submission-data>section.hds-notification,.webform-submission-data-preview-page .webform-submission-data>section.hds-notification,.webform-print-page-html .webform-submission-data>section.hds-notification{padding-top:var(--spacing-s)}@media print{@page{.webform-submission--view-mode-html,.webform-submission-data-preview-page,.webform-print-page-html{margin:0;size:A4}}.webform-submission--view-mode-html h1,.webform-submission-data-preview-page h1,.webform-print-page-html h1{margin:0;position:relative}.webform-submission--view-mode-html details,.webform-submission-data-preview-page details,.webform-print-page-html details{page-break-before:always}.webform-submission--view-mode-html .details-section-divider,.webform-submission-data-preview-page .details-section-divider,.webform-print-page-html .details-section-divider{page-break-after:always}.webform-submission--view-mode-html label,.webform-submission-data-preview-page label,.webform-print-page-html label{font-size:8pt;margin-bottom:0}.webform-submission--view-mode-html section,.webform-submission-data-preview-page section,.webform-print-page-html section{border-top:0 var(--color-black-20) solid !important;padding-top:0 !important}.webform-submission--view-mode-html section,.webform-submission-data-preview-page section,.webform-print-page-html section{margin-bottom:0;padding-bottom:0}.webform-submission--view-mode-html div.main-content,.webform-submission-data-preview-page div.main-content,.webform-print-page-html div.main-content{margin:0}.webform-submission--view-mode-html button,.webform-submission--view-mode-html footer.footer,.webform-submission--view-mode-html header.header,.webform-submission--view-mode-html nav.breadcrumb,.webform-submission--view-mode-html .form-actions,.webform-submission--view-mode-html .hds-notification,.webform-submission--view-mode-html .messages__container,.webform-submission--view-mode-html .tools__container,.webform-submission--view-mode-html .breadcrumb__container,.webform-submission--view-mode-html .webform-progress,.webform-submission--view-mode-html .webform-progress-tracker,.webform-submission--view-mode-html .webform-progress-tracker-mobile,.webform-submission--view-mode-html .webform-multiple-add,.webform-submission--view-mode-html .webform-multiple-table--operations,.webform-submission-data-preview-page button,.webform-submission-data-preview-page footer.footer,.webform-submission-data-preview-page header.header,.webform-submission-data-preview-page nav.breadcrumb,.webform-submission-data-preview-page .form-actions,.webform-submission-data-preview-page .hds-notification,.webform-submission-data-preview-page .messages__container,.webform-submission-data-preview-page .tools__container,.webform-submission-data-preview-page .breadcrumb__container,.webform-submission-data-preview-page .webform-progress,.webform-submission-data-preview-page .webform-progress-tracker,.webform-submission-data-preview-page .webform-progress-tracker-mobile,.webform-submission-data-preview-page .webform-multiple-add,.webform-submission-data-preview-page .webform-multiple-table--operations,.webform-print-page-html button,.webform-print-page-html footer.footer,.webform-print-page-html header.header,.webform-print-page-html nav.breadcrumb,.webform-print-page-html .form-actions,.webform-print-page-html .hds-notification,.webform-print-page-html .messages__container,.webform-print-page-html .tools__container,.webform-print-page-html .breadcrumb__container,.webform-print-page-html .webform-progress,.webform-print-page-html .webform-progress-tracker,.webform-print-page-html .webform-progress-tracker-mobile,.webform-print-page-html .webform-multiple-add,.webform-print-page-html .webform-multiple-table--operations{display:none !important}.webform-submission--view-mode-html .gin--horizontal-toolbar .dialog-off-canvas-main-canvas,.webform-submission-data-preview-page .gin--horizontal-toolbar .dialog-off-canvas-main-canvas,.webform-print-page-html .gin--horizontal-toolbar .dialog-off-canvas-main-canvas{padding:0 !important}.webform-submission--view-mode-html .hds-text-input,.webform-submission-data-preview-page .hds-text-input,.webform-print-page-html .hds-text-input{max-width:100%}.webform-submission--view-mode-html .hds-text-input .hds-text-input__input,.webform-submission-data-preview-page .hds-text-input .hds-text-input__input,.webform-print-page-html .hds-text-input .hds-text-input__input{height:1cm}.webform-submission--view-mode-html .hds-text-input textarea.hds-text-input__input,.webform-submission--view-mode-html .hds-text-input div.hds-text-input__textarea,.webform-submission-data-preview-page .hds-text-input textarea.hds-text-input__input,.webform-submission-data-preview-page .hds-text-input div.hds-text-input__textarea,.webform-print-page-html .hds-text-input textarea.hds-text-input__input,.webform-print-page-html .hds-text-input div.hds-text-input__textarea{height:6cm;max-width:100%;min-width:100%;width:100%}.webform-submission--view-mode-html .hds-text-input .hds-text-input__input[readonly],.webform-submission--view-mode-html .hds-text-input .hds-text-input__input,.webform-submission-data-preview-page .hds-text-input .hds-text-input__input[readonly],.webform-submission-data-preview-page .hds-text-input .hds-text-input__input,.webform-print-page-html .hds-text-input .hds-text-input__input[readonly],.webform-print-page-html .hds-text-input .hds-text-input__input{border:2px var(--color-black) solid}.webform-submission--view-mode-html .webform-element,.webform-submission-data-preview-page .webform-element,.webform-print-page-html .webform-element{border:1px var(--color-black) solid;margin-bottom:8mm;padding:2.5mm;position:relative}.webform-submission--view-mode-html .webform-preview,.webform-submission-data-preview-page .webform-preview,.webform-print-page-html .webform-preview{margin-top:0}.webform-submission--view-mode-html .webform-preview label,.webform-submission-data-preview-page .webform-preview label,.webform-print-page-html .webform-preview label{align-items:flex-end;display:flex;font-size:8pt;height:100%;left:0;pointer-events:none;position:absolute;top:-100%;width:100%}.webform-submission--view-mode-html .webform-preview .webform-element,.webform-submission-data-preview-page .webform-preview .webform-element,.webform-print-page-html .webform-preview .webform-element{border:1px var(--color-black) solid;margin-bottom:8mm;padding:2.5mm;position:relative;top:5mm}.webform-submission--view-mode-html .webform-preview .webform-multiple-table--operations,.webform-submission-data-preview-page .webform-preview .webform-multiple-table--operations,.webform-print-page-html .webform-preview .webform-multiple-table--operations{display:none}.webform-submission--view-mode-html .webform-print-header,.webform-submission-data-preview-page .webform-print-header,.webform-print-page-html .webform-print-header{align-items:center;background:var(--color-white);border-bottom:1px var(--color-black-40) solid;display:flex;flex-flow:row nowrap;font-size:9pt;height:21mm;left:0;max-width:100%;min-width:100%;position:fixed;top:0;width:100%;z-index:1000}.webform-submission--view-mode-html .webform-print-header svg,.webform-submission-data-preview-page .webform-print-header svg,.webform-print-page-html .webform-print-header svg{color:var(--color-black);display:block;height:25mm;margin-right:3mm;width:55mm}.webform-submission--view-mode-html .webform-print-header .webform-print-header-left-text,.webform-submission-data-preview-page .webform-print-header .webform-print-header-left-text,.webform-print-page-html .webform-print-header .webform-print-header-left-text{color:var(--color-black-40);text-align:left;width:100%}.webform-submission--view-mode-html .webform-print-header .webform-print-header-right-text,.webform-submission-data-preview-page .webform-print-header .webform-print-header-right-text,.webform-print-page-html .webform-print-header .webform-print-header-right-text{color:var(--color-black-40);text-align:right;width:100%}.webform-submission--view-mode-html .webform-print-footer,.webform-submission-data-preview-page .webform-print-footer,.webform-print-page-html .webform-print-footer{align-items:center;background:var(--color-white);border-top:1px var(--color-black-40) solid;bottom:0;display:flex;flex-flow:row nowrap;font-size:9pt;height:17mm;left:0;max-width:100%;min-width:100%;position:fixed;width:100%;z-index:1000}.webform-submission--view-mode-html .webform-print-footer svg,.webform-submission-data-preview-page .webform-print-footer svg,.webform-print-page-html .webform-print-footer svg{color:var(--color-black);display:block;height:15mm;margin-right:3mm;width:33mm}.webform-submission--view-mode-html .webform-print-footer .webform-print-footer-left-text,.webform-submission-data-preview-page .webform-print-footer .webform-print-footer-left-text,.webform-print-page-html .webform-print-footer .webform-print-footer-left-text{color:var(--color-black-40);text-align:left;width:100%}.webform-submission--view-mode-html .webform-print-footer .webform-print-footer-right-text,.webform-submission-data-preview-page .webform-print-footer .webform-print-footer-right-text,.webform-print-page-html .webform-print-footer .webform-print-footer-right-text{color:var(--color-black-40);text-align:right;width:100%}.webform-submission--view-mode-html .webform-print-header-space,.webform-submission-data-preview-page .webform-print-header-space,.webform-print-page-html .webform-print-header-space{background:var(--color-white);font-size:9pt;height:21mm}.webform-submission--view-mode-html .webform-print-footer-space,.webform-submission-data-preview-page .webform-print-footer-space,.webform-print-page-html .webform-print-footer-space{background:var(--color-white);font-size:9pt;height:17mm}.webform-submission--view-mode-html .webform-print-wrapper-table,.webform-submission-data-preview-page .webform-print-wrapper-table,.webform-print-page-html .webform-print-wrapper-table{border:0;margin:0;overflow-x:visible;overflow-x:initial}.webform-submission--view-mode-html .webform-section-flex-wrapper,.webform-submission-data-preview-page .webform-section-flex-wrapper,.webform-print-page-html .webform-section-flex-wrapper{flex-flow:row wrap}.webform-submission--view-mode-html .webform-section-flex-wrapper>h3.webform-section-title,.webform-submission-data-preview-page .webform-section-flex-wrapper>h3.webform-section-title,.webform-print-page-html .webform-section-flex-wrapper>h3.webform-section-title{max-width:100%;width:100%}.webform-submission--view-mode-html .webform-section-grid-wrapper,.webform-submission-data-preview-page .webform-section-grid-wrapper,.webform-print-page-html .webform-section-grid-wrapper{display:flex;flex-flow:row nowrap}.webform-submission--view-mode-html .webform-section-grid-wrapper>h3.webform-section-title,.webform-submission-data-preview-page .webform-section-grid-wrapper>h3.webform-section-title,.webform-print-page-html .webform-section-grid-wrapper>h3.webform-section-title{font-size:1.25rem;margin-top:0;max-width:5cm;width:100%}.webform-submission--view-mode-html .webform-section-grid-wrapper>dl.webform-section-contents,.webform-submission-data-preview-page .webform-section-grid-wrapper>dl.webform-section-contents,.webform-print-page-html .webform-section-grid-wrapper>dl.webform-section-contents{margin-top:0;max-width:100%;padding-left:1cm;width:100%}.webform-submission--view-mode-html .webform-section-grid-wrapper>dl.webform-section-contents dt,.webform-submission-data-preview-page .webform-section-grid-wrapper>dl.webform-section-contents dt,.webform-print-page-html .webform-section-grid-wrapper>dl.webform-section-contents dt{font-weight:bold;margin:0;padding:0;page-break-after:avoid}.webform-submission--view-mode-html .webform-section-grid-wrapper>dl.webform-section-contents dd,.webform-submission-data-preview-page .webform-section-grid-wrapper>dl.webform-section-contents dd,.webform-print-page-html .webform-section-grid-wrapper>dl.webform-section-contents dd{margin:0;padding:0;page-break-before:avoid}.webform-submission--view-mode-html .webform-print-page-body h2,.webform-submission-data-preview-page .webform-print-page-body h2,.webform-print-page-html .webform-print-page-body h2{margin-bottom:1cm}}.webform-submission-data dl dt{font-weight:bold}.webform-submission-data dl dd{margin:0;padding:0}.webform-submission-data dl dl{padding-left:var(--spacing-2-xs)}.webform-submission-data dl>br{display:none}.webform-print-page-html .webform-section-wrapper>h4,.webform-print-page-html .webform-section-wrapper .print-label{margin-top:var(--spacing-2-xs);line-height:1.5}.webform-print-page-html .webform-section-wrapper fieldset{padding:var(--spacing-s)}@media(min-width: 768px){.webform-print-page-html .webform-section-wrapper fieldset{min-width:400px;padding:var(--spacing-s) var(--spacing-m)}}.application-list{padding-bottom:var(--spacing-xl);padding-left:0}.application-list__processed-human-readable{display:none}.application-list__item{background:var(--color-bus-light);display:block;margin:var(--spacing-m) 0;padding:var(--spacing-2-xl) var(--spacing-s) var(--spacing-m);position:relative}.application-list__item .new-message{background-color:var(--color-alert);border-radius:var(--spacing-xl);display:inline-block;padding:var(--spacing-2-xs)}.application-list__item .new-message .hel-icon--size-s{height:20px;width:20px}.application-list__item h3,.application-list__item h4{margin-top:var(--spacing-xs)}.application-list__item h4{font-size:1rem}.application-list__item--submitted{display:none}.application-list__item__link{display:flex;margin-top:var(--spacing-m)}.application-list__item__link a{font-size:1.25rem}.application-list__item__link a i{vertical-align:text-bottom}.application-list__item__row{display:flex;flex-flow:row wrap;gap:var(--spacing-m);justify-content:space-between}.application-list__item__row__left{justify-content:flex-start}.application-list__item__row__top{padding:var(--spacing-2-xs) var(--spacing-s) var(--spacing-2-xs) 0;position:absolute;top:0;width:100%}.application-list__item--status{--status-label-height: 32px;align-items:center;border-radius:20px;display:inline-flex;font-size:var(--fontsize-body-s);line-height:var(--status-label-height);min-height:var(--status-label-height);padding:var(--spacing-3-xs) var(--spacing-s);padding-left:var(--spacing-xs);vertical-align:middle}.application-list__item--status+.hds-loading-spinner{display:inline-block;left:10px;margin:0;padding:0;position:relative;top:var(--spacing-3-xs)}.application-list__item--status.hide-spinner+.hds-loading-spinner{display:none}.application-list__item--status+div+.application-list__item--error{display:none}.application-list__item--status.show-error{background:var(--color-black-20);color:var(--color-black-90)}.application-list__item--status.show-error+div+.application-list__item--error{display:inline-flex;left:var(--spacing-xs);margin:0;padding:0;position:relative;top:var(--spacing-3-xs)}.application-list__item--status.show-error+div+.application-list__item--error .application-list--error-text{display:inline-block;margin-left:var(--spacing-2-xs)}.application-list__item--status--draft{padding-left:0}.application-list__item--status--sent,.application-list__item--status--submitted{background:var(--color-black-10)}.application-list__item--status--sent::before,.application-list__item--status--submitted::before{--icon-size: 1.5rem;background-color:#000;background-size:contain;content:"";display:inline-block;height:calc(var(--line-height) * 1em);height:var(--icon-size, calc(var(--line-height) * 1em));-webkit-mask-image:var(--hel-icon--alert-circle);mask-image:var(--hel-icon--alert-circle);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:calc(var(--line-height) * 1em) calc(var(--line-height) * 1em);mask-size:calc(var(--line-height) * 1em) calc(var(--line-height) * 1em);-webkit-mask-size:var(--icon-size, calc(var(--line-height) * 1em)) var(--icon-size, calc(var(--line-height) * 1em));mask-size:var(--icon-size, calc(var(--line-height) * 1em)) var(--icon-size, calc(var(--line-height) * 1em));vertical-align:bottom;width:calc(var(--line-height) * 1em);width:var(--icon-size, calc(var(--line-height) * 1em));background-color:var(--color-black);content:"";margin-right:var(--spacing-2-xs)}.application-list__item--status--received,.application-list__item--status--pending,.application-list__item--status--processing,.application-list__item--status--preparing{background:var(--color-info);color:var(--color-white)}.application-list__item--status--received::before,.application-list__item--status--pending::before,.application-list__item--status--processing::before,.application-list__item--status--preparing::before{--icon-size: 1.5rem;background-color:#000;background-size:contain;content:"";display:inline-block;height:calc(var(--line-height) * 1em);height:var(--icon-size, calc(var(--line-height) * 1em));-webkit-mask-image:var(--hel-icon--info-circle);mask-image:var(--hel-icon--info-circle);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:calc(var(--line-height) * 1em) calc(var(--line-height) * 1em);mask-size:calc(var(--line-height) * 1em) calc(var(--line-height) * 1em);-webkit-mask-size:var(--icon-size, calc(var(--line-height) * 1em)) var(--icon-size, calc(var(--line-height) * 1em));mask-size:var(--icon-size, calc(var(--line-height) * 1em)) var(--icon-size, calc(var(--line-height) * 1em));vertical-align:bottom;width:calc(var(--line-height) * 1em);width:var(--icon-size, calc(var(--line-height) * 1em));background-color:var(--color-white);content:"";margin-right:var(--spacing-2-xs)}.application-list__item--status--done,.application-list__item--status--ready,.application-list__item--status--resolved{background:var(--color-success);color:var(--color-white)}.application-list__item--status--done::before,.application-list__item--status--ready::before,.application-list__item--status--resolved::before{--icon-size: 1.5rem;background-color:#000;background-size:contain;content:"";display:inline-block;height:calc(var(--line-height) * 1em);height:var(--icon-size, calc(var(--line-height) * 1em));-webkit-mask-image:var(--hel-icon--check-circle);mask-image:var(--hel-icon--check-circle);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:calc(var(--line-height) * 1em) calc(var(--line-height) * 1em);mask-size:calc(var(--line-height) * 1em) calc(var(--line-height) * 1em);-webkit-mask-size:var(--icon-size, calc(var(--line-height) * 1em)) var(--icon-size, calc(var(--line-height) * 1em));mask-size:var(--icon-size, calc(var(--line-height) * 1em)) var(--icon-size, calc(var(--line-height) * 1em));vertical-align:bottom;width:calc(var(--line-height) * 1em);width:var(--icon-size, calc(var(--line-height) * 1em));background-color:var(--color-white);content:"";margin-right:var(--spacing-2-xs)}.application-list__item--status--rejected,.application-list__item--status--deleted,.application-list__item--status--canceled,.application-list__item--status--cancelled{background:var(--color-alert)}.application-list__item--status--rejected::before,.application-list__item--status--deleted::before,.application-list__item--status--canceled::before,.application-list__item--status--cancelled::before{--icon-size: 1.5rem;background-color:#000;background-size:contain;content:"";display:inline-block;height:calc(var(--line-height) * 1em);height:var(--icon-size, calc(var(--line-height) * 1em));-webkit-mask-image:var(--hel-icon--alert-circle);mask-image:var(--hel-icon--alert-circle);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:calc(var(--line-height) * 1em) calc(var(--line-height) * 1em);mask-size:calc(var(--line-height) * 1em) calc(var(--line-height) * 1em);-webkit-mask-size:var(--icon-size, calc(var(--line-height) * 1em)) var(--icon-size, calc(var(--line-height) * 1em));mask-size:var(--icon-size, calc(var(--line-height) * 1em)) var(--icon-size, calc(var(--line-height) * 1em));vertical-align:bottom;width:calc(var(--line-height) * 1em);width:var(--icon-size, calc(var(--line-height) * 1em));background-color:var(--color-black);content:"";margin-right:var(--spacing-2-xs)}.application-list__item--status--error{background:var(--color-black-20);color:var(--color-black);text-transform:uppercase}.application-list__item--status--error .hel-icon{margin-right:var(--spacing-3-xs)}.application-list__count{font-size:1.5rem}.application-list__count-value{font-weight:bold}.application-list__information-row{align-items:flex-end;display:flex;flex-flow:row nowrap;justify-content:space-between;width:100%}@media(max-width: 35rem){.application-list__information-row{flex-flow:row wrap}}.application-list__information-row .grant-applications--select-wrapper select{max-width:100%;width:322px}.application-list__status__wrapper{background:var(--color-black-5)}.application-list__status__container{display:flex;flex-flow:row wrap;gap:var(--spacing-layout-m);justify-content:flex-start;padding-bottom:var(--spacing-m);padding-top:var(--spacing-m)}.application-list__status__label{font-weight:bold}.application-list__status__value{display:flex;flex-flow:row;justify-items:center;min-height:var(--spacing-xl)}.application-list__status__value>div{margin:auto}.application-list__search-row{align-items:flex-end;display:flex;flex-flow:row nowrap;gap:var(--spacing-s);justify-content:space-between;width:100%}@media(max-width: 35rem){.application-list__search-row{flex-flow:row wrap}}.application-list__search-row .hds-text-input{flex:1 100%;max-width:100%}.application-list__search-row .hds-text-input__input-wrapper{display:block}.application-list__search-row .hds-text-input__input-wrapper input{width:100%}.application-list__search-row button{white-space:nowrap}.application-list__pagination{--line-height: 1.5555555556;font-size:1.125rem;font-weight:400;line-height:var(--line-height);display:inline-flex;flex-wrap:wrap;font-weight:700;gap:var(--spacing-2-xs);justify-content:center;list-style:none;padding:0}.application-list__pagination li{margin-top:0}.application-list__pagination li.active a{text-decoration:underline}.application-list__pagination li.disabled a{cursor:default;text-decoration:none}.application-list__pagination li.disabled a:hover,.application-list__pagination li.disabled a:focus,.application-list__pagination li.disabled a:active{outline:none;text-decoration:none}.application-list__pagination li a{color:var(--color-black-90);display:block;height:var(--link-height);min-width:40px;padding-left:var(--spacing-3-xs);padding-right:var(--spacing-3-xs);text-decoration:none}.application-list__pagination li a:hover{text-decoration:underline}.application-list__pagination li a:focus,.application-list__pagination li a:active{outline:solid var(--color-coat-of-arms) 3px;outline-offset:1px}.grants-profile hr{border:1px solid var(--color-silver);margin:var(--spacing-layout-xs) 0}.grants-profile h3.info-grants{border-bottom:2px solid var(--color-silver);padding-bottom:var(--spacing-l)}.grants-profile--title{align-items:center;display:flex;flex-flow:row nowrap}.grants-profile--title .grants-profile--initials{border-radius:50%;display:none;font-size:var(--fontsize-body-xl);font-weight:bold;height:var(--spacing-4-xl);line-height:var(--spacing-4-xl);margin-right:var(--spacing-m);text-align:center;vertical-align:middle;width:var(--spacing-4-xl)}@media(min-width: 992px){.grants-profile--title .grants-profile--initials{display:block}}.grants-profile--title .grants-profile--initials:hover,.grants-profile--title .grants-profile--initials:active,.grants-profile--title .grants-profile--initials:focus{text-decoration:underline}.grants-profile--title .grants-profile--initials-colorscheme-2{background-color:var(--color-bus);color:var(--color-white)}.grants-profile--title .grants-profile--initials-colorscheme-1{background-color:var(--color-engel);color:var(--color-black)}.grants-profile--title .grants-profile--initials-colorscheme-0{background-color:var(--color-tram);color:var(--color-white)}.grants-profile--title h1{flex-grow:100}.grants-profile--basicinfo{--line-height: 1.5;background-color:var(--color-silver-light);border-bottom:8px solid var(--color-engel-dark);padding-bottom:var(--spacing-2-xs);padding-top:var(--spacing-l)}.grants-profile--basicinfo h3{font-size:var(--fontsize-heading-l);margin-top:0;padding-top:0}.grants-profile--extrainfo{padding-bottom:var(--spacing-l);padding-top:var(--spacing-l)}.grants-profile--extrainfo .hds-notification{margin-bottom:var(--spacing-xl)}.grants-profile--extrainfo fieldset.form-wrapper{background-color:var(--color-silver-light);border:0;padding:var(--spacing-l)}.grants-profile--extrainfo fieldset.inline-error-message{background-color:transparent;background-color:initial;padding:0 0 0 var(--spacing-2-xs)}.grants-profile--extrainfo fieldset.inline-error-message legend{display:none}.grants-profile--update-link{margin-bottom:var(--spacing-layout-2-xs);margin-top:var(--spacing-layout-xs)}.grants-profile--infotext{font-size:var(--fontsize-body-l);margin-bottom:var(--spacing-s)}.grants-profile--wrapper{display:flex;flex-wrap:wrap}.grants-profile--wrapper-item{margin-bottom:var(--spacing-layout-2-xs);width:100%}@media(min-width: 576px){.grants-profile--wrapper-item{flex:1;margin-bottom:0}}.grants-profile--wrapper-item:first-child{flex:auto;margin-bottom:var(--spacing-layout-2-xs);width:100%}.grants-profile .profile-add-more{margin-top:1em}[dir="ltr"] .grants-profile dd{margin-left:0}[dir="rtl"] .grants-profile dd{margin-right:0}.grants-profile--officials{margin-left:0;padding-left:0}.grants-profile--officials-item{border-left:4px var(--color-copper) solid;display:flex;flex-flow:row nowrap;justify-content:space-between;list-style:none;margin-bottom:var(--spacing-layout-s);margin-left:0;max-width:var(--webform-element-width--input-large);padding-left:var(--spacing-layout-xs);width:100%}.grants-profile--officials-item--position{font-size:var(--fontsize-heading-xs);font-weight:bold;margin-bottom:var(--spacing-layout-2-xs);margin-top:0;padding-top:0}.grants-profile--officials-edit-wrapper{text-align:right}.grants-profile--officials-edit-wrapper a{display:inline-block}.grants-profile .hel-icon--check-circle-fill{color:var(--color-success);vertical-align:middle}.grants-profile-grants-profile .tabledrag-toggle-weight-wrapper,.grants-profile-grants-profile .field-multiple-drag{display:none}.grants-profile .hds-text-input__label{display:inline-block;margin-top:0}.page--oma-asiointi__private-person .grants-profile--basicinfo{border-bottom:8px solid var(--color-copper)}.page--oma-asiointi__private-person .grants-profile--wrapper{display:grid;grid-template-columns:1fr 1fr}.page--oma-asiointi__unregistered-community .grants-profile--wrapper{display:grid;grid-template-columns:1fr 1fr}.hds-link .hel-icon{margin-right:var(--spacing-2-xs);vertical-align:bottom}.hds-link span.link-label{font-weight:bold;margin-right:var(--spacing-m)}.bold-link{font-weight:bold}div.applicant-info--from-prh,div.applicant-info--from-grants{display:grid;grid-template-columns:1fr}@media(min-width: 576px){div.applicant-info--from-prh,div.applicant-info--from-grants{grid-template-columns:1fr 1fr}}@media(min-width: 768px){div.applicant-info--from-prh,div.applicant-info--from-grants{grid-template-columns:1fr 1fr 1fr}}div.applicant-info--from-prh .form-required::after,div.applicant-info--from-grants .form-required::after{content:none}div.applicant-info--from-prh{border-bottom:2px solid var(--color-silver);margin-bottom:var(--spacing-layout-xs);padding-bottom:var(--spacing-layout-2-xs)}div.grants-handler--prefilled-field .field-prefix,.grants-profile-prh-info .field-prefix{display:block;position:absolute;right:var(--spacing-layout-s);top:0}div.grants-handler--prefilled-field .hds-text-input__input-wrapper,div.grants-handler--prefilled-field .description,.grants-profile-prh-info .hds-text-input__input-wrapper,.grants-profile-prh-info .description{display:inline-block;white-space:normal}div.grants-handler--prefilled-field .hel-icon--check-circle-fill,.grants-profile-prh-info .hel-icon--check-circle-fill{color:var(--color-success);vertical-align:middle}div.grants-handler--prefilled-field .hds-text-input__input,div.grants-handler--prefilled-field .webform-element-description,.grants-profile-prh-info .hds-text-input__input,.grants-profile-prh-info .webform-element-description{color:var(--color-black);display:block;font-size:var(--fontsize-body-m);line-height:var(--spacing-m);position:relative}div.grants-handler--prefilled-field .hds-text-input__label,.grants-profile-prh-info .hds-text-input__label{margin-bottom:0}.grants-profile--imported-section .webform-section-flex-wrapper{background-color:var(--color-silver-light);border-bottom:8px solid var(--color-engel-dark);display:block;padding-bottom:var(--spacing-2-xs);padding-left:var(--spacing-l);padding-right:var(--spacing-l);padding-top:var(--spacing-l);width:100%}.grants-profile--imported-section .webform-section-flex-wrapper h3.webform-section-title{font-size:var(--fontsize-heading-l);font-weight:400;margin-top:0;max-width:100%;padding-top:0;width:100%}.grants-profile--imported-section .webform-section-flex-wrapper .webform-section-wrapper{padding:0}.grants-profile--imported-section .webform-section-flex-wrapper .hds-text-input{margin-bottom:0}.grants-profile--imported-section .webform-section-flex-wrapper #edit-grants-profile-items-container{display:flex;flex-flow:row wrap;justify-content:space-between;margin-bottom:var(--spacing-layout-xs);margin-top:var(--spacing-layout-xs);width:100%}.grants-profile--imported-section .webform-section-flex-wrapper #edit-grants-profile-items-container>div{margin:0 var(--spacing-layout-xs) 0 0;min-width:160px}.grants-profile--imported-section .webform-section-flex-wrapper #edit-grants-profile-items-container .hds-text-input__input-wrapper{display:none}.grants-profile--imported-section .webform-section-flex-wrapper #edit-grants-profile-items-container label{font-size:var(--fontsize-body-m);font-weight:bold;margin:0}.grants-profile--imported-section .webform-section-flex-wrapper .form-item-prh-markup{border-bottom:2px solid var(--color-silver);padding-bottom:var(--spacing-layout-xs);padding-top:var(--spacing-layout-xs)}.grants-profile__local-tasks__wrapper{margin-bottom:0}.openid-connect-login-form.openid-connect-login-form{border-bottom:0;margin-bottom:0;padding-bottom:0}.grants-profile--links{display:flex;justify-content:space-between}.company-delete-confirm-form .form-actions{margin-top:var(--spacing-layout-xs)}.company-delete-confirm-form .form-submit{margin-right:var(--spacing-2-xs)}.page--oma-asiointi .main-content{margin-top:0}.page--oma-asiointi .main-content h2{margin-top:var(--spacing-m)}.hero--oma-asiointi{margin-bottom:var(--spacing-l)}.hero--oma-asiointi .container{padding-top:var(--spacing-layout-m)}.hero--oma-asiointi .hero__text-content{align-items:center;display:flex}.hero--oma-asiointi .hero__title{margin-left:0}@media(min-width: 576px){.hero--oma-asiointi .hero__title{margin-left:40px}}.hero--oma-asiointi .hel-icon{display:none}@media(min-width: 576px){.hero--oma-asiointi .hel-icon{--icon-size: 48px;display:block;flex-shrink:0}}#oma-asiointi__sent{background:var(--color-silver-light)}#oma-asiointi__sent .application-list__item{background:var(--color-white)}.oma-asiointi-block{background-color:var(--color-silver-light);padding-bottom:var(--spacing-l);padding-top:var(--spacing-l)}.oma-asiointi-block h2{margin-bottom:var(--spacing-s);margin-top:0}.oma-asiointi-block h3{font-size:var(--fontsize-heading-m);font-weight:500}.oma-asiointi-block .header{border-bottom:1px solid var(--color-silver-dark);display:flex;justify-content:space-between;padding-bottom:var(--spacing-xs)}.oma-asiointi-block .header .user,.oma-asiointi-block .header .link{font-weight:700}.oma-asiointi-block .header .link .hel-icon{vertical-align:text-top}.oma-asiointi-block--link{display:block;position:relative;text-decoration:none}.oma-asiointi-block--link::after{--icon-size: 1.5rem;background-color:#000;background-size:contain;content:"";display:inline-block;height:calc(var(--line-height) * 1em);height:var(--icon-size, calc(var(--line-height) * 1em));-webkit-mask-image:var(--hel-icon--arrow-right);mask-image:var(--hel-icon--arrow-right);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:calc(var(--line-height) * 1em) calc(var(--line-height) * 1em);mask-size:calc(var(--line-height) * 1em) calc(var(--line-height) * 1em);-webkit-mask-size:var(--icon-size, calc(var(--line-height) * 1em)) var(--icon-size, calc(var(--line-height) * 1em));mask-size:var(--icon-size, calc(var(--line-height) * 1em)) var(--icon-size, calc(var(--line-height) * 1em));vertical-align:bottom;width:calc(var(--line-height) * 1em);width:var(--icon-size, calc(var(--line-height) * 1em));transition:transform .2s linear;bottom:var(--spacing-m);content:"";display:block;flex-shrink:0;margin-left:-4px;margin-top:var(--spacing-2-xs);position:absolute;right:var(--spacing-m)}@media(prefers-reduced-motion){.oma-asiointi-block--link::after{transition:none}}@media(min-width: 576px){.oma-asiointi-block--link::after{--icon-size: 3rem;margin-left:-8px;margin-top:var(--spacing-s)}}.oma-asiointi-block--link:focus::after,.oma-asiointi-block--link:hover::after{transform:translateX(var(--spacing-2-xs))}@media(prefers-reduced-motion){.oma-asiointi-block--link:focus::after,.oma-asiointi-block--link:hover::after{transform:none}}.oma-asiointi-block .new-message{background-color:var(--color-alert);display:inline-block;font-weight:500;padding:var(--spacing-2-xs);text-transform:uppercase}.oma-asiointi-block .new-messages-length{background-color:var(--color-black-20);border-radius:50%;display:inline-block;font-size:var(--fontsize-heading-s);height:30px;line-height:30px;margin-left:var(--spacing-m);position:relative;text-align:center;width:30px}.oma-asiointi-block .new-messages-length.has-new-messages{background-color:var(--color-alert)}@media(min-width: 768px){.oma-asiointi-block .content{display:grid;grid-gap:var(--spacing-s);grid-template-columns:1fr 1fr}}.oma-asiointi-block .submission,.oma-asiointi-block .message{background-color:var(--color-white);margin-bottom:var(--spacing-s);margin-top:var(--spacing-s);padding:var(--spacing-m)}.oma-asiointi-block .submission .submission-title,.oma-asiointi-block .submission .message-title,.oma-asiointi-block .message .submission-title,.oma-asiointi-block .message .message-title{font-size:var(--fontsize-heading-s);font-weight:500;margin-bottom:var(--spacing-2-xs);margin-top:0;text-decoration:underline}.oma-asiointi-block .submission .message-title,.oma-asiointi-block .message .message-title{margin-top:var(--spacing-s)}.oma-asiointi-block .submission:hover .submission-title,.oma-asiointi-block .submission:hover .message-title,.oma-asiointi-block .message:hover .submission-title,.oma-asiointi-block .message:hover .message-title{text-decoration:none}.oma-asiointi-block .message{padding-right:var(--spacing-5-xl)}.oma-asiointi{margin-top:var(--spacing-l)}.oma-asiointi ul{padding:0}.oma-asiointi__list{padding-bottom:var(--spacing-l);padding-top:var(--spacing-l)}.oma-asiointi__list h2{margin-bottom:var(--spacing-m);margin-top:0}.oma-asiointi #oma-asiointi__sent{padding-top:var(--spacing-s)}.oma-asiointi .oma-asiointi-infoboxes-container .oma-asiointi-infoboxes{gap:var(--spacing-3-xl);margin:var(--spacing-2-xl) 0}@media(min-width: 768px){.oma-asiointi .oma-asiointi-infoboxes-container .oma-asiointi-infoboxes{display:flex}}.oma-asiointi .oma-asiointi-infoboxes-container .oma-asiointi-infobox{background-color:var(--color-info-light);flex:1;margin-bottom:var(--spacing-layout-2-xs);padding:var(--spacing-l)}@media(min-width: 768px){.oma-asiointi .oma-asiointi-infoboxes-container .oma-asiointi-infobox{margin-bottom:0}}.oma-asiointi .oma-asiointi-infoboxes-container .oma-asiointi-infobox:last-of-type{margin-bottom:0}.oma-asiointi .oma-asiointi-infoboxes-container .oma-asiointi-infobox--link{display:flex;margin-top:var(--spacing-layout-2-xs)}.oma-asiointi .oma-asiointi-infoboxes-container .oma-asiointi-infobox--link a{font-size:1.25rem}.oma-asiointi .oma-asiointi-infoboxes-container .oma-asiointi-infobox h3{margin-top:0}.asiointirooli-block{background-color:var(--color-black);color:var(--color-white);font-weight:500;margin-bottom:16px;padding:var(--spacing-2-xs)}.asiointirooli-block a{color:var(--color-white)}.asiointirooli-block .link--switch-role,.asiointirooli-block .link--stop-mandate{color:var(--color-white);margin-left:var(--spacing-layout-s)}@media(max-width: 768px){.asiointirooli-block .link--switch-role,.asiointirooli-block .link--stop-mandate{display:block;margin-left:0}}.asiointirooli-block .link--stop-mandate::before{--icon-size: 1.5rem;background-color:#000;background-size:contain;content:"";display:inline-block;height:calc(var(--line-height) * 1em);height:var(--icon-size, calc(var(--line-height) * 1em));-webkit-mask-image:var(--hel-icon--cross-circle-fill);mask-image:var(--hel-icon--cross-circle-fill);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:calc(var(--line-height) * 1em) calc(var(--line-height) * 1em);mask-size:calc(var(--line-height) * 1em) calc(var(--line-height) * 1em);-webkit-mask-size:var(--icon-size, calc(var(--line-height) * 1em)) var(--icon-size, calc(var(--line-height) * 1em));mask-size:var(--icon-size, calc(var(--line-height) * 1em)) var(--icon-size, calc(var(--line-height) * 1em));vertical-align:bottom;width:calc(var(--line-height) * 1em);width:var(--icon-size, calc(var(--line-height) * 1em));background-color:var(--color-white);content:"";display:inline-block;margin-right:10px;-webkit-mask-image:url('data:image/svg+xml, ');mask-image:url('data:image/svg+xml, ')}.asiointirooli-block .link--switch-role::before{--icon-size: 1.5rem;background-color:#000;background-size:contain;content:"";display:inline-block;height:calc(var(--line-height) * 1em);height:var(--icon-size, calc(var(--line-height) * 1em));-webkit-mask-image:var(--hel-icon--swap-user);mask-image:var(--hel-icon--swap-user);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:calc(var(--line-height) * 1em) calc(var(--line-height) * 1em);mask-size:calc(var(--line-height) * 1em) calc(var(--line-height) * 1em);-webkit-mask-size:var(--icon-size, calc(var(--line-height) * 1em)) var(--icon-size, calc(var(--line-height) * 1em));mask-size:var(--icon-size, calc(var(--line-height) * 1em)) var(--icon-size, calc(var(--line-height) * 1em));vertical-align:bottom;width:calc(var(--line-height) * 1em);width:var(--icon-size, calc(var(--line-height) * 1em));background-color:var(--color-white);content:"";display:inline-block;margin-right:10px;-webkit-mask-image:url('data:image/svg+xml, ');mask-image:url('data:image/svg+xml, ')}#grants-mandate-type .form-actions{display:flex;flex-direction:column;flex-wrap:wrap;justify-content:flex-start;width:100%}@media(min-width: 576px){#grants-mandate-type .form-actions{flex-direction:row;margin-left:calc(-1*var(--spacing-m));width:calc(100% + var(--spacing-m))}}#grants-mandate-type .form-actions .hds-card--applicant-role{margin-bottom:var(--spacing-l);position:relative;width:100%}@media(min-width: 576px){#grants-mandate-type .form-actions .hds-card--applicant-role{margin-left:var(--spacing-m);width:calc(50% - var(--spacing-m))}}@media(min-width: 992px){#grants-mandate-type .form-actions .hds-card--applicant-role{width:calc(33.3333333333% - var(--spacing-m))}}#grants-mandate-type .form-actions .hds-card--applicant-role .hds-card__body{align-content:space-between;height:100%}#grants-mandate-type .form-actions .hds-card--applicant-role .hds-card--mandate-card-content{display:grid;gap:var(--spacing-m);grid-gap:var(--spacing-m)} +body{--webform-element-width--input-small: 184px;--webform-element-width--input-medium: 332px;--webform-element-width--input-large: 591px;--webform-element-width--fieldset: 714px}.hel-icon--size-xs,.hds-icon--size-xs{height:16px;width:16px}.hel-icon--size-s,.hds-icon--size-s{height:24px;width:24px}.hel-icon--size-m,.hds-icon--size-m{height:32px;width:32px}.hel-icon--size-l,.hds-icon--size-l{height:48px;width:48px}.hel-icon--size-xl,.hds-icon--size-xl{height:64px;width:64px}.hel-icon.hel-icon--pen-line{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,");mask-image:url("data:image/svg+xml;charset=utf-8,")}.hel-icon.hds-icon--company{background:var(--color-black);-webkit-mask-image:url("data:image/svg+xml;charset=utf-8, ");mask-image:url("data:image/svg+xml;charset=utf-8, ")}.hds-button--secondary:not(.eu-cookie-compliance-default-button):not(.eu-cookie-compliance-save-preferences-button){--background-color: transparent;--background-color-hover: var(--color-black-80);--background-color-focus: transparent;--background-color-hover-focus: var(--color-black-80);--background-color-disabled: transparent;--color: var(--color-black);--color-hover: var(--color-white);--color-focus: var(--color-black);--color-hover-focus: var(--color-black);--color-disabled: var(--color-black-40)}.hds-button--secondary:not(:disabled):not(.eu-cookie-compliance-default-button):not(.eu-cookie-compliance-save-preferences-button),.hds-button--primary:not(:disabled){border-color:transparent;border-color:var(--color-black, transparent)}.hds-button.hds-button--supplementary .hds-button__label{margin:0;padding:0 var(--spacing-2-xs)}.hds-button.hds-button--supplementary::after,.hds-button.hds-button--supplementary::before{display:none !important}.hds-button--supplementary:not(:disabled){--background-color-hover: rgba(0, 0, 0, 0.1);background:rgba(0,0,0,0);border-color:rgba(0,0,0,0)}.hds-button--supplementary:not(:disabled):hover{background-color:var(--background-color-hover)}.hds-button--alert{--background-color: rgb(255, 0, 0)}a.hds-button.webform-button--delete-draft:not(:disabled){text-decoration:none}a.hds-button.webform-button--delete-draft:not(:disabled) .hds-button__label_wrapper{display:inline}a.hds-button.webform-button--delete-draft:not(:disabled) .hds-button__label{text-decoration:underline}a.hds-button.webform-button--delete-draft:not(:disabled):hover .hds-button__label{text-decoration:none}.openid-connect-login-form input[type=submit].hds-button{width:220px}.hds-button__label_wrapper{align-items:center;display:flex}.hds-button__label_wrapper:not(.hds-button)>.hds-button__label{margin:0 var(--spacing-2-xs)}.hds-link{--link-visited-color: var(--color-black);--link-color: var(--color-black)}.hds-card{--background-color: var(--color-white);--border-color: var(--color-black-90);--color: var(--color-black-90);--border-width: 2px;--padding-horizontal: var(--spacing-l);--padding-vertical: var(--spacing-m);background-color:var(--background-color);color:var(--color);padding:var(--padding-vertical) var(--padding-horizontal)}.hds-card--border{border:var(--border-width) solid var(--border-color)}.hds-card__body{display:grid;grid-gap:var(--spacing-m);gap:var(--spacing-m);margin-bottom:var(--spacing-l)}.hds-card__body:last-child{margin-bottom:0}.hds-card__heading{font-size:var(--fontsize-heading-m);font-weight:bold;line-height:var(--lineheight-m)}.hds-card__text{font-size:var(--fontsize-body-m);line-height:var(--lineheight-l)}.hds-card--applicant-role{margin-bottom:var(--spacing-l);margin-right:0;max-width:400px;width:100%}.hds-card__heading-m{font-size:var(--fontsize-heading-m);font-weight:500;letter-spacing:-0.2px;line-height:32px;margin-top:0}.grants-profile--menuitem--login,.grants-profile--menuitem--logout{align-items:center;display:flex;flex-flow:column;font-size:var(--fontsize-body-s);height:var(--spacing-xl);margin-left:var(--spacing-2-xs);margin-right:var(--spacing-2-xs);position:relative;text-align:center;width:var(--spacing-xl)}.grants-profile--menuitem--login .hel-icon,.grants-profile--menuitem--logout .hel-icon{display:block;margin:auto}.grants-profile--menuitem--login-triggertext,.grants-profile--menuitem--logout-triggertext{clip:rect(1px, 1px, 1px, 1px);clip-path:inset(50%);display:block;max-height:1px;max-width:1px;opacity:0;overflow:hidden;position:absolute;white-space:nowrap}.block--grants-profile--menuitem{align-items:center;display:flex;grid-area:brand;z-index:2}.block--branding{flex-grow:10}.grants-frontpage-info-block{margin-bottom:var(--spacing-layout-xl)}.grants-profile--menuitem{height:var(--spacing-m);margin-left:var(--spacing-2-xs);margin-right:var(--spacing-2-xs);position:relative;width:var(--spacing-m)}@media(min-width: 768px){.grants-profile--menuitem{height:var(--spacing-2-xl);width:var(--spacing-2-xl)}}.grants-profile--menuitem a{text-decoration:none}.grants-profile--menuitem--notifications{background-color:var(--color-error);border:2px var(--color-white) solid;border-radius:50%;color:var(--color-white);font-size:var(--fontsize-body-s);font-weight:bold;height:var(--spacing-xs) 1.25;line-height:var(--spacing-layout-2-xs);position:absolute;right:-5px;text-align:center;top:-5px;width:var(--spacing-xs) 1.25;z-index:2}.grants-profile--menuitem--initials{border-radius:50%;font-weight:bold;height:var(--spacing-m);line-height:var(--spacing-m);text-align:center;vertical-align:middle;width:var(--spacing-m)}@media(min-width: 768px){.grants-profile--menuitem--initials{height:var(--spacing-2-xl);line-height:var(--spacing-2-xl);width:var(--spacing-2-xl)}}.grants-profile--menuitem--initials:hover,.grants-profile--menuitem--initials:active,.grants-profile--menuitem--initials:focus{text-decoration:underline}.grants-profile--menuitem--initials-colorscheme-2{background-color:var(--color-bus);color:var(--color-white)}.grants-profile--menuitem--initials-colorscheme-1{background-color:var(--color-engel);color:var(--color-black)}.grants-profile--menuitem--initials-colorscheme-0{background-color:var(--color-tram);color:var(--color-white)}.sidebar-important-links{margin-top:var(--spacing-2-xl)}.sidebar-important-links .sidebar-text .sidebar-text__text-content>p{padding:var(--spacing-s) var(--spacing-m)}.block--service-page-banner{background-color:var(--color-engel);margin-top:var(--spacing-layout-s);padding:var(--spacing-layout-s)}.block--service-page-banner h2{margin-top:0}.block--service-page-banner .hds-icon{margin-bottom:var(--spacing-layout-s)}.hds-button.service-page-sidebar-link{background-color:var(--hdbt-color-palette--secondary);padding:var(--spacing-xs)}.hds-button.service-page-sidebar-link:hover{color:var(--color-black)}.terms_block{padding-bottom:var(--spacing-4-xl)}#block-servicepageauthblock h2,#block-servicepageanonblock h2{--line-height: 1.3;font-size:1.25rem;font-weight:500;line-height:var(--line-height)}@media(min-width: 992px){#block-servicepageauthblock h2,#block-servicepageanonblock h2{--line-height: 1.1666666667;font-size:1.5rem;font-weight:500}}#block-servicepageauthblock .hds-button,#block-servicepageanonblock .hds-button{margin-top:var(--spacing-m)}.grants-service-page-block{background-color:var(--color-alert-light);margin-top:var(--spacing-m);padding:var(--spacing-m)}.grants-service-page-block h3{font-size:var(--fontsize-heading-s);margin-top:0}.grants-service-page-block .hel-icon{vertical-align:text-bottom}.grants-service-page-block--auth{background-color:var(--color-info-light)}.hel-icon.hel-icon--swap-user{-webkit-mask-image:url('data:image/svg+xml, ');mask-image:url('data:image/svg+xml, ')}.nav-toggle-dropdown--profile .profile__information{background-color:var(--color-silver-light)}.nav-toggle-dropdown--profile .profile__full-name{font-weight:bold}.nav-toggle-dropdown--profile .grants-profile--menuitem--mandate,.nav-toggle-dropdown--profile .grants-profile--menuitem--switch-role{--line-height: 1.5555555556;font-size:1.125rem;font-weight:400;line-height:var(--line-height);border-top:1px solid #ccc;border-bottom:1px solid #ccc;display:block;font-weight:normal;padding:16px;text-decoration:none;width:100%}@media(min-width: 992px){.nav-toggle-dropdown--profile .grants-profile--menuitem--mandate,.nav-toggle-dropdown--profile .grants-profile--menuitem--switch-role{border-bottom:none}}.nav-toggle-dropdown--profile .grants-profile--menuitem--mandate:hover,.nav-toggle-dropdown--profile .grants-profile--menuitem--switch-role:hover{text-decoration:underline}.nav-toggle-dropdown--profile .grants-profile--menuitem--mandate:focus,.nav-toggle-dropdown--profile .grants-profile--menuitem--switch-role:focus{outline:3px solid #000;outline-offset:-3px}.application-timeout-message{display:none;padding-left:16px;padding-left:var(--spacing-s, 16px);position:fixed;right:0;top:50%;z-index:100}.application-timeout-message.slide-in{animation:slide-in-right .5s forwards ease;display:block}.application-timeout-message .close-application-timeout-message{cursor:pointer;font-size:1.25rem;position:absolute;right:1.25rem}@keyframes slide-in-right{from{right:-500px}to{right:1.25rem}}.view_application_search_search_api .main-content{margin-top:0}.view_application_search_search_api .search-result-amount--wrapper{align-items:center;display:flex}.view_application_search_search_api .search-result-amount--wrapper p{margin-top:0}.view_application_search_search_api select.search-result-amount{border:1px solid var(--color-black-50);margin-left:var(--spacing-l);margin-right:var(--spacing-2-xs)}.view_application_search_search_api .search-filter-button{background-color:var(--color-black);border-radius:180px;border:0;color:var(--color-white);display:inline-block;margin:0 var(--spacing-2-xs) var(--spacing-2-xs) 0;padding:var(--spacing-2-xs) var(--spacing-xs)}.view_application_search_search_api .search-filter-button:focus{--focus-outline-color: #000000;box-shadow:none;outline:3px solid var(--focus-outline-color);outline:var(--outline-width, 3px) solid var(--focus-outline-color);outline-offset:2px;outline-offset:var(--outline-gutter, 2px)}.view_application_search_search_api .search-filter-button span{vertical-align:middle}.view_application_search_search_api .search-filter-button span.hel-icon:hover{cursor:pointer}.view-application-search-search-api .main-content{margin-top:var(--spacing-layout-s)}.view-application-search-search-api .main-content .view-header{align-items:center;display:flex;margin-bottom:var(--spacing-layout-s)}.application_search--link{display:block;height:100%;padding-bottom:var(--spacing-m);position:relative;text-decoration:none}.application_search--link::after{--icon-size: 1.5rem;background-color:#000;background-size:contain;content:"";display:inline-block;height:calc(var(--line-height) * 1em);height:var(--icon-size, calc(var(--line-height) * 1em));-webkit-mask-image:var(--hel-icon--arrow-right);mask-image:var(--hel-icon--arrow-right);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:calc(var(--line-height) * 1em) calc(var(--line-height) * 1em);mask-size:calc(var(--line-height) * 1em) calc(var(--line-height) * 1em);-webkit-mask-size:var(--icon-size, calc(var(--line-height) * 1em)) var(--icon-size, calc(var(--line-height) * 1em));mask-size:var(--icon-size, calc(var(--line-height) * 1em)) var(--icon-size, calc(var(--line-height) * 1em));vertical-align:bottom;width:calc(var(--line-height) * 1em);width:var(--icon-size, calc(var(--line-height) * 1em));transition:transform .2s linear;bottom:var(--spacing-s);content:"";display:block;flex-shrink:0;left:var(--spacing-m);margin-left:-4px;margin-top:8px;position:absolute}@media(prefers-reduced-motion){.application_search--link::after{transition:none}}@media(min-width: 576px){.application_search--link::after{--icon-size: 3rem;margin-left:-8px;margin-top:16px}}.application_search--link:focus h3,.application_search--link:hover h3{text-decoration:none}.application_search--link:focus::after,.application_search--link:hover::after{transform:translateX(8px)}@media(prefers-reduced-motion){.application_search--link:focus::after,.application_search--link:hover::after{transform:none}}.application_search--filter-wrapper{background:var(--color-black-5)}.application_search--filter-wrapper h2{font-size:var(--fontsize-heading-m);margin-bottom:var(--spacing-layout-s);margin-top:var(--spacing-layout-s)}.application_search--filter-wrapper form{align-items:center;border-bottom:2px solid var(--color-black-20);display:flex;flex-flow:row wrap;gap:var(--spacing-s);justify-content:space-between;margin-bottom:var(--spacing-layout-s);padding-bottom:var(--spacing-layout-s)}.application_search--filter-wrapper form .form-item{margin-bottom:0;min-width:-moz-fit-content;min-width:fit-content;width:calc((100% - var(--spacing-s) - var(--spacing-s))/3)}.application_search--filter-wrapper form .form-item label{color:var(--label-color-default);font-size:var(--fontsize-body-m);font-weight:500;margin-bottom:var(--spacing-3-xs)}.application_search--filter-wrapper form .form-item .grant-applications--select-wrapper{min-width:100%;width:100%}.application_search--filter-wrapper form .hds-text-input:first-child{max-width:none;width:100%}.application_search--filter-wrapper form .hds-text-input:first-child input{width:100%}.application_search--filter-wrapper form .form-actions{align-items:center;display:flex;gap:16px;order:6;padding-top:var(--spacing-m);width:100%}@media(min-width: 768px){.application_search--filter-wrapper form .form-actions{width:17%}}.application_search--filter-wrapper form .form-actions input{min-width:250px;width:100%}.application_search--filter-wrapper form .form-item-items-per-page{display:none}.application_search--filter-wrapper form .form-item-kohderyhma{order:1}.application_search--filter-wrapper form .form-item-avustuslaji{order:2}.application_search--filter-wrapper form .form-item-hakija{order:3}.application_search--filter-wrapper form .form-item-search{max-width:100%;order:4;width:50%}.application_search--filter-wrapper form .form-item-application-open{page-break-before:left;-moz-column-break-before:left;break-before:left;display:block;margin-top:var(--spacing-m);order:5;width:30%}.application_search--filter-wrapper form [data-drupal-selector=edit-reset]{background-color:rgba(0,0,0,0);border:0;color:var(--color-black)}.application_search--filter-wrapper .hds-koros svg pattern{color:var(--color-black-5)}.application_search--filter-wrapper .hero .hero__container{padding-bottom:var(--spacing-m)}.application_search--filters{padding-bottom:var(--spacing-layout-m);padding-top:0}.application_search--rows{display:flex;flex-direction:column;flex-wrap:wrap;justify-content:flex-start;width:100%}@media(min-width: 576px){.application_search--rows{flex-direction:row;margin-left:calc(-1*var(--spacing-m));width:calc(100% + var(--spacing-m))}}.application_search--row{box-shadow:1px 2px 4px 0 rgba(0,0,0,.5);margin-bottom:var(--spacing-l);position:relative;width:100%}@media(min-width: 576px){.application_search--row{margin-left:var(--spacing-m);width:calc(50% - var(--spacing-m))}}@media(min-width: 992px){.application_search--row{width:calc(33.3333333333% - var(--spacing-m))}}.application_search--row h3{font-size:var(--fontsize-heading-m);margin-top:var(--spacing-xs)}.application_search--row .views-field-search-api-excerpt{height:auto;overflow:auto;word-break:normal}.application_search--row .views-field{padding:var(--spacing-xs) var(--spacing-m)}.application_search--row .views-field-field-target-group{padding:0}.application_search--row .views-field-field-avustuslaji{padding:var(--spacing-xs) var(--spacing-m) var(--spacing-layout-m) var(--spacing-m)}.application_search--row .views-field-field-avustuslaji .tag_avustuslaji{background:var(--color-black);border-radius:var(--spacing-m);color:var(--color-white);display:inline-block;margin-bottom:var(--spacing-2-xs);padding:var(--spacing-3-xs) var(--spacing-xs)}.application_search--row .views-field-field-application-period .field-content{align-items:center;display:flex;gap:var(--spacing-s);position:relative}.application_search--row .views-field-field-application-period .field-content span{display:block}.application_search--row .tag_target_group{background:var(--color-black-20);color:var(--color-black);font-size:var(--fontsize-body-s);font-weight:bold;padding:var(--spacing-m);text-align:center;text-transform:uppercase;width:100%}.application_search--row .tag_target_group_12{background:var(--color-brick-medium-light)}.application_search--row .tag_target_group_20{background:var(--color-copper)}.application_search--row .tag_target_group_21{background:var(--color-metro-medium-light)}.application_search--row .tag_target_group_22{background:var(--color-suomenlinna-medium-light)}.application_search--row .tag_target_group_23{background:var(--color-engel)}.application_search--row .tag_target_group_24{background:var(--color-bus-medium-light)}.application_search--row .tag_target_group_25{background:var(--color-coat-of-arms-medium-light)}.application_search--row .tag_target_group_26{background:var(--color-gold-medium-light)}.application_search--row .tag_target_group_27{background:var(--color-tram-medium-light)}.application_search--row .tag_target_group_28{background:var(--color-summer-light)}.application_search--row .tag_target_group_29{background:var(--color-fog)}.application_search--row .tag_target_group_30{background:var(--color-copper-light)}.application_search--row .tag_target_group_31{background:var(--color-gold)}.view-ukk .view-filters{display:none}.view-ukk .ukk_categories{display:block;margin:var(--spacing-xl) 0;padding:0}.view-ukk .ukk_categories li{display:inline-block;list-style:none;margin:var(--spacing-m) var(--spacing-s) 0 0;padding:0}.view-ukk .hero .hero__text-content{max-width:100%}.view-ukk #edit-field-category-target-id{display:flex}.view-ukk #edit-field-category-target-id .hds-radio-button:first-of-type{margin-top:var(--spacing-2-xs)}.view-ukk #edit-field-category-target-id .hds-radio-button .hds-radio-button__input:checked+.hds-radio-button__label{background:var(--color-black);border-radius:var(--spacing-m);color:var(--color-white);padding:var(--spacing-2-xs) var(--spacing-s)}.view-ukk #edit-field-category-target-id .hds-radio-button__label{padding:var(--spacing-2-xs) var(--spacing-s)}.view-ukk #edit-field-category-target-id .hds-radio-button__label::before,.view-ukk #edit-field-category-target-id .hds-radio-button__label::after{display:none}.view-ukk .views-exposed-form fieldset{margin-bottom:0}.view-ukk .views-exposed-form .form-submit{margin-bottom:var(--spacing-l)}.view-ukk .category{background:var(--color-black);border-radius:var(--spacing-m);color:var(--color-white);display:inline-block;padding:var(--spacing-2-xs) var(--spacing-s);text-decoration:none}.view-ukk .category-unselected{background:var(--color-black-20);color:var(--color-black)}.page--select-applicant-role{background-color:var(--color-black-5)}.page--select-applicant-role body{background-color:var(--color-black-5)}.page--select-applicant-role .layout-main-wrapper{background-color:var(--color-black-5)}.page--select-applicant-role .main-content{margin-top:var(--spacing-l)}.page--select-applicant-role h1{margin-top:var(--spacing-l)}.page--select-applicant-role p{margin-bottom:var(--spacing-m)}.node--type-service .errand-service__channels .service-channel__links a[href^="https://avustukset.hel.fi"]{display:none}.node--type-service .service-channel__info p:first-of-type{margin-top:0}.node--type-service .service-channel--mail{display:none}#block-servicepageauthblock-2,#block-servicepageanonblock-2,#block-grantspreviewlink-2{display:none}@media(max-width: 767.9px){#block-servicepageauthblock-2,#block-servicepageanonblock-2,#block-grantspreviewlink-2{display:block;margin:var(--spacing-s)}}@media(max-width: 991.9px){#block-servicepageauthblock-2,#block-servicepageanonblock-2,#block-grantspreviewlink-2{display:block;margin:var(--spacing-l)}}#block-servicepageauthblock-2>.grants-service-page-block>*,#block-servicepageanonblock-2>.grants-service-page-block>*,#block-grantspreviewlink-2>.grants-service-page-block>*{margin:var(--spacing-2-xs) 0 var(--spacing-2-xs) var(--spacing-2-xs)}@media(max-width: 991.9px){#block-servicepageauthblock-2 .node--type-service a.hds-button[href*=uusi-hakemus],#block-servicepageanonblock-2 .node--type-service a.hds-button[href*=uusi-hakemus],#block-grantspreviewlink-2 .node--type-service a.hds-button[href*=uusi-hakemus]{display:none}}.user-login__text-container{background:var(--color-white);max-width:500px;padding:var(--spacing-m)}.user-login__text-container p:first-of-type{margin-top:0}.tabs{--tablist-border-color: var(--color-black-20);--tablist-border-size: 1px;--tab-color: var(--color-black);--tab-font-size: var(--fontsize-body-m);--tab-height: 48px;--tab-min-width: 148px;--tab-spacing: var(--spacing-s);--tab-active-border-size: 5px;--tab-active-border-color: var(--color-black);--tab-focus-outline-size: 2px;--tab-focus-outline-color: var(--color-coat-of-arms);display:flex;flex-flow:row wrap}.tabs--tablist{box-sizing:border-box;flex-grow:1;margin-bottom:-1px;overflow-x:hidden;position:relative;width:100%}.tabs--content-wrapper{width:100%}.tabs--content-wrapper .container{padding-top:1px}.tabs [role=tablist]{box-sizing:border-box;list-style:none;margin:0;padding:var(--tab-focus-outline-size) 0;white-space:nowrap}.tabs [role=tab]{background:rgba(0,0,0,0);border:0;cursor:pointer;display:inline-block;margin:0;outline:none;padding:0}.tabs [role=tab] span{align-items:center;box-sizing:border-box;color:var(--tab-color);display:flex;font-size:var(--tab-font-size);height:var(--tab-height);justify-content:center;margin:0;min-width:var(--tab-min-width);padding:0 var(--tab-spacing);pointer-events:none;position:relative}.tabs [role=tab] span::before{background:var(--tablist-border-color);bottom:0;content:"";height:var(--tablist-border-size);position:absolute;width:100%;z-index:100}.tabs [role=tab] span:hover::before,.tabs [role=tab] span:focus::before,.tabs [role=tab][aria-selected=true] span::before{background-color:var(--tab-active-border-color);bottom:0;content:"";height:var(--tab-active-border-size);position:absolute;width:100%;z-index:100}.tabs [role=tabpanel].is-hidden{display:none}.node--form-page .list-of-links{margin-left:0;margin-top:0;width:100%}@media(min-width: 768px){.node--form-page .list-of-links{margin-top:0}}.node--form-page .list-of-links>.container{padding-top:0}.node--form-page .list-of-links .list-of-links__title{border-top:2px solid var(--color-black-20);margin:0 0 var(--spacing-layout-xl)}@media(min-width: 576px){.node--form-page .list-of-links .list-of-links__container{width:calc(100% - var(--spacing-layout-xl))}}@media(min-width: 768px){.node--form-page .list-of-links .list-of-links__container{width:100%}}.node--form-page .list-of-links .list-of-links__content{height:auto;margin-top:0}@media(min-width: 768px){.node--form-page .list-of-links .list-of-links__content{display:grid;grid-template-columns:auto auto auto;margin:0 var(--spacing-m) 0 0}}.node--form-page .list-of-links .list-of-links__item{align-self:stretch;border-left:4px solid var(--color-copper);margin-right:-4px;padding-left:var(--spacing-m);padding-right:var(--spacing-m)}.list-of-links--without-image .list-of-links__item .list-of-links__item__desc{color:var(--color-black-90);font-size:var(--fontsize-body-m)}.list-of-links--without-image .list-of-links__item .list-of-links__item__title{font-size:var(--fontsize-heading-m)}.js-form-type-webform-custom-composite{--border-width: 2px;--outline-width: 3px;--input-height: 56px;--textarea-height: 149px;--icon-size: var(--spacing-m);--helper-color-default: var(--color-black-60);--helper-color-invalid: var(--color-error);--icon-color-invalid: var(--color-error);--input-background-default: var(--color-white);--input-background-disabled: var(--color-black-10);--input-border-color-default: var(--color-black-50);--input-border-color-hover: var(--color-black-90);--input-border-color-focus: var(--color-black-90);--input-border-color-invalid: var(--color-error);--input-border-color-disabled: var(--color-black-10);--input-color-default: var(--color-black-90);--input-color-disabled: var(--color-black-40);--label-color-default: var(--color-black-90);--label-color-invalid: var(--color-black-90);--placeholder-color: var(--color-black-60);--focus-outline-color: var(--color-coat-of-arms)}.js-form-type-webform-custom-composite a.tabledrag-handle .handle{height:24px;width:24px}.js-form-type-webform-custom-composite input.form-number{background-color:var(--input-background-default);border:var(--border-width) solid var(--input-border-color-default);box-sizing:border-box;color:var(--input-color-default);font-size:1.125em;height:var(--input-height);line-height:normal;padding:0 var(--spacing-s);width:100%}.js-form-type-webform-custom-composite table{border-collapse:collapse;border-spacing:0;margin-bottom:var(--spacing-m)}.js-form-type-webform-custom-composite table td{border-bottom:2px var(--color-black-20) solid;border-top:2px var(--color-black-20) solid;padding-left:var(--spacing-m);padding-top:var(--spacing-m)}@media(max-width: 768px){.js-form-type-webform-custom-composite table td{border:2px var(--color-black-20) solid}}.js-form-type-webform-custom-composite table td.webform-multiple-table--operations{border-bottom:2px var(--color-black-20) solid;border-top:2px var(--color-black-20) solid;padding-left:var(--spacing-m);padding-top:var(--spacing-m)}@media(max-width: 768px){.js-form-type-webform-custom-composite table td.webform-multiple-table--operations{background:var(--color-white);border:2px var(--color-black-20) solid;padding:10px 5px 5px}}.js-form-type-webform-custom-composite table td:first-child{border-left:2px var(--color-black-20) solid}.js-form-type-webform-custom-composite table td:last-child{border-right:2px var(--color-black-20) solid;padding:var(--spacing-s)}@media(min-width: 768px){.js-form-type-webform-custom-composite table td:last-child{min-width:400px;padding:var(--spacing-s) var(--spacing-m)}}div.ui-widget.ui-datepicker{padding:var(--spacing-2-xs)}div.ui-widget.ui-datepicker .ui-datepicker-header span.ui-icon{margin-left:-8px;margin-top:-8px;-webkit-mask-image:none;mask-image:none;transform:none}div.ui-widget.ui-datepicker .ui-datepicker-calendar{border:0;display:table;margin:0;max-width:100%}div.ui-widget.ui-datepicker .ui-datepicker-calendar th,div.ui-widget.ui-datepicker .ui-datepicker-calendar td{min-width:auto}details.accordion{--background-color: var(--color-white);--border-color: var(--color-black-60);--padding-horizontal: var(--spacing-m);--padding-vertical: var(--spacing-m);--header-font-color: var(--color-black-90);--header-font-size: var(--fontsize-heading-m);--header-line-height: var(--lineheight-m);--button-size: 28px;--header-focus-outline-color: var(--color-coat-of-arms);--content-font-color: var(--color-black-90);--content-font-size: var(--fontsize-body-m);--content-line-height: var(--lineheight-l);border-bottom:1px solid var(--border-color)}details.accordion .accordion_content{padding-bottom:var(--padding-vertical)}details.accordion[open] .accordion_heading_container span.hel-icon{transform:rotate(180deg)}.accordion_header{align-items:center;color:var(--header-font-color);display:flex;font-size:var(--header-font-size);font-weight:700;justify-content:space-between;line-height:var(--header-line-height);list-style:none;padding-bottom:var(--padding-vertical);padding-top:var(--padding-vertical);position:relative}.accordion_heading_container{align-items:center;box-sizing:border-box;cursor:pointer;display:grid;grid-template-columns:auto calc(var(--button-size));width:100%}.accordion_heading_container span.hel-icon{height:var(--button-size) !important;width:var(--button-size) !important}.accordion_heading_container span.hel-icon{border:2px solid rgba(0,0,0,0);box-sizing:border-box;margin:auto}.webform-element-description{--helper-color-default: var(--color-black-60);color:var(--helper-color-default);display:block;font-size:var(--fontsize-body-m);line-height:var(--lineheight-l);margin-top:var(--spacing-s)}.webform-element-help{background:var(--color-white);border:2px solid rgba(0,0,0,0);color:var(--hdbt-color-black);height:var(--spacing-layout-xs);margin-right:4px;padding:0;position:absolute;right:0;top:-3px;width:var(--spacing-layout-xs);z-index:10}div[data-tippy-root]{width:350px}.tippy-box{background-color:var(--color-black-5);border-left:var(--spacing-xs) var(--color-coat-of-arms) solid;border-radius:0;color:var(--hdbt-color-black);padding:var(--spacing-s)}.tippy-box .webform-element-help--content{white-space:normal}.tippy-box .webform-element-help--content a:link,.tippy-box .webform-element-help--content a:visited,.tippy-box .webform-element-help--content a:active,.tippy-box .webform-element-help--content a:hover{color:var(--hdbt-color-black)}.tippy-arrow{color:var(--color-black-5)}.webform-element-help--wrapper-short{max-width:-moz-fit-content;max-width:fit-content}.webform-element-help-container--title{--border-width: 2px;--outline-width: 3px;--input-height: 56px;--textarea-height: 149px;--icon-size: var(--spacing-m)}fieldset.grants-fieldset{padding:var(--spacing-s)}@media(min-width: 768px){fieldset.grants-fieldset{min-width:400px;padding:var(--spacing-s) var(--spacing-m)}}fieldset.grants-fieldset .fieldset-wrapper{align-items:flex-end;display:flex;flex-wrap:wrap;gap:0 var(--spacing-layout-2-xs)}fieldset.grants-fieldset .fieldset-wrapper .form-item--error-message{grid-column:1}fieldset.grants-fieldset-short{max-width:var(--webform-element-width--input-large)}fieldset.grants-fieldset-medium{max-width:var(--webform-element-width--fieldset)}fieldset.grants-fieldset-medium .fieldset-wrapper{justify-content:center}fieldset.premises-composite--wrapper.fieldgroup,fieldset.rented-premise-composite--wrapper.fieldgroup,.community_officials_wrapper fieldset.fieldgroup,fieldset.grants-budget-other-cost--wrapper.fieldgroup,fieldset.grants-budget-other-income--wrapper.fieldgroup,fieldset.place-of-operation-composite--wrapper.fieldgroup,fieldset.rent-income-composite--wrapper.fieldgroup,fieldset.rent-cost-composite--wrapper.fieldgroup,fieldset.club-section-composite--wrapper.fieldgroup,fieldset.members-composite--wrapper.fieldgroup,fieldset.orienteering-map-composite--wrapper,.form-item-muu-liite fieldset.grants-attachments--wrapper.fieldgroup{border-width:2px;margin-top:var(--spacing-layout-2-xs);max-width:100%;padding:var(--spacing-s);width:100%}@media(min-width: 768px){fieldset.premises-composite--wrapper.fieldgroup,fieldset.rented-premise-composite--wrapper.fieldgroup,.community_officials_wrapper fieldset.fieldgroup,fieldset.grants-budget-other-cost--wrapper.fieldgroup,fieldset.grants-budget-other-income--wrapper.fieldgroup,fieldset.place-of-operation-composite--wrapper.fieldgroup,fieldset.rent-income-composite--wrapper.fieldgroup,fieldset.rent-cost-composite--wrapper.fieldgroup,fieldset.club-section-composite--wrapper.fieldgroup,fieldset.members-composite--wrapper.fieldgroup,fieldset.orienteering-map-composite--wrapper,.form-item-muu-liite fieldset.grants-attachments--wrapper.fieldgroup{min-width:400px;padding:var(--spacing-s) var(--spacing-m)}}fieldset.premises-composite--wrapper.fieldgroup legend>span.visually-hidden,fieldset.rented-premise-composite--wrapper.fieldgroup legend>span.visually-hidden,.community_officials_wrapper fieldset.fieldgroup legend>span.visually-hidden,fieldset.grants-budget-other-cost--wrapper.fieldgroup legend>span.visually-hidden,fieldset.grants-budget-other-income--wrapper.fieldgroup legend>span.visually-hidden,fieldset.place-of-operation-composite--wrapper.fieldgroup legend>span.visually-hidden,fieldset.rent-income-composite--wrapper.fieldgroup legend>span.visually-hidden,fieldset.rent-cost-composite--wrapper.fieldgroup legend>span.visually-hidden,fieldset.club-section-composite--wrapper.fieldgroup legend>span.visually-hidden,fieldset.members-composite--wrapper.fieldgroup legend>span.visually-hidden,fieldset.orienteering-map-composite--wrapper legend>span.visually-hidden,.form-item-muu-liite fieldset.grants-attachments--wrapper.fieldgroup legend>span.visually-hidden{background:#fff;clip-path:initial;clip:auto;clip:initial;height:auto;margin-left:calc(var(--spacing-2-xs)*-1);left:auto;overflow:visible;padding:0 var(--spacing-2-xs);top:-12px;width:-moz-max-content;width:max-content}fieldset.premises-composite--wrapper.fieldgroup legend>span.visually-hidden[\:has\(button.webform-element-help\)],fieldset.rented-premise-composite--wrapper.fieldgroup legend>span.visually-hidden[\:has\(button.webform-element-help\)],.community_officials_wrapper fieldset.fieldgroup legend>span.visually-hidden[\:has\(button.webform-element-help\)],fieldset.grants-budget-other-cost--wrapper.fieldgroup legend>span.visually-hidden[\:has\(button.webform-element-help\)],fieldset.grants-budget-other-income--wrapper.fieldgroup legend>span.visually-hidden[\:has\(button.webform-element-help\)],fieldset.place-of-operation-composite--wrapper.fieldgroup legend>span.visually-hidden[\:has\(button.webform-element-help\)],fieldset.rent-income-composite--wrapper.fieldgroup legend>span.visually-hidden[\:has\(button.webform-element-help\)],fieldset.rent-cost-composite--wrapper.fieldgroup legend>span.visually-hidden[\:has\(button.webform-element-help\)],fieldset.club-section-composite--wrapper.fieldgroup legend>span.visually-hidden[\:has\(button.webform-element-help\)],fieldset.members-composite--wrapper.fieldgroup legend>span.visually-hidden[\:has\(button.webform-element-help\)],fieldset.orienteering-map-composite--wrapper legend>span.visually-hidden[\:has\(button.webform-element-help\)],.form-item-muu-liite fieldset.grants-attachments--wrapper.fieldgroup legend>span.visually-hidden[\:has\(button.webform-element-help\)]{padding-right:var(--spacing-xl)}fieldset.premises-composite--wrapper.fieldgroup legend>span.visually-hidden:has(button.webform-element-help),fieldset.rented-premise-composite--wrapper.fieldgroup legend>span.visually-hidden:has(button.webform-element-help),.community_officials_wrapper fieldset.fieldgroup legend>span.visually-hidden:has(button.webform-element-help),fieldset.grants-budget-other-cost--wrapper.fieldgroup legend>span.visually-hidden:has(button.webform-element-help),fieldset.grants-budget-other-income--wrapper.fieldgroup legend>span.visually-hidden:has(button.webform-element-help),fieldset.place-of-operation-composite--wrapper.fieldgroup legend>span.visually-hidden:has(button.webform-element-help),fieldset.rent-income-composite--wrapper.fieldgroup legend>span.visually-hidden:has(button.webform-element-help),fieldset.rent-cost-composite--wrapper.fieldgroup legend>span.visually-hidden:has(button.webform-element-help),fieldset.club-section-composite--wrapper.fieldgroup legend>span.visually-hidden:has(button.webform-element-help),fieldset.members-composite--wrapper.fieldgroup legend>span.visually-hidden:has(button.webform-element-help),fieldset.orienteering-map-composite--wrapper legend>span.visually-hidden:has(button.webform-element-help),.form-item-muu-liite fieldset.grants-attachments--wrapper.fieldgroup legend>span.visually-hidden:has(button.webform-element-help){padding-right:var(--spacing-xl)}@media(min-width: 768px){fieldset.premises-composite--wrapper.fieldgroup legend>span.visually-hidden,fieldset.rented-premise-composite--wrapper.fieldgroup legend>span.visually-hidden,.community_officials_wrapper fieldset.fieldgroup legend>span.visually-hidden,fieldset.grants-budget-other-cost--wrapper.fieldgroup legend>span.visually-hidden,fieldset.grants-budget-other-income--wrapper.fieldgroup legend>span.visually-hidden,fieldset.place-of-operation-composite--wrapper.fieldgroup legend>span.visually-hidden,fieldset.rent-income-composite--wrapper.fieldgroup legend>span.visually-hidden,fieldset.rent-cost-composite--wrapper.fieldgroup legend>span.visually-hidden,fieldset.club-section-composite--wrapper.fieldgroup legend>span.visually-hidden,fieldset.members-composite--wrapper.fieldgroup legend>span.visually-hidden,fieldset.orienteering-map-composite--wrapper legend>span.visually-hidden,.form-item-muu-liite fieldset.grants-attachments--wrapper.fieldgroup legend>span.visually-hidden{left:auto}}.form-item-muu-liite fieldset.grants-attachments--wrapper{margin-bottom:0}fieldset.webform-composite-hidden-title .fieldset-wrapper>.form-item:last-child{margin-bottom:var(--spacing-layout-xs)}.js-form-type-webform-table table{width:100%}.js-form-type-webform-table th{text-align:left}.js-form-type-webform-table td{vertical-align:middle}.js-form-type-webform-table td>div{height:auto;margin-bottom:0}.js-form-type-webform-table td>div label{margin:-1px}.js-form-type-webform-table .hds-text-input label{border:0;clip:rect(0, 0, 0, 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.form-item{margin-bottom:var(--spacing-layout-xs);position:relative}.form-item input[type=date],.form-item input[type=time]{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--input-background-default);border:var(--border-width) solid var(--input-border-color-default);box-sizing:border-box;color:var(--input-color-default);font-size:1.125em;height:var(--input-height);line-height:normal;padding:0 var(--spacing-s);width:100%;will-change:transform,box-shadow}.webform-section{padding-bottom:var(--spacing-layout-2-xs)}.webform-section table:first-of-type{margin-top:0}.form-type-webform-multiple .webform-multiple-table table{max-width:100%;width:100%}@media(min-width: 768px){.form-type-webform-multiple .webform-multiple-table table{width:auto}}.hds-text-input{max-width:-moz-fit-content;max-width:fit-content;width:100%}.webform-section-grid-wrapper{display:grid;grid-template-columns:1fr}@media(min-width: 768px){.webform-section-grid-wrapper{grid-row-gap:var(--spacing-xl);grid-template-columns:1fr 2fr}}.webform-section-grid-wrapper>dt.webform-section-title{color:var(--hdbt-color-black);display:block;flex-shrink:0;font-size:var(--fontsize-heading-s);font-weight:500;-webkit-hyphens:none;hyphens:none;line-height:1;margin-bottom:var(--spacing-3-xs);margin-top:0;padding-right:var(--spacing-2-xl);width:100%}.webform-section-grid-wrapper .webform-section-wrapper{margin-bottom:var(--spacing-layout-xs);padding-left:var(--spacing-2-xl)}@media(min-width: 768px){.webform-section-grid-wrapper .webform-section-wrapper{margin-bottom:0;padding-left:0}}fieldset input[type=button]{margin-top:var(--spacing-m)}.webform-section-wrapper>.description{margin-bottom:var(--spacing-layout-xs)}.grants__page-header{margin-bottom:var(--spacing-layout-l);font-size:2rem}@media(min-width: 768px){.grants__page-header{font-size:3rem}}.webform-section-flex-wrapper{display:flex;flex-flow:row wrap;width:100%;justify-content:left}@media(min-width: 768px){.webform-section-flex-wrapper{flex-flow:row nowrap}.webform-section-flex-wrapper h3+*>*:first-child>label:first-of-type,.webform-section-flex-wrapper h3+*>*:first-child>*:first-child>label:first-of-type{margin-top:var(--spacing-2-xs);padding-top:0}.webform-section-flex-wrapper h3+*>*:first-child>p{line-height:normal;line-height:initial;margin-top:var(--spacing-2-xs)}.webform-section-flex-wrapper h3+*>*:first-child>h4{line-height:normal;line-height:initial;margin-top:var(--spacing-m)}}.webform-section-flex-wrapper .webform-element-help-container--title{position:relative}.webform-section-flex-wrapper>h2.webform-section-title,.webform-section-flex-wrapper>h3.webform-section-title,.webform-section-flex-wrapper>h4.webform-section-title,.webform-section-flex-wrapper>dt.webform-section-title{color:var(--hdbt-color-black);display:block;flex-shrink:0;font-size:24px;font-weight:500;-webkit-hyphens:manual;hyphens:manual;margin-bottom:var(--spacing-3-xs);margin-top:0;padding-right:var(--spacing-2-xl);width:100%}@media(min-width: 768px){.webform-section-flex-wrapper>h2.webform-section-title,.webform-section-flex-wrapper>h3.webform-section-title,.webform-section-flex-wrapper>h4.webform-section-title,.webform-section-flex-wrapper>dt.webform-section-title{font-size:32px;max-width:350px;width:30%}}.webform-section-flex-wrapper h4{font-size:var(--fontsize-heading-m);line-height:38px}.webform-section-flex-wrapper>.webform-section-wrapper{--line-height: 1.5;font-size:var(--fontsize-body-m);width:100%}@media(min-width: 768px){.webform-section-flex-wrapper>.webform-section-wrapper{padding-left:var(--spacing-2-xl)}}.webform-section-flex-wrapper .form-required::after{content:"*";display:inline}.webform-section-flex-wrapper legend,.webform-section-flex-wrapper label{display:block;font-size:var(--fontsize-body-m);font-weight:500;margin-bottom:var(--spacing-2-xs);max-width:-moz-fit-content;max-width:fit-content;position:relative}.webform-section-flex-wrapper legend{padding:0 var(--spacing-2-xs);margin-left:calc(var(--spacing-2-xs)*-1);left:auto}.webform-section-flex-wrapper legend[\:has\(button.webform-element-help\)],.webform-section-flex-wrapper label[\:has\(button.webform-element-help\)]{padding-right:var(--spacing-xl)}.webform-section-flex-wrapper legend:has(button.webform-element-help),.webform-section-flex-wrapper label:has(button.webform-element-help){padding-right:var(--spacing-xl)}.webform-section-flex-wrapper fieldset legend>span[\:has\(button.webform-element-help\)]{padding-right:var(--spacing-xl)}.webform-section-flex-wrapper fieldset legend>span:has(button.webform-element-help){padding-right:var(--spacing-xl)}.webform-section-flex-wrapper fieldset legend>span.fieldset-legend[\:has\(button.webform-element-help\)],.webform-section-flex-wrapper fieldset.fieldgroup legend>span[\:has\(button.webform-element-help\)]:not(.visually-hidden.fieldset-legend){padding-right:var(--spacing-l)}.webform-section-flex-wrapper fieldset legend>span.fieldset-legend:has(button.webform-element-help),.webform-section-flex-wrapper fieldset.fieldgroup legend>span:has(button.webform-element-help):not(.visually-hidden.fieldset-legend){padding-right:var(--spacing-l)}.webform-section-flex-wrapper fieldset legend>span.fieldset-legend[\:has\(button.webform-element-help\)],.webform-section-flex-wrapper fieldset.fieldgroup legend span.fieldset-legend:not(.visually-hidden)[\:has\(button.webform-element-help\)]{padding-right:0}.webform-section-flex-wrapper fieldset legend>span.fieldset-legend:has(button.webform-element-help),.webform-section-flex-wrapper fieldset.fieldgroup legend span.fieldset-legend:not(.visually-hidden):has(button.webform-element-help){padding-right:0}.webform-section-flex-wrapper label.hds-radio-button__label{font-weight:normal}.webform-section-flex-wrapper .checkboxes--wrapper label{font-weight:normal}.webform-section-flex-wrapper .js-form-type-textarea .hds-text-input__input-wrapper{display:block}.webform-section-flex-wrapper .has-error,.webform-section-flex-wrapper .grant-applications--select-wrapper[\:has\(.has-error\)]{border-color:var(--color-error)}.webform-section-flex-wrapper .has-error,.webform-section-flex-wrapper .grant-applications--select-wrapper:has(.has-error){border-color:var(--color-error)}form .hds-text-input__input-wrapper,.hds-text-input__input-wrapper{flex-flow:row wrap}form .hds-text-input__input-wrapper .text-count-wrapper,.hds-text-input__input-wrapper .text-count-wrapper{flex-basis:100%}form .hds-text-input__input-wrapper input.webform--small,form .hds-text-input__input-wrapper textarea.webform--small,.hds-text-input__input-wrapper input.webform--small,.hds-text-input__input-wrapper textarea.webform--small{max-width:var(--webform-element-width--input-small);min-width:var(--webform-element-width--input-small);width:100%}form .hds-text-input__input-wrapper input.webform--medium,form .hds-text-input__input-wrapper textarea.webform--medium,.hds-text-input__input-wrapper input.webform--medium,.hds-text-input__input-wrapper textarea.webform--medium{max-width:var(--webform-element-width--input-medium);min-width:var(--webform-element-width--input-small);width:100%}form .hds-text-input__input-wrapper input.webform--large,form .hds-text-input__input-wrapper textarea.webform--large,.hds-text-input__input-wrapper input.webform--large,.hds-text-input__input-wrapper textarea.webform--large{max-width:var(--webform-element-width--input-large);min-width:var(--webform-element-width--input-small);width:100%}.webform--small div.grant-applications--select-wrapper{max-width:var(--webform-element-width--input-small);min-width:var(--webform-element-width--input-small);width:100%}.webform--medium div.grant-applications--select-wrapper{max-width:var(--webform-element-width--input-medium);min-width:var(--webform-element-width--input-small);width:100%}.webform--large div.grant-applications--select-wrapper{max-width:var(--webform-element-width--input-medium);min-width:var(--webform-element-width--input-small);width:100%}form .hds-checkbox{display:block}form .hds-checkbox label.hds-checkbox__label::after{content:""}fieldset.webform-composite-hidden-title{margin-bottom:var(--spacing-layout-2-xs);margin-top:0}.form-item-bank-account-account-number-select,.form-item-community-address-community-address-select{margin-bottom:0}.grants-profile-grants-profile table thead th h4{margin:0}.hakemus-form-page .main-content{margin-top:0}.hakemus-form-page h1{-webkit-hyphens:auto;hyphens:auto;word-break:break-word}.hakemus-form-errors ul li{list-style-type:none}.community_officials_wrapper .webform-readonly{margin:0}.community_officials_wrapper .hds-text-input__input-wrapper{margin:0}.community_officials_wrapper input[readonly=readonly]{height:1.25rem;margin:0;max-width:330px}.form-item--error-message{color:var(--color-error);margin-bottom:var(--spacing-layout-s);margin-top:var(--spacing-layout-2-xs)}fieldset .form-item--error-message,.community_officials_wrapper .form-item--error-message{margin-bottom:0}.form-item--error-message::before{--icon-size: 1.6rem;background-color:#000;background-size:contain;content:"";display:inline-block;height:calc(var(--line-height) * 1em);height:var(--icon-size, calc(var(--line-height) * 1em));-webkit-mask-image:var(--hel-icon--alert-circle-fill);mask-image:var(--hel-icon--alert-circle-fill);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:calc(var(--line-height) * 1em) calc(var(--line-height) * 1em);mask-size:calc(var(--line-height) * 1em) calc(var(--line-height) * 1em);-webkit-mask-size:var(--icon-size, calc(var(--line-height) * 1em)) var(--icon-size, calc(var(--line-height) * 1em));mask-size:var(--icon-size, calc(var(--line-height) * 1em)) var(--icon-size, calc(var(--line-height) * 1em));vertical-align:bottom;width:calc(var(--line-height) * 1em);width:var(--icon-size, calc(var(--line-height) * 1em));background-color:var(--color-error);content:" ";display:inline-block}input[type=radio]+label.form-required::after{content:""}.hds-radio-button:last-of-type,.hds-checkbox:last-of-type{margin-bottom:0}.hds-radio-button:last-of-type>label,.hds-checkbox:last-of-type>label{margin-bottom:0}@media(min-width: 992px){.place-of-operation-composite--wrapper.fieldgroup .hds-text-input,.club-section-composite--wrapper.fieldgroup .hds-text-input{max-width:100%}}.place-of-operation-composite--wrapper.fieldgroup .hds-radio-button .hds-radio-button__label,.club-section-composite--wrapper.fieldgroup .hds-radio-button .hds-radio-button__label{line-height:var(--lineheight-m) !important}@media(min-width: 992px){.place-of-operation-group__location,.place-of-operation-group__students,.place-of-operation-group__groups,.place-of-operation-group__personnel,.place-of-operation-group__rent,.place-of-operation-group__time{display:flex;justify-content:space-between}}@media(min-width: 992px){.place-of-operation-group__location--address,.place-of-operation-group__students--address,.place-of-operation-group__groups--address,.place-of-operation-group__personnel--address,.place-of-operation-group__rent--address,.place-of-operation-group__time--address{margin-top:0 !important}.place-of-operation-group__location--address,.place-of-operation-group__students--address,.place-of-operation-group__groups--address,.place-of-operation-group__personnel--address,.place-of-operation-group__rent--address,.place-of-operation-group__time--address{width:65%}}@media(min-width: 992px){.place-of-operation-group__location--post-code,.place-of-operation-group__students--post-code,.place-of-operation-group__groups--post-code,.place-of-operation-group__personnel--post-code,.place-of-operation-group__rent--post-code,.place-of-operation-group__time--post-code{margin-top:0 !important}.place-of-operation-group__location--post-code,.place-of-operation-group__students--post-code,.place-of-operation-group__groups--post-code,.place-of-operation-group__personnel--post-code,.place-of-operation-group__rent--post-code,.place-of-operation-group__time--post-code{width:30%}}@media(min-width: 992px){.place-of-operation-group__location--student-count,.place-of-operation-group__location--special-student-count,.place-of-operation-group__location--group-count,.place-of-operation-group__location--special-group-count,.place-of-operation-group__location--personnel-count,.place-of-operation-group__location--rent-amount,.place-of-operation-group__location--time-start,.place-of-operation-group__location--time-end,.place-of-operation-group__students--student-count,.place-of-operation-group__students--special-student-count,.place-of-operation-group__students--group-count,.place-of-operation-group__students--special-group-count,.place-of-operation-group__students--personnel-count,.place-of-operation-group__students--rent-amount,.place-of-operation-group__students--time-start,.place-of-operation-group__students--time-end,.place-of-operation-group__groups--student-count,.place-of-operation-group__groups--special-student-count,.place-of-operation-group__groups--group-count,.place-of-operation-group__groups--special-group-count,.place-of-operation-group__groups--personnel-count,.place-of-operation-group__groups--rent-amount,.place-of-operation-group__groups--time-start,.place-of-operation-group__groups--time-end,.place-of-operation-group__personnel--student-count,.place-of-operation-group__personnel--special-student-count,.place-of-operation-group__personnel--group-count,.place-of-operation-group__personnel--special-group-count,.place-of-operation-group__personnel--personnel-count,.place-of-operation-group__personnel--rent-amount,.place-of-operation-group__personnel--time-start,.place-of-operation-group__personnel--time-end,.place-of-operation-group__rent--student-count,.place-of-operation-group__rent--special-student-count,.place-of-operation-group__rent--group-count,.place-of-operation-group__rent--special-group-count,.place-of-operation-group__rent--personnel-count,.place-of-operation-group__rent--rent-amount,.place-of-operation-group__rent--time-start,.place-of-operation-group__rent--time-end,.place-of-operation-group__time--student-count,.place-of-operation-group__time--special-student-count,.place-of-operation-group__time--group-count,.place-of-operation-group__time--special-group-count,.place-of-operation-group__time--personnel-count,.place-of-operation-group__time--rent-amount,.place-of-operation-group__time--time-start,.place-of-operation-group__time--time-end{margin-top:0 !important}.place-of-operation-group__location--student-count,.place-of-operation-group__location--special-student-count,.place-of-operation-group__location--group-count,.place-of-operation-group__location--special-group-count,.place-of-operation-group__location--personnel-count,.place-of-operation-group__location--rent-amount,.place-of-operation-group__location--time-start,.place-of-operation-group__location--time-end,.place-of-operation-group__students--student-count,.place-of-operation-group__students--special-student-count,.place-of-operation-group__students--group-count,.place-of-operation-group__students--special-group-count,.place-of-operation-group__students--personnel-count,.place-of-operation-group__students--rent-amount,.place-of-operation-group__students--time-start,.place-of-operation-group__students--time-end,.place-of-operation-group__groups--student-count,.place-of-operation-group__groups--special-student-count,.place-of-operation-group__groups--group-count,.place-of-operation-group__groups--special-group-count,.place-of-operation-group__groups--personnel-count,.place-of-operation-group__groups--rent-amount,.place-of-operation-group__groups--time-start,.place-of-operation-group__groups--time-end,.place-of-operation-group__personnel--student-count,.place-of-operation-group__personnel--special-student-count,.place-of-operation-group__personnel--group-count,.place-of-operation-group__personnel--special-group-count,.place-of-operation-group__personnel--personnel-count,.place-of-operation-group__personnel--rent-amount,.place-of-operation-group__personnel--time-start,.place-of-operation-group__personnel--time-end,.place-of-operation-group__rent--student-count,.place-of-operation-group__rent--special-student-count,.place-of-operation-group__rent--group-count,.place-of-operation-group__rent--special-group-count,.place-of-operation-group__rent--personnel-count,.place-of-operation-group__rent--rent-amount,.place-of-operation-group__rent--time-start,.place-of-operation-group__rent--time-end,.place-of-operation-group__time--student-count,.place-of-operation-group__time--special-student-count,.place-of-operation-group__time--group-count,.place-of-operation-group__time--special-group-count,.place-of-operation-group__time--personnel-count,.place-of-operation-group__time--rent-amount,.place-of-operation-group__time--time-start,.place-of-operation-group__time--time-end{width:47.5%}}@media(min-width: 768px){.club-section__participants{display:flex;gap:var(--spacing-l);justify-content:space-between}}.club-section__participants input.form-text.hds-text-input__input{max-width:100%;width:100%}.club-section__totalhours input.form-text.hds-text-input__input{max-width:100%;width:100%}.hel-icon--size-xs{--icon-size: var(--spacing-layout-2-xs)}.hel-icon--size-s{--icon-size: var(--spacing-layout-xs)}.hel-icon--size-m{--icon-size: var(--spacing-layout-s)}.hel-icon--size-l{--icon-size: var(--spacing-layout-m)}.hel-icon--size-xl{--icon-size: var(--spacing-layout-l)}.hds-text-input__input-wrapper[focus-within][\:has\(input\[readonly\]\)]{margin-right:var(--spacing-2-xs);outline:2px var(--color-black) solid;outline-offset:2px}.hds-text-input__input-wrapper[focus-within]:has(input[readonly]){margin-right:var(--spacing-2-xs);outline:2px var(--color-black) solid;outline-offset:2px}.hds-text-input__input-wrapper[focus-within][\:has\(input\[readonly\]\)]{margin-right:var(--spacing-2-xs);outline:2px var(--color-black) solid;outline-offset:2px}.hds-text-input__input-wrapper:focus-within[\:has\(input\[readonly\]\)]{margin-right:var(--spacing-2-xs);outline:2px var(--color-black) solid;outline-offset:2px}.hds-text-input__input-wrapper:focus-within:has(input[readonly]){margin-right:var(--spacing-2-xs);outline:2px var(--color-black) solid;outline-offset:2px}.hds-text-input__input-wrapper[focus-within][\:has\(input\[readonly\]\)] input[readonly]{width:calc(100% - var(--spacing-2-xs))}.hds-text-input__input-wrapper[focus-within]:has(input[readonly]) input[readonly]{width:calc(100% - var(--spacing-2-xs))}.hds-text-input__input-wrapper[focus-within][\:has\(input\[readonly\]\)] input[readonly]{width:calc(100% - var(--spacing-2-xs))}.hds-text-input__input-wrapper:focus-within[\:has\(input\[readonly\]\)] input[readonly]{width:calc(100% - var(--spacing-2-xs))}.hds-text-input__input-wrapper:focus-within:has(input[readonly]) input[readonly]{width:calc(100% - var(--spacing-2-xs))}.form-item-application-number,.form-item-status,.form-item-applicant-type{display:none}.grants-handler__completion{background:var(--color-bus-light);padding:var(--spacing-layout-l) var(--spacing-layout-2-xl)}.grants-handler__completion h2{margin-top:var(--spacing-l)}.grants-handler__completion h3{font-size:1rem;font-weight:bold;margin-top:var(--spacing-m)}.grants-handler__completion__info-row{display:flex;flex-flow:row wrap;gap:var(--spacing-m);justify-content:flex-start;margin-bottom:var(--spacing-m)}.grants-handler__completion__button-row{display:flex;flex-flow:row wrap;gap:var(--spacing-m);justify-content:flex-start}.grants-handler__completion__longtext{margin:var(--spacing-l) 0}.hds-notification.notification-margin-bottom{margin-bottom:var(--spacing-layout-m)}.hds-notification__label{align-items:center}.hds-checkbox__input label{font-weight:normal}fieldset.grants-attachments--wrapper{margin-bottom:var(--spacing-layout-m)}fieldset.grants-attachments--wrapper legend{margin-bottom:var(--spacing-2-xs)}fieldset.grants-attachments--wrapper .form-item--error-message{width:100%}fieldset.grants-attachments--wrapper .js-form-type-managed-file{margin-bottom:0}.grants-applications-managed_file{position:relative}.grants-applications-managed_file label.hds-button--secondary:not(:disabled):not(.eu-cookie-compliance-default-button):not(.eu-cookie-compliance-save-preferences-button){left:0;position:relative}.grants-applications-managed_file label.hds-button--secondary:not(:disabled):not(.eu-cookie-compliance-default-button):not(.eu-cookie-compliance-save-preferences-button)[\:has\(input\:disabled\)]{background-color:transparent;background-color:var(--background-color-disabled, transparent);border-color:transparent;border-color:var(--border-color-disabled, transparent);color:var(--color-disabled);cursor:not-allowed}.grants-applications-managed_file label.hds-button--secondary:not(:disabled):not(.eu-cookie-compliance-default-button):not(.eu-cookie-compliance-save-preferences-button)[\:has\(input\:disabled\)]{background-color:transparent;background-color:var(--background-color-disabled, transparent);border-color:transparent;border-color:var(--border-color-disabled, transparent);color:var(--color-disabled);cursor:not-allowed}.grants-applications-managed_file label.hds-button--secondary:not(:disabled):not(.eu-cookie-compliance-default-button):not(.eu-cookie-compliance-save-preferences-button):has(input:disabled){background-color:transparent;background-color:var(--background-color-disabled, transparent);border-color:transparent;border-color:var(--border-color-disabled, transparent);color:var(--color-disabled);cursor:not-allowed}.grants-applications-managed_file label.hds-button--secondary:not(:disabled):not(.eu-cookie-compliance-default-button):not(.eu-cookie-compliance-save-preferences-button)[focus-within]{background:var(--color-black);border-color:var(--color-white);color:var(--color-white);outline:2px var(--color-black) solid}.grants-applications-managed_file label.hds-button--secondary:not(:disabled):not(.eu-cookie-compliance-default-button):not(.eu-cookie-compliance-save-preferences-button):focus-within{background:var(--color-black);border-color:var(--color-white);color:var(--color-white);outline:2px var(--color-black) solid}.grants-applications-managed_file input[type=file]{opacity:0;position:absolute}.form-managed-file{display:flex;flex-wrap:wrap;white-space:inherit}.form-managed-file>span{background-color:var(--color-info-light);border-bottom:2px dotted var(--color-coat-of-arms);display:inline-block;padding:var(--spacing-s) var(--spacing-2-xs)}.form-managed-file>.file-upload-js-error{flex-basis:100%}.grants-applications-managed_file label.hds-button{display:flex}.grants-attachments--wrapper .webform-readonly{display:none}.webform-multiple-table table{border-collapse:collapse;border:0px var(--color-white) solid;margin-bottom:var(--spacing-2-xs);max-width:-moz-fit-content;max-width:fit-content}.webform-multiple-table .webform-multiple-table--operations-two{min-width:60px}.webform-multiple-table tbody tr,.webform-multiple-table thead tr{align-items:center;justify-content:space-between;width:100%}.webform-multiple-table td,.webform-multiple-table th{max-width:100%;min-width:0;padding:0;width:100%}.webform-multiple-table table thead th{padding:var(--spacing-layout-2-xs)}div.hidden-head table{display:table}div.hidden-head table thead th{padding:0}div.hidden-head table tbody tr{border-bottom:var(--spacing-s) var(--color-white) solid}div.hidden-head table tbody tr:hover{background:rgba(0,0,0,0)}div.table-layout-form input.hds-text-input__input{width:100%}div.table-layout-form table{border:1px var(--color-black) solid;max-width:var(--webform-element-width--input-large)}div.table-layout-form table tbody tr{border:§0px var(--color-black-30) solid}div.table-layout-form table tbody tr td{border:1px var(--color-black-30) solid;padding:0}div.table-layout-form table tbody tr td input.hds-text-input__input[readonly]{padding:var(--spacing-layout-2-xs)}div.table-layout-form table .form-item{margin-bottom:0}.hds-text-input .hds-text-input__input.input--borderless{border:0 rgba(0,0,0,0) solid}#edit-subventions-items thead{background:var(--color-black-90);color:var(--color-white);text-align:left}#edit-subventions-items input.hds-text-input,#edit-subventions-items input.hds-text-input__input{background:rgba(0,0,0,0)}#subventions_table td.webform-multiple-table--operations,#subventions_table th.webform-multiple-table--operations{display:none}#subventions_table input.hds-text-input__input[readonly][name$="[amount]"]{background-color:var(--input-background-disabled);border-color:var(--input-border-color-disabled);color:var(--input-color-disabled);cursor:not-allowed}.form-item-muu-liite .webform-multiple-table--operations{display:none}.hidden-head>label{display:none}.webform-preview .accordion_header{font-size:28px;font-weight:300}@media(min-width: 768px){.webform-preview .accordion_header{font-size:36px;font-weight:500}}.webform-preview label{display:block;font-weight:bold}.grants-profile-grants-profile fieldset{background:var(--color-black-5);border:0 rgba(0,0,0,0) solid;margin:0;max-width:var(--webform-element-width--fieldset);padding:0 var(--spacing-layout-s) var(--spacing-layout-s);top:calc(-1*var(--spacing-m))}.grants-profile-grants-profile fieldset label{margin-bottom:var(--spacing-3-xs)}.grants-profile-grants-profile fieldset legend{font-size:var(--fontsize-body-l);margin-bottom:var(--spacing-m);padding-bottom:var(--spacing-s);position:relative;top:var(--spacing-l)}.grants-profile-grants-profile fieldset .fieldset-wrapper{display:flex;flex-flow:row wrap;justify-content:space-between}.grants-profile-grants-profile fieldset .hds-text-input{max-width:100%}.grants-profile-grants-profile fieldset div[class*=-address-postcode]{width:32%}.grants-profile-grants-profile fieldset div[class*=-address-city]{width:65%}.grants-profile--extrainfo .form-actions .button{margin-right:var(--spacing-2-xs)}.grants-stepper{--grants-stepper-color: var(--color-black);--grants-stepper-background-color: var(--color-white);--grants-stepper-disabled-color: var(--color-black-20);--grants-stepper-selected-step-label-color: var(--color-black-90);--grants-stepper-not-selected-step-label-color: var(--color-black);--grants-step-background-color: var(--color-white);--grants-step-content-color: var(--color-black);--grants-stepper-focus-border-color: var(--color-coat-of-arms);--grants-step-width: 120px;--circle-container-size: 36px;--progress-line-height: 2px;background-color:var(--grants-stepper-background-color);margin-bottom:var(--spacing-layout-m);position:relative}@media(max-width: 725px){.grants-stepper{--grants-step-width: 40px}}@media(max-width: 725px){.grants-stepper .grants-stepper__text{display:none}}.grants-stepper__inner{align-items:flex-start;display:flex;justify-content:space-between;margin:0;-ms-overflow-style:none;padding:0;position:relative;scroll-behavior:smooth;scrollbar-width:none;width:100%}.grants-stepper__lines{display:flex;height:var(--progress-line-height);left:calc(var(--grants-step-width)/2);line-height:var(--lineheight-l);position:absolute;transform:translateY(calc(var(--circle-container-size) / 2 + var(--progress-line-height) / 2));z-index:1}.grants-stepper__line{background-color:var(--grants-stepper-color);display:inline-block;height:100%;position:relative}.grants-stepper__line__disabled{background-color:var(--grants-stepper-disabled-color)}.grants-stepper__steps{background-color:var(--grants-stepper-background-color);box-sizing:border-box;display:flex;flex-shrink:0;justify-content:center;max-width:var(--grants-step-width);min-width:var(--grants-step-width);padding:3px}.grants-stepper__step{align-items:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:rgba(0,0,0,0);border:0;box-sizing:content-box;color:var(--grants-stepper-color);cursor:pointer;display:flex;flex-direction:column;height:100%;justify-content:center;outline:none;overflow:visible;padding:0;position:relative}.grants-stepper__step[disabled],.grants-stepper__step__disabled{color:var(--grants-stepper-disabled-color);cursor:not-allowed}.grants-stepper__step[disabled] .grants-stepper__circle,.grants-stepper__step__disabled .grants-stepper__circle{background-color:var(--grants-stepper-background-color);border:2px solid var(--grants-stepper-disabled-color);color:var(--grants-stepper-disabled-color)}.grants-stepper__step[disabled] .grants-stepper__text,.grants-stepper__step__disabled .grants-stepper__text{color:var(--grants-stepper-disabled-color)}.grants-stepper__step__circle_container{align-items:center;display:flex;height:var(--circle-container-size);justify-content:center;width:var(--circle-container-size);z-index:2}.grants-stepper__step__completed_container{align-items:center;background-color:var(--grants-stepper-color);border-radius:16px;color:var(--color-white);display:none;justify-content:center;outline:2px solid var(--grants-stepper-background-color);padding:4px;vertical-align:middle}.grants-stepper .grants-stepper__error,.grants-stepper .grants-stepper__completed{display:none}.grants-stepper__text{color:var(--grants-stepper-not-selected-step-label-color);font-size:var(--fontsize-body-m);font-weight:500;line-height:var(--lineheight-l);margin-bottom:0;margin-top:6px;padding-left:var(--spacing-4-xs);padding-right:var(--spacing-4-xs);text-align:center;text-decoration:underline}.grants-stepper__circle{align-items:center;background-color:var(--grants-step-background-color);border:2px solid var(--grants-stepper-color);border-radius:16px;color:var(--grants-step-content-color);display:flex;height:28px;justify-content:center;outline:2px solid var(--grants-stepper-background-color);text-align:center;width:28px}.grants-stepper__number{font-size:var(--fontsize-body-m);font-weight:500;line-height:1.15}.grants-stepper .is-active .grants-stepper__circle{border:4px solid var(--grants-stepper-color);border-radius:18px;outline:none}.grants-stepper .is-active .grants-stepper__text{color:var(--grants-stepper-selected-step-label-color);font-weight:700;text-decoration:none}.grants-stepper .is-active .grants-stepper__number{color:var(--grants-stepper-selected-step-label-color);font-weight:700;text-decoration:none}.grants-stepper .is-complete .grants-stepper__container{align-items:center;background-color:var(--grants-stepper-color);border-radius:16px;color:var(--color-white);display:flex;justify-content:center;outline:2px solid var(--grants-stepper-background-color);padding:4px}.grants-stepper .is-complete .grants-stepper__number{display:none}.grants-stepper .is-complete .grants-stepper__completed{display:inline-block}.grants-stepper .is-complete .grants-stepper__circle{opacity:0}.grants-stepper .is-complete .grants-stepper__step__completed_container{display:flex}.grants-stepper .has-errors .grants-stepper__container{align-items:center;background-color:var(--grants-stepper-color);border-radius:16px;color:var(--color-white);display:flex;justify-content:center;outline:2px solid var(--grants-stepper-background-color);padding:4px}.grants-stepper .has-errors .grants-stepper__circle{border-color:var(--color-error);color:var(--color-error)}.grants-stepper .has-errors .grants-stepper__number{display:none}.grants-stepper .has-errors .grants-stepper__error{display:inline-block}.grants-stepper .progress-marker::before{display:none}.grants-stepper .progress-step .progress-marker{color:var(--color-black)}.grants-stepper .progress-step .progress-marker.focus-visible .grants-stepper__circle{outline:2px solid var(--color-black);outline:var(--outline-width, 2px) solid var(--color-black);outline-offset:2px}.grants-stepper .progress-step .progress-marker.focus-visible .grants-stepper__circle{outline:2px solid var(--color-black);outline:var(--outline-width, 2px) solid var(--color-black);outline-offset:2px}.grants-stepper .progress-step .progress-marker:focus-visible .grants-stepper__circle{outline:2px solid var(--color-black);outline:var(--outline-width, 2px) solid var(--color-black);outline-offset:2px}.grants-stepper .progress-step .progress-marker.focus-visible .grants-stepper__text{outline:2px solid var(--color-black);outline:var(--outline-width, 2px) solid var(--color-black)}.grants-stepper .progress-step .progress-marker.focus-visible .grants-stepper__text{outline:2px solid var(--color-black);outline:var(--outline-width, 2px) solid var(--color-black)}.grants-stepper .progress-step .progress-marker:focus-visible .grants-stepper__text{outline:2px solid var(--color-black);outline:var(--outline-width, 2px) solid var(--color-black)}.grants-stepper .progress-step:last-child{flex-grow:1}.grant-applications--select-wrapper{--border-width: 2px;--input-height: 56px;--menu-item-height: 53px;--icon-size: var(--spacing-m);--helper-color-default: var(--color-black-60);--helper-color-invalid: var(--color-error);--icon-color-invalid: var(--color-error);--input-background-default: var(--color-white);--input-background-disabled: var(--color-black-10);--input-border-color-default: var(--color-black-50);--input-border-color-hover: var(--color-black-90);--input-border-color-focus: var(--color-black-90);--input-border-color-invalid: var(--color-error);--input-border-color-disabled: var(--color-black-10);--input-color-default: var(--color-black-90);--input-color-disabled: var(--color-black-40);--label-color-default: var(--color-black-90);--label-color-invalid: var(--color-black-90);--placeholder-color: var(--color-black-60);--focus-outline-color: var(--color-coat-of-arms);align-items:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--input-background-default);border:var(--border-width) solid var(--input-border-color-default);box-sizing:border-box;color:var(--input-color-default);cursor:pointer;display:block;font-size:1.125em;grid-template-areas:"select";line-height:normal;max-width:30ch;min-width:15ch;padding:.25em .5em;position:relative;width:100%}.grant-applications--select-wrapper select{align-items:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:rgba(0,0,0,0);border:none;color:var(--dropdown-color-default);cursor:inherit;display:flex;font-family:inherit;font-size:var(--fontsize-body-l);height:var(--input-height);line-height:inherit;margin:0;min-height:var(--menu-item-height);outline:none;padding:calc(var(--spacing-s) - var(--border-width)*2) var(--spacing-s);width:100%;z-index:1}.grant-applications--select-wrapper select::-ms-expand{display:none}.grant-applications--select-wrapper i.hel-icon{pointer-events:none;position:absolute;right:calc(var(--spacing-s) - var(--border-width)*2);top:calc(var(--spacing-s) - var(--border-width)*2)}.grant-applications--select-wrapper select,.grant-applications--select-wrapper::after{grid-area:select}.grant-applications--select-wrapper:not(.select--multiple)::after{background-color:var(--helper-color-default);clip-path:polygon(100% 0%, 0 0%, 50% 100%);content:"";height:.5em;justify-self:end;width:.8em}.grant-applications--select-wrapper select:focus+.grant-applications--select-focus{border:2px solid var(--focus-outline-color);border-radius:inherit;bottom:-1px;left:-1px;position:absolute;right:-1px;top:-1px}.webform-submission__application_id{border-bottom:1px var(--color-black-20) solid;padding-bottom:var(--spacing-xl)}.webform-submission__application_id--header{font-size:1rem;font-weight:bold}.webform-submission__title-wrapper{padding-top:var(--spacing-2-xl)}.webform-submission__title-wrapper h1{max-width:100%}.webform-submission ul{list-style:none;margin-top:0;padding-left:0}.webform-submission-information{background:var(--color-silver-light);margin-top:var(--spacing-3-xl);padding:var(--spacing-l)}.webform-submission-information .webform-submission-information{margin-top:var(--spacing-l);padding:0}.webform-submission-information h4{margin-top:0}.webform-submission-information h5{font-size:var(--fontsize-body-m);margin-top:var(--spacing-s)}.webform-submission-information__row{display:flex}.webform-submission-information__row-edit{margin-top:var(--spacing-s)}.webform-submission-information__row-top{align-items:center;border-bottom:1px solid var(--color-black-20);justify-content:space-between}@media(max-width: 550px){.webform-submission-information__row-top{display:block}}.webform-submission-information__row-main{flex-flow:row nowrap;gap:var(--spacing-m);justify-content:space-between}@media(max-width: 1179px){.webform-submission-information__row-main{flex-flow:row wrap}}.webform-submission-information__row-main>div{flex:1}@media(max-width: 1179px){.webform-submission-information__row-main>div{flex:auto;width:100%}}.webform-submission-information__row-main>div ul{list-style-type:none;margin-bottom:0;padding-left:0}.webform-submission-information__row-main>div ul li{margin:0;padding:0}.webform-submission-information__supportlinks{display:flex;flex-flow:row nowrap;min-width:-moz-fit-content;min-width:fit-content}.webform-submission-information__supportlinks .hds-loading-spinner{left:0}.webform-submission-information__supportlinks .hds-button{min-width:-moz-fit-content;min-width:fit-content}.hel-icon.hel-icon--copy{-webkit-mask-image:url("data:image/svg+xml,%3Csvg class='Icon-module_icon__1Jtzj icon_hel-icon__1YqNC Icon-module_s__2WGWe icon_hel-icon--size-s__2Lkik' viewBox='0 0 24 24' role='img' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Crect width='24' height='24'%3E%3C/rect%3E%3Cpath fill='currentColor' d='M6,10 L6,12 L5,12 L5,18 L12,18 L12,17 L14,17 L14,19 C14,19.5522847 13.5522847,20 13,20 L4,20 C3.44771525,20 3,19.5522847 3,19 L3,11 C3,10.4477153 3.44771525,10 4,10 L6,10 Z M20,4 C20.5522847,4 21,4.44771525 21,5 L21,15 C21,15.5522847 20.5522847,16 20,16 L8,16 C7.44771525,16 7,15.5522847 7,15 L7,5 C7,4.44771525 7.44771525,4 8,4 L20,4 Z M19,6 L9,6 L9,14 L19,14 L19,6 Z'%3E%3C/path%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg class='Icon-module_icon__1Jtzj icon_hel-icon__1YqNC Icon-module_s__2WGWe icon_hel-icon--size-s__2Lkik' viewBox='0 0 24 24' role='img' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Crect width='24' height='24'%3E%3C/rect%3E%3Cpath fill='currentColor' d='M6,10 L6,12 L5,12 L5,18 L12,18 L12,17 L14,17 L14,19 C14,19.5522847 13.5522847,20 13,20 L4,20 C3.44771525,20 3,19.5522847 3,19 L3,11 C3,10.4477153 3.44771525,10 4,10 L6,10 Z M20,4 C20.5522847,4 21,4.44771525 21,5 L21,15 C21,15.5522847 20.5522847,16 20,16 L8,16 C7.44771525,16 7,15.5522847 7,15 L7,5 C7,4.44771525 7.44771525,4 8,4 L20,4 Z M19,6 L9,6 L9,14 L19,14 L19,6 Z'%3E%3C/path%3E%3C/g%3E%3C/svg%3E")}.webform-submission-form .form-actions{border-top:1px rgba(0,0,0,.6) solid;margin-top:var(--spacing-l);padding-top:var(--spacing-2-xl)}@media(min-width: 768px){.webform-submission-form .form-actions{display:flex;flex-direction:row-reverse}}.webform-submission-form .form-actions .actions{display:flex;flex-wrap:wrap}.webform-submission-form .form-actions button{margin-left:0}@media(min-width: 768px){.webform-submission-form .form-actions button{margin-left:var(--spacing-2-xs)}}.webform-submission-form .form-actions input{margin-bottom:var(--spacing-layout-2-xs);width:100%}@media(min-width: 768px){.webform-submission-form .form-actions input{width:auto}}.webform-submission-form .form-actions input.webform-button--draft{background:rgba(0,0,0,0);border:0 rgba(0,0,0,0) solid;color:var(--hdbt-color-black);order:3;text-decoration:underline}.webform-submission-form .form-actions button.webform-button--next span::after,.webform-submission-form .form-actions button.webform-button--preview span::after{content:">";margin-left:var(--spacing-2-xs)}.webform-submission-form .form-actions button.webform-button--previous span::before{content:"<";margin-right:var(--spacing-2-xs)}.webform-submission-form .form-actions input.webform-button--previous{background:var(--color-white);color:var(--border-color)}.webform-button--draft .hds-button__label::before{background-color:currentColor;background-size:contain;content:"";display:inline-block;flex-shrink:0;height:24px;margin-right:var(--spacing-2-xs);-webkit-mask-image:var(--hel-icon--download-cloud);mask-image:var(--hel-icon--download-cloud);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:24px 24px;mask-size:24px 24px;transition:transform .2s linear;vertical-align:bottom;width:24px}.webform-submission-messages{background:var(--color-silver-light);margin-top:var(--spacing-3-xl);padding:var(--spacing-l)}.webform-submission-messages h4,.webform-submission-messages h5{margin-top:0}.webform-submission-messages hr{margin:var(--spacing-l) 0}.webform-submission-messages__new-message{align-items:center;background:var(--color-alert);display:inline-flex;font-weight:bold;gap:var(--spacing-2-xs);margin-bottom:var(--spacing-m);padding:var(--spacing-2-xs) var(--spacing-xs);text-transform:uppercase}.webform-submission-messages__messages-list{list-style:none;margin:0;padding:0}.webform-submission-messages__message{margin:0;padding:0}.webform-submission-messages__message__attachments{list-style:none}.webform-submission-messages__message .hds-button{margin-top:var(--spacing-s)}.js-form-type-grants-webform-summation-field{max-width:var(--webform-element-width--input-large);text-align:right}.js-form-type-grants-webform-summation-field .grants-webform-summation-field{display:inline-block;padding:var(--spacing-xs) var(--spacing-m)}.webform-print-header,.webform-print-footer{display:none}.webform-print .main-content{display:block}.webform-submission--view-mode-html .hds-text-input,.webform-submission-data-preview-page .hds-text-input,.webform-print-page-html .hds-text-input{max-width:100%}.webform-submission--view-mode-html .print-label,.webform-submission-data-preview-page .print-label,.webform-print-page-html .print-label{display:block;font-size:var(--fontsize-body-m);font-weight:500;margin-bottom:var(--spacing-3-xs);margin-top:0;max-width:-moz-fit-content;max-width:fit-content;padding-right:var(--spacing-xl);position:relative}.webform-submission--view-mode-html .webform-section-flex-wrapper h3+*>*:first-child>*:first-child,.webform-submission--view-mode-html .webform-section-flex-wrapper h3+*>*:first-child>*:first-child label:first-of-type,.webform-submission-data-preview-page .webform-section-flex-wrapper h3+*>*:first-child>*:first-child,.webform-submission-data-preview-page .webform-section-flex-wrapper h3+*>*:first-child>*:first-child label:first-of-type,.webform-print-page-html .webform-section-flex-wrapper h3+*>*:first-child>*:first-child,.webform-print-page-html .webform-section-flex-wrapper h3+*>*:first-child>*:first-child label:first-of-type{line-height:normal}.webform-submission--view-mode-html .print-notification,.webform-submission-data-preview-page .print-notification,.webform-print-page-html .print-notification{border:2px var(--color-black) solid;font-weight:bold;margin-top:var(--spacing-2-xl);padding:var(--spacing-layout-s)}.webform-submission--view-mode-html .print-notification .print-notification--icon,.webform-submission-data-preview-page .print-notification .print-notification--icon,.webform-print-page-html .print-notification .print-notification--icon{height:22px;margin-right:var(--spacing-2-xs);vertical-align:text-top;width:22px}.webform-submission--view-mode-html .webform-print-page-wizard-page~.webform-print-page-wizard-page h2,.webform-submission-data-preview-page .webform-print-page-wizard-page~.webform-print-page-wizard-page h2,.webform-print-page-html .webform-print-page-wizard-page~.webform-print-page-wizard-page h2{page-break-after:avoid;page-break-before:always}.webform-submission--view-mode-html div.hds-text-input__input,.webform-submission-data-preview-page div.hds-text-input__input,.webform-print-page-html div.hds-text-input__input{background:var(--color-white);border:2px var(--color-black) solid;height:var(--spacing-2-xl);width:100%}.webform-submission--view-mode-html div.hds-text-input__textarea,.webform-submission-data-preview-page div.hds-text-input__textarea,.webform-print-page-html div.hds-text-input__textarea{background:var(--color-white);border:2px var(--color-black) solid;height:var(--spacing-layout-2-xl);width:100%}.webform-submission--view-mode-html .webform-section-wrapper .hds-notification,.webform-submission-data-preview-page .webform-section-wrapper .hds-notification,.webform-print-page-html .webform-section-wrapper .hds-notification{margin-top:var(--spacing-s)}.webform-submission--view-mode-html .webform-print-page-body h2,.webform-submission-data-preview-page .webform-print-page-body h2,.webform-print-page-html .webform-print-page-body h2{margin-bottom:var(--spacing-layout-s)}.webform-submission--view-mode-html .webform-print-wrapper-table,.webform-submission-data-preview-page .webform-print-wrapper-table,.webform-print-page-html .webform-print-wrapper-table{border:0 rgba(0,0,0,0) solid;display:table;max-width:100%;overflow-x:visible;overflow-x:initial;width:100%}.webform-submission--view-mode-html .webform-print-wrapper-table thead,.webform-submission--view-mode-html .webform-print-wrapper-table tbody,.webform-submission--view-mode-html .webform-print-wrapper-table tfoot,.webform-submission--view-mode-html .webform-print-wrapper-table tr,.webform-submission--view-mode-html .webform-print-wrapper-table tbody tr:hover,.webform-submission--view-mode-html .webform-print-wrapper-table td,.webform-submission--view-mode-html .webform-print-wrapper-table td:first-child,.webform-submission--view-mode-html .webform-print-wrapper-table th,.webform-submission-data-preview-page .webform-print-wrapper-table thead,.webform-submission-data-preview-page .webform-print-wrapper-table tbody,.webform-submission-data-preview-page .webform-print-wrapper-table tfoot,.webform-submission-data-preview-page .webform-print-wrapper-table tr,.webform-submission-data-preview-page .webform-print-wrapper-table tbody tr:hover,.webform-submission-data-preview-page .webform-print-wrapper-table td,.webform-submission-data-preview-page .webform-print-wrapper-table td:first-child,.webform-submission-data-preview-page .webform-print-wrapper-table th,.webform-print-page-html .webform-print-wrapper-table thead,.webform-print-page-html .webform-print-wrapper-table tbody,.webform-print-page-html .webform-print-wrapper-table tfoot,.webform-print-page-html .webform-print-wrapper-table tr,.webform-print-page-html .webform-print-wrapper-table tbody tr:hover,.webform-print-page-html .webform-print-wrapper-table td,.webform-print-page-html .webform-print-wrapper-table td:first-child,.webform-print-page-html .webform-print-wrapper-table th{background:rgba(0,0,0,0);border:0;color:var(--color-black)}.webform-submission--view-mode-html .webform-print-wrapper-table ul,.webform-submission-data-preview-page .webform-print-wrapper-table ul,.webform-print-page-html .webform-print-wrapper-table ul{margin:0;padding:0}.webform-submission--view-mode-html .webform-print-wrapper-table ul li,.webform-submission-data-preview-page .webform-print-wrapper-table ul li,.webform-print-page-html .webform-print-wrapper-table ul li{border-bottom:1px var(--color-black-50) solid;list-style:none;margin-top:0;padding:1rem 0}.webform-submission--view-mode-html .webform-print-wrapper-table ul li:last-of-type,.webform-submission-data-preview-page .webform-print-wrapper-table ul li:last-of-type,.webform-print-page-html .webform-print-wrapper-table ul li:last-of-type{border-bottom:0 rgba(0,0,0,0) solid}.webform-submission--view-mode-html .webform-print-wrapper-table thead,.webform-submission-data-preview-page .webform-print-wrapper-table thead,.webform-print-page-html .webform-print-wrapper-table thead{display:table-header-group}.webform-submission--view-mode-html .webform-print-wrapper-table thead th,.webform-submission-data-preview-page .webform-print-wrapper-table thead th,.webform-print-page-html .webform-print-wrapper-table thead th{padding:0}.webform-submission--view-mode-html .webform-print-wrapper-table tfoot,.webform-submission-data-preview-page .webform-print-wrapper-table tfoot,.webform-print-page-html .webform-print-wrapper-table tfoot{display:table-footer-group}.webform-submission--view-mode-html .webform-submission-data>section,.webform-submission-data-preview-page .webform-submission-data>section,.webform-print-page-html .webform-submission-data>section{border-top:1px var(--color-black-20) solid;padding-top:var(--spacing-layout-l)}.webform-submission--view-mode-html .webform-submission-data>section>.webform-section-flex-wrapper,.webform-submission-data-preview-page .webform-submission-data>section>.webform-section-flex-wrapper,.webform-print-page-html .webform-submission-data>section>.webform-section-flex-wrapper{display:block}.webform-submission--view-mode-html .webform-submission-data>section>.webform-section-flex-wrapper>h2,.webform-submission-data-preview-page .webform-submission-data>section>.webform-section-flex-wrapper>h2,.webform-print-page-html .webform-submission-data>section>.webform-section-flex-wrapper>h2{font-size:var(--fontsize-heading-l) !important;margin:0 0 2mm !important;padding:0 !important;width:100% !important}.webform-submission--view-mode-html .webform-submission-data>section>.webform-section-flex-wrapper>h2,.webform-submission-data-preview-page .webform-submission-data>section>.webform-section-flex-wrapper>h2,.webform-print-page-html .webform-submission-data>section>.webform-section-flex-wrapper>h2{font-weight:500;min-width:100%}.webform-submission--view-mode-html .webform-submission-data>section>.webform-section-flex-wrapper>.webform-section-wrapper,.webform-submission-data-preview-page .webform-submission-data>section>.webform-section-flex-wrapper>.webform-section-wrapper,.webform-print-page-html .webform-submission-data>section>.webform-section-flex-wrapper>.webform-section-wrapper{padding:6mm 0}.webform-submission--view-mode-html .webform-submission-data>section>.webform-section-flex-wrapper>.webform-section-wrapper label,.webform-submission-data-preview-page .webform-submission-data>section>.webform-section-flex-wrapper>.webform-section-wrapper label,.webform-print-page-html .webform-submission-data>section>.webform-section-flex-wrapper>.webform-section-wrapper label{font-weight:500}.webform-submission--view-mode-html .webform-submission-data>section.hds-notification,.webform-submission-data-preview-page .webform-submission-data>section.hds-notification,.webform-print-page-html .webform-submission-data>section.hds-notification{padding-top:var(--spacing-s)}@media print{@page{.webform-submission--view-mode-html,.webform-submission-data-preview-page,.webform-print-page-html{margin:0;size:A4}}.webform-submission--view-mode-html h1,.webform-submission-data-preview-page h1,.webform-print-page-html h1{margin:0;position:relative}.webform-submission--view-mode-html details,.webform-submission-data-preview-page details,.webform-print-page-html details{page-break-before:always}.webform-submission--view-mode-html .details-section-divider,.webform-submission-data-preview-page .details-section-divider,.webform-print-page-html .details-section-divider{page-break-after:always}.webform-submission--view-mode-html label,.webform-submission-data-preview-page label,.webform-print-page-html label{font-size:8pt;margin-bottom:0}.webform-submission--view-mode-html section,.webform-submission-data-preview-page section,.webform-print-page-html section{border-top:0 var(--color-black-20) solid !important;padding-top:0 !important}.webform-submission--view-mode-html section,.webform-submission-data-preview-page section,.webform-print-page-html section{margin-bottom:0;padding-bottom:0}.webform-submission--view-mode-html div.main-content,.webform-submission-data-preview-page div.main-content,.webform-print-page-html div.main-content{margin:0}.webform-submission--view-mode-html button,.webform-submission--view-mode-html footer.footer,.webform-submission--view-mode-html header.header,.webform-submission--view-mode-html nav.breadcrumb,.webform-submission--view-mode-html .form-actions,.webform-submission--view-mode-html .hds-notification,.webform-submission--view-mode-html .messages__container,.webform-submission--view-mode-html .tools__container,.webform-submission--view-mode-html .breadcrumb__container,.webform-submission--view-mode-html .webform-progress,.webform-submission--view-mode-html .webform-progress-tracker,.webform-submission--view-mode-html .webform-progress-tracker-mobile,.webform-submission--view-mode-html .webform-multiple-add,.webform-submission--view-mode-html .webform-multiple-table--operations,.webform-submission-data-preview-page button,.webform-submission-data-preview-page footer.footer,.webform-submission-data-preview-page header.header,.webform-submission-data-preview-page nav.breadcrumb,.webform-submission-data-preview-page .form-actions,.webform-submission-data-preview-page .hds-notification,.webform-submission-data-preview-page .messages__container,.webform-submission-data-preview-page .tools__container,.webform-submission-data-preview-page .breadcrumb__container,.webform-submission-data-preview-page .webform-progress,.webform-submission-data-preview-page .webform-progress-tracker,.webform-submission-data-preview-page .webform-progress-tracker-mobile,.webform-submission-data-preview-page .webform-multiple-add,.webform-submission-data-preview-page .webform-multiple-table--operations,.webform-print-page-html button,.webform-print-page-html footer.footer,.webform-print-page-html header.header,.webform-print-page-html nav.breadcrumb,.webform-print-page-html .form-actions,.webform-print-page-html .hds-notification,.webform-print-page-html .messages__container,.webform-print-page-html .tools__container,.webform-print-page-html .breadcrumb__container,.webform-print-page-html .webform-progress,.webform-print-page-html .webform-progress-tracker,.webform-print-page-html .webform-progress-tracker-mobile,.webform-print-page-html .webform-multiple-add,.webform-print-page-html .webform-multiple-table--operations{display:none !important}.webform-submission--view-mode-html .gin--horizontal-toolbar .dialog-off-canvas-main-canvas,.webform-submission-data-preview-page .gin--horizontal-toolbar .dialog-off-canvas-main-canvas,.webform-print-page-html .gin--horizontal-toolbar .dialog-off-canvas-main-canvas{padding:0 !important}.webform-submission--view-mode-html .hds-text-input,.webform-submission-data-preview-page .hds-text-input,.webform-print-page-html .hds-text-input{max-width:100%}.webform-submission--view-mode-html .hds-text-input .hds-text-input__input,.webform-submission-data-preview-page .hds-text-input .hds-text-input__input,.webform-print-page-html .hds-text-input .hds-text-input__input{height:1cm}.webform-submission--view-mode-html .hds-text-input textarea.hds-text-input__input,.webform-submission--view-mode-html .hds-text-input div.hds-text-input__textarea,.webform-submission-data-preview-page .hds-text-input textarea.hds-text-input__input,.webform-submission-data-preview-page .hds-text-input div.hds-text-input__textarea,.webform-print-page-html .hds-text-input textarea.hds-text-input__input,.webform-print-page-html .hds-text-input div.hds-text-input__textarea{height:6cm;max-width:100%;min-width:100%;width:100%}.webform-submission--view-mode-html .hds-text-input .hds-text-input__input[readonly],.webform-submission--view-mode-html .hds-text-input .hds-text-input__input,.webform-submission-data-preview-page .hds-text-input .hds-text-input__input[readonly],.webform-submission-data-preview-page .hds-text-input .hds-text-input__input,.webform-print-page-html .hds-text-input .hds-text-input__input[readonly],.webform-print-page-html .hds-text-input .hds-text-input__input{border:2px var(--color-black) solid}.webform-submission--view-mode-html .webform-element,.webform-submission-data-preview-page .webform-element,.webform-print-page-html .webform-element{border:1px var(--color-black) solid;margin-bottom:8mm;padding:2.5mm;position:relative}.webform-submission--view-mode-html .webform-preview,.webform-submission-data-preview-page .webform-preview,.webform-print-page-html .webform-preview{margin-top:0}.webform-submission--view-mode-html .webform-preview label,.webform-submission-data-preview-page .webform-preview label,.webform-print-page-html .webform-preview label{align-items:flex-end;display:flex;font-size:8pt;height:100%;left:0;pointer-events:none;position:absolute;top:-100%;width:100%}.webform-submission--view-mode-html .webform-preview .webform-element,.webform-submission-data-preview-page .webform-preview .webform-element,.webform-print-page-html .webform-preview .webform-element{border:1px var(--color-black) solid;margin-bottom:8mm;padding:2.5mm;position:relative;top:5mm}.webform-submission--view-mode-html .webform-preview .webform-multiple-table--operations,.webform-submission-data-preview-page .webform-preview .webform-multiple-table--operations,.webform-print-page-html .webform-preview .webform-multiple-table--operations{display:none}.webform-submission--view-mode-html .webform-print-header,.webform-submission-data-preview-page .webform-print-header,.webform-print-page-html .webform-print-header{align-items:center;background:var(--color-white);border-bottom:1px var(--color-black-40) solid;display:flex;flex-flow:row nowrap;font-size:9pt;height:21mm;left:0;max-width:100%;min-width:100%;position:fixed;top:0;width:100%;z-index:1000}.webform-submission--view-mode-html .webform-print-header svg,.webform-submission-data-preview-page .webform-print-header svg,.webform-print-page-html .webform-print-header svg{color:var(--color-black);display:block;height:25mm;margin-right:3mm;width:55mm}.webform-submission--view-mode-html .webform-print-header .webform-print-header-left-text,.webform-submission-data-preview-page .webform-print-header .webform-print-header-left-text,.webform-print-page-html .webform-print-header .webform-print-header-left-text{color:var(--color-black-40);text-align:left;width:100%}.webform-submission--view-mode-html .webform-print-header .webform-print-header-right-text,.webform-submission-data-preview-page .webform-print-header .webform-print-header-right-text,.webform-print-page-html .webform-print-header .webform-print-header-right-text{color:var(--color-black-40);text-align:right;width:100%}.webform-submission--view-mode-html .webform-print-footer,.webform-submission-data-preview-page .webform-print-footer,.webform-print-page-html .webform-print-footer{align-items:center;background:var(--color-white);border-top:1px var(--color-black-40) solid;bottom:0;display:flex;flex-flow:row nowrap;font-size:9pt;height:17mm;left:0;max-width:100%;min-width:100%;position:fixed;width:100%;z-index:1000}.webform-submission--view-mode-html .webform-print-footer svg,.webform-submission-data-preview-page .webform-print-footer svg,.webform-print-page-html .webform-print-footer svg{color:var(--color-black);display:block;height:15mm;margin-right:3mm;width:33mm}.webform-submission--view-mode-html .webform-print-footer .webform-print-footer-left-text,.webform-submission-data-preview-page .webform-print-footer .webform-print-footer-left-text,.webform-print-page-html .webform-print-footer .webform-print-footer-left-text{color:var(--color-black-40);text-align:left;width:100%}.webform-submission--view-mode-html .webform-print-footer .webform-print-footer-right-text,.webform-submission-data-preview-page .webform-print-footer .webform-print-footer-right-text,.webform-print-page-html .webform-print-footer .webform-print-footer-right-text{color:var(--color-black-40);text-align:right;width:100%}.webform-submission--view-mode-html .webform-print-header-space,.webform-submission-data-preview-page .webform-print-header-space,.webform-print-page-html .webform-print-header-space{background:var(--color-white);font-size:9pt;height:21mm}.webform-submission--view-mode-html .webform-print-footer-space,.webform-submission-data-preview-page .webform-print-footer-space,.webform-print-page-html .webform-print-footer-space{background:var(--color-white);font-size:9pt;height:17mm}.webform-submission--view-mode-html .webform-print-wrapper-table,.webform-submission-data-preview-page .webform-print-wrapper-table,.webform-print-page-html .webform-print-wrapper-table{border:0;margin:0;overflow-x:visible;overflow-x:initial}.webform-submission--view-mode-html .webform-section-flex-wrapper,.webform-submission-data-preview-page .webform-section-flex-wrapper,.webform-print-page-html .webform-section-flex-wrapper{flex-flow:row wrap}.webform-submission--view-mode-html .webform-section-flex-wrapper>h3.webform-section-title,.webform-submission-data-preview-page .webform-section-flex-wrapper>h3.webform-section-title,.webform-print-page-html .webform-section-flex-wrapper>h3.webform-section-title{max-width:100%;width:100%}.webform-submission--view-mode-html .webform-section-grid-wrapper,.webform-submission-data-preview-page .webform-section-grid-wrapper,.webform-print-page-html .webform-section-grid-wrapper{display:flex;flex-flow:row nowrap}.webform-submission--view-mode-html .webform-section-grid-wrapper>h3.webform-section-title,.webform-submission-data-preview-page .webform-section-grid-wrapper>h3.webform-section-title,.webform-print-page-html .webform-section-grid-wrapper>h3.webform-section-title{font-size:1.25rem;margin-top:0;max-width:5cm;width:100%}.webform-submission--view-mode-html .webform-section-grid-wrapper>dl.webform-section-contents,.webform-submission-data-preview-page .webform-section-grid-wrapper>dl.webform-section-contents,.webform-print-page-html .webform-section-grid-wrapper>dl.webform-section-contents{margin-top:0;max-width:100%;padding-left:1cm;width:100%}.webform-submission--view-mode-html .webform-section-grid-wrapper>dl.webform-section-contents dt,.webform-submission-data-preview-page .webform-section-grid-wrapper>dl.webform-section-contents dt,.webform-print-page-html .webform-section-grid-wrapper>dl.webform-section-contents dt{font-weight:bold;margin:0;padding:0;page-break-after:avoid}.webform-submission--view-mode-html .webform-section-grid-wrapper>dl.webform-section-contents dd,.webform-submission-data-preview-page .webform-section-grid-wrapper>dl.webform-section-contents dd,.webform-print-page-html .webform-section-grid-wrapper>dl.webform-section-contents dd{margin:0;padding:0;page-break-before:avoid}.webform-submission--view-mode-html .webform-print-page-body h2,.webform-submission-data-preview-page .webform-print-page-body h2,.webform-print-page-html .webform-print-page-body h2{margin-bottom:1cm}}.webform-submission-data dl dt{font-weight:bold}.webform-submission-data dl dd{margin:0;padding:0}.webform-submission-data dl dl{padding-left:var(--spacing-2-xs)}.webform-submission-data dl>br{display:none}.webform-print-page-html .webform-section-wrapper>h4,.webform-print-page-html .webform-section-wrapper .print-label{margin-top:var(--spacing-2-xs);line-height:1.5}.webform-print-page-html .webform-section-wrapper fieldset{padding:var(--spacing-s)}@media(min-width: 768px){.webform-print-page-html .webform-section-wrapper fieldset{min-width:400px;padding:var(--spacing-s) var(--spacing-m)}}.application-list{padding-bottom:var(--spacing-xl);padding-left:0}.application-list__processed-human-readable{display:none}.application-list__item{background:var(--color-bus-light);display:block;margin:var(--spacing-m) 0;padding:var(--spacing-2-xl) var(--spacing-s) var(--spacing-m);position:relative}.application-list__item .new-message{background-color:var(--color-alert);border-radius:var(--spacing-xl);display:inline-block;padding:var(--spacing-2-xs)}.application-list__item .new-message .hel-icon--size-s{height:20px;width:20px}.application-list__item h3,.application-list__item h4{margin-top:var(--spacing-xs)}.application-list__item h4{font-size:1rem}.application-list__item--submitted{display:none}.application-list__item__link{display:flex;margin-top:var(--spacing-m)}.application-list__item__link a{font-size:1.25rem}.application-list__item__link a i{vertical-align:text-bottom}.application-list__item__row{display:flex;flex-flow:row wrap;gap:var(--spacing-m);justify-content:space-between}.application-list__item__row__left{justify-content:flex-start}.application-list__item__row__top{padding:var(--spacing-2-xs) var(--spacing-s) var(--spacing-2-xs) 0;position:absolute;top:0;width:100%}.application-list__item--status{--status-label-height: 32px;align-items:center;border-radius:20px;display:inline-flex;font-size:var(--fontsize-body-s);line-height:var(--status-label-height);min-height:var(--status-label-height);padding:var(--spacing-3-xs) var(--spacing-s);padding-left:var(--spacing-xs);vertical-align:middle}.application-list__item--status+.hds-loading-spinner{display:inline-block;left:10px;margin:0;padding:0;position:relative;top:var(--spacing-3-xs)}.application-list__item--status.hide-spinner+.hds-loading-spinner{display:none}.application-list__item--status+div+.application-list__item--error{display:none}.application-list__item--status.show-error{background:var(--color-black-20);color:var(--color-black-90)}.application-list__item--status.show-error+div+.application-list__item--error{display:inline-flex;left:var(--spacing-xs);margin:0;padding:0;position:relative;top:var(--spacing-3-xs)}.application-list__item--status.show-error+div+.application-list__item--error .application-list--error-text{display:inline-block;margin-left:var(--spacing-2-xs)}.application-list__item--status--draft{padding-left:0}.application-list__item--status--sent,.application-list__item--status--submitted{background:var(--color-black-10)}.application-list__item--status--sent::before,.application-list__item--status--submitted::before{--icon-size: 1.5rem;background-color:#000;background-size:contain;content:"";display:inline-block;height:calc(var(--line-height) * 1em);height:var(--icon-size, calc(var(--line-height) * 1em));-webkit-mask-image:var(--hel-icon--alert-circle);mask-image:var(--hel-icon--alert-circle);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:calc(var(--line-height) * 1em) calc(var(--line-height) * 1em);mask-size:calc(var(--line-height) * 1em) calc(var(--line-height) * 1em);-webkit-mask-size:var(--icon-size, calc(var(--line-height) * 1em)) var(--icon-size, calc(var(--line-height) * 1em));mask-size:var(--icon-size, calc(var(--line-height) * 1em)) var(--icon-size, calc(var(--line-height) * 1em));vertical-align:bottom;width:calc(var(--line-height) * 1em);width:var(--icon-size, calc(var(--line-height) * 1em));background-color:var(--color-black);content:"";margin-right:var(--spacing-2-xs)}.application-list__item--status--received,.application-list__item--status--pending,.application-list__item--status--processing,.application-list__item--status--preparing{background:var(--color-info);color:var(--color-white)}.application-list__item--status--received::before,.application-list__item--status--pending::before,.application-list__item--status--processing::before,.application-list__item--status--preparing::before{--icon-size: 1.5rem;background-color:#000;background-size:contain;content:"";display:inline-block;height:calc(var(--line-height) * 1em);height:var(--icon-size, calc(var(--line-height) * 1em));-webkit-mask-image:var(--hel-icon--info-circle);mask-image:var(--hel-icon--info-circle);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:calc(var(--line-height) * 1em) calc(var(--line-height) * 1em);mask-size:calc(var(--line-height) * 1em) calc(var(--line-height) * 1em);-webkit-mask-size:var(--icon-size, calc(var(--line-height) * 1em)) var(--icon-size, calc(var(--line-height) * 1em));mask-size:var(--icon-size, calc(var(--line-height) * 1em)) var(--icon-size, calc(var(--line-height) * 1em));vertical-align:bottom;width:calc(var(--line-height) * 1em);width:var(--icon-size, calc(var(--line-height) * 1em));background-color:var(--color-white);content:"";margin-right:var(--spacing-2-xs)}.application-list__item--status--done,.application-list__item--status--ready,.application-list__item--status--resolved{background:var(--color-success);color:var(--color-white)}.application-list__item--status--done::before,.application-list__item--status--ready::before,.application-list__item--status--resolved::before{--icon-size: 1.5rem;background-color:#000;background-size:contain;content:"";display:inline-block;height:calc(var(--line-height) * 1em);height:var(--icon-size, calc(var(--line-height) * 1em));-webkit-mask-image:var(--hel-icon--check-circle);mask-image:var(--hel-icon--check-circle);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:calc(var(--line-height) * 1em) calc(var(--line-height) * 1em);mask-size:calc(var(--line-height) * 1em) calc(var(--line-height) * 1em);-webkit-mask-size:var(--icon-size, calc(var(--line-height) * 1em)) var(--icon-size, calc(var(--line-height) * 1em));mask-size:var(--icon-size, calc(var(--line-height) * 1em)) var(--icon-size, calc(var(--line-height) * 1em));vertical-align:bottom;width:calc(var(--line-height) * 1em);width:var(--icon-size, calc(var(--line-height) * 1em));background-color:var(--color-white);content:"";margin-right:var(--spacing-2-xs)}.application-list__item--status--rejected,.application-list__item--status--deleted,.application-list__item--status--canceled,.application-list__item--status--cancelled{background:var(--color-alert)}.application-list__item--status--rejected::before,.application-list__item--status--deleted::before,.application-list__item--status--canceled::before,.application-list__item--status--cancelled::before{--icon-size: 1.5rem;background-color:#000;background-size:contain;content:"";display:inline-block;height:calc(var(--line-height) * 1em);height:var(--icon-size, calc(var(--line-height) * 1em));-webkit-mask-image:var(--hel-icon--alert-circle);mask-image:var(--hel-icon--alert-circle);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:calc(var(--line-height) * 1em) calc(var(--line-height) * 1em);mask-size:calc(var(--line-height) * 1em) calc(var(--line-height) * 1em);-webkit-mask-size:var(--icon-size, calc(var(--line-height) * 1em)) var(--icon-size, calc(var(--line-height) * 1em));mask-size:var(--icon-size, calc(var(--line-height) * 1em)) var(--icon-size, calc(var(--line-height) * 1em));vertical-align:bottom;width:calc(var(--line-height) * 1em);width:var(--icon-size, calc(var(--line-height) * 1em));background-color:var(--color-black);content:"";margin-right:var(--spacing-2-xs)}.application-list__item--status--error{background:var(--color-black-20);color:var(--color-black);text-transform:uppercase}.application-list__item--status--error .hel-icon{margin-right:var(--spacing-3-xs)}.application-list__count{font-size:1.5rem}.application-list__count-value{font-weight:bold}.application-list__information-row{align-items:flex-end;display:flex;flex-flow:row nowrap;justify-content:space-between;width:100%}@media(max-width: 35rem){.application-list__information-row{flex-flow:row wrap}}.application-list__information-row .grant-applications--select-wrapper select{max-width:100%;width:322px}.application-list__status__wrapper{background:var(--color-black-5)}.application-list__status__container{display:flex;flex-flow:row wrap;gap:var(--spacing-layout-m);justify-content:flex-start;padding-bottom:var(--spacing-m);padding-top:var(--spacing-m)}.application-list__status__label{font-weight:bold}.application-list__status__value{display:flex;flex-flow:row;justify-items:center;min-height:var(--spacing-xl)}.application-list__status__value>div{margin:auto}.application-list__search-row{align-items:flex-end;display:flex;flex-flow:row nowrap;gap:var(--spacing-s);justify-content:space-between;width:100%}@media(max-width: 35rem){.application-list__search-row{flex-flow:row wrap}}.application-list__search-row .hds-text-input{flex:1 100%;max-width:100%}.application-list__search-row .hds-text-input__input-wrapper{display:block}.application-list__search-row .hds-text-input__input-wrapper input{width:100%}.application-list__search-row button{white-space:nowrap}.application-list__pagination{--line-height: 1.5555555556;font-size:1.125rem;font-weight:400;line-height:var(--line-height);display:inline-flex;flex-wrap:wrap;font-weight:700;gap:var(--spacing-2-xs);justify-content:center;list-style:none;padding:0}.application-list__pagination li{margin-top:0}.application-list__pagination li.active a{text-decoration:underline}.application-list__pagination li.disabled a{cursor:default;text-decoration:none}.application-list__pagination li.disabled a:hover,.application-list__pagination li.disabled a:focus,.application-list__pagination li.disabled a:active{outline:none;text-decoration:none}.application-list__pagination li a{color:var(--color-black-90);display:block;height:var(--link-height);min-width:40px;padding-left:var(--spacing-3-xs);padding-right:var(--spacing-3-xs);text-decoration:none}.application-list__pagination li a:hover{text-decoration:underline}.application-list__pagination li a:focus,.application-list__pagination li a:active{outline:solid var(--color-coat-of-arms) 3px;outline-offset:1px}.grants-profile hr{border:1px solid var(--color-silver);margin:var(--spacing-layout-xs) 0}.grants-profile h3.info-grants{border-bottom:2px solid var(--color-silver);padding-bottom:var(--spacing-l)}.grants-profile--title{align-items:center;display:flex;flex-flow:row nowrap}.grants-profile--title .grants-profile--initials{border-radius:50%;display:none;font-size:var(--fontsize-body-xl);font-weight:bold;height:var(--spacing-4-xl);line-height:var(--spacing-4-xl);margin-right:var(--spacing-m);text-align:center;vertical-align:middle;width:var(--spacing-4-xl)}@media(min-width: 992px){.grants-profile--title .grants-profile--initials{display:block}}.grants-profile--title .grants-profile--initials:hover,.grants-profile--title .grants-profile--initials:active,.grants-profile--title .grants-profile--initials:focus{text-decoration:underline}.grants-profile--title .grants-profile--initials-colorscheme-2{background-color:var(--color-bus);color:var(--color-white)}.grants-profile--title .grants-profile--initials-colorscheme-1{background-color:var(--color-engel);color:var(--color-black)}.grants-profile--title .grants-profile--initials-colorscheme-0{background-color:var(--color-tram);color:var(--color-white)}.grants-profile--title h1{flex-grow:100}.grants-profile--basicinfo{--line-height: 1.5;background-color:var(--color-silver-light);border-bottom:8px solid var(--color-engel-dark);padding-bottom:var(--spacing-2-xs);padding-top:var(--spacing-l)}.grants-profile--basicinfo h3{font-size:var(--fontsize-heading-l);margin-top:0;padding-top:0}.grants-profile--extrainfo{padding-bottom:var(--spacing-l);padding-top:var(--spacing-l)}.grants-profile--extrainfo .hds-notification{margin-bottom:var(--spacing-xl)}.grants-profile--extrainfo fieldset.form-wrapper{background-color:var(--color-silver-light);border:0;padding:var(--spacing-l)}.grants-profile--extrainfo fieldset.inline-error-message{background-color:transparent;background-color:initial;padding:0 0 0 var(--spacing-2-xs)}.grants-profile--extrainfo fieldset.inline-error-message legend{display:none}.grants-profile--update-link{margin-bottom:var(--spacing-layout-2-xs);margin-top:var(--spacing-layout-xs)}.grants-profile--infotext{font-size:var(--fontsize-body-l);margin-bottom:var(--spacing-s)}.grants-profile--wrapper{display:flex;flex-wrap:wrap}.grants-profile--wrapper-item{margin-bottom:var(--spacing-layout-2-xs);width:100%}@media(min-width: 576px){.grants-profile--wrapper-item{flex:1;margin-bottom:0}}.grants-profile--wrapper-item:first-child{flex:auto;margin-bottom:var(--spacing-layout-2-xs);width:100%}.grants-profile .profile-add-more{margin-top:1em}[dir="ltr"] .grants-profile dd{margin-left:0}[dir="rtl"] .grants-profile dd{margin-right:0}.grants-profile--officials{margin-left:0;padding-left:0}.grants-profile--officials-item{border-left:4px var(--color-copper) solid;display:flex;flex-flow:row nowrap;justify-content:space-between;list-style:none;margin-bottom:var(--spacing-layout-s);margin-left:0;max-width:var(--webform-element-width--input-large);padding-left:var(--spacing-layout-xs);width:100%}.grants-profile--officials-item--position{font-size:var(--fontsize-heading-xs);font-weight:bold;margin-bottom:var(--spacing-layout-2-xs);margin-top:0;padding-top:0}.grants-profile--officials-edit-wrapper{text-align:right}.grants-profile--officials-edit-wrapper a{display:inline-block}.grants-profile .hel-icon--check-circle-fill{color:var(--color-success);vertical-align:middle}.grants-profile-grants-profile .tabledrag-toggle-weight-wrapper,.grants-profile-grants-profile .field-multiple-drag{display:none}.grants-profile .hds-text-input__label{display:inline-block;margin-top:0}.page--oma-asiointi__private-person .grants-profile--basicinfo{border-bottom:8px solid var(--color-copper)}.page--oma-asiointi__private-person .grants-profile--wrapper{display:grid;grid-template-columns:1fr 1fr}.page--oma-asiointi__unregistered-community .grants-profile--wrapper{display:grid;grid-template-columns:1fr 1fr}.hds-link .hel-icon{margin-right:var(--spacing-2-xs);vertical-align:bottom}.hds-link span.link-label{font-weight:bold;margin-right:var(--spacing-m)}.bold-link{font-weight:bold}div.applicant-info--from-prh,div.applicant-info--from-grants{display:grid;grid-template-columns:1fr}@media(min-width: 576px){div.applicant-info--from-prh,div.applicant-info--from-grants{grid-template-columns:1fr 1fr}}@media(min-width: 768px){div.applicant-info--from-prh,div.applicant-info--from-grants{grid-template-columns:1fr 1fr 1fr}}div.applicant-info--from-prh .form-required::after,div.applicant-info--from-grants .form-required::after{content:none}div.applicant-info--from-prh{border-bottom:2px solid var(--color-silver);margin-bottom:var(--spacing-layout-xs);padding-bottom:var(--spacing-layout-2-xs)}div.grants-handler--prefilled-field .field-prefix,.grants-profile-prh-info .field-prefix{display:block;position:absolute;right:var(--spacing-layout-s);top:0}div.grants-handler--prefilled-field .hds-text-input__input-wrapper,div.grants-handler--prefilled-field .description,.grants-profile-prh-info .hds-text-input__input-wrapper,.grants-profile-prh-info .description{display:inline-block;white-space:normal}div.grants-handler--prefilled-field .hel-icon--check-circle-fill,.grants-profile-prh-info .hel-icon--check-circle-fill{color:var(--color-success);vertical-align:middle}div.grants-handler--prefilled-field .hds-text-input__input,div.grants-handler--prefilled-field .webform-element-description,.grants-profile-prh-info .hds-text-input__input,.grants-profile-prh-info .webform-element-description{color:var(--color-black);display:block;font-size:var(--fontsize-body-m);line-height:var(--spacing-m);position:relative}div.grants-handler--prefilled-field .hds-text-input__label,.grants-profile-prh-info .hds-text-input__label{margin-bottom:0}.grants-profile--imported-section .webform-section-flex-wrapper{background-color:var(--color-silver-light);border-bottom:8px solid var(--color-engel-dark);display:block;padding-bottom:var(--spacing-2-xs);padding-left:var(--spacing-l);padding-right:var(--spacing-l);padding-top:var(--spacing-l);width:100%}.grants-profile--imported-section .webform-section-flex-wrapper h3.webform-section-title{font-size:var(--fontsize-heading-l);font-weight:400;margin-top:0;max-width:100%;padding-top:0;width:100%}.grants-profile--imported-section .webform-section-flex-wrapper .webform-section-wrapper{padding:0}.grants-profile--imported-section .webform-section-flex-wrapper .hds-text-input{margin-bottom:0}.grants-profile--imported-section .webform-section-flex-wrapper #edit-grants-profile-items-container{display:flex;flex-flow:row wrap;justify-content:space-between;margin-bottom:var(--spacing-layout-xs);margin-top:var(--spacing-layout-xs);width:100%}.grants-profile--imported-section .webform-section-flex-wrapper #edit-grants-profile-items-container>div{margin:0 var(--spacing-layout-xs) 0 0;min-width:160px}.grants-profile--imported-section .webform-section-flex-wrapper #edit-grants-profile-items-container .hds-text-input__input-wrapper{display:none}.grants-profile--imported-section .webform-section-flex-wrapper #edit-grants-profile-items-container label{font-size:var(--fontsize-body-m);font-weight:bold;margin:0}.grants-profile--imported-section .webform-section-flex-wrapper .form-item-prh-markup{border-bottom:2px solid var(--color-silver);padding-bottom:var(--spacing-layout-xs);padding-top:var(--spacing-layout-xs)}.grants-profile__local-tasks__wrapper{margin-bottom:0}.openid-connect-login-form.openid-connect-login-form{border-bottom:0;margin-bottom:0;padding-bottom:0}.grants-profile--links{display:flex;justify-content:space-between}.company-delete-confirm-form .form-actions{margin-top:var(--spacing-layout-xs)}.company-delete-confirm-form .form-submit{margin-right:var(--spacing-2-xs)}.page--oma-asiointi .main-content{margin-top:0}.page--oma-asiointi .main-content h2{margin-top:var(--spacing-m)}.hero--oma-asiointi{margin-bottom:var(--spacing-l)}.hero--oma-asiointi .container{padding-top:var(--spacing-layout-m)}.hero--oma-asiointi .hero__text-content{align-items:center;display:flex}.hero--oma-asiointi .hero__title{margin-left:0}@media(min-width: 576px){.hero--oma-asiointi .hero__title{margin-left:40px}}.hero--oma-asiointi .hel-icon{display:none}@media(min-width: 576px){.hero--oma-asiointi .hel-icon{--icon-size: 48px;display:block;flex-shrink:0}}#oma-asiointi__sent{background:var(--color-silver-light)}#oma-asiointi__sent .application-list__item{background:var(--color-white)}.oma-asiointi-block{background-color:var(--color-silver-light);padding-bottom:var(--spacing-l);padding-top:var(--spacing-l)}.oma-asiointi-block h2{margin-bottom:var(--spacing-s);margin-top:0}.oma-asiointi-block h3{font-size:var(--fontsize-heading-m);font-weight:500}.oma-asiointi-block .header{border-bottom:1px solid var(--color-silver-dark);display:flex;justify-content:space-between;padding-bottom:var(--spacing-xs)}.oma-asiointi-block .header .user,.oma-asiointi-block .header .link{font-weight:700}.oma-asiointi-block .header .link .hel-icon{vertical-align:text-top}.oma-asiointi-block--link{display:block;position:relative;text-decoration:none}.oma-asiointi-block--link::after{--icon-size: 1.5rem;background-color:#000;background-size:contain;content:"";display:inline-block;height:calc(var(--line-height) * 1em);height:var(--icon-size, calc(var(--line-height) * 1em));-webkit-mask-image:var(--hel-icon--arrow-right);mask-image:var(--hel-icon--arrow-right);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:calc(var(--line-height) * 1em) calc(var(--line-height) * 1em);mask-size:calc(var(--line-height) * 1em) calc(var(--line-height) * 1em);-webkit-mask-size:var(--icon-size, calc(var(--line-height) * 1em)) var(--icon-size, calc(var(--line-height) * 1em));mask-size:var(--icon-size, calc(var(--line-height) * 1em)) var(--icon-size, calc(var(--line-height) * 1em));vertical-align:bottom;width:calc(var(--line-height) * 1em);width:var(--icon-size, calc(var(--line-height) * 1em));transition:transform .2s linear;bottom:var(--spacing-m);content:"";display:block;flex-shrink:0;margin-left:-4px;margin-top:var(--spacing-2-xs);position:absolute;right:var(--spacing-m)}@media(prefers-reduced-motion){.oma-asiointi-block--link::after{transition:none}}@media(min-width: 576px){.oma-asiointi-block--link::after{--icon-size: 3rem;margin-left:-8px;margin-top:var(--spacing-s)}}.oma-asiointi-block--link:focus::after,.oma-asiointi-block--link:hover::after{transform:translateX(var(--spacing-2-xs))}@media(prefers-reduced-motion){.oma-asiointi-block--link:focus::after,.oma-asiointi-block--link:hover::after{transform:none}}.oma-asiointi-block .new-message{background-color:var(--color-alert);display:inline-block;font-weight:500;padding:var(--spacing-2-xs);text-transform:uppercase}.oma-asiointi-block .new-messages-length{background-color:var(--color-black-20);border-radius:50%;display:inline-block;font-size:var(--fontsize-heading-s);height:30px;line-height:30px;margin-left:var(--spacing-m);position:relative;text-align:center;width:30px}.oma-asiointi-block .new-messages-length.has-new-messages{background-color:var(--color-alert)}@media(min-width: 768px){.oma-asiointi-block .content{display:grid;grid-gap:var(--spacing-s);grid-template-columns:1fr 1fr}}.oma-asiointi-block .submission,.oma-asiointi-block .message{background-color:var(--color-white);margin-bottom:var(--spacing-s);margin-top:var(--spacing-s);padding:var(--spacing-m)}.oma-asiointi-block .submission .submission-title,.oma-asiointi-block .submission .message-title,.oma-asiointi-block .message .submission-title,.oma-asiointi-block .message .message-title{font-size:var(--fontsize-heading-s);font-weight:500;margin-bottom:var(--spacing-2-xs);margin-top:0;text-decoration:underline}.oma-asiointi-block .submission .message-title,.oma-asiointi-block .message .message-title{margin-top:var(--spacing-s)}.oma-asiointi-block .submission:hover .submission-title,.oma-asiointi-block .submission:hover .message-title,.oma-asiointi-block .message:hover .submission-title,.oma-asiointi-block .message:hover .message-title{text-decoration:none}.oma-asiointi-block .message{padding-right:var(--spacing-5-xl)}.oma-asiointi{margin-top:var(--spacing-l)}.oma-asiointi ul{padding:0}.oma-asiointi__list{padding-bottom:var(--spacing-l);padding-top:var(--spacing-l)}.oma-asiointi__list h2{margin-bottom:var(--spacing-m);margin-top:0}.oma-asiointi #oma-asiointi__sent{padding-top:var(--spacing-s)}.oma-asiointi .oma-asiointi-infoboxes-container .oma-asiointi-infoboxes{gap:var(--spacing-3-xl);margin:var(--spacing-2-xl) 0}@media(min-width: 768px){.oma-asiointi .oma-asiointi-infoboxes-container .oma-asiointi-infoboxes{display:flex}}.oma-asiointi .oma-asiointi-infoboxes-container .oma-asiointi-infobox{background-color:var(--color-info-light);flex:1;margin-bottom:var(--spacing-layout-2-xs);padding:var(--spacing-l)}@media(min-width: 768px){.oma-asiointi .oma-asiointi-infoboxes-container .oma-asiointi-infobox{margin-bottom:0}}.oma-asiointi .oma-asiointi-infoboxes-container .oma-asiointi-infobox:last-of-type{margin-bottom:0}.oma-asiointi .oma-asiointi-infoboxes-container .oma-asiointi-infobox--link{display:flex;margin-top:var(--spacing-layout-2-xs)}.oma-asiointi .oma-asiointi-infoboxes-container .oma-asiointi-infobox--link a{font-size:1.25rem}.oma-asiointi .oma-asiointi-infoboxes-container .oma-asiointi-infobox h3{margin-top:0}.asiointirooli-block{background-color:var(--color-black);color:var(--color-white);font-weight:500;margin-bottom:16px;padding:var(--spacing-2-xs)}.asiointirooli-block a{color:var(--color-white)}.asiointirooli-block .link--switch-role,.asiointirooli-block .link--stop-mandate{color:var(--color-white);margin-left:var(--spacing-layout-s)}@media(max-width: 768px){.asiointirooli-block .link--switch-role,.asiointirooli-block .link--stop-mandate{display:block;margin-left:0}}.asiointirooli-block .link--stop-mandate::before{--icon-size: 1.5rem;background-color:#000;background-size:contain;content:"";display:inline-block;height:calc(var(--line-height) * 1em);height:var(--icon-size, calc(var(--line-height) * 1em));-webkit-mask-image:var(--hel-icon--cross-circle-fill);mask-image:var(--hel-icon--cross-circle-fill);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:calc(var(--line-height) * 1em) calc(var(--line-height) * 1em);mask-size:calc(var(--line-height) * 1em) calc(var(--line-height) * 1em);-webkit-mask-size:var(--icon-size, calc(var(--line-height) * 1em)) var(--icon-size, calc(var(--line-height) * 1em));mask-size:var(--icon-size, calc(var(--line-height) * 1em)) var(--icon-size, calc(var(--line-height) * 1em));vertical-align:bottom;width:calc(var(--line-height) * 1em);width:var(--icon-size, calc(var(--line-height) * 1em));background-color:var(--color-white);content:"";display:inline-block;margin-right:10px;-webkit-mask-image:url('data:image/svg+xml, ');mask-image:url('data:image/svg+xml, ')}.asiointirooli-block .link--switch-role::before{--icon-size: 1.5rem;background-color:#000;background-size:contain;content:"";display:inline-block;height:calc(var(--line-height) * 1em);height:var(--icon-size, calc(var(--line-height) * 1em));-webkit-mask-image:var(--hel-icon--swap-user);mask-image:var(--hel-icon--swap-user);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:calc(var(--line-height) * 1em) calc(var(--line-height) * 1em);mask-size:calc(var(--line-height) * 1em) calc(var(--line-height) * 1em);-webkit-mask-size:var(--icon-size, calc(var(--line-height) * 1em)) var(--icon-size, calc(var(--line-height) * 1em));mask-size:var(--icon-size, calc(var(--line-height) * 1em)) var(--icon-size, calc(var(--line-height) * 1em));vertical-align:bottom;width:calc(var(--line-height) * 1em);width:var(--icon-size, calc(var(--line-height) * 1em));background-color:var(--color-white);content:"";display:inline-block;margin-right:10px;-webkit-mask-image:url('data:image/svg+xml, ');mask-image:url('data:image/svg+xml, ')}#grants-mandate-type .form-actions{display:flex;flex-direction:column;flex-wrap:wrap;justify-content:flex-start;width:100%}@media(min-width: 576px){#grants-mandate-type .form-actions{flex-direction:row;margin-left:calc(-1*var(--spacing-m));width:calc(100% + var(--spacing-m))}}#grants-mandate-type .form-actions .hds-card--applicant-role{margin-bottom:var(--spacing-l);position:relative;width:100%}@media(min-width: 576px){#grants-mandate-type .form-actions .hds-card--applicant-role{margin-left:var(--spacing-m);width:calc(50% - var(--spacing-m))}}@media(min-width: 992px){#grants-mandate-type .form-actions .hds-card--applicant-role{width:calc(33.3333333333% - var(--spacing-m))}}#grants-mandate-type .form-actions .hds-card--applicant-role .hds-card__body{align-content:space-between;height:100%}#grants-mandate-type .form-actions .hds-card--applicant-role .hds-card--mandate-card-content{display:grid;gap:var(--spacing-m);grid-gap:var(--spacing-m)} diff --git a/public/themes/custom/hdbt_subtheme/dist/js/dialog.min.js b/public/themes/custom/hdbt_subtheme/dist/js/dialog.min.js deleted file mode 100644 index 807aa16578..0000000000 --- a/public/themes/custom/hdbt_subtheme/dist/js/dialog.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(){var t;!function(t,Drupal,drupalSettings){drupalSettings.dialog={autoOpen:!0,dialogClass:"",buttonClass:"button",buttonPrimaryClass:"button--primary",close:function(t){Drupal.dialog(t.target).close(),Drupal.detachBehaviors(t.target,null,"unload")}},Drupal.dialog=function(i,e){const s=t(i),o={open:!1,returnValue:undefined};function a(i){i=t.extend({},drupalSettings.dialog,e,i),t(window).trigger("dialog:beforecreate",[o,s,i]),s.dialog(i),o.open=!0,t(window).trigger("dialog:aftercreate",[o,s,i])}return o.show=function(){a({modal:!1})},o.showModal=function(){a({modal:!0})},o.close=function(i){t(window).trigger("dialog:beforeclose",[o,s]),s.dialog("close"),o.returnValue=i,o.open=!1,t(window).trigger("dialog:afterclose",[o,s])},o}}(jQuery,Drupal,drupalSettings),(t=jQuery).widget("ui.dialog",{version:"1.13.2",options:{appendTo:"body",autoOpen:!0,buttons:[],classes:{"ui-dialog":"ui-corner-all","ui-dialog-titlebar":"ui-corner-all"},closeOnEscape:!0,closeText:"Close",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using(i){const e=t(this).css(i).offset().top;e<0&&t(this).css("top",i.top-e)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),null==this.options.title&&null!=this.originalTitle&&(this.options.title=this.originalTitle),this.options.disabled&&(this.options.disabled=!1),this._createWrapper(),this.element.show().removeAttr("title").appendTo(this.uiDialog),this._addClass("ui-dialog-content","ui-widget-content"),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&t.fn.draggable&&this._makeDraggable(),this.options.resizable&&t.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init(){this.options.autoOpen&&this.open()},_appendTo(){const i=this.options.appendTo;return i&&(i.jquery||i.nodeType)?t(i):this.document.find(i||"body").eq(0)},_destroy(){let t;const{originalPosition:i}=this;this._untrackInstance(),this._destroyOverlay(),this.element.removeUniqueId().css(this.originalCss).detach(),this.uiDialog.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),t=i.parent.children().eq(i.index),t.length&&t[0]!==this.element[0]?t.before(this.element):i.parent.append(this.element)},widget(){return this.uiDialog},disable:t.noop,enable:t.noop,close(i){const e=this;this._isOpen&&!1!==this._trigger("beforeClose",i)&&(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),this.opener.filter(":focusable").trigger("focus").length||t.ui.safeBlur(t.ui.safeActiveElement(this.document[0])),this._hide(this.uiDialog,this.options.hide,(function(){e._trigger("close",i)})))},isOpen(){return this._isOpen},moveToTop(){this._moveToTop()},_moveToTop(i,e){let s=!1;const o=this.uiDialog.siblings(".ui-front:visible").map((function(){return+t(this).css("z-index")})).get(),a=Math.max.apply(null,o);return a>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",a+1),s=!0),s&&!e&&this._trigger("focus",i),s},open(){const i=this;this._isOpen?this._moveToTop()&&this._focusTabbable():(this._isOpen=!0,this.opener=t(t.ui.safeActiveElement(this.document[0])),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,(function(){i._focusTabbable(),i._trigger("focus")})),this._makeFocusTarget(),this._trigger("open"))},_focusTabbable(){let t=this._focusedElement;t||(t=this.element.find("[autofocus]")),t.length||(t=this.element.find(":tabbable")),t.length||(t=this.uiDialogButtonPane.find(":tabbable")),t.length||(t=this.uiDialogTitlebarClose.filter(":tabbable")),t.length||(t=this.uiDialog),t.eq(0).trigger("focus")},_restoreTabbableFocus(){const i=t.ui.safeActiveElement(this.document[0]);this.uiDialog[0]===i||t.contains(this.uiDialog[0],i)||this._focusTabbable()},_keepFocus(t){t.preventDefault(),this._restoreTabbableFocus(),this._delay(this._restoreTabbableFocus)},_createWrapper(){this.uiDialog=t("
").hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._addClass(this.uiDialog,"ui-dialog","ui-widget ui-widget-content ui-front"),this._on(this.uiDialog,{keydown(i){if(this.options.closeOnEscape&&!i.isDefaultPrevented()&&i.keyCode&&i.keyCode===t.ui.keyCode.ESCAPE)return i.preventDefault(),void this.close(i);if(i.keyCode!==t.ui.keyCode.TAB||i.isDefaultPrevented())return;const e=this.uiDialog.find(":tabbable"),s=e.first(),o=e.last();i.target!==o[0]&&i.target!==this.uiDialog[0]||i.shiftKey?i.target!==s[0]&&i.target!==this.uiDialog[0]||!i.shiftKey||(this._delay((function(){o.trigger("focus")})),i.preventDefault()):(this._delay((function(){s.trigger("focus")})),i.preventDefault())},mousedown(t){this._moveToTop(t)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar(){let i;this.uiDialogTitlebar=t("
"),this._addClass(this.uiDialogTitlebar,"ui-dialog-titlebar","ui-widget-header ui-helper-clearfix"),this._on(this.uiDialogTitlebar,{mousedown(i){t(i.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.trigger("focus")}}),this.uiDialogTitlebarClose=t("").button({label:t("").text(this.options.closeText).html(),icon:"ui-icon-closethick",showLabel:!1}).appendTo(this.uiDialogTitlebar),this._addClass(this.uiDialogTitlebarClose,"ui-dialog-titlebar-close"),this._on(this.uiDialogTitlebarClose,{click(t){t.preventDefault(),this.close(t)}}),i=t("

").uniqueId().prependTo(this.uiDialogTitlebar),this._addClass(i,"ui-dialog-title"),this._title(i),this.uiDialogTitlebar.prependTo(this.uiDialog),this.uiDialog.attr({"aria-labelledby":i.attr("id")})},_title(i){this.options.title?(i.text(this.options.title),t('').prependTo(i)):i.html(" ")},_createButtonPane(){this.uiDialogButtonPane=t("
"),this._addClass(this.uiDialogButtonPane,"ui-dialog-buttonpane","ui-widget-content ui-helper-clearfix"),this.uiButtonSet=t("
").appendTo(this.uiDialogButtonPane),this._addClass(this.uiButtonSet,"ui-dialog-buttonset"),this._createButtons()},_createButtons(){const i=this,{buttons:e}=this.options;this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),t.isEmptyObject(e)||Array.isArray(e)&&!e.length?this._removeClass(this.uiDialog,"ui-dialog-buttons"):(t.each(e,(function(e,s){let o,a;s="function"==typeof s?{click:s,text:e}:s,s=t.extend({type:"button"},s),o=s.click,a={icon:s.icon,iconPosition:s.iconPosition,showLabel:s.showLabel,icons:s.icons,text:s.text},delete s.click,delete s.icon,delete s.iconPosition,delete s.showLabel,delete s.icons,"boolean"==typeof s.text&&delete s.text,t("",s).button(a).addClass(` hds-button hds-button--${s.buttonType?s.buttonType:"primary"}`).appendTo(i.uiButtonSet).on("click",(function(){o.apply(i.element[0],arguments)}))})),this._addClass(this.uiDialog,"ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog))},_makeDraggable(){const i=this,{options:e}=this;function s(t){return{position:t.position,offset:t.offset}}this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start(e,o){i._addClass(t(this),"ui-dialog-dragging"),i._blockFrames(),i._trigger("dragStart",e,s(o))},drag(t,e){i._trigger("drag",t,s(e))},stop(o,a){const n=a.offset.left-i.document.scrollLeft(),l=a.offset.top-i.document.scrollTop();e.position={my:"left top",at:`left${n>=0?"+":""}${n} top${l>=0?"+":""}${l}`,of:i.window},i._removeClass(t(this),"ui-dialog-dragging"),i._unblockFrames(),i._trigger("dragStop",o,s(a))}})},_makeResizable(){const i=this,{options:e}=this,s=e.resizable,o=this.uiDialog.css("position"),a="string"==typeof s?s:"n,e,s,w,se,sw,ne,nw";function n(t){return{originalPosition:t.originalPosition,originalSize:t.originalSize,position:t.position,size:t.size}}this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:e.maxWidth,maxHeight:e.maxHeight,minWidth:e.minWidth,minHeight:this._minHeight(),handles:a,start(e,s){i._addClass(t(this),"ui-dialog-resizing"),i._blockFrames(),i._trigger("resizeStart",e,n(s))},resize(t,e){i._trigger("resize",t,n(e))},stop(s,o){const a=i.uiDialog.offset(),l=a.left-i.document.scrollLeft(),h=a.top-i.document.scrollTop();e.height=i.uiDialog.height(),e.width=i.uiDialog.width(),e.position={my:"left top",at:`left${l>=0?"+":""}${l} top${h>=0?"+":""}${h}`,of:i.window},i._removeClass(t(this),"ui-dialog-resizing"),i._unblockFrames(),i._trigger("resizeStop",s,n(o))}}).css("position",o)},_trackFocus(){this._on(this.widget(),{focusin(i){this._makeFocusTarget(),this._focusedElement=t(i.target)}})},_makeFocusTarget(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance(){const i=this._trackingInstances(),e=t.inArray(this,i);-1!==e&&i.splice(e,1)},_trackingInstances(){let t=this.document.data("ui-dialog-instances");return t||(t=[],this.document.data("ui-dialog-instances",t)),t},_minHeight(){const{options:t}=this;return"auto"===t.height?t.minHeight:Math.min(t.minHeight,t.height)},_position(){const t=this.uiDialog.is(":visible");t||this.uiDialog.show(),this.uiDialog.position(this.options.position),t||this.uiDialog.hide()},_setOptions(i){const e=this;let s=!1;const o={};t.each(i,(function(t,i){e._setOption(t,i),t in e.sizeRelatedOptions&&(s=!0),t in e.resizableRelatedOptions&&(o[t]=i)})),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",o)},_setOption(i,e){let s,o;const{uiDialog:a}=this;"disabled"!==i&&(this._super(i,e),"appendTo"===i&&this.uiDialog.appendTo(this._appendTo()),"buttons"===i&&this._createButtons(),"closeText"===i&&this.uiDialogTitlebarClose.button({label:t("").text(`${this.options.closeText}`).html()}),"draggable"===i&&(s=a.is(":data(ui-draggable)"),s&&!e&&a.draggable("destroy"),!s&&e&&this._makeDraggable()),"position"===i&&this._position(),"resizable"===i&&(o=a.is(":data(ui-resizable)"),o&&!e&&a.resizable("destroy"),o&&"string"==typeof e&&a.resizable("option","handles",e),o||!1===e||this._makeResizable()),"title"===i&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size(){let t,i,e;const{options:s}=this;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),t=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),i=Math.max(0,s.minHeight-t),e="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-t):"none","auto"===s.height?this.element.css({minHeight:i,maxHeight:e,height:"auto"}):this.element.height(Math.max(0,s.height-t)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames(){this.iframeBlocks=this.document.find("iframe").map((function(){const i=t(this);return t("
").css({position:"absolute",width:i.outerWidth(),height:i.outerHeight()}).appendTo(i.parent()).offset(i.offset())[0]}))},_unblockFrames(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:i=>!!t(i.target).closest(".ui-dialog").length||!!t(i.target).closest(".ui-datepicker").length,_createOverlay(){if(!this.options.modal)return;const i=t.fn.jquery.substring(0,4);let e=!0;this._delay((function(){e=!1})),this.document.data("ui-dialog-overlays")||this.document.on("focusin.ui-dialog",function(t){if(e)return;const s=this._trackingInstances()[0];s._allowInteraction(t)||(t.preventDefault(),s._focusTabbable(),"3.4."!==i&&"3.5."!==i||s._delay(s._restoreTabbableFocus))}.bind(this)),this.overlay=t("
").appendTo(this._appendTo()),this._addClass(this.overlay,null,"ui-widget-overlay ui-front"),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1)},_destroyOverlay(){if(this.options.modal&&this.overlay){const t=this.document.data("ui-dialog-overlays")-1;t?this.document.data("ui-dialog-overlays",t):(this.document.off("focusin.ui-dialog"),this.document.removeData("ui-dialog-overlays")),this.overlay.remove(),this.overlay=null}}}),!1!==t.uiBackCompat&&t.widget("ui.dialog",t.ui.dialog,{options:{dialogClass:""},_createWrapper(){this._super(),this.uiDialog.addClass(this.options.dialogClass)},_setOption(t,i){"dialogClass"===t&&this.uiDialog.removeClass(this.options.dialogClass).addClass(i),this._superApply(arguments)}}),t.ui.dialog}(); \ No newline at end of file diff --git a/public/themes/custom/hdbt_subtheme/hdbt_subtheme.info.yml b/public/themes/custom/hdbt_subtheme/hdbt_subtheme.info.yml index d0ffb5be1c..861f6de9a0 100644 --- a/public/themes/custom/hdbt_subtheme/hdbt_subtheme.info.yml +++ b/public/themes/custom/hdbt_subtheme/hdbt_subtheme.info.yml @@ -32,9 +32,6 @@ libraries: - hdbt_subtheme/global-scripting libraries-override: - core/drupal.dialog: - js: - misc/dialog/dialog.js: dist/js/dialog.min.js webform/webform.element.help: js: js/webform.element.help.js: dist/js/webform.element.help.min.js diff --git a/public/themes/custom/hdbt_subtheme/package-lock.json b/public/themes/custom/hdbt_subtheme/package-lock.json index 99016083c1..737369b2cb 100644 --- a/public/themes/custom/hdbt_subtheme/package-lock.json +++ b/public/themes/custom/hdbt_subtheme/package-lock.json @@ -3310,9 +3310,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001640", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001640.tgz", - "integrity": "sha512-lA4VMpW0PSUrFnkmVuEKBUovSWKhj7puyCg8StBChgu298N1AtuF1sKWEvfDuimSEDbhlb/KqPKC3fs1HbuQUA==", + "version": "1.0.30001669", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001669.tgz", + "integrity": "sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w==", "funding": [ { "type": "opencollective", diff --git a/public/themes/custom/hdbt_subtheme/src/js/dialog.js b/public/themes/custom/hdbt_subtheme/src/js/dialog.js deleted file mode 100644 index ca09c5b16c..0000000000 --- a/public/themes/custom/hdbt_subtheme/src/js/dialog.js +++ /dev/null @@ -1,1003 +0,0 @@ -/** - * DO NOT EDIT THIS FILE. - * See the following change record for more information, - * https://www.drupal.org/node/2815083 - * @preserve - * */ - -(function ($, Drupal, drupalSettings) { - drupalSettings.dialog = { - autoOpen: true, - dialogClass: "", - buttonClass: "button", - buttonPrimaryClass: "button--primary", - close: function close(event) { - Drupal.dialog(event.target).close(); - Drupal.detachBehaviors(event.target, null, "unload"); - }, - }; - - Drupal.dialog = function (element, options) { - let undef; - const $element = $(element); - const dialog = { - open: false, - returnValue: undef, - }; - - function openDialog(settings) { - settings = $.extend({}, drupalSettings.dialog, options, settings); - $(window).trigger("dialog:beforecreate", [dialog, $element, settings]); - $element.dialog(settings); - dialog.open = true; - $(window).trigger("dialog:aftercreate", [dialog, $element, settings]); - } - - function closeDialog(value) { - $(window).trigger("dialog:beforeclose", [dialog, $element]); - $element.dialog("close"); - dialog.returnValue = value; - dialog.open = false; - $(window).trigger("dialog:afterclose", [dialog, $element]); - } - - dialog.show = function () { - openDialog({ - modal: false, - }); - }; - - dialog.showModal = function () { - openDialog({ - modal: true, - }); - }; - - dialog.close = closeDialog; - return dialog; - }; -})(jQuery, Drupal, drupalSettings); - -(function (factory) { - if (typeof define === "function" && define.amd) { - factory(jQuery); - } else { - // Browser globals - factory(jQuery); - } -})(function ($) { - $.widget("ui.dialog", { - version: "1.13.2", - options: { - appendTo: "body", - autoOpen: true, - buttons: [], - classes: { - "ui-dialog": "ui-corner-all", - "ui-dialog-titlebar": "ui-corner-all", - }, - closeOnEscape: true, - closeText: "Close", - draggable: true, - hide: null, - height: "auto", - maxHeight: null, - maxWidth: null, - minHeight: 150, - minWidth: 150, - modal: false, - position: { - my: "center", - at: "center", - of: window, - collision: "fit", - - // Ensure the titlebar is always visible - using(pos) { - const topOffset = $(this).css(pos).offset().top; - if (topOffset < 0) { - $(this).css("top", pos.top - topOffset); - } - }, - }, - resizable: true, - show: null, - title: null, - width: 300, - - // Callbacks - beforeClose: null, - close: null, - drag: null, - dragStart: null, - dragStop: null, - focus: null, - open: null, - resize: null, - resizeStart: null, - resizeStop: null, - }, - - sizeRelatedOptions: { - buttons: true, - height: true, - maxHeight: true, - maxWidth: true, - minHeight: true, - minWidth: true, - width: true, - }, - - resizableRelatedOptions: { - maxHeight: true, - maxWidth: true, - minHeight: true, - minWidth: true, - }, - - _create() { - this.originalCss = { - display: this.element[0].style.display, - width: this.element[0].style.width, - minHeight: this.element[0].style.minHeight, - maxHeight: this.element[0].style.maxHeight, - height: this.element[0].style.height, - }; - this.originalPosition = { - parent: this.element.parent(), - index: this.element.parent().children().index(this.element), - }; - this.originalTitle = this.element.attr("title"); - if (this.options.title == null && this.originalTitle != null) { - this.options.title = this.originalTitle; - } - - // Dialogs can't be disabled - if (this.options.disabled) { - this.options.disabled = false; - } - - this._createWrapper(); - - this.element.show().removeAttr("title").appendTo(this.uiDialog); - - this._addClass("ui-dialog-content", "ui-widget-content"); - - this._createTitlebar(); - - this._createButtonPane(); - - if (this.options.draggable && $.fn.draggable) { - this._makeDraggable(); - } - if (this.options.resizable && $.fn.resizable) { - this._makeResizable(); - } - - this._isOpen = false; - - this._trackFocus(); - }, - - _init() { - if (this.options.autoOpen) { - this.open(); - } - }, - - _appendTo() { - const element = this.options.appendTo; - if (element && (element.jquery || element.nodeType)) { - return $(element); - } - return this.document.find(element || "body").eq(0); - }, - - _destroy() { - let next; - const { originalPosition } = this; - - this._untrackInstance(); - this._destroyOverlay(); - - this.element - .removeUniqueId() - .css(this.originalCss) - - // Without detaching first, the following becomes really slow - .detach(); - - this.uiDialog.remove(); - - if (this.originalTitle) { - this.element.attr("title", this.originalTitle); - } - next = originalPosition.parent.children().eq(originalPosition.index); - - // Don't try to place the dialog next to itself (#8613) - if (next.length && next[0] !== this.element[0]) { - next.before(this.element); - } else { - originalPosition.parent.append(this.element); - } - }, - - widget() { - return this.uiDialog; - }, - - disable: $.noop, - enable: $.noop, - - close(event) { - const that = this; - - if (!this._isOpen || this._trigger("beforeClose", event) === false) { - return; - } - - this._isOpen = false; - this._focusedElement = null; - this._destroyOverlay(); - this._untrackInstance(); - - if (!this.opener.filter(":focusable").trigger("focus").length) { - // Hiding a focused element doesn't trigger blur in WebKit - // so in case we have nothing to focus on, explicitly blur the active element - // https://bugs.webkit.org/show_bug.cgi?id=47182 - $.ui.safeBlur($.ui.safeActiveElement(this.document[0])); - } - - this._hide(this.uiDialog, this.options.hide, function () { - that._trigger("close", event); - }); - }, - - isOpen() { - return this._isOpen; - }, - - moveToTop() { - this._moveToTop(); - }, - - _moveToTop(event, silent) { - let moved = false; - const zIndices = this.uiDialog - .siblings(".ui-front:visible") - .map(function () { - return +$(this).css("z-index"); - }) - .get(); - const zIndexMax = Math.max.apply(null, zIndices); - - if (zIndexMax >= +this.uiDialog.css("z-index")) { - this.uiDialog.css("z-index", zIndexMax + 1); - moved = true; - } - - if (moved && !silent) { - this._trigger("focus", event); - } - return moved; - }, - - open() { - const that = this; - if (this._isOpen) { - if (this._moveToTop()) { - this._focusTabbable(); - } - return; - } - - this._isOpen = true; - this.opener = $($.ui.safeActiveElement(this.document[0])); - - this._size(); - this._position(); - this._createOverlay(); - this._moveToTop(null, true); - - // Ensure the overlay is moved to the top with the dialog, but only when - // opening. The overlay shouldn't move after the dialog is open so that - // modeless dialogs opened after the modal dialog stack properly. - if (this.overlay) { - this.overlay.css("z-index", this.uiDialog.css("z-index") - 1); - } - - this._show(this.uiDialog, this.options.show, function () { - that._focusTabbable(); - that._trigger("focus"); - }); - - // Track the dialog immediately upon opening in case a focus event - // somehow occurs outside of the dialog before an element inside the - // dialog is focused (#10152) - this._makeFocusTarget(); - - this._trigger("open"); - }, - - _focusTabbable() { - // Set focus to the first match: - // 1. An element that was focused previously - // 2. First element inside the dialog matching [autofocus] - // 3. Tabbable element inside the content element - // 4. Tabbable element inside the buttonpane - // 5. The close button - // 6. The dialog itself - let hasFocus = this._focusedElement; - if (!hasFocus) { - hasFocus = this.element.find("[autofocus]"); - } - if (!hasFocus.length) { - hasFocus = this.element.find(":tabbable"); - } - if (!hasFocus.length) { - hasFocus = this.uiDialogButtonPane.find(":tabbable"); - } - if (!hasFocus.length) { - hasFocus = this.uiDialogTitlebarClose.filter(":tabbable"); - } - if (!hasFocus.length) { - hasFocus = this.uiDialog; - } - hasFocus.eq(0).trigger("focus"); - }, - - _restoreTabbableFocus() { - const activeElement = $.ui.safeActiveElement(this.document[0]); - const isActive = - this.uiDialog[0] === activeElement || - $.contains(this.uiDialog[0], activeElement); - if (!isActive) { - this._focusTabbable(); - } - }, - - _keepFocus(event) { - event.preventDefault(); - this._restoreTabbableFocus(); - - // support: IE - // IE <= 8 doesn't prevent moving focus even with event.preventDefault() - // so we check again later - this._delay(this._restoreTabbableFocus); - }, - - _createWrapper() { - this.uiDialog = $("
") - .hide() - .attr({ - // Setting tabIndex makes the div focusable - tabIndex: -1, - role: "dialog", - }) - .appendTo(this._appendTo()); - - this._addClass( - this.uiDialog, - "ui-dialog", - "ui-widget ui-widget-content ui-front", - ); - this._on(this.uiDialog, { - keydown(event) { - if ( - this.options.closeOnEscape && - !event.isDefaultPrevented() && - event.keyCode && - event.keyCode === $.ui.keyCode.ESCAPE - ) { - event.preventDefault(); - this.close(event); - return; - } - - // Prevent tabbing out of dialogs - if ( - event.keyCode !== $.ui.keyCode.TAB || - event.isDefaultPrevented() - ) { - return; - } - const tabbables = this.uiDialog.find(":tabbable"); - const first = tabbables.first(); - const last = tabbables.last(); - - if ( - (event.target === last[0] || event.target === this.uiDialog[0]) && - !event.shiftKey - ) { - this._delay(function () { - first.trigger("focus"); - }); - event.preventDefault(); - } else if ( - (event.target === first[0] || event.target === this.uiDialog[0]) && - event.shiftKey - ) { - this._delay(function () { - last.trigger("focus"); - }); - event.preventDefault(); - } - }, - mousedown(event) { - if (this._moveToTop(event)) { - this._focusTabbable(); - } - }, - }); - - // We assume that any existing aria-describedby attribute means - // that the dialog content is marked up properly - // otherwise we brute force the content as the description - if (!this.element.find("[aria-describedby]").length) { - this.uiDialog.attr({ - "aria-describedby": this.element.uniqueId().attr("id"), - }); - } - }, - - _createTitlebar() { - let uiDialogTitle; - - this.uiDialogTitlebar = $("
"); - this._addClass( - this.uiDialogTitlebar, - "ui-dialog-titlebar", - "ui-widget-header ui-helper-clearfix", - ); - this._on(this.uiDialogTitlebar, { - mousedown(event) { - // Don't prevent click on close button (#8838) - // Focusing a dialog that is partially scrolled out of view - // causes the browser to scroll it into view, preventing the click event - if (!$(event.target).closest(".ui-dialog-titlebar-close")) { - // Dialog isn't getting focus when dragging (#8063) - this.uiDialog.trigger("focus"); - } - }, - }); - - // Support: IE - // Use type="button" to prevent enter keypresses in textboxes from closing the - // dialog in IE (#9312) - this.uiDialogTitlebarClose = $("") - .button({ - label: $("").text(this.options.closeText).html(), - icon: "ui-icon-closethick", - showLabel: false, - }) - .appendTo(this.uiDialogTitlebar); - - this._addClass(this.uiDialogTitlebarClose, "ui-dialog-titlebar-close"); - this._on(this.uiDialogTitlebarClose, { - click(event) { - event.preventDefault(); - this.close(event); - }, - }); - let uiIcon; - uiDialogTitle = $("

").uniqueId().prependTo(this.uiDialogTitlebar); - - this._addClass(uiDialogTitle, "ui-dialog-title"); - this._title(uiDialogTitle); - - this.uiDialogTitlebar.prependTo(this.uiDialog); - - this.uiDialog.attr({ - "aria-labelledby": uiDialogTitle.attr("id"), - }); - }, - - _title(title) { - if (this.options.title) { - title.text(this.options.title); - $( - '', - ).prependTo(title); - } else { - title.html(" "); - } - }, - - _createButtonPane() { - this.uiDialogButtonPane = $("
"); - this._addClass( - this.uiDialogButtonPane, - "ui-dialog-buttonpane", - "ui-widget-content ui-helper-clearfix", - ); - - this.uiButtonSet = $("
").appendTo(this.uiDialogButtonPane); - this._addClass(this.uiButtonSet, "ui-dialog-buttonset"); - - this._createButtons(); - }, - - _createButtons() { - const that = this; - const { buttons } = this.options; - - // If we already have a button pane, remove it - this.uiDialogButtonPane.remove(); - this.uiButtonSet.empty(); - - if ( - $.isEmptyObject(buttons) || - (Array.isArray(buttons) && !buttons.length) - ) { - this._removeClass(this.uiDialog, "ui-dialog-buttons"); - return; - } - - $.each(buttons, function (name, props) { - let click; - let buttonOptions; - props = - typeof props === "function" ? { click: props, text: name } : props; - - // Default to a non-submitting button - props = $.extend({ type: "button" }, props); - // Change the context for the click callback to be the main element - click = props.click; - buttonOptions = { - icon: props.icon, - iconPosition: props.iconPosition, - showLabel: props.showLabel, - - // Deprecated options - icons: props.icons, - text: props.text, - }; - - delete props.click; - delete props.icon; - delete props.iconPosition; - delete props.showLabel; - - // Deprecated options - delete props.icons; - if (typeof props.text === "boolean") { - delete props.text; - } - - $("", props) - .button(buttonOptions) - .addClass( - ` hds-button hds-button--${ - props.buttonType ? props.buttonType : "primary" - }`, - ) - .appendTo(that.uiButtonSet) - .on("click", function () { - click.apply(that.element[0], arguments); - }); - }); - this._addClass(this.uiDialog, "ui-dialog-buttons"); - this.uiDialogButtonPane.appendTo(this.uiDialog); - }, - - _makeDraggable() { - const that = this; - const { options } = this; - - function filteredUi(ui) { - return { - position: ui.position, - offset: ui.offset, - }; - } - - this.uiDialog.draggable({ - cancel: ".ui-dialog-content, .ui-dialog-titlebar-close", - handle: ".ui-dialog-titlebar", - containment: "document", - start(event, ui) { - that._addClass($(this), "ui-dialog-dragging"); - that._blockFrames(); - that._trigger("dragStart", event, filteredUi(ui)); - }, - drag(event, ui) { - that._trigger("drag", event, filteredUi(ui)); - }, - stop(event, ui) { - const left = ui.offset.left - that.document.scrollLeft(); - const top = ui.offset.top - that.document.scrollTop(); - - options.position = { - my: "left top", - at: - `left${left >= 0 ? "+" : ""}${left} ` + - `top${top >= 0 ? "+" : ""}${top}`, - of: that.window, - }; - that._removeClass($(this), "ui-dialog-dragging"); - that._unblockFrames(); - that._trigger("dragStop", event, filteredUi(ui)); - }, - }); - }, - - _makeResizable() { - const that = this; - const { options } = this; - const handles = options.resizable; - - // .ui-resizable has position: relative defined in the stylesheet - // but dialogs have to use absolute or fixed positioning - const position = this.uiDialog.css("position"); - const resizeHandles = - typeof handles === "string" ? handles : "n,e,s,w,se,sw,ne,nw"; - - function filteredUi(ui) { - return { - originalPosition: ui.originalPosition, - originalSize: ui.originalSize, - position: ui.position, - size: ui.size, - }; - } - - this.uiDialog - .resizable({ - cancel: ".ui-dialog-content", - containment: "document", - alsoResize: this.element, - maxWidth: options.maxWidth, - maxHeight: options.maxHeight, - minWidth: options.minWidth, - minHeight: this._minHeight(), - handles: resizeHandles, - start(event, ui) { - that._addClass($(this), "ui-dialog-resizing"); - that._blockFrames(); - that._trigger("resizeStart", event, filteredUi(ui)); - }, - resize(event, ui) { - that._trigger("resize", event, filteredUi(ui)); - }, - stop(event, ui) { - const offset = that.uiDialog.offset(); - const left = offset.left - that.document.scrollLeft(); - const top = offset.top - that.document.scrollTop(); - - options.height = that.uiDialog.height(); - options.width = that.uiDialog.width(); - options.position = { - my: "left top", - at: - `left${left >= 0 ? "+" : ""}${left} ` + - `top${top >= 0 ? "+" : ""}${top}`, - of: that.window, - }; - that._removeClass($(this), "ui-dialog-resizing"); - that._unblockFrames(); - that._trigger("resizeStop", event, filteredUi(ui)); - }, - }) - .css("position", position); - }, - - _trackFocus() { - this._on(this.widget(), { - focusin(event) { - this._makeFocusTarget(); - this._focusedElement = $(event.target); - }, - }); - }, - - _makeFocusTarget() { - this._untrackInstance(); - this._trackingInstances().unshift(this); - }, - - _untrackInstance() { - const instances = this._trackingInstances(); - const exists = $.inArray(this, instances); - if (exists !== -1) { - instances.splice(exists, 1); - } - }, - - _trackingInstances() { - let instances = this.document.data("ui-dialog-instances"); - if (!instances) { - instances = []; - this.document.data("ui-dialog-instances", instances); - } - return instances; - }, - - _minHeight() { - const { options } = this; - - return options.height === "auto" - ? options.minHeight - : Math.min(options.minHeight, options.height); - }, - - _position() { - // Need to show the dialog to get the actual offset in the position plugin - const isVisible = this.uiDialog.is(":visible"); - if (!isVisible) { - this.uiDialog.show(); - } - this.uiDialog.position(this.options.position); - if (!isVisible) { - this.uiDialog.hide(); - } - }, - - _setOptions(options) { - const that = this; - let resize = false; - const resizableOptions = {}; - - $.each(options, function (key, value) { - that._setOption(key, value); - - if (key in that.sizeRelatedOptions) { - resize = true; - } - if (key in that.resizableRelatedOptions) { - resizableOptions[key] = value; - } - }); - - if (resize) { - this._size(); - this._position(); - } - if (this.uiDialog.is(":data(ui-resizable)")) { - this.uiDialog.resizable("option", resizableOptions); - } - }, - - _setOption(key, value) { - let isDraggable; - let isResizable; - const { uiDialog } = this; - - if (key === "disabled") { - return; - } - - this._super(key, value); - - if (key === "appendTo") { - this.uiDialog.appendTo(this._appendTo()); - } - - if (key === "buttons") { - this._createButtons(); - } - - if (key === "closeText") { - this.uiDialogTitlebarClose.button({ - // Ensure that we always pass a string - label: $("").text(`${this.options.closeText}`).html(), - }); - } - - if (key === "draggable") { - isDraggable = uiDialog.is(":data(ui-draggable)"); - if (isDraggable && !value) { - uiDialog.draggable("destroy"); - } - - if (!isDraggable && value) { - this._makeDraggable(); - } - } - - if (key === "position") { - this._position(); - } - - if (key === "resizable") { - // currently resizable, becoming non-resizable - isResizable = uiDialog.is(":data(ui-resizable)"); - if (isResizable && !value) { - uiDialog.resizable("destroy"); - } - - // Currently resizable, changing handles - if (isResizable && typeof value === "string") { - uiDialog.resizable("option", "handles", value); - } - - // Currently non-resizable, becoming resizable - if (!isResizable && value !== false) { - this._makeResizable(); - } - } - - if (key === "title") { - this._title(this.uiDialogTitlebar.find(".ui-dialog-title")); - } - }, - - _size() { - // If the user has resized the dialog, the .ui-dialog and .ui-dialog-content - // divs will both have width and height set, so we need to reset them - let nonContentHeight; - let minContentHeight; - let maxContentHeight; - const { options } = this; - - // Reset content sizing - this.element.show().css({ - width: "auto", - minHeight: 0, - maxHeight: "none", - height: 0, - }); - - if (options.minWidth > options.width) { - options.width = options.minWidth; - } - - // Reset wrapper sizing - // determine the height of all the non-content elements - nonContentHeight = this.uiDialog - .css({ - height: "auto", - width: options.width, - }) - .outerHeight(); - minContentHeight = Math.max(0, options.minHeight - nonContentHeight); - maxContentHeight = - typeof options.maxHeight === "number" - ? Math.max(0, options.maxHeight - nonContentHeight) - : "none"; - - if (options.height === "auto") { - this.element.css({ - minHeight: minContentHeight, - maxHeight: maxContentHeight, - height: "auto", - }); - } else { - this.element.height(Math.max(0, options.height - nonContentHeight)); - } - - if (this.uiDialog.is(":data(ui-resizable)")) { - this.uiDialog.resizable("option", "minHeight", this._minHeight()); - } - }, - - _blockFrames() { - this.iframeBlocks = this.document.find("iframe").map(function () { - const iframe = $(this); - - return $("
") - .css({ - position: "absolute", - width: iframe.outerWidth(), - height: iframe.outerHeight(), - }) - .appendTo(iframe.parent()) - .offset(iframe.offset())[0]; - }); - }, - - _unblockFrames() { - if (this.iframeBlocks) { - this.iframeBlocks.remove(); - delete this.iframeBlocks; - } - }, - - _allowInteraction(event) { - if ($(event.target).closest(".ui-dialog").length) { - return true; - } - - // TODO: Remove hack when datepicker implements - // the .ui-front logic (#8989) - return !!$(event.target).closest(".ui-datepicker").length; - }, - - _createOverlay() { - if (!this.options.modal) { - return; - } - - const jqMinor = $.fn.jquery.substring(0, 4); - - // We use a delay in case the overlay is created from an - // event that we're going to be cancelling (#2804) - let isOpening = true; - this._delay(function () { - isOpening = false; - }); - - if (!this.document.data("ui-dialog-overlays")) { - // Prevent use of anchors and inputs - // This doesn't use `_on()` because it is a shared event handler - // across all open modal dialogs. - this.document.on( - "focusin.ui-dialog", - function (event) { - if (isOpening) { - return; - } - - const instance = this._trackingInstances()[0]; - if (!instance._allowInteraction(event)) { - event.preventDefault(); - instance._focusTabbable(); - - // Support: jQuery >=3.4 <3.6 only - // Focus re-triggering in jQuery 3.4/3.5 makes the original element - // have its focus event propagated last, breaking the re-targeting. - // Trigger focus in a delay in addition if needed to avoid the issue - // See https://github.com/jquery/jquery/issues/4382 - if (jqMinor === "3.4." || jqMinor === "3.5.") { - instance._delay(instance._restoreTabbableFocus); - } - } - }.bind(this), - ); - } - - this.overlay = $("
").appendTo(this._appendTo()); - - this._addClass(this.overlay, null, "ui-widget-overlay ui-front"); - this._on(this.overlay, { - mousedown: "_keepFocus", - }); - this.document.data( - "ui-dialog-overlays", - (this.document.data("ui-dialog-overlays") || 0) + 1, - ); - }, - - _destroyOverlay() { - if (!this.options.modal) { - return; - } - - if (this.overlay) { - const overlays = this.document.data("ui-dialog-overlays") - 1; - - if (!overlays) { - this.document.off("focusin.ui-dialog"); - this.document.removeData("ui-dialog-overlays"); - } else { - this.document.data("ui-dialog-overlays", overlays); - } - - this.overlay.remove(); - this.overlay = null; - } - }, - }); - - // DEPRECATED - // TODO: switch return back to widget declaration at top of file when this is removed - if ($.uiBackCompat !== false) { - // Backcompat for dialogClass option - $.widget("ui.dialog", $.ui.dialog, { - options: { - dialogClass: "", - }, - _createWrapper() { - this._super(); - this.uiDialog.addClass(this.options.dialogClass); - }, - _setOption(key, value) { - if (key === "dialogClass") { - this.uiDialog.removeClass(this.options.dialogClass).addClass(value); - } - this._superApply(arguments); - }, - }); - } - - return $.ui.dialog; -}); diff --git a/public/themes/custom/hdbt_subtheme/src/scss/06_components/__index.scss b/public/themes/custom/hdbt_subtheme/src/scss/06_components/__index.scss index 58bd78771f..fad523ef8b 100644 --- a/public/themes/custom/hdbt_subtheme/src/scss/06_components/__index.scss +++ b/public/themes/custom/hdbt_subtheme/src/scss/06_components/__index.scss @@ -1,5 +1,4 @@ @import 'block/_index'; -@import 'dialog/_index'; @import 'pages/_index'; @import 'layout/_index'; @import 'navigation/_index'; diff --git a/public/themes/custom/hdbt_subtheme/src/scss/06_components/dialog/__index.scss b/public/themes/custom/hdbt_subtheme/src/scss/06_components/dialog/__index.scss deleted file mode 100644 index a10b4b1b34..0000000000 --- a/public/themes/custom/hdbt_subtheme/src/scss/06_components/dialog/__index.scss +++ /dev/null @@ -1 +0,0 @@ -@import 'dialog'; diff --git a/public/themes/custom/hdbt_subtheme/src/scss/06_components/dialog/_dialog.scss b/public/themes/custom/hdbt_subtheme/src/scss/06_components/dialog/_dialog.scss deleted file mode 100644 index c8043dc305..0000000000 --- a/public/themes/custom/hdbt_subtheme/src/scss/06_components/dialog/_dialog.scss +++ /dev/null @@ -1,90 +0,0 @@ -.ui-widget-overlay { - z-index: 99; -} - -.ui-dialog { - .ui-button:hover { - border-width: 2px; - } - - .ui-dialog-titlebar-close { - top: var(--spacing-s); - z-index: 1001; - } - - .ui-dialog-buttonpane .ui-dialog-buttonset { - float: left; - } - - .ui-dialog-buttonpane { - padding: var(--spacing-2-xs) var(--spacing-m); - - button { - margin: 0 var(--spacing-xs) 0 0; - } - } - - .ui-dialog-content { - padding: 0 1em 1em; - position: initial; - } - - div.ui-dialog-titlebar { - padding: 0; - } - - &-titlebar { - background: transparent; - border: 0; - - &-close { - background: none; - border: none; - } - - .ui-dialog-title { - display: block; - font-size: var(--fontsize-heading-s); - overflow: auto; - padding: var(--spacing-layout-2-xs) var(--spacing-layout-2-xs) var(--spacing-layout-2-xs) var(--spacing-2-xl); - position: relative; - white-space: normal; - } - } - - &-title { - .hel-icon { - left: var(--spacing-m); - margin-right: var(--spacing-2-xs); - position: absolute; - top: var(--spacing-s); - } - } -} - -.ui-widget-content { - border: 0 transparent solid; - - h3 { - margin-top: 0; - } -} - -div.ui-widget.ui-widget-content { - border-top: var(--spacing-2-xs) solid var(--color-black); - max-width: 100vw; - min-width: 300px; - padding-top: 0; -} - -.ui-widget-content span.ui-icon { - margin-left: -8px; - margin-top: -8px; - mask-image: url("data:image/svg+xml;charset=utf-8,%3Csvg role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E %3Cg fill='none' fill-rule='evenodd'%3E %3Crect width='24' height='24'/%3E %3Cpolygon fill='currentColor' points='18 7.5 13.5 12 18 16.5 16.5 18 12 13.5 7.5 18 6 16.5 10.5 12 6 7.5 7.5 6 12 10.5 16.5 6'/%3E %3C/g%3E %3C/svg%3E"); - transform: scale(1.5); -} - -.submission-for-copying { - margin-bottom: 1em; - margin-top: 1em; -} diff --git a/public/themes/custom/hdbt_subtheme/src/scss/06_components/pages/_application-search.scss b/public/themes/custom/hdbt_subtheme/src/scss/06_components/pages/_application-search.scss index 170bc17636..d7d7b42946 100644 --- a/public/themes/custom/hdbt_subtheme/src/scss/06_components/pages/_application-search.scss +++ b/public/themes/custom/hdbt_subtheme/src/scss/06_components/pages/_application-search.scss @@ -56,164 +56,164 @@ } } -.application_search { - &--link { - display: block; - height: 100%; - padding-bottom: var(--spacing-m); - position: relative; - text-decoration: none; - &::after { - --icon-size: 1.5rem; +.application_search--link { + display: block; + height: 100%; + padding-bottom: var(--spacing-m); + position: relative; + text-decoration: none; - @include pseudo-icon('arrow-right'); - @include hover-link-arrow-transition; - bottom: var(--spacing-s); - content: ''; - display: block; - flex-shrink: 0; - left: var(--spacing-m); - margin-left: -$spacing-quarter; - margin-top: $spacing-half; - position: absolute; - - @include breakpoint($breakpoint-s) { - --icon-size: 3rem; - margin-left: -$spacing-half; - margin-top: $spacing; - } + &::after { + --icon-size: 1.5rem; + + @include pseudo-icon('arrow-right'); + @include hover-link-arrow-transition; + bottom: var(--spacing-s); + content: ''; + display: block; + flex-shrink: 0; + left: var(--spacing-m); + margin-left: -$spacing-quarter; + margin-top: $spacing-half; + position: absolute; + + @include breakpoint($breakpoint-s) { + --icon-size: 3rem; + margin-left: -$spacing-half; + margin-top: $spacing; } + } - &:focus, - &:hover { - h3 { - text-decoration: none; - } + &:focus, + &:hover { + h3 { + text-decoration: none; + } - &::after { - transform: translateX($spacing-half); + &::after { + transform: translateX($spacing-half); - @media (prefers-reduced-motion) { - transform: none; - } + @media (prefers-reduced-motion) { + transform: none; } } } +} - &--filter-wrapper { - background: var(--color-black-5); +.application_search--filter-wrapper { + background: var(--color-black-5); - h2 { - font-size: var(--fontsize-heading-m); - margin-bottom: var(--spacing-layout-s); - margin-top: var(--spacing-layout-s); - } + h2 { + font-size: var(--fontsize-heading-m); + margin-bottom: var(--spacing-layout-s); + margin-top: var(--spacing-layout-s); + } - form { - align-items: center; - border-bottom: 2px solid var(--color-black-20); - display: flex; - flex-flow: row wrap; - gap: var(--spacing-s); - justify-content: space-between; - margin-bottom: var(--spacing-layout-s); - padding-bottom: var(--spacing-layout-s); - - .form-item { - margin-bottom: 0; - min-width: fit-content; - width: calc(calc(100% - var(--spacing-s) - var(--spacing-s)) / 3); - - label { - color: var(--label-color-default); - font-size: var(--fontsize-body-m); - font-weight: 500; - margin-bottom: var(--spacing-3-xs); - } - - .grant-applications--select-wrapper { - min-width: 100%; - width: 100%; - } + form { + align-items: center; + border-bottom: 2px solid var(--color-black-20); + display: flex; + flex-flow: row wrap; + gap: var(--spacing-s); + justify-content: space-between; + margin-bottom: var(--spacing-layout-s); + padding-bottom: var(--spacing-layout-s); + + .form-item { + margin-bottom: 0; + min-width: fit-content; + width: calc(calc(100% - var(--spacing-s) - var(--spacing-s)) / 3); + + label { + color: var(--label-color-default); + font-size: var(--fontsize-body-m); + font-weight: 500; + margin-bottom: var(--spacing-3-xs); } - .hds-text-input:first-child { - max-width: none; + .grant-applications--select-wrapper { + min-width: 100%; width: 100%; - - input { - width: 100%; - } } - .form-actions { - align-items: center; - display: flex; - order: 6; - padding-top: var(--spacing-m); - width: 100%; + } - @include breakpoint($breakpoint-m) { - width: 17%; - } + .hds-text-input:first-child { + max-width: none; + width: 100%; - input { - min-width: 250px; - width: 100%; - } + input { + width: 100%; } + } + .form-actions { + align-items: center; + display: flex; + gap: $spacing; + order: 6; + padding-top: var(--spacing-m); + width: 100%; - .form-item-items-per-page { - display: none; + @include breakpoint($breakpoint-m) { + width: 17%; } - .form-item-kohderyhma { - order: 1; + input { + min-width: 250px; + width: 100%; } + } - .form-item-avustuslaji { - order: 2; - } + .form-item-items-per-page { + display: none; + } - .form-item-hakija { - order: 3; - } + .form-item-kohderyhma { + order: 1; + } - .form-item-search { - max-width: 100%; - order: 4; - width: 50%; - } + .form-item-avustuslaji { + order: 2; + } - .form-item-application-open { - break-before: left; - display: block; - margin-top: var(--spacing-m); - order: 5; - width: 30%; - } - [data-drupal-selector='edit-reset'] { - background-color: transparent; - border: 0; - color: var(--color-black); - } + .form-item-hakija { + order: 3; } - .hds-koros svg pattern { - color: var(--color-black-5); + .form-item-search { + max-width: 100%; + order: 4; + width: 50%; } - .hero .hero__container { - padding-bottom: var(--spacing-m); + .form-item-application-open { + break-before: left; + display: block; + margin-top: var(--spacing-m); + order: 5; + width: 30%; } + [data-drupal-selector='edit-reset'] { + background-color: transparent; + border: 0; + color: var(--color-black); + } + } + + .hds-koros svg pattern { + color: var(--color-black-5); } - &--filters { - padding-bottom: var(--spacing-layout-m); - padding-top: 0; + .hero .hero__container { + padding-bottom: var(--spacing-m); } } +.application_search--filters { + padding-bottom: var(--spacing-layout-m); + padding-top: 0; +} + .application_search--rows { display: flex; flex-direction: column; diff --git a/tools/make/project/install.mk b/tools/make/project/install.mk index fade4de0d1..483d64f7e1 100644 --- a/tools/make/project/install.mk +++ b/tools/make/project/install.mk @@ -3,7 +3,7 @@ ifeq ($(DRUPAL_CONF_EXISTS),yes) else DRUPAL_NEW_TARGETS := up build drush-si drush-helfi-enable-modules drush-locale-update drush-helfi-locale-import drush-unblock drush-uli endif -DRUPAL_POST_INSTALL_TARGETS := drush-locale-update drush-deploy drush-helfi-locale-import drush-unblock +DRUPAL_POST_INSTALL_TARGETS := drush-deploy drush-locale-update drush-helfi-locale-import drush-unblock OC_LOGIN_TOKEN ?= $(shell bash -c 'read -s -p "You must obtain an API token by visiting https://oauth-openshift.apps.arodevtest.hel.fi/oauth/token/request (Token):" token; echo $$token') diff --git a/tools/make/project/zzavustusasiointi.mk b/tools/make/project/zzavustusasiointi.mk index ba94ad7f11..3ae0d5ae20 100644 --- a/tools/make/project/zzavustusasiointi.mk +++ b/tools/make/project/zzavustusasiointi.mk @@ -60,9 +60,11 @@ drush-sync-db: ## Sync database ifeq ($(DUMP_SQL_EXISTS),yes) $(call step,Import local SQL dump...) $(call drush,sql-query --file=${DOCKER_PROJECT_ROOT}/$(DUMP_SQL_FILENAME) && echo 'SQL dump imported') + $(call drush,cr -y) else $(call step,Sync database from @$(DRUPAL_SYNC_SOURCE)...) $(call drush,sql-sync -y --structure-tables-key=common,key_value_expire @$(DRUPAL_SYNC_SOURCE) @self) + $(call drush,cr -y) endif PHONY += drush-create-dump