From fc816b508e4f219e8cf790704a0f13501487562b Mon Sep 17 00:00:00 2001 From: Jasper Frumau Date: Thu, 28 May 2026 14:59:32 +0700 Subject: [PATCH 1/5] fix: preserve necessary category enabled/readonly on settings save The necessary category's readonly checkbox was rendered with disabled in the admin, but form.serialize() silently drops disabled fields. This caused readonly (and potentially enabled) to be overwritten as false every time settings were saved, making the Strictly Necessary toggle interactive on the frontend. Force enabled=true and readonly=true for the necessary category in warder_validate_options regardless of form input, and disable both checkboxes in the admin UI so they are visually consistent with their enforced values. All other categories continue to use the submitted checkbox values normally. --- inc/admin.php | 8 +++++++- inc/settings.php | 8 ++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/inc/admin.php b/inc/admin.php index 7596a68..5dd21cb 100644 --- a/inc/admin.php +++ b/inc/admin.php @@ -262,7 +262,13 @@ class="regular-text warder-category-title-field"

diff --git a/inc/settings.php b/inc/settings.php index 2ba0db0..550a729 100644 --- a/inc/settings.php +++ b/inc/settings.php @@ -60,11 +60,15 @@ function warder_validate_options( $input ) { $title = isset( $category['title'] ) ? sanitize_text_field( $category['title'] ) : ''; + // The 'necessary' category is always enabled and read-only regardless of form input, + // because its checkboxes are disabled in the admin and therefore not submitted. + $is_necessary = ( 'necessary' === $sanitized_id ); + $valid['cookie_categories'][ $sanitized_id ] = array( 'title' => $title, 'description' => wp_kses_post( $category['description'] ), - 'enabled' => isset( $category['enabled'] ) ? true : false, - 'readonly' => isset( $category['readonly'] ) ? true : false, + 'enabled' => $is_necessary ? true : ( isset( $category['enabled'] ) ? true : false ), + 'readonly' => $is_necessary ? true : ( isset( $category['readonly'] ) ? true : false ), 'cookies' => array(), ); From f0bc6dbdc716d8b623e756d5b618d879b674feb9 Mon Sep 17 00:00:00 2001 From: Jasper Frumau Date: Thu, 28 May 2026 15:01:15 +0700 Subject: [PATCH 2/5] chore: bump version to 2.0.1 --- CHANGELOG.md | 5 +++++ package.json | 2 +- readme.txt | 10 +++++++++- warder-cookie-consent.php | 4 ++-- 4 files changed, 17 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0749ef2..d8ec4a2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,11 @@ All notable changes to Warder Cookie Consent are documented here. +## [2.0.1] - 2026-05-28 + +### Fixed +- `necessary` category `enabled` and `readonly` values were silently overwritten as `false` on every admin settings save. The admin form is submitted via AJAX with `form.serialize()`, which drops `disabled` fields — the readonly checkbox for `necessary` is `disabled`, so it was never submitted. `warder_validate_options` now forces `enabled = true` and `readonly = true` for the `necessary` category regardless of form input. The `enabled` checkbox in the admin UI is also now `disabled` for `necessary`, consistent with `readonly`. + ## [2.0.0] - 2026-05-28 ### Changed diff --git a/package.json b/package.json index 9c35475..bbbc1ff 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "imwz-cookie-consent", - "version": "2.0.0", + "version": "2.0.1", "main": "webpack.config.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" diff --git a/readme.txt b/readme.txt index 04dceb4..7de8df1 100644 --- a/readme.txt +++ b/readme.txt @@ -4,7 +4,7 @@ Donate link: https://imagewize.com Tags: cookie, consent, gdpr, privacy, compliance Requires at least: 5.0 Tested up to: 7.0 -Stable tag: 2.0.0 +Stable tag: 2.0.1 Requires PHP: 8.0 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html @@ -72,6 +72,11 @@ Yes. Settings are versioned via a timestamp that is appended to the script URL, == Changelog == += 2.0.1 = +*2026-05-28* + +* Fixed: necessary category enabled/readonly values were silently overwritten as false on every admin settings save because the disabled checkboxes were not submitted by form.serialize(). The necessary category is now always forced to enabled=true and readonly=true in validation, regardless of form input. + = 2.0.0 = *2026-05-28* @@ -180,6 +185,9 @@ Yes. Settings are versioned via a timestamp that is appended to the script URL, == Upgrade Notice == += 2.0.1 = +Fixes a bug where the Strictly Necessary category would lose its locked/readonly state after the first admin settings save, allowing users to toggle it off in the frontend modal. + = 2.0.0 = Internal refactor only — plugin logic split into `inc/` files for maintainability. Admin page title and Settings sidebar label updated to "Warder Cookie Consent" / "Warder Consent". No settings migration required, no behaviour changes. diff --git a/warder-cookie-consent.php b/warder-cookie-consent.php index e8f009f..346a077 100644 --- a/warder-cookie-consent.php +++ b/warder-cookie-consent.php @@ -2,7 +2,7 @@ /** * Plugin Name: Warder Cookie Consent * Description: GDPR-compliant cookie consent banner with category management and floating preferences toggle. - * Version: 2.0.0 + * Version: 2.0.1 * Author: Jasper Frumau * Author URI: https://imagewize.com * Requires at least: 5.0 @@ -16,7 +16,7 @@ defined( 'ABSPATH' ) || exit; -define( 'WARDER_VERSION', '2.0.0' ); +define( 'WARDER_VERSION', '2.0.1' ); define( 'WARDER_PLUGIN_FILE', __FILE__ ); require_once plugin_dir_path( __FILE__ ) . 'inc/defaults.php'; From b2bd62ad1bdd5d840d155e1d43939ac729c80f85 Mon Sep 17 00:00:00 2001 From: Jasper Frumau Date: Thu, 28 May 2026 15:12:35 +0700 Subject: [PATCH 3/5] fix: is_regex false saves as true, and misleading no-changes message Hidden is_regex inputs used value="" for false. PHP's isset() returns true for an empty string, so every non-regex cookie (_gid, _gat) was silently saved as is_regex:true on every admin save, corrupting the autoClear cookie list and masking real changes as "no changes detected". Fix: hidden input now outputs '0' for false. Validation uses !empty() and checks for literal '0' so only the string '1' is treated as true. Also remove the "No changes detected" branch in the AJAX handler. update_option() already runs, so always respond with "Settings saved" to avoid misleading admins who toggle a setting back to its current DB value. --- inc/admin.php | 2 +- inc/ajax.php | 9 +++------ inc/settings.php | 2 +- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/inc/admin.php b/inc/admin.php index 5dd21cb..91218e9 100644 --- a/inc/admin.php +++ b/inc/admin.php @@ -312,7 +312,7 @@ class="regular-text warder-category-title-field" + value="" /> diff --git a/inc/ajax.php b/inc/ajax.php index 9daf54d..7c3fde3 100644 --- a/inc/ajax.php +++ b/inc/ajax.php @@ -20,12 +20,9 @@ function warder_ajax_save_settings() { $input = isset( $_POST['warder_options'] ) ? wp_unslash( $_POST['warder_options'] ) : array(); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized $valid = warder_validate_options( $input ); - if ( update_option( 'warder_options', $valid ) ) { - delete_transient( 'warder_options_cache' ); - wp_send_json_success( array( 'message' => __( 'Settings saved successfully.', 'warder-cookie-consent' ) ) ); - } else { - wp_send_json_success( array( 'message' => __( 'No changes detected.', 'warder-cookie-consent' ) ) ); - } + update_option( 'warder_options', $valid ); + delete_transient( 'warder_options_cache' ); + wp_send_json_success( array( 'message' => __( 'Settings saved successfully.', 'warder-cookie-consent' ) ) ); } add_action( 'wp_ajax_warder_save_settings', 'warder_ajax_save_settings' ); diff --git a/inc/settings.php b/inc/settings.php index 550a729..a34b658 100644 --- a/inc/settings.php +++ b/inc/settings.php @@ -77,7 +77,7 @@ function warder_validate_options( $input ) { if ( ! empty( $cookie['name'] ) ) { $valid['cookie_categories'][ $sanitized_id ]['cookies'][] = array( 'name' => sanitize_text_field( $cookie['name'] ), - 'is_regex' => isset( $cookie['is_regex'] ) ? true : false, + 'is_regex' => ! empty( $cookie['is_regex'] ) && '0' !== (string) $cookie['is_regex'], ); } } From 8a4ab60e1502963748180954b84ec8609bd46d80 Mon Sep 17 00:00:00 2001 From: Jasper Frumau Date: Thu, 28 May 2026 15:30:27 +0700 Subject: [PATCH 4/5] fix: enforce necessary-only enabled/readonly across all layers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Non-necessary categories were appearing as locked and pre-selected in the frontend because enabled/readonly were read from DB values rather than being enforced by policy. - settings.php: always save enabled=false, readonly=false for non-necessary (was: isset check returned true whenever the key existed in the DB) - index.js: hardcode enabled/readOnly based on category id, ignore DB values - admin.php: replace confusing enabled/readonly checkboxes with clear info text — lock icon + explanation for necessary, unlock icon for others - docs: add cookie-category-rules.md documenting the enforcement rules --- dist/cookieconsent.bundle.js | 2 +- docs/cookie-category-rules.md | 79 +++++++++++++++++++++++++++++++++++ inc/admin.php | 40 +++++++----------- inc/settings.php | 4 +- src/index.js | 8 ++-- 5 files changed, 101 insertions(+), 32 deletions(-) create mode 100644 docs/cookie-category-rules.md diff --git a/dist/cookieconsent.bundle.js b/dist/cookieconsent.bundle.js index 11c7750..d55221b 100644 --- a/dist/cookieconsent.bundle.js +++ b/dist/cookieconsent.bundle.js @@ -1 +1 @@ -(()=>{"use strict";var e={969(e,c,o){o.d(c,{A:()=>a});var t=o(601),n=o.n(t),r=o(314),i=o.n(r)()(n());i.push([e.id,'#cc-main{background:transparent;color:var(--cc-primary-color);font-family:var(--cc-font-family);font-size:16px;font-weight:400;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.15;position:relative;text-rendering:optimizeLegibility;-webkit-text-size-adjust:100%;position:fixed;z-index:var(--cc-z-index)}#cc-main :after,#cc-main :before,#cc-main a,#cc-main button,#cc-main div,#cc-main h2,#cc-main input,#cc-main p,#cc-main span{all:unset;box-sizing:border-box}#cc-main .pm__badge,#cc-main button{all:initial;box-sizing:border-box;color:unset;visibility:unset}#cc-main .pm__badge,#cc-main a,#cc-main button,#cc-main input{-webkit-appearance:none;appearance:none;cursor:pointer;font-family:inherit;font-size:100%;line-height:normal;margin:0;outline:revert;outline-offset:2px;overflow:hidden}#cc-main table,#cc-main tbody,#cc-main td,#cc-main th,#cc-main thead,#cc-main tr{all:revert;color:inherit;font-family:inherit;font-size:inherit;font-weight:inherit}:root{--cc-font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--cc-modal-border-radius:.5rem;--cc-btn-border-radius:.4rem;--cc-modal-transition-duration:.25s;--cc-link-color:var(--cc-btn-primary-bg);--cc-modal-margin:1rem;--cc-z-index:2147483647;--cc-bg:#fff;--cc-primary-color:#2c2f31;--cc-secondary-color:#5e6266;--cc-btn-primary-bg:#30363c;--cc-btn-primary-color:#fff;--cc-btn-primary-border-color:var(--cc-btn-primary-bg);--cc-btn-primary-hover-bg:#000;--cc-btn-primary-hover-color:#fff;--cc-btn-primary-hover-border-color:var(--cc-btn-primary-hover-bg);--cc-btn-secondary-bg:#eaeff2;--cc-btn-secondary-color:var(--cc-primary-color);--cc-btn-secondary-border-color:var(--cc-btn-secondary-bg);--cc-btn-secondary-hover-bg:#d4dae0;--cc-btn-secondary-hover-color:#000;--cc-btn-secondary-hover-border-color:#d4dae0;--cc-separator-border-color:#f0f4f7;--cc-toggle-on-bg:var(--cc-btn-primary-bg);--cc-toggle-off-bg:#667481;--cc-toggle-on-knob-bg:#fff;--cc-toggle-off-knob-bg:var(--cc-toggle-on-knob-bg);--cc-toggle-enabled-icon-color:var(--cc-bg);--cc-toggle-disabled-icon-color:var(--cc-bg);--cc-toggle-readonly-bg:#d5dee2;--cc-toggle-readonly-knob-bg:#fff;--cc-toggle-readonly-knob-icon-color:var(--cc-toggle-readonly-bg);--cc-section-category-border:var(--cc-cookie-category-block-bg);--cc-cookie-category-block-bg:#f0f4f7;--cc-cookie-category-block-border:#f0f4f7;--cc-cookie-category-block-hover-bg:#e9eff4;--cc-cookie-category-block-hover-border:#e9eff4;--cc-cookie-category-expanded-block-bg:transparent;--cc-cookie-category-expanded-block-hover-bg:#dee4e9;--cc-overlay-bg:rgba(0,0,0,.65);--cc-webkit-scrollbar-bg:var(--cc-section-category-border);--cc-webkit-scrollbar-hover-bg:var(--cc-btn-primary-hover-bg);--cc-footer-bg:var(--cc-btn-secondary-bg);--cc-footer-color:var(--cc-secondary-color);--cc-footer-border-color:#e4eaed;--cc-pm-toggle-border-radius:4em}#cc-main.cc--rtl{direction:rtl}#cc-main .cm__title,#cc-main a,#cc-main b,#cc-main em,#cc-main strong{font-weight:600}#cc-main button>span{pointer-events:none}#cc-main .cc__link,#cc-main a{background-image:linear-gradient(currentColor,currentColor);background-position:0 100%;background-repeat:no-repeat;background-size:0 1px;font-weight:600;position:relative;transition:background-size .25s,color .25s ease}#cc-main .cc__link:hover,#cc-main a:hover{background-size:100% 1px;color:var(--cc-primary-color)}#cc-main .cc__link{color:var(--cc-link-color)}#cc-main .cm__desc,#cc-main .pm__body{overscroll-behavior:auto contain;scrollbar-width:thin}@media screen and (min-width:640px){#cc-main ::-webkit-scrollbar,#cc-main ::-webkit-scrollbar-thumb,#cc-main ::-webkit-scrollbar-track{all:revert}#cc-main ::-webkit-scrollbar-thumb{-webkit-background-clip:padding-box;background-clip:padding-box;background:var(--cc-toggle-readonly-bg);border:.25rem solid var(--cc-bg);border-radius:1rem}#cc-main ::-webkit-scrollbar-thumb:hover{background:var(--cc-toggle-off-bg)}#cc-main ::-webkit-scrollbar{background:transparent;width:12px}}html.disable--interaction.show--consent,html.disable--interaction.show--consent body{height:auto!important;overflow:hidden!important}@media (prefers-reduced-motion){#cc-main{--cc-modal-transition-duration:0s}}.cc--darkmode{--cc-bg:#161a1c;--cc-primary-color:#ebf3f6;--cc-secondary-color:#aebbc5;--cc-btn-primary-bg:#c2d0e0;--cc-btn-primary-color:var(--cc-bg);--cc-btn-primary-border-color:var(--cc-btn-primary-bg);--cc-btn-primary-hover-bg:#98a7b6;--cc-btn-primary-hover-color:#000;--cc-btn-primary-hover-border-color:var(--cc-btn-primary-hover-bg);--cc-btn-secondary-bg:#242c31;--cc-btn-secondary-color:var(--cc-primary-color);--cc-btn-secondary-border-color:var(--cc-btn-secondary-bg);--cc-btn-secondary-hover-bg:#353d43;--cc-btn-secondary-hover-color:#fff;--cc-btn-secondary-hover-border-color:var(--cc-btn-secondary-hover-bg);--cc-separator-border-color:#222a30;--cc-toggle-on-bg:var(--cc-btn-primary-bg);--cc-toggle-off-bg:#525f6b;--cc-toggle-on-knob-bg:var(--cc-btn-primary-color);--cc-toggle-off-knob-bg:var(--cc-btn-primary-color);--cc-toggle-enabled-icon-color:var(--cc-btn-primary-color);--cc-toggle-disabled-icon-color:var(--cc-btn-primary-color);--cc-toggle-readonly-bg:#343e45;--cc-toggle-readonly-knob-bg:#5f6b72;--cc-toggle-readonly-knob-icon-color:var(--cc-toggle-readonly-bg);--cc-section-category-border:#1e2428;--cc-cookie-category-block-bg:#1e2428;--cc-cookie-category-block-border:var(--cc-section-category-border);--cc-cookie-category-block-hover-bg:#242c31;--cc-cookie-category-block-hover-border:#232a2f;--cc-cookie-category-expanded-block-bg:transparent;--cc-cookie-category-expanded-block-hover-bg:var(--cc-toggle-readonly-bg);--cc-overlay-bg:rgba(0,0,0,.65);--cc-webkit-scrollbar-bg:var(--cc-section-category-border);--cc-webkit-scrollbar-hover-bg:var(--cc-btn-primary-hover-bg);--cc-footer-bg:#0c0e0f;--cc-footer-color:var(--cc-secondary-color);--cc-footer-border-color:#060809}.cc--darkmode #cc-main{color-scheme:dark}#cc-main .cm{background:var(--cc-bg);border-radius:var(--cc-modal-border-radius);box-shadow:0 .625em 1.875em rgba(0,0,2,.3);display:flex;flex-direction:column;max-width:24rem;opacity:0;overflow:hidden;position:fixed;transform:translateY(1.6em);visibility:hidden;z-index:1}#cc-main .cm--top{top:var(--cc-modal-margin)}#cc-main .cm--middle{top:50%;transform:translateY(calc(-50% + 1.6em))}#cc-main .cm--bottom{bottom:var(--cc-modal-margin)}#cc-main .cm--center{left:var(--cc-modal-margin);margin:0 auto;right:var(--cc-modal-margin);width:unset}#cc-main .cm--left{left:var(--cc-modal-margin);margin-right:var(--cc-modal-margin)}#cc-main .cm--right{margin-left:var(--cc-modal-margin);right:var(--cc-modal-margin)}#cc-main .cm__body{display:flex;flex-direction:column;justify-content:space-between;position:relative}#cc-main .cm__btns,#cc-main .cm__links{padding:1rem 1.3rem;width:unset}#cc-main .cm__texts{display:flex;flex:1;flex-direction:column;justify-content:center;padding:1rem 0 0}#cc-main .cm__desc,#cc-main .cm__title{padding:0 1.3rem}#cc-main .cm__title{font-size:1.05em}#cc-main .cm__title+.cm__desc{margin-top:1.1em}#cc-main .cm__desc{color:var(--cc-secondary-color);font-size:.9em;line-height:1.5;max-height:40vh;overflow-x:visible;overflow-y:auto;padding-bottom:1em}#cc-main .cm__btns{border-top:1px solid var(--cc-separator-border-color);display:flex;flex-direction:column;justify-content:center}#cc-main .cm__btn-group{display:grid;grid-auto-columns:minmax(0,1fr)}#cc-main .cm__btn+.cm__btn,#cc-main .cm__btn-group+.cm__btn-group{margin-top:.375rem}#cc-main .cm--flip .cm__btn+.cm__btn,#cc-main .cm--flip .cm__btn-group+.cm__btn-group{margin-bottom:.375rem;margin-top:0}#cc-main .cm--inline .cm__btn+.cm__btn{margin-left:.375rem;margin-top:0}#cc-main .cm--inline.cm--flip .cm__btn+.cm__btn{margin-bottom:0;margin-left:0;margin-right:.375rem}#cc-main .cm--inline.cm--flip .cm__btn-group+.cm__btn-group{margin-bottom:.375rem;margin-right:0}#cc-main .cm--wide .cm__btn+.cm__btn,#cc-main .cm--wide .cm__btn-group+.cm__btn-group{margin-left:.375rem;margin-top:0}#cc-main .cm--wide.cm--flip .cm__btn+.cm__btn,#cc-main .cm--wide.cm--flip .cm__btn-group+.cm__btn-group{margin-bottom:0;margin-right:.375rem}#cc-main .cm--bar:not(.cm--inline) .cm__btn-group--uneven,#cc-main .cm--wide .cm__btn-group--uneven{display:flex;flex:1;justify-content:space-between}#cc-main .cm--bar:not(.cm--inline).cm--flip .cm__btn-group--uneven,#cc-main .cm--wide.cm--flip .cm__btn-group--uneven{flex-direction:row-reverse}#cc-main .cm__btn{background:var(--cc-btn-primary-bg);border:1px solid var(--cc-btn-primary-border-color);border-radius:var(--cc-btn-border-radius);color:var(--cc-btn-primary-color);font-size:.82em;font-weight:600;min-height:42px;padding:.5em 1em;text-align:center}#cc-main .cm__btn:hover{background:var(--cc-btn-primary-hover-bg);border-color:var(--cc-btn-primary-hover-border-color);color:var(--cc-btn-primary-hover-color)}#cc-main .cm__btn--secondary{background:var(--cc-btn-secondary-bg);border-color:var(--cc-btn-secondary-border-color);color:var(--cc-btn-secondary-color)}#cc-main .cm__btn--secondary:hover{background:var(--cc-btn-secondary-hover-bg);border-color:var(--cc-btn-secondary-hover-border-color);color:var(--cc-btn-secondary-hover-color)}#cc-main .cm__btn--close{border-radius:0;border-bottom-left-radius:var(--cc-btn-border-radius);border-right:none;border-top:none;display:none;font-size:1em;height:42px;min-width:auto!important;overflow:hidden;padding:0!important;position:absolute;right:0;top:0;width:42px}#cc-main .cm__btn--close svg{stroke:var(--cc-btn-primary-color);transform:scale(.5);transition:stroke .15s ease}#cc-main .cm__btn--close:hover svg{stroke:var(--cc-btn-primary-hover-color)}#cc-main .cm__btn--close.cm__btn--secondary svg{stroke:var(--cc-btn-secondary-color)}#cc-main .cm__btn--close.cm__btn--secondary:hover svg{stroke:var(--cc-btn-secondary-hover-color)}#cc-main .cm__btn--close+.cm__texts .cm__title{padding-right:3rem}#cc-main .cm--inline .cm__btn-group{grid-auto-flow:column}#cc-main .cm__footer{background:var(--cc-footer-bg);border-top:1px solid var(--cc-footer-border-color);color:var(--cc-footer-color);padding:.4em 0 .5em}#cc-main .cm__links{display:flex;flex-direction:row;padding-bottom:0;padding-top:0}#cc-main .cm__link-group{display:flex;flex-direction:row;font-size:.8em;width:100%}#cc-main .cm__link-group>*+*{margin-left:1.3rem}#cc-main .cm--flip .cm__btn:last-child{grid-row:1}#cc-main .cm--inline.cm--flip .cm__btn:last-child{grid-column:1}#cc-main .cm--box .cm__btn--close{display:block}#cc-main .cm--box.cm--flip .cm__btns{flex-direction:column-reverse}#cc-main .cm--box.cm--wide{max-width:36em}#cc-main .cm--box.cm--wide .cm__btns{flex-direction:row;justify-content:space-between}#cc-main .cm--box.cm--wide .cm__btn-group{grid-auto-flow:column}#cc-main .cm--box.cm--wide .cm__btn{min-width:120px;padding-left:1.8em;padding-right:1.8em}#cc-main .cm--box.cm--wide.cm--flip .cm__btns{flex-direction:row-reverse}#cc-main .cm--box.cm--wide.cm--flip .cm__btn:last-child{grid-column:1}#cc-main .cm--cloud{max-width:54em;width:unset}#cc-main .cm--cloud .cm__body{flex-direction:row}#cc-main .cm--cloud .cm__texts{flex:1}#cc-main .cm--cloud .cm__desc{max-height:9.4em}#cc-main .cm--cloud .cm__btns{border-left:1px solid var(--cc-separator-border-color);border-top:none;max-width:23em}#cc-main .cm--cloud .cm__btn-group{flex-direction:column}#cc-main .cm--cloud .cm__btn{min-width:19em}#cc-main .cm--cloud.cm--flip .cm__btn-group,#cc-main .cm--cloud.cm--flip .cm__btns{flex-direction:column-reverse}#cc-main .cm--cloud.cm--inline .cm__btn-group{flex-direction:row}#cc-main .cm--cloud.cm--inline .cm__btn{min-width:10em}#cc-main .cm--cloud.cm--inline.cm--flip .cm__btn-group{flex-direction:row-reverse}#cc-main .cm--bar{border-radius:0;left:0;margin:0;max-width:unset;opacity:1;right:0;transform:translateY(0);width:100vw;--cc-modal-transition-duration:.35s}#cc-main .cm--bar.cm--top{top:0;transform:translateY(-100%)}#cc-main .cm--bar.cm--bottom{bottom:0;transform:translateY(100%)}#cc-main .cm--bar .cm__body,#cc-main .cm--bar .cm__links{margin:0 auto;max-width:55em;width:100%}#cc-main .cm--bar .cm__body{padding:.5em 0 .9em}#cc-main .cm--bar .cm__btns{border-top:none;flex-direction:row;justify-content:space-between}#cc-main .cm--bar .cm__btn-group{grid-auto-flow:column}#cc-main .cm--bar:not(.cm--inline) .cm__btn+.cm__btn,#cc-main .cm--bar:not(.cm--inline) .cm__btn-group+.cm__btn-group{margin-left:.375rem;margin-top:0}#cc-main .cm--bar .cm__btn{min-width:120px;padding-left:2em;padding-right:2em}#cc-main .cm--bar.cm--flip:not(.cm--inline) .cm__btn+.cm__btn,#cc-main .cm--bar.cm--flip:not(.cm--inline) .cm__btn-group+.cm__btn-group{margin-bottom:0;margin-left:0;margin-right:.375rem}#cc-main .cm--bar.cm--flip .cm__btns{flex-direction:row-reverse}#cc-main .cm--bar.cm--flip .cm__btn:last-child{grid-column:1}#cc-main .cm--bar.cm--inline .cm__body,#cc-main .cm--bar.cm--inline .cm__links{max-width:74em}#cc-main .cm--bar.cm--inline .cm__body{flex-direction:row;padding:0}#cc-main .cm--bar.cm--inline .cm__btns{flex-direction:column;justify-content:center;max-width:23em}#cc-main .cm--bar.cm--inline.cm--flip .cm__btns{flex-direction:column-reverse}#cc-main .cc--anim .cm,#cc-main .cc--anim.cm-wrapper:before{transition:opacity var(--cc-modal-transition-duration) ease,visibility var(--cc-modal-transition-duration) ease,transform var(--cc-modal-transition-duration) ease}#cc-main .cc--anim .cm__btn,#cc-main .cc--anim .cm__close{transition:background-color .15s ease,border-color .15s ease,color .15s ease}.disable--interaction #cc-main .cm-wrapper:before{background:var(--cc-overlay-bg);bottom:0;content:"";left:0;opacity:0;position:fixed;right:0;top:0;visibility:hidden;z-index:0}.show--consent #cc-main .cc--anim .cm{opacity:1;transform:translateY(0);visibility:visible!important}.show--consent #cc-main .cc--anim .cm--middle{transform:translateY(-50%)}.show--consent #cc-main .cc--anim .cm--bar{transform:translateY(0)}.show--consent #cc-main .cc--anim.cm-wrapper:before{opacity:1;visibility:visible}#cc-main.cc--rtl .cm__btn--close{border-bottom-left-radius:unset;border-bottom-right-radius:var(--cc-btn-border-radius);left:0;right:unset}#cc-main.cc--rtl .cm__btn--close+.cm__texts .cm__title{padding-left:3rem!important;padding-right:1.3rem}#cc-main.cc--rtl .cm--inline .cm__btn+.cm__btn{margin-left:0;margin-right:.375rem}#cc-main.cc--rtl .cm--inline.cm--flip .cm__btn+.cm__btn{margin-left:.375rem;margin-right:0}#cc-main.cc--rtl .cm:not(.cm--inline).cm--bar .cm__btn+.cm__btn,#cc-main.cc--rtl .cm:not(.cm--inline).cm--bar .cm__btn-group+.cm__btn-group,#cc-main.cc--rtl .cm:not(.cm--inline).cm--wide .cm__btn+.cm__btn,#cc-main.cc--rtl .cm:not(.cm--inline).cm--wide .cm__btn-group+.cm__btn-group{margin-left:0;margin-right:.375rem}#cc-main.cc--rtl .cm:not(.cm--inline).cm--bar.cm--flip .cm__btn+.cm__btn,#cc-main.cc--rtl .cm:not(.cm--inline).cm--wide.cm--flip .cm__btn+.cm__btn{margin-left:.375rem;margin-right:0}#cc-main.cc--rtl .cm__link-group>*+*{margin-left:0;margin-right:1.3rem}@media screen and (max-width:640px){#cc-main{--cc-modal-margin:.5em}#cc-main .cm{max-width:none!important;width:auto!important}#cc-main .cm__body{flex-direction:column!important;padding:0!important}#cc-main .cm__btns,#cc-main .cm__desc,#cc-main .cm__links,#cc-main .cm__title{padding-left:1.1rem!important;padding-right:1.1rem!important}#cc-main .cm__btns{border-left:none!important;border-top:1px solid var(--cc-separator-border-color)!important;flex-direction:column!important;max-width:none!important;min-width:auto!important}#cc-main .cm__btn+.cm__btn,#cc-main .cm__btn-group+.cm__btn-group{margin:.375rem 0 0!important}#cc-main .cm--flip .cm__btn+.cm__btn,#cc-main .cm--flip .cm__btn-group+.cm__btn-group{margin-bottom:.375rem!important;margin-top:0!important}#cc-main .cm__btn-group{display:flex!important;flex-direction:column!important;min-width:auto!important}#cc-main .cm__btn{flex:auto!important}#cc-main .cm__link-group{justify-content:center!important}#cc-main .cm--flip .cm__btn-group,#cc-main .cm--flip .cm__btns{flex-direction:column-reverse!important}}#cc-main .pm-wrapper{position:relative;z-index:2}#cc-main .pm{background:var(--cc-bg);border-radius:var(--cc-modal-border-radius);box-shadow:0 .625em 1.875em rgba(0,0,2,.3);display:flex;flex-direction:column;opacity:0;overflow:hidden;position:fixed;visibility:hidden;width:100%;width:unset;z-index:1}#cc-main svg{fill:none;width:100%}#cc-main .pm__body,#cc-main .pm__footer,#cc-main .pm__header{padding:1em 1.4em}#cc-main .pm__header{align-items:center;border-bottom:1px solid var(--cc-separator-border-color);display:flex;justify-content:space-between}#cc-main .pm__title{align-items:center;display:flex;flex:1;font-weight:600;margin-right:2em}#cc-main .pm__close-btn{background:var(--cc-btn-secondary-bg);border:1px solid var(--cc-btn-secondary-border-color);border-radius:var(--cc-btn-border-radius);height:40px;position:relative;transition:all .15s ease;width:40px}#cc-main .pm__close-btn span{display:flex;height:100%;width:100%}#cc-main .pm__close-btn svg{stroke:var(--cc-btn-secondary-color);transform:scale(.5);transition:stroke .15s ease}#cc-main .pm__close-btn:hover{background:var(--cc-btn-secondary-hover-bg);border-color:var(--cc-btn-secondary-hover-border-color)}#cc-main .pm__close-btn:hover svg{stroke:var(--cc-btn-secondary-hover-color)}#cc-main .pm__body{flex:1;overflow-y:auto;overflow-y:overlay}#cc-main .pm__section,#cc-main .pm__section--toggle{border-radius:var(--cc-btn-border-radius);display:flex;flex-direction:column;margin-bottom:.5em}#cc-main .pm__section--toggle .pm__section-desc-wrapper{border:1px solid var(--cc-cookie-category-block-border);border-radius:var(--cc-btn-border-radius);border-top:none;border-top-left-radius:0;border-top-right-radius:0;display:none;margin-top:0!important;overflow:hidden}#cc-main .pm__section{border:1px solid var(--cc-separator-border-color);padding:1em;transition:background-color .25s ease,border-color .25s ease}#cc-main .pm__section:first-child{border:none;margin-bottom:2em;margin-top:0;padding:0;transition:none}#cc-main .pm__section:not(:first-child):hover{background:var(--cc-cookie-category-block-bg);border-color:var(--cc-cookie-category-block-border)}#cc-main .pm__section-toggles+.pm__section{margin-top:2em}#cc-main .pm__section--toggle{background:var(--cc-cookie-category-block-bg);border-top:none;margin-bottom:.375rem}#cc-main .pm__section--toggle .pm__section-title{align-items:center;background:var(--cc-cookie-category-block-bg);border:1px solid var(--cc-cookie-category-block-border);display:flex;justify-content:space-between;min-height:58px;padding:1.1em 5.4em 1.1em 1.2em;position:relative;transition:background-color .25s ease,border-color .25s ease;width:100%}#cc-main .pm__section--toggle .pm__section-title:hover{background:var(--cc-cookie-category-block-hover-bg);border-color:var(--cc-cookie-category-block-hover-border)}#cc-main .pm__section--toggle .pm__section-desc{margin-top:0;padding:1em}#cc-main .pm__section--toggle.is-expanded{--cc-cookie-category-block-bg:var(--cc-cookie-category-expanded-block-bg);--cc-cookie-category-block-border:var(--cc-cookie-category-expanded-block-hover-bg)}#cc-main .pm__section--toggle.is-expanded .pm__section-title{border-bottom-left-radius:0;border-bottom-right-radius:0}#cc-main .pm__section--toggle.is-expanded .pm__section-arrow svg{transform:scale(.5) rotate(180deg)}#cc-main .pm__section--toggle.is-expanded .pm__section-desc-wrapper{display:flex}#cc-main .pm__section--expandable .pm__section-title{cursor:pointer;padding-left:3.4em}#cc-main .pm__section--expandable .pm__section-arrow{background:var(--cc-toggle-readonly-bg);border-radius:100%;display:flex;height:20px;justify-content:center;left:18px;pointer-events:none;position:absolute;width:20px}#cc-main .pm__section--expandable .pm__section-arrow svg{stroke:var(--cc-btn-secondary-color);transform:scale(.5)}#cc-main .pm__section-title-wrapper{align-items:center;display:flex;position:relative}#cc-main .pm__section-title-wrapper+.pm__section-desc-wrapper{margin-top:.85em}#cc-main .pm__section-title{border-radius:var(--cc-btn-border-radius);font-size:.95em;font-weight:600}#cc-main .pm__badge{align-items:center;background:var(--cc-btn-secondary-bg);border-radius:5em;color:var(--cc-secondary-color);display:flex;flex:none;font-size:.8em;font-weight:600;height:23px;justify-content:center;margin-left:1em;min-width:23px;overflow:hidden;padding:0 .6em 1px;position:relative;text-align:center;white-space:nowrap;width:auto}#cc-main .pm__service-counter{background:var(--cc-btn-primary-bg);color:var(--cc-btn-primary-color);padding:0;width:23px}#cc-main .pm__service-counter[data-counterlabel]{padding:0 .6em 1px;width:auto}#cc-main .section__toggle,#cc-main .section__toggle-wrapper,#cc-main .toggle__icon,#cc-main .toggle__label{border-radius:var(--cc-pm-toggle-border-radius);height:23px;transform:translateZ(0);width:50px}#cc-main .section__toggle-wrapper{cursor:pointer;position:absolute;right:18px;z-index:1}#cc-main .toggle-service{height:19px;position:relative;right:0;width:42px}#cc-main .toggle-service .section__toggle,#cc-main .toggle-service .toggle__icon,#cc-main .toggle-service .toggle__label{height:19px;width:42px}#cc-main .toggle-service .toggle__icon{position:relative}#cc-main .toggle-service .toggle__icon-circle{height:19px;width:19px}#cc-main .toggle-service .section__toggle:checked~.toggle__icon .toggle__icon-circle{transform:translateX(23px)}#cc-main .pm__section--toggle:nth-child(2) .section__toggle-wrapper:after{display:none!important}#cc-main .section__toggle{border:0;cursor:pointer;display:block;left:0;margin:0;position:absolute;top:0}#cc-main .section__toggle:disabled{cursor:not-allowed}#cc-main .toggle__icon{background:var(--cc-toggle-off-bg);box-shadow:0 0 0 1px var(--cc-toggle-off-bg);display:flex;flex-direction:row;pointer-events:none;position:absolute;transition:all .25s ease}#cc-main .toggle__icon-circle{background:var(--cc-toggle-off-knob-bg);border:none;border-radius:var(--cc-pm-toggle-border-radius);box-shadow:0 1px 2px rgba(24,32,3,.36);display:block;height:23px;left:0;position:absolute;top:0;transition:transform .25s ease,background-color .25s ease;width:23px}#cc-main .toggle__icon-off,#cc-main .toggle__icon-on{height:100%;position:absolute;transition:opacity .15s ease;width:100%}#cc-main .toggle__icon-on{opacity:0;transform:rotate(45deg)}#cc-main .toggle__icon-on svg{stroke:var(--cc-toggle-on-bg);transform:scale(.55) rotate(-45deg)}#cc-main .toggle__icon-off{opacity:1}#cc-main .toggle__icon-off svg{stroke:var(--cc-toggle-off-bg);transform:scale(.55)}#cc-main .section__toggle:checked~.toggle__icon{background:var(--cc-toggle-on-bg);box-shadow:0 0 0 1px var(--cc-toggle-on-bg)}#cc-main .section__toggle:checked~.toggle__icon .toggle__icon-circle{background-color:var(--cc-toggle-on-knob-bg);transform:translateX(27px)}#cc-main .section__toggle:checked~.toggle__icon .toggle__icon-on{opacity:1}#cc-main .section__toggle:checked~.toggle__icon .toggle__icon-off{opacity:0}#cc-main .section__toggle:checked:disabled~.toggle__icon{background:var(--cc-toggle-readonly-bg);box-shadow:0 0 0 1px var(--cc-toggle-readonly-bg)}#cc-main .section__toggle:checked:disabled~.toggle__icon .toggle__icon-circle{background:var(--cc-toggle-readonly-knob-bg);box-shadow:none}#cc-main .section__toggle:checked:disabled~.toggle__icon svg{stroke:var(--cc-toggle-readonly-knob-icon-color)}#cc-main .toggle__label{opacity:0;overflow:hidden;pointer-events:none;position:absolute;top:0;z-index:-1}#cc-main .pm__section-desc-wrapper{color:var(--cc-secondary-color);display:flex;flex-direction:column;font-size:.9em}#cc-main .pm__section-desc-wrapper>:not(:last-child){border-bottom:1px solid var(--cc-cookie-category-block-border)}#cc-main .pm__section-services{display:flex;flex-direction:column}#cc-main .pm__service{align-items:center;display:flex;justify-content:space-between;padding:.4em 1.2em;position:relative;transition:background-color .15s ease}#cc-main .pm__service:hover{background-color:var(--cc-cookie-category-block-hover-bg)}#cc-main .pm__service-header{align-items:center;display:flex;margin-right:1em;width:100%}#cc-main .pm__service-icon{border:2px solid;border-radius:100%;height:8px;margin-left:6px;margin-right:20px;margin-top:1px;min-width:8px}#cc-main .pm__service-title{font-size:.95em;width:100%;word-break:break-word}#cc-main .pm__section-desc{line-height:1.5em}#cc-main .pm__section-table{border-collapse:collapse;font-size:.9em;margin:0;overflow:hidden;padding:0;text-align:left;width:100%}#cc-main .pm__table-caption{text-align:left}#cc-main .pm__table-caption,#cc-main .pm__table-head>tr{border-bottom:1px dashed var(--cc-separator-border-color);color:var(--cc-primary-color);font-weight:600}#cc-main .pm__table-tr{transition:background-color .15s ease}#cc-main .pm__table-tr:hover{background:var(--cc-cookie-category-block-hover-bg)}#cc-main .pm__table-caption,#cc-main .pm__table-td,#cc-main .pm__table-th{padding:.625em .625em .625em 1.2em;vertical-align:top}#cc-main .pm__footer{border-top:1px solid var(--cc-separator-border-color);display:flex;justify-content:space-between}#cc-main .pm__btn-group{display:flex}#cc-main .pm__btn+.pm__btn,#cc-main .pm__btn-group+.pm__btn-group{margin-left:.375rem}#cc-main .pm--flip .pm__btn+.pm__btn,#cc-main .pm--flip .pm__btn-group+.pm__btn-group{margin-left:0;margin-right:.375rem}#cc-main .pm__btn{background:var(--cc-btn-primary-bg);border:1px solid var(--cc-btn-primary-border-color);border-radius:var(--cc-btn-border-radius);color:var(--cc-btn-primary-color);flex:auto;font-size:.82em;font-weight:600;min-height:42px;min-width:110px;padding:.5em 1.5em;text-align:center;transition:background-color .15s ease,border-color .15s ease,color .15s ease}#cc-main .pm__btn:hover{background:var(--cc-btn-primary-hover-bg);border-color:var(--cc-btn-primary-hover-border-color);color:var(--cc-btn-primary-hover-color)}#cc-main .pm__btn--secondary{background:var(--cc-btn-secondary-bg);border-color:var(--cc-btn-secondary-border-color);color:var(--cc-btn-secondary-color)}#cc-main .pm__btn--secondary:hover{background:var(--cc-btn-secondary-hover-bg);border-color:var(--cc-btn-secondary-hover-border-color);color:var(--cc-btn-secondary-hover-color)}#cc-main .pm--box{height:calc(100% - 2em);left:var(--cc-modal-margin);margin:0 auto;max-height:37.5em;max-width:43em;right:var(--cc-modal-margin);top:50%;transform:translateY(calc(-50% + 1.6em))}#cc-main .pm--box.pm--flip .pm__btn-group,#cc-main .pm--box.pm--flip .pm__footer{flex-direction:row-reverse}#cc-main .pm--bar{border-radius:0;bottom:0;height:100%;margin:0;max-height:none;max-width:29em;opacity:1;top:0;width:100%;--cc-modal-transition-duration:.35s}#cc-main .pm--bar .pm__section-table,#cc-main .pm--bar .pm__table-body,#cc-main .pm--bar .pm__table-td,#cc-main .pm--bar .pm__table-th,#cc-main .pm--bar .pm__table-tr{display:block}#cc-main .pm--bar .pm__table-head{display:none}#cc-main .pm--bar .pm__table-caption{display:block}#cc-main .pm--bar .pm__table-tr:not(:last-child){border-bottom:1px solid var(--cc-separator-border-color)}#cc-main .pm--bar .pm__table-td{display:flex;justify-content:space-between}#cc-main .pm--bar .pm__table-td:before{color:var(--cc-primary-color);content:attr(data-column);flex:1;font-weight:600;min-width:100px;overflow:hidden;padding-right:2em;text-overflow:ellipsis}#cc-main .pm--bar .pm__table-td>div{flex:3}#cc-main .pm--bar:not(.pm--wide) .pm__body,#cc-main .pm--bar:not(.pm--wide) .pm__footer,#cc-main .pm--bar:not(.pm--wide) .pm__header{padding:1em 1.3em}#cc-main .pm--bar:not(.pm--wide) .pm__btn-group,#cc-main .pm--bar:not(.pm--wide) .pm__footer{flex-direction:column}#cc-main .pm--bar:not(.pm--wide) .pm__btn+.pm__btn,#cc-main .pm--bar:not(.pm--wide) .pm__btn-group+.pm__btn-group{margin:.375rem 0 0}#cc-main .pm--bar:not(.pm--wide).pm--flip .pm__btn-group,#cc-main .pm--bar:not(.pm--wide).pm--flip .pm__footer{flex-direction:column-reverse}#cc-main .pm--bar:not(.pm--wide).pm--flip .pm__btn+.pm__btn,#cc-main .pm--bar:not(.pm--wide).pm--flip .pm__btn-group+.pm__btn-group{margin-bottom:.375rem;margin-top:0}#cc-main .pm--bar:not(.pm--wide) .pm__badge{display:none}#cc-main .pm--bar.pm--left{left:0;transform:translateX(-100%)}#cc-main .pm--bar.pm--right{right:0;transform:translateX(100%)}#cc-main .pm--bar.pm--wide{max-width:35em}#cc-main .pm--bar.pm--wide .pm__body,#cc-main .pm--bar.pm--wide .pm__footer,#cc-main .pm--bar.pm--wide .pm__header{padding:1em 1.4em}#cc-main .pm--bar.pm--wide.pm--flip .pm__btn-group,#cc-main .pm--bar.pm--wide.pm--flip .pm__footer{flex-direction:row-reverse}#cc-main .pm-overlay{background:var(--cc-overlay-bg);bottom:0;content:"";left:0;opacity:0;position:fixed;right:0;top:0;visibility:hidden;z-index:1}#cc-main .cc--anim .pm,#cc-main .cc--anim .pm-overlay{transition:opacity var(--cc-modal-transition-duration) ease,visibility var(--cc-modal-transition-duration) ease,transform var(--cc-modal-transition-duration) ease}.show--preferences #cc-main .cc--anim .pm{opacity:1;visibility:visible!important}.show--preferences #cc-main .cc--anim .pm--box{transform:translateY(-50%)}.show--preferences #cc-main .cc--anim .pm--bar{transform:translateX(0)}.show--preferences #cc-main .cc--anim .pm-overlay{opacity:1;visibility:visible}#cc-main.cc--rtl .pm__service-header{margin-left:1em;margin-right:0}#cc-main.cc--rtl .pm__section-arrow{left:unset;right:18px}#cc-main.cc--rtl .section__toggle-wrapper{left:18px;right:unset;transform-origin:left}#cc-main.cc--rtl .toggle-service{left:0}#cc-main.cc--rtl .pm__service-icon{margin-left:20px;margin-right:5px}#cc-main.cc--rtl .pm__section--toggle .pm__section-title{padding-left:5.4em;padding-right:1.2em}#cc-main.cc--rtl .pm__section--expandable .pm__section-title{padding-right:3.4em}#cc-main.cc--rtl .pm__badge{margin-left:unset;margin-right:1em}#cc-main.cc--rtl .toggle__icon-circle{transform:translateX(27px)}#cc-main.cc--rtl .toggle-service .toggle__icon-circle{transform:translateX(23px)}#cc-main.cc--rtl .section__toggle:checked~.toggle__icon .toggle__icon-circle{transform:translateX(0)}#cc-main.cc--rtl .pm__table-td,#cc-main.cc--rtl .pm__table-th{padding-left:unset;padding-right:1.2em;text-align:right}#cc-main.cc--rtl .pm__table-td{padding-left:unset;padding-right:1.2em}#cc-main.cc--rtl .pm__table-td:before{padding-left:2em;padding-right:unset}#cc-main.cc--rtl .pm__btn+.pm__btn,#cc-main.cc--rtl .pm__btn-group+.pm__btn-group{margin-left:0;margin-right:.375rem}#cc-main.cc--rtl .pm--flip .pm__btn+.pm__btn,#cc-main.cc--rtl .pm--flip .pm__btn-group+.pm__btn-group{margin-left:.375rem;margin-right:0}#cc-main.cc--rtl .pm--flip.pm--bar:not(.pm--wide) .pm__btn+.pm__btn,#cc-main.cc--rtl .pm--flip.pm--bar:not(.pm--wide) .pm__btn-group+.pm__btn-group{margin-left:0}@media screen and (max-width:640px){#cc-main .pm{border-radius:0;bottom:0;height:auto;left:0;max-height:100%;max-width:none!important;right:0;top:0;transform:translateY(1.6em)}#cc-main .pm__body,#cc-main .pm__footer,#cc-main .pm__header{padding:.9em!important}#cc-main .pm__badge{display:none}#cc-main .pm__section-table,#cc-main .pm__table-body,#cc-main .pm__table-caption,#cc-main .pm__table-td,#cc-main .pm__table-th,#cc-main .pm__table-tr{display:block}#cc-main .pm__table-head{display:none}#cc-main .pm__table-tr:not(:last-child){border-bottom:1px solid var(--cc-separator-border-color)}#cc-main .pm__table-td{display:flex;justify-content:space-between}#cc-main .pm__table-td:before{color:var(--cc-primary-color);content:attr(data-column);flex:1;font-weight:600;min-width:100px;overflow:hidden;padding-right:2em;text-overflow:ellipsis}#cc-main .pm__table-td>div{flex:3}#cc-main .pm__btn-group,#cc-main .pm__footer{flex-direction:column!important}#cc-main .pm__btn-group{display:flex!important}#cc-main .pm__btn+.pm__btn,#cc-main .pm__btn-group+.pm__btn-group{margin:.375rem 0 0!important}#cc-main .pm--flip .pm__btn+.pm__btn,#cc-main .pm--flip .pm__btn-group+.pm__btn-group{margin-bottom:.375rem!important;margin-top:0!important}#cc-main .pm--flip .pm__btn-group,#cc-main .pm--flip .pm__footer{flex-direction:column-reverse!important}.show--preferences #cc-main .cc--anim .pm{transform:translateY(0)!important}}',""]);const a=i},314(e){e.exports=function(e){var c=[];return c.toString=function(){return this.map(function(c){var o="",t=void 0!==c[5];return c[4]&&(o+="@supports (".concat(c[4],") {")),c[2]&&(o+="@media ".concat(c[2]," {")),t&&(o+="@layer".concat(c[5].length>0?" ".concat(c[5]):""," {")),o+=e(c),t&&(o+="}"),c[2]&&(o+="}"),c[4]&&(o+="}"),o}).join("")},c.i=function(e,o,t,n,r){"string"==typeof e&&(e=[[null,e,void 0]]);var i={};if(t)for(var a=0;a0?" ".concat(s[5]):""," {").concat(s[1],"}")),s[5]=r),o&&(s[2]?(s[1]="@media ".concat(s[2]," {").concat(s[1],"}"),s[2]=o):s[2]=o),n&&(s[4]?(s[1]="@supports (".concat(s[4],") {").concat(s[1],"}"),s[4]=n):s[4]="".concat(n)),c.push(s))}},c}},601(e){e.exports=function(e){return e[1]}},72(e){var c=[];function o(e){for(var o=-1,t=0;t0?" ".concat(o.layer):""," {")),t+=o.css,n&&(t+="}"),o.media&&(t+="}"),o.supports&&(t+="}");var r=o.sourceMap;r&&"undefined"!=typeof btoa&&(t+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(r))))," */")),c.styleTagTransform(t,e,c.options)}(c,e,o)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(c)}}}},113(e){e.exports=function(e,c){if(c.styleSheet)c.styleSheet.cssText=e;else{for(;c.firstChild;)c.removeChild(c.firstChild);c.appendChild(document.createTextNode(e))}}}},c={};function o(t){var n=c[t];if(void 0!==n)return n.exports;var r=c[t]={id:t,exports:{}};return e[t](r,r.exports,o),r.exports}o.n=e=>{var c=e&&e.__esModule?()=>e.default:()=>e;return o.d(c,{a:c}),c},o.d=(e,c)=>{for(var t in c)o.o(c,t)&&!o.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:c[t]})},o.o=(e,c)=>Object.prototype.hasOwnProperty.call(e,c),o.nc=void 0;var t=o(72),n=o.n(t),r=o(825),i=o.n(r),a=o(659),m=o.n(a),l=o(56),s=o.n(l),d=o(540),p=o.n(d),g=o(113),b=o.n(g),_=o(969),f={};f.styleTagTransform=b(),f.setAttributes=s(),f.insert=m().bind(null,"head"),f.domAPI=i(),f.insertStyleElement=p(),n()(_.A,f),_.A&&_.A.locals&&_.A.locals;const u="opt-in",h="opt-out",v="show--consent",y="show--preferences",w="disable--interaction",x="data-category",k="div",C="button",M="aria-hidden",S="btn-group",T="click",L="data-role",A="consentModal",z="preferencesModal";const j=new class{constructor(){this.t={mode:u,revision:0,autoShow:!0,lazyHtmlGeneration:!0,autoClearCookies:!0,manageScriptTags:!0,hideFromBots:!0,cookie:{name:"cc_cookie",expiresAfterDays:182,domain:"",path:"/",secure:!0,sameSite:"Lax"}},this.o={i:{},l:"",_:{},u:{},p:{},m:[],v:!1,h:null,C:null,S:null,M:"",D:!0,T:!1,k:!1,A:!1,N:!1,H:[],V:!1,I:!0,L:[],j:!1,F:"",P:!1,O:[],R:[],B:[],$:[],G:!1,J:!1,U:!1,q:[],K:[],W:[],X:{},Y:{},Z:{},ee:{},te:{},oe:[]},this.ne={ae:{},se:{}},this.ce={},this.re={ie:"cc:onFirstConsent",le:"cc:onConsent",de:"cc:onChange",fe:"cc:onModalShow",_e:"cc:onModalHide",ue:"cc:onModalReady"}}},I=(e,c)=>e.indexOf(c),O=(e,c)=>-1!==I(e,c),B=e=>Array.isArray(e),H=e=>"string"==typeof e,N=e=>!!e&&"object"==typeof e&&!B(e),D=e=>"function"==typeof e,P=e=>Object.keys(e),E=e=>Array.from(new Set(e)),R=()=>document.activeElement,Y=e=>e.preventDefault(),F=(e,c)=>e.querySelectorAll(c),X=e=>{const c=document.createElement(e);return e===C&&(c.type=e),c},Z=(e,c,o)=>e.setAttribute(c,o),J=(e,c,o)=>{e.removeAttribute(o?"data-"+c:c)},U=(e,c,o)=>e.getAttribute(o?"data-"+c:c),q=(e,c)=>e.appendChild(c),W=(e,c)=>e.classList.add(c),G=(e,c)=>W(e,"cm__"+c),$=(e,c)=>W(e,"pm__"+c),V=(e,c)=>e.classList.remove(c),K=e=>{if("object"!=typeof e)return e;if(e instanceof Date)return new Date(e.getTime());let c=Array.isArray(e)?[]:{};for(let o in e){let t=e[o];c[o]=K(t)}return c},Q=(e,c)=>dispatchEvent(new CustomEvent(e,{detail:c})),ee=(e,c,o,t)=>{e.addEventListener(c,o),t&&j.o.m.push({pe:e,ge:c,me:o})},ce=()=>{const e=j.t.cookie.expiresAfterDays;return D(e)?e(j.o.F):e},oe=(e,c)=>{const o=e||[],t=c||[];return o.filter(e=>!O(t,e)).concat(t.filter(e=>!O(o,e)))},te=e=>{j.o.R=E(e),j.o.F=(()=>{let e="custom";const{R:c,O:o,B:t}=j.o,n=c.length;return n===o.length?e="all":n===t.length&&(e="necessary"),e})()},ne=(e,c,o,t)=>{const n="accept-",{show:r,showPreferences:i,hide:a,hidePreferences:m,acceptCategory:l}=c,s=e||document,d=e=>F(s,`[data-cc="${e}"]`),p=(e,c)=>{Y(e),l(c),m(),a()},g=d("show-preferencesModal"),b=d("show-consentModal"),_=d(n+"all"),f=d(n+"necessary"),u=d(n+"custom"),h=j.t.lazyHtmlGeneration;for(const e of g)Z(e,"aria-haspopup","dialog"),ee(e,T,e=>{Y(e),i()}),h&&(ee(e,"mouseenter",e=>{Y(e),j.o.N||o(c,t)},!0),ee(e,"focus",()=>{j.o.N||o(c,t)}));for(let e of b)Z(e,"aria-haspopup","dialog"),ee(e,T,e=>{Y(e),r(!0)},!0);for(let e of _)ee(e,T,e=>{p(e,"all")},!0);for(let e of u)ee(e,T,e=>{p(e)},!0);for(let e of f)ee(e,T,e=>{p(e,[])},!0)},re=(e,c)=>{e&&(c&&(e.tabIndex=-1),e.focus(),c&&e.removeAttribute("tabindex"))},ie=(e,c)=>{const o=t=>{t.target.removeEventListener("transitionend",o),"opacity"===t.propertyName&&"1"===getComputedStyle(e).opacity&&re((e=>1===e?j.ne.be:j.ne.ve)(c))};ee(e,"transitionend",o)};let ae;const me=e=>{clearTimeout(ae),e?W(j.ne.ye,w):ae=setTimeout(()=>{V(j.ne.ye,w)},500)},le=["M 19.5 4.5 L 4.5 19.5 M 4.5 4.501 L 19.5 19.5","M 3.572 13.406 L 8.281 18.115 L 20.428 5.885","M 21.999 6.94 L 11.639 17.18 L 2.001 6.82 "],se=(e=0,c=1.5)=>``,de=e=>{const c=j.ne,o=j.o;(e=>{const t=e===c.he,n=o.i.disablePageInteraction?c.ye:t?c.Ce:c.ye;ee(n,"keydown",c=>{if("Tab"!==c.key||!(t?o.k&&!o.A:o.A))return;const n=R(),r=t?o.q:o.K;0!==r.length&&(c.shiftKey?n!==r[0]&&e.contains(n)||(Y(c),re(r[1])):n!==r[1]&&e.contains(n)||(Y(c),re(r[0])))},!0)})(e)},pe=["[href]",C,"input","details","[tabindex]"].map(e=>e+':not([tabindex="-1"])').join(","),ge=e=>{const{o:c,ne:o}=j,t=(e,c)=>{const o=F(e,pe);c[0]=o[0],c[1]=o[o.length-1]};1===e&&c.T&&t(o.he,c.q),2===e&&c.N&&t(o.we,c.K)},be=(e,c,o)=>{const{de:t,le:n,ie:r,_e:i,ue:a,fe:m}=j.ce,l=j.re;if(c){const t={modalName:c};return e===l.fe?D(m)&&m(t):e===l._e?D(i)&&i(t):(t.modal=o,D(a)&&a(t)),Q(e,t)}const s={cookie:j.o.p};e===l.ie?D(r)&&r(K(s)):e===l.le?D(n)&&n(K(s)):(s.changedCategories=j.o.L,s.changedServices=j.o.ee,D(t)&&t(K(s))),Q(e,K(s))},_e=(e,c)=>{try{return e()}catch(e){return!c&&console.warn("CookieConsent:",e),!1}},fe=e=>{const{Y:c,ee:o,O:t,X:n,oe:r,p:i,L:a}=j.o;for(const e of t){const t=o[e]||c[e]||[];for(const o of t){const t=n[e][o];if(!t)continue;const{onAccept:r,onReject:i}=t;!t.Se&&O(c[e],o)?(t.Se=!0,D(r)&&r()):t.Se&&!O(c[e],o)&&(t.Se=!1,D(i)&&i())}}if(!j.t.manageScriptTags)return;const m=r,l=e||i.categories||[],s=(e,t)=>{if(t>=e.length)return;const n=r[t];if(n.xe)return s(e,t+1);const i=n.Me,m=n.De,d=n.Te,p=O(l,m),g=!!d&&O(c[m],d);if(!d&&!n.ke&&p||!d&&n.ke&&!p&&O(a,m)||d&&!n.ke&&g||d&&n.ke&&!g&&O(o[m]||[],d)){n.xe=!0;const c=U(i,"type",!0);J(i,"type",!!c),J(i,x);let o=U(i,"src",!0);o&&J(i,"src",!0);const r=X("script");r.textContent=i.innerHTML;for(const{nodeName:e}of i.attributes)Z(r,e,i[e]||U(i,e));c&&(r.type=c),o?r.src=o:o=i.src;const a=!!o&&(!c||["text/javascript","module"].includes(c));if(a&&(r.onload=r.onerror=()=>{s(e,++t)}),i.replaceWith(r),a)return}s(e,++t)};s(m,0)},ue="bottom",he="left",ve="center",ye="right",we="inline",xe="wide",ke="pm--",Ce=["middle","top",ue],Me=[he,ve,ye],Se={box:{Ee:[xe,we],Ae:Ce,Ne:Me,He:ue,Ve:ye},cloud:{Ee:[we],Ae:Ce,Ne:Me,He:ue,Ve:ve},bar:{Ee:[we],Ae:Ce.slice(1),Ne:[],He:ue,Ve:""}},Te={box:{Ee:[],Ae:[],Ne:[],He:"",Ve:""},bar:{Ee:[xe],Ae:[],Ne:[he,ye],He:"",Ve:he}},Le=e=>{const c=j.o.i.guiOptions,o=c&&c.consentModal,t=c&&c.preferencesModal;0===e&&Ae(j.ne.he,Se,o,"cm--","box","cm"),1===e&&Ae(j.ne.we,Te,t,ke,"box","pm")},Ae=(e,c,o,t,n,r)=>{e.className=r;const i=o&&o.layout,a=o&&o.position,m=o&&o.flipButtons,l=!o||!1!==o.equalWeightButtons,s=i&&i.split(" ")||[],d=s[0],p=s[1],g=d in c?d:n,b=c[g],_=O(b.Ee,p)&&p,f=a&&a.split(" ")||[],u=f[0],h=t===ke?f[0]:f[1],v=O(b.Ae,u)?u:b.He,y=O(b.Ne,h)?h:b.Ve,w=c=>{c&&W(e,t+c)};w(g),w(_),w(v),w(y),m&&w("flip");const x=r+"__btn--secondary";if("cm"===r){const{Ie:e,Le:c}=j.ne;e&&(l?V(e,x):W(e,x)),c&&(l?V(c,x):W(c,x))}else{const{je:e}=j.ne;e&&(l?V(e,x):W(e,x))}},ze=(e,c)=>{const o=j.o,t=j.ne,{hide:n,hidePreferences:r,acceptCategory:i}=e,a=e=>{i(e),r(),n()},m=o.u&&o.u.preferencesModal;if(!m)return;const l=m.title,s=m.closeIconLabel,d=m.acceptAllBtn,p=m.acceptNecessaryBtn,g=m.savePreferencesBtn,b=m.sections||[],_=d||p||g;if(t.Fe)t.Pe=X(k),$(t.Pe,"body");else{t.Fe=X(k),W(t.Fe,"pm-wrapper");const e=X("div");W(e,"pm-overlay"),q(t.Fe,e),ee(e,T,r),t.we=X(k),W(t.we,"pm"),Z(t.we,"role","dialog"),Z(t.we,M,!0),Z(t.we,"aria-modal",!0),Z(t.we,"aria-labelledby","pm__title"),ee(t.ye,"keydown",e=>{27===e.keyCode&&r()},!0),t.Oe=X(k),$(t.Oe,"header"),t.Re=X("h2"),$(t.Re,"title"),t.Re.id="pm__title",t.Be=X(C),$(t.Be,"close-btn"),Z(t.Be,"aria-label",m.closeIconLabel||""),ee(t.Be,T,r),t.$e=X("span"),t.$e.innerHTML=se(),q(t.Be,t.$e),t.Ge=X(k),$(t.Ge,"body"),t.Je=X(k),$(t.Je,"footer");var f=X(k);W(f,"btns");var u=X(k),h=X(k);$(u,S),$(h,S),q(t.Je,u),q(t.Je,h),q(t.Oe,t.Re),q(t.Oe,t.Be),t.ve=X(k),Z(t.ve,"tabIndex",-1),q(t.we,t.ve),q(t.we,t.Oe),q(t.we,t.Ge),_&&q(t.we,t.Je),q(t.Fe,t.we)}let v;l&&(t.Re.innerHTML=l,s&&Z(t.Be,"aria-label",s)),b.forEach((e,c)=>{const n=e.title,r=e.description,i=e.linkedCategory,a=i&&o.P[i],l=e.cookieTable,s=l&&l.body,d=l&&l.caption,p=s&&s.length>0,g=!!a,b=g&&o.X[i],_=N(b)&&P(b)||[],f=g&&(!!r||!!p||P(b).length>0);var u=X(k);if($(u,"section"),f||r){var h=X(k);$(h,"section-desc-wrapper")}let y=_.length;if(f&&y>0){const e=X(k);$(e,"section-services");for(const c of _){const o=b[c],t=o&&o.label||c,n=X(k),r=X(k),m=X(k),l=X(k);$(n,"service"),$(l,"service-title"),$(r,"service-header"),$(m,"service-icon");const s=je(t,c,a,!0,i);l.innerHTML=t,q(r,m),q(r,l),q(n,r),q(n,s),q(e,n)}q(h,e)}if(n){var w=X(k),x=X(g?C:k);if($(w,"section-title-wrapper"),$(x,"section-title"),x.innerHTML=n,q(w,x),g){const e=X("span");e.innerHTML=se(2,3.5),$(e,"section-arrow"),q(w,e),u.className+="--toggle";const c=je(n,i,a);let o=m.serviceCounterLabel;if(y>0&&H(o)){let e=X("span");$(e,"badge"),$(e,"service-counter"),Z(e,M,!0),Z(e,"data-servicecounter",y),o&&(o=o.split("|"),o=o.length>1&&y>1?o[1]:o[0],Z(e,"data-counterlabel",o)),e.innerHTML=y+(o?" "+o:""),q(x,e)}if(f){$(u,"section--expandable");var S=i+"-desc";Z(x,"aria-expanded",!1),Z(x,"aria-controls",S)}q(w,c)}else Z(x,"role","heading"),Z(x,"aria-level","3");q(u,w)}if(r){var L=X("p");$(L,"section-desc"),L.innerHTML=r,q(h,L)}if(f&&(Z(h,M,"true"),h.id=S,((e,c,o)=>{ee(x,T,()=>{c.classList.contains("is-expanded")?(V(c,"is-expanded"),Z(o,"aria-expanded","false"),Z(e,M,"true")):(W(c,"is-expanded"),Z(o,"aria-expanded","true"),Z(e,M,"false"))})})(h,u,x),p)){const e=X("table"),o=X("thead"),n=X("tbody");if(d){const c=X("caption");$(c,"table-caption"),c.innerHTML=d,e.appendChild(c)}$(e,"section-table"),$(o,"table-head"),$(n,"table-body");const r=l.headers,i=P(r),a=t.Ue.createDocumentFragment(),m=X("tr");for(const e of i){const o=r[e],t=X("th");t.id="cc__row-"+o+c,Z(t,"scope","col"),$(t,"table-th"),t.innerHTML=o,q(a,t)}q(m,a),q(o,m);const p=t.Ue.createDocumentFragment();for(const e of s){const o=X("tr");$(o,"table-tr");for(const t of i){const n=r[t],i=e[t],a=X("td"),m=X(k);$(a,"table-td"),Z(a,"data-column",n),Z(a,"headers","cc__row-"+n+c),m.insertAdjacentHTML("beforeend",i),q(a,m),q(o,a)}q(p,o)}q(n,p),q(e,o),q(e,n),q(h,e)}(f||r)&&q(u,h);const A=t.Pe||t.Ge;g?(v||(v=X(k),$(v,"section-toggles")),v.appendChild(u)):v=null,q(A,v||u)}),d&&(t.ze||(t.ze=X(C),$(t.ze,"btn"),Z(t.ze,L,"all"),q(u,t.ze),ee(t.ze,T,()=>a("all"))),t.ze.innerHTML=d),p&&(t.je||(t.je=X(C),$(t.je,"btn"),Z(t.je,L,"necessary"),q(u,t.je),ee(t.je,T,()=>a([]))),t.je.innerHTML=p),g&&(t.qe||(t.qe=X(C),$(t.qe,"btn"),$(t.qe,"btn--secondary"),Z(t.qe,L,"save"),q(h,t.qe),ee(t.qe,T,()=>a())),t.qe.innerHTML=g),t.Pe&&(t.we.replaceChild(t.Pe,t.Ge),t.Ge=t.Pe),Le(1),o.N||(o.N=!0,be(j.re.ue,z,t.we),c(e),q(t.Ce,t.Fe),de(t.we),setTimeout(()=>W(t.Fe,"cc--anim"),100)),ge(2)};function je(e,c,o,t,n){const r=j.o,i=j.ne,a=X("label"),m=X("input"),l=X("span"),s=X("span"),d=X("span"),p=X("span"),g=X("span");if(p.innerHTML=se(1,3),g.innerHTML=se(0,3),m.type="checkbox",W(a,"section__toggle-wrapper"),W(m,"section__toggle"),W(p,"toggle__icon-on"),W(g,"toggle__icon-off"),W(l,"toggle__icon"),W(s,"toggle__icon-circle"),W(d,"toggle__label"),Z(l,M,"true"),t?(W(a,"toggle-service"),Z(m,x,n),i.se[n][c]=m):i.ae[c]=m,t?(e=>{ee(m,"change",()=>{const c=i.se[e],o=i.ae[e];r.Z[e]=[];for(let o in c){const t=c[o];t.checked&&r.Z[e].push(t.value)}o.checked=r.Z[e].length>0})})(n):(e=>{ee(m,T,()=>{const c=i.se[e],o=m.checked;r.Z[e]=[];for(let t in c)c[t].checked=o,o&&r.Z[e].push(t)})})(c),m.value=c,d.textContent=e.replace(/<.*>.*<\/.*>/gm,""),q(s,g),q(s,p),q(l,s),r.D)(o.readOnly||o.enabled)&&(m.checked=!0);else if(t){const e=r.Y[n];m.checked=o.readOnly||O(e,c)}else O(r.R,c)&&(m.checked=!0);return o.readOnly&&(m.disabled=!0),q(a,m),q(a,l),q(a,d),a}const Ie=()=>{const e=X("span");return j.ne.Ke||(j.ne.Ke=e),e},Oe=(e,c)=>{const o=j.o,t=j.ne,{hide:n,showPreferences:r,acceptCategory:i}=e,a=o.u&&o.u.consentModal;if(!a)return;const m=a.acceptAllBtn,l=a.acceptNecessaryBtn,s=a.showPreferencesBtn,d=a.closeIconLabel,p=a.footer,g=a.label,b=a.title,_=e=>{n(),i(e)};if(!t.Qe){t.Qe=X(k),t.he=X(k),t.We=X(k),t.Xe=X(k),t.Ye=X(k),W(t.Qe,"cm-wrapper"),W(t.he,"cm"),G(t.We,"body"),G(t.Xe,"texts"),G(t.Ye,"btns"),Z(t.he,"role","dialog"),Z(t.he,"aria-modal","true"),Z(t.he,M,"false"),Z(t.he,"aria-describedby","cm__desc"),g?Z(t.he,"aria-label",g):b&&Z(t.he,"aria-labelledby","cm__title");const e="box",c=o.i.guiOptions,n=c&&c.consentModal,r=(n&&n.layout||e).split(" ")[0]===e;b&&d&&r&&(t.Le||(t.Le=X(C),t.Le.innerHTML=se(),G(t.Le,"btn"),G(t.Le,"btn--close"),ee(t.Le,T,()=>{_([])}),q(t.We,t.Le)),Z(t.Le,"aria-label",d)),q(t.We,t.Xe),(m||l||s)&&q(t.We,t.Ye),t.be=X(k),Z(t.be,"tabIndex",-1),q(t.he,t.be),q(t.he,t.We),q(t.Qe,t.he)}b&&(t.Ze||(t.Ze=X("h2"),t.Ze.className=t.Ze.id="cm__title",q(t.Xe,t.Ze)),t.Ze.innerHTML=b);let f=a.description;if(f&&(o.V&&(f=f.replace("{{revisionMessage}}",o.I?"":a.revisionMessage||"")),t.et||(t.et=X("p"),t.et.className=t.et.id="cm__desc",q(t.Xe,t.et)),t.et.innerHTML=f),m&&(t.tt||(t.tt=X(C),q(t.tt,Ie()),G(t.tt,"btn"),Z(t.tt,L,"all"),ee(t.tt,T,()=>{_("all")})),t.tt.firstElementChild.innerHTML=m),l&&(t.Ie||(t.Ie=X(C),q(t.Ie,Ie()),G(t.Ie,"btn"),Z(t.Ie,L,"necessary"),ee(t.Ie,T,()=>{_([])})),t.Ie.firstElementChild.innerHTML=l),s&&(t.ot||(t.ot=X(C),q(t.ot,Ie()),G(t.ot,"btn"),G(t.ot,"btn--secondary"),Z(t.ot,L,"show"),ee(t.ot,"mouseenter",()=>{o.N||ze(e,c)}),ee(t.ot,T,r)),t.ot.firstElementChild.innerHTML=s),t.nt||(t.nt=X(k),G(t.nt,S),m&&q(t.nt,t.tt),l&&q(t.nt,t.Ie),(m||l)&&q(t.We,t.nt),q(t.Ye,t.nt)),t.ot&&!t.st&&(t.st=X(k),t.Ie&&t.tt?(G(t.st,S),q(t.st,t.ot),q(t.Ye,t.st)):(q(t.nt,t.ot),G(t.nt,S+"--uneven"))),p){if(!t.ct){let e=X(k),c=X(k);t.ct=X(k),G(e,"footer"),G(c,"links"),G(t.ct,"link-group"),q(c,t.ct),q(e,c),q(t.he,e)}t.ct.innerHTML=p}Le(0),o.T||(o.T=!0,be(j.re.ue,A,t.he),c(e),q(t.Ce,t.Qe),de(t.he),setTimeout(()=>W(t.Qe,"cc--anim"),100)),ge(1),ne(t.We,e,ze,c)},Be=e=>{if(!H(e))return null;if(e in j.o._)return e;let c=e.slice(0,2);return c in j.o._?c:null},He=()=>j.o.l||j.o.i.language.default,Ne=e=>{e&&(j.o.l=e)},De=()=>{const e=j.ne;if(e.Ce)return;e.Ce=X(k),e.Ce.id="cc-main",e.Ce.setAttribute("data-nosnippet",""),(()=>{let e=j.o.i.language.rtl,c=j.ne.Ce;e&&c&&(B(e)||(e=[e]),O(e,j.o.l)?W(c,"cc--rtl"):V(c,"cc--rtl"))})();let c=j.o.i.root;c&&H(c)&&(c=document.querySelector(c)),(c||e.Ue.body).appendChild(e.Ce)},Pe=(e,c)=>{if(c instanceof RegExp)return e.filter(e=>c.test(e));{const o=I(e,c);return o>-1?[e[o]]:[]}},Ee=(e,c,o)=>{if(0===e.length)return;const t=o||j.t.cookie.domain,n=c||j.t.cookie.path,r="www."===t.slice(0,4),i=r&&t.substring(4),a=(e,c)=>{c&&"."!==c.slice(0,1)&&(c="."+c),document.cookie=e+"=; path="+n+(c?"; domain="+c:"")+"; expires=Thu, 01 Jan 1970 00:00:01 GMT;"};for(const c of e)a(c,o),o||a(c,t),r&&a(c,i)},Re=(e,c)=>{const o=document.cookie.match("(^|;)\\s*"+e+"\\s*=\\s*([^;]+)");return o?c?o.pop():e:""},Ye=e=>{const c=j.o.D?[]:j.o.R;return O(c,e)},Fe=(e,c)=>{const o=j.o.D?[]:j.o.Y[c]||[];return O(o,e)},Xe=e=>{const{ne:c,o}=j;if(!o.k){if(!o.T){if(!e)return;Oe(Je,De)}o.k=!0,o.J=R(),o.v&&me(!0),ie(c.he,1),W(c.ye,v),Z(c.he,M,"false"),setTimeout(()=>{re(j.ne.be)},100),be(j.re.fe,A)}},Ze=()=>{const e=j.o;e.A||(e.N||ze(Je,De),e.A=!0,e.k?e.U=R():e.J=R(),ie(j.ne.we,2),W(j.ne.ye,y),Z(j.ne.we,M,"false"),setTimeout(()=>{re(j.ne.ve)},100),be(j.re.fe,z))};var Je={show:Xe,hide:()=>{const{ne:e,o:c,re:o}=j;c.k&&(c.k=!1,c.v&&me(),re(e.Ke,!0),V(e.ye,v),Z(e.he,M,"true"),re(c.J),c.J=null,be(o._e,A))},showPreferences:Ze,hidePreferences:()=>{const e=j.o;e.A&&(e.A=!1,(()=>{const e=Ue(),c=j.o.P,o=j.ne.ae,t=j.ne.se,n=e=>O(j.o.$,e);for(const r in o){const i=!!c[r].readOnly;o[r].checked=i||(e?Ye(r):n(r));for(const c in t[r])t[r][c].checked=i||(e?Fe(c,r):n(r))}})(),re(j.ne.$e,!0),V(j.ne.ye,y),Z(j.ne.we,M,"true"),e.k?(re(e.U),e.U=null):(re(e.J),e.J=null),be(j.re._e,z))},acceptCategory:(e,c=[])=>{((e,c)=>{const{O:o,R:t,B:n,N:r,Z:i,$:a,X:m}=j.o;let l=[];if(e){B(e)?l.push(...e):H(e)&&(l="all"===e?o:[e]);for(const e of o)i[e]=O(l,e)?P(m[e]):[]}else l=[...t,...a],r&&(l=(()=>{const e=j.ne.ae;if(!e)return[];let c=[];for(let o in e)e[o].checked&&c.push(o);return c})());l=l.filter(e=>!O(o,e)||!O(c,e)),l.push(...n),te(l)})(e,c),(()=>{const e=j.o,{Z:c,B:o,Y:t,X:n,O:r}=e,i=r;e.te=K(t);for(const r of i){const i=n[r],a=P(i),m=c[r]&&c[r].length>0,l=O(o,r);if(0!==a.length){if(t[r]=[],l)t[r].push(...a);else if(m){const e=c[r];t[r].push(...e)}else t[r]=e.Z[r];t[r]=E(t[r])}}})(),(()=>{const e=j.o;e.L=j.t.mode===h&&e.D?oe(e.$,e.R):oe(e.R,e.p.categories);let c=e.L.length>0,o=!1;for(const c of e.O)e.ee[c]=oe(e.Y[c],e.te[c]),e.ee[c].length>0&&(o=!0);const t=j.ne.ae;for(const c in t)t[c].checked=O(e.R,c);for(const c of e.O){const o=j.ne.se[c],t=e.Y[c];for(const e in o)o[e].checked=O(t,e)}e.C||(e.C=new Date),e.M||(e.M=([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,e=>(e^crypto.getRandomValues(new Uint8Array(1))[0]&15>>e/4).toString(16))),e.p={categories:K(e.R),revision:j.t.revision,data:e.h,consentTimestamp:e.C.toISOString(),consentId:e.M,services:K(e.Y),languageCode:j.o.l},e.S&&(e.p.lastConsentTimestamp=e.S.toISOString());let n=!1;const r=c||o;(e.D||r)&&(e.D&&(e.D=!1,n=!0),e.S=e.S?new Date:e.C,e.p.lastConsentTimestamp=e.S.toISOString(),(e=>{const{hostname:c,protocol:o}=location,{name:t,path:n,domain:r,sameSite:i,useLocalStorage:a,secure:m}=j.t.cookie,l=e?(()=>{const e=j.o.S,c=e?new Date-e:0;return 864e5*ce()-c})():864e5*ce(),s=new Date;s.setTime(s.getTime()+l),j.o.p.expirationTime=s.getTime();const d=JSON.stringify(j.o.p);let p=t+"="+encodeURIComponent(d)+(0!==l?"; expires="+s.toUTCString():"")+"; Path="+n+"; SameSite="+i;O(c,".")&&(p+="; Domain="+r),m&&"https:"===o&&(p+="; Secure"),a?((e,c)=>{_e(()=>localStorage.setItem(e,c))})(t,d):document.cookie=p,j.o.p})(),j.t.autoClearCookies&&(n||r)&&(e=>{const c=j.o,o=(e=>{const c=document.cookie.split(/;\s*/),o=[];for(const t of c){let c=t.split("=")[0];e?_e(()=>{e.test(c)&&o.push(c)}):o.push(c)}return o})(),t=(e=>{const c=j.o;return(e?c.O:c.L).filter(e=>{const o=c.P[e];return!!o&&!o.readOnly&&!!o.autoClear})})(e);for(const e in c.ee)for(const t of c.ee[e]){const n=c.X[e][t].cookies;if(!O(c.Y[e],t)&&n)for(const e of n){const c=Pe(o,e.name);Ee(c,e.path,e.domain)}}for(const n of t){const t=c.P[n].autoClear,r=t&&t.cookies||[],i=O(c.L,n),a=!O(c.R,n),m=i&&a;if(e?a:m){t.reloadPage&&m&&(c.j=!0);for(const e of r){const c=Pe(o,e.name);Ee(c,e.path,e.domain)}}}})(n),fe()),n&&(be(j.re.ie),be(j.re.le),j.t.mode===u)||(r&&be(j.re.de),e.j&&(e.j=!1,location.reload()))})()}};const Ue=()=>!j.o.D,qe={cookie:{name:"cc_cookie",expiresAfterDays:182},guiOptions:{consentModal:{layout:"cloud inline",position:"bottom center",equalWeightButtons:!0,flipButtons:!1},preferencesModal:{layout:"box",equalWeightButtons:!0,flipButtons:!1}},onFirstConsent:({cookie:e})=>{console.log("onFirstConsent fired",e)},onConsent:({cookie:e})=>{console.log("onConsent fired!",e)},onChange:({changedCategories:e,changedServices:c})=>{console.log("onChange fired!",e,c)},onModalReady:({modalName:e})=>{console.log("ready:",e)},onModalShow:({modalName:e})=>{console.log("visible:",e)},onModalHide:({modalName:e})=>{console.log("hidden:",e)},categories:{necessary:{enabled:!0,readOnly:!0},analytics:{enabled:!1,readOnly:!1,autoClear:{cookies:[{name:/^_ga/},{name:"_gid"},{name:"_gat"}]}}},language:{default:"en",translations:{en:{consentModal:{title:"We use cookies",description:"This website uses cookies to ensure its proper operation and to understand how you interact with it.",acceptAllBtn:"Accept all",acceptNecessaryBtn:"Reject all",showPreferencesBtn:"Manage preferences"},preferencesModal:{title:"Manage cookie preferences",acceptAllBtn:"Accept all",acceptNecessaryBtn:"Reject all",savePreferencesBtn:"Accept current selection",closeIconLabel:"Close modal",sections:[{title:"Your Privacy Choices",description:"This panel allows you to customize your cookie preferences."},{title:"Strictly Necessary",description:"These cookies are essential for the proper functioning of the website and cannot be disabled.",linkedCategory:"necessary"},{title:"Performance and Analytics",description:"These cookies collect information about how you use our website. All of the data is anonymized and cannot be used to identify you.",linkedCategory:"analytics"}]}}}}};document.addEventListener("DOMContentLoaded",function(){try{console.log("Initializing cookie consent...");const e=void 0!==window.warderSettings?function(e,c){console.log("Creating config from settings:",c);const o=JSON.parse(JSON.stringify(e));if(!c||!c.settings)return console.warn("WordPress settings not available, using defaults"),o;const t=c.settings;try{if(t.current_lang&&(o.language.default=t.current_lang),o.language.translations[o.language.default]){const e=o.language.translations[o.language.default];e.consentModal.title=t.title||e.consentModal.title,e.consentModal.description=t.description||e.consentModal.description,e.consentModal.acceptAllBtn=t.primary_btn_text||e.consentModal.acceptAllBtn,e.consentModal.acceptNecessaryBtn=t.secondary_btn_text||e.consentModal.acceptNecessaryBtn;const c=e.preferencesModal.sections[0];e.preferencesModal.sections=[c]}return t.cookie_categories&&"object"==typeof t.cookie_categories&&(console.log("Cookie categories from WordPress:",t.cookie_categories),Object.entries(t.cookie_categories).forEach(([e,c])=>{if(o.categories[e]=o.categories[e]||{},o.categories[e].enabled=c.enabled||!1,o.categories[e].readOnly=c.readonly||!1,c.cookies&&c.cookies.length>0&&(o.categories[e].autoClear={cookies:c.cookies.map(e=>{if(!(e.is_regex&&e.name.startsWith("/")&&e.name.includes("/")))return{name:e.name};try{const c=e.name.slice(1,e.name.lastIndexOf("/"));return{name:new RegExp(c)}}catch(c){return console.error("Invalid regex pattern:",e.name),{name:e.name}}})}),o.language.translations[o.language.default]){const t=o.language.translations[o.language.default],n=t.preferencesModal.sections.find(c=>c.linkedCategory===e);n?(n.title=c.title||n.title,n.description=c.description||n.description):t.preferencesModal.sections.push({title:c.title||e.charAt(0).toUpperCase()+e.slice(1),description:c.description||"",linkedCategory:e})}})),console.log("Final cookie consent configuration:",o),o}catch(c){return console.error("Error building cookie consent config:",c),e}}(qe,window.warderSettings):qe;console.log("Running cookie consent with config:",e),(async e=>{const{o:c,t:o,re:t}=j,n=window;if(!n._ccRun){if(n._ccRun=!0,(e=>{const{ne:c,t:o,o:t}=j,n=o,r=t,{cookie:i}=n,a=j.ce,m=e.cookie,l=e.categories,s=P(l)||[],d=navigator,p=document;c.Ue=p,c.ye=p.documentElement,i.domain=location.hostname,r.i=e,r.P=l,r.O=s,r._=e.language.translations,r.v=!!e.disablePageInteraction,a.ie=e.onFirstConsent,a.le=e.onConsent,a.de=e.onChange,a._e=e.onModalHide,a.fe=e.onModalShow,a.ue=e.onModalReady;const{mode:g,autoShow:b,lazyHtmlGeneration:_,autoClearCookies:f,revision:u,manageScriptTags:v,hideFromBots:y}=e;g===h&&(n.mode=g),"boolean"==typeof f&&(n.autoClearCookies=f),"boolean"==typeof v&&(n.manageScriptTags=v),"number"==typeof u&&u>=0&&(n.revision=u,r.V=!0),"boolean"==typeof b&&(n.autoShow=b),"boolean"==typeof _&&(n.lazyHtmlGeneration=_),!1===y&&(n.hideFromBots=!1),!0===n.hideFromBots&&d&&(r.G=d.userAgent&&/bot|crawl|spider|slurp|teoma/i.test(d.userAgent)||d.webdriver),N(m)&&(n.cookie={...i,...m}),n.autoClearCookies,r.V,n.manageScriptTags,(e=>{const{P:c,X:o,Y:t,Z:n,B:r}=j.o;for(let i of e){const e=c[i],a=e.services||{},m=N(a)&&P(a)||[];o[i]={},t[i]=[],n[i]=[],e.readOnly&&(r.push(i),t[i]=m),j.ne.se[i]={};for(let e of m){const c=a[e];c.Se=!1,o[i][e]=c}}})(s),(()=>{if(!j.t.manageScriptTags)return;const e=j.o,c=F(document,"script["+x+"]");for(const o of c){let c=U(o,x),t=o.dataset.service||"",n=!1;if(c&&"!"===c.charAt(0)&&(c=c.slice(1),n=!0),"!"===t.charAt(0)&&(t=t.slice(1),n=!0),O(e.O,c)&&(e.oe.push({Me:o,xe:!1,ke:n,De:c,Te:t}),t)){const o=e.X[c];o[t]||(o[t]={Se:!1})}}})(),Ne((()=>{const e=j.o.i.language.autoDetect;if(e){const c={browser:navigator.language,document:document.documentElement.lang},o=Be(c[e]);if(o)return o}return He()})())})(e),c.G)return;(()=>{const e=j.o,c=j.t,o=(e=>{const c=e||j.t.cookie.name,o=j.t.cookie.useLocalStorage;return((e,c)=>{let o;return o=_e(()=>JSON.parse(c?e:decodeURIComponent(e)),!0)||{},o})(o?(t=c,_e(()=>localStorage.getItem(t))||""):Re(c,!0),o);var t})(),{categories:t,services:n,consentId:r,consentTimestamp:i,lastConsentTimestamp:a,data:m,revision:l}=o,s=B(t);e.p=o,e.M=r;const d=!!r&&H(r);e.C=i,e.C&&(e.C=new Date(i)),e.S=a,e.S&&(e.S=new Date(a)),e.h=void 0!==m?m:null,e.V&&d&&l!==c.revision&&(e.I=!1),e.D=!(d&&e.I&&e.C&&e.S&&s),c.cookie.useLocalStorage&&!e.D&&(e.D=(new Date).getTime()>(o.expirationTime||0),e.D&&(e=>{_e(()=>localStorage.removeItem(e))})(c.cookie.name)),e.D,(()=>{const e=j.o;for(const c of e.O){const o=e.P[c];if(o.readOnly||o.enabled){e.$.push(c);const o=e.X[c]||{};for(let t in o)e.Z[c].push(t),e.i.mode===h&&e.Y[c].push(t)}}})(),e.D?c.mode===h&&(e.R=[...e.$]):(e.Y={...e.Y,...n},e.Z={...e.Y},te([...e.B,...t]))})();const i=Ue();if(!await(async e=>{const c=j.o;let o=Be(e)?e:He(),t=c._[o];if(H(t)?t=await(async e=>{try{const c=await fetch(e);return await c.json()}catch(e){return console.error(e),!1}})(t):D(t)&&(t=await t()),!t)throw`Could not load translation for the '${o}' language`;return c.u=t,Ne(o),!0})())return!1;if(ne(null,r=Je,ze,De),j.o.D&&Oe(r,De),j.t.lazyHtmlGeneration||ze(r,De),o.autoShow&&!i&&Xe(!0),i)return fe(),be(t.le);o.mode===h&&fe(c.$)}var r})(e);const c=document.getElementById("warder-preferences-toggle");c&&c.addEventListener("click",function(){Ze()}),console.log("Cookie consent initialized successfully")}catch(e){console.error("Error initializing cookie consent:",e),console.error("Error details:",e.message,e.stack)}})})(); \ No newline at end of file +(()=>{"use strict";var e={969(e,c,o){o.d(c,{A:()=>a});var t=o(601),n=o.n(t),r=o(314),i=o.n(r)()(n());i.push([e.id,'#cc-main{background:transparent;color:var(--cc-primary-color);font-family:var(--cc-font-family);font-size:16px;font-weight:400;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.15;position:relative;text-rendering:optimizeLegibility;-webkit-text-size-adjust:100%;position:fixed;z-index:var(--cc-z-index)}#cc-main :after,#cc-main :before,#cc-main a,#cc-main button,#cc-main div,#cc-main h2,#cc-main input,#cc-main p,#cc-main span{all:unset;box-sizing:border-box}#cc-main .pm__badge,#cc-main button{all:initial;box-sizing:border-box;color:unset;visibility:unset}#cc-main .pm__badge,#cc-main a,#cc-main button,#cc-main input{-webkit-appearance:none;appearance:none;cursor:pointer;font-family:inherit;font-size:100%;line-height:normal;margin:0;outline:revert;outline-offset:2px;overflow:hidden}#cc-main table,#cc-main tbody,#cc-main td,#cc-main th,#cc-main thead,#cc-main tr{all:revert;color:inherit;font-family:inherit;font-size:inherit;font-weight:inherit}:root{--cc-font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--cc-modal-border-radius:.5rem;--cc-btn-border-radius:.4rem;--cc-modal-transition-duration:.25s;--cc-link-color:var(--cc-btn-primary-bg);--cc-modal-margin:1rem;--cc-z-index:2147483647;--cc-bg:#fff;--cc-primary-color:#2c2f31;--cc-secondary-color:#5e6266;--cc-btn-primary-bg:#30363c;--cc-btn-primary-color:#fff;--cc-btn-primary-border-color:var(--cc-btn-primary-bg);--cc-btn-primary-hover-bg:#000;--cc-btn-primary-hover-color:#fff;--cc-btn-primary-hover-border-color:var(--cc-btn-primary-hover-bg);--cc-btn-secondary-bg:#eaeff2;--cc-btn-secondary-color:var(--cc-primary-color);--cc-btn-secondary-border-color:var(--cc-btn-secondary-bg);--cc-btn-secondary-hover-bg:#d4dae0;--cc-btn-secondary-hover-color:#000;--cc-btn-secondary-hover-border-color:#d4dae0;--cc-separator-border-color:#f0f4f7;--cc-toggle-on-bg:var(--cc-btn-primary-bg);--cc-toggle-off-bg:#667481;--cc-toggle-on-knob-bg:#fff;--cc-toggle-off-knob-bg:var(--cc-toggle-on-knob-bg);--cc-toggle-enabled-icon-color:var(--cc-bg);--cc-toggle-disabled-icon-color:var(--cc-bg);--cc-toggle-readonly-bg:#d5dee2;--cc-toggle-readonly-knob-bg:#fff;--cc-toggle-readonly-knob-icon-color:var(--cc-toggle-readonly-bg);--cc-section-category-border:var(--cc-cookie-category-block-bg);--cc-cookie-category-block-bg:#f0f4f7;--cc-cookie-category-block-border:#f0f4f7;--cc-cookie-category-block-hover-bg:#e9eff4;--cc-cookie-category-block-hover-border:#e9eff4;--cc-cookie-category-expanded-block-bg:transparent;--cc-cookie-category-expanded-block-hover-bg:#dee4e9;--cc-overlay-bg:rgba(0,0,0,.65);--cc-webkit-scrollbar-bg:var(--cc-section-category-border);--cc-webkit-scrollbar-hover-bg:var(--cc-btn-primary-hover-bg);--cc-footer-bg:var(--cc-btn-secondary-bg);--cc-footer-color:var(--cc-secondary-color);--cc-footer-border-color:#e4eaed;--cc-pm-toggle-border-radius:4em}#cc-main.cc--rtl{direction:rtl}#cc-main .cm__title,#cc-main a,#cc-main b,#cc-main em,#cc-main strong{font-weight:600}#cc-main button>span{pointer-events:none}#cc-main .cc__link,#cc-main a{background-image:linear-gradient(currentColor,currentColor);background-position:0 100%;background-repeat:no-repeat;background-size:0 1px;font-weight:600;position:relative;transition:background-size .25s,color .25s ease}#cc-main .cc__link:hover,#cc-main a:hover{background-size:100% 1px;color:var(--cc-primary-color)}#cc-main .cc__link{color:var(--cc-link-color)}#cc-main .cm__desc,#cc-main .pm__body{overscroll-behavior:auto contain;scrollbar-width:thin}@media screen and (min-width:640px){#cc-main ::-webkit-scrollbar,#cc-main ::-webkit-scrollbar-thumb,#cc-main ::-webkit-scrollbar-track{all:revert}#cc-main ::-webkit-scrollbar-thumb{-webkit-background-clip:padding-box;background-clip:padding-box;background:var(--cc-toggle-readonly-bg);border:.25rem solid var(--cc-bg);border-radius:1rem}#cc-main ::-webkit-scrollbar-thumb:hover{background:var(--cc-toggle-off-bg)}#cc-main ::-webkit-scrollbar{background:transparent;width:12px}}html.disable--interaction.show--consent,html.disable--interaction.show--consent body{height:auto!important;overflow:hidden!important}@media (prefers-reduced-motion){#cc-main{--cc-modal-transition-duration:0s}}.cc--darkmode{--cc-bg:#161a1c;--cc-primary-color:#ebf3f6;--cc-secondary-color:#aebbc5;--cc-btn-primary-bg:#c2d0e0;--cc-btn-primary-color:var(--cc-bg);--cc-btn-primary-border-color:var(--cc-btn-primary-bg);--cc-btn-primary-hover-bg:#98a7b6;--cc-btn-primary-hover-color:#000;--cc-btn-primary-hover-border-color:var(--cc-btn-primary-hover-bg);--cc-btn-secondary-bg:#242c31;--cc-btn-secondary-color:var(--cc-primary-color);--cc-btn-secondary-border-color:var(--cc-btn-secondary-bg);--cc-btn-secondary-hover-bg:#353d43;--cc-btn-secondary-hover-color:#fff;--cc-btn-secondary-hover-border-color:var(--cc-btn-secondary-hover-bg);--cc-separator-border-color:#222a30;--cc-toggle-on-bg:var(--cc-btn-primary-bg);--cc-toggle-off-bg:#525f6b;--cc-toggle-on-knob-bg:var(--cc-btn-primary-color);--cc-toggle-off-knob-bg:var(--cc-btn-primary-color);--cc-toggle-enabled-icon-color:var(--cc-btn-primary-color);--cc-toggle-disabled-icon-color:var(--cc-btn-primary-color);--cc-toggle-readonly-bg:#343e45;--cc-toggle-readonly-knob-bg:#5f6b72;--cc-toggle-readonly-knob-icon-color:var(--cc-toggle-readonly-bg);--cc-section-category-border:#1e2428;--cc-cookie-category-block-bg:#1e2428;--cc-cookie-category-block-border:var(--cc-section-category-border);--cc-cookie-category-block-hover-bg:#242c31;--cc-cookie-category-block-hover-border:#232a2f;--cc-cookie-category-expanded-block-bg:transparent;--cc-cookie-category-expanded-block-hover-bg:var(--cc-toggle-readonly-bg);--cc-overlay-bg:rgba(0,0,0,.65);--cc-webkit-scrollbar-bg:var(--cc-section-category-border);--cc-webkit-scrollbar-hover-bg:var(--cc-btn-primary-hover-bg);--cc-footer-bg:#0c0e0f;--cc-footer-color:var(--cc-secondary-color);--cc-footer-border-color:#060809}.cc--darkmode #cc-main{color-scheme:dark}#cc-main .cm{background:var(--cc-bg);border-radius:var(--cc-modal-border-radius);box-shadow:0 .625em 1.875em rgba(0,0,2,.3);display:flex;flex-direction:column;max-width:24rem;opacity:0;overflow:hidden;position:fixed;transform:translateY(1.6em);visibility:hidden;z-index:1}#cc-main .cm--top{top:var(--cc-modal-margin)}#cc-main .cm--middle{top:50%;transform:translateY(calc(-50% + 1.6em))}#cc-main .cm--bottom{bottom:var(--cc-modal-margin)}#cc-main .cm--center{left:var(--cc-modal-margin);margin:0 auto;right:var(--cc-modal-margin);width:unset}#cc-main .cm--left{left:var(--cc-modal-margin);margin-right:var(--cc-modal-margin)}#cc-main .cm--right{margin-left:var(--cc-modal-margin);right:var(--cc-modal-margin)}#cc-main .cm__body{display:flex;flex-direction:column;justify-content:space-between;position:relative}#cc-main .cm__btns,#cc-main .cm__links{padding:1rem 1.3rem;width:unset}#cc-main .cm__texts{display:flex;flex:1;flex-direction:column;justify-content:center;padding:1rem 0 0}#cc-main .cm__desc,#cc-main .cm__title{padding:0 1.3rem}#cc-main .cm__title{font-size:1.05em}#cc-main .cm__title+.cm__desc{margin-top:1.1em}#cc-main .cm__desc{color:var(--cc-secondary-color);font-size:.9em;line-height:1.5;max-height:40vh;overflow-x:visible;overflow-y:auto;padding-bottom:1em}#cc-main .cm__btns{border-top:1px solid var(--cc-separator-border-color);display:flex;flex-direction:column;justify-content:center}#cc-main .cm__btn-group{display:grid;grid-auto-columns:minmax(0,1fr)}#cc-main .cm__btn+.cm__btn,#cc-main .cm__btn-group+.cm__btn-group{margin-top:.375rem}#cc-main .cm--flip .cm__btn+.cm__btn,#cc-main .cm--flip .cm__btn-group+.cm__btn-group{margin-bottom:.375rem;margin-top:0}#cc-main .cm--inline .cm__btn+.cm__btn{margin-left:.375rem;margin-top:0}#cc-main .cm--inline.cm--flip .cm__btn+.cm__btn{margin-bottom:0;margin-left:0;margin-right:.375rem}#cc-main .cm--inline.cm--flip .cm__btn-group+.cm__btn-group{margin-bottom:.375rem;margin-right:0}#cc-main .cm--wide .cm__btn+.cm__btn,#cc-main .cm--wide .cm__btn-group+.cm__btn-group{margin-left:.375rem;margin-top:0}#cc-main .cm--wide.cm--flip .cm__btn+.cm__btn,#cc-main .cm--wide.cm--flip .cm__btn-group+.cm__btn-group{margin-bottom:0;margin-right:.375rem}#cc-main .cm--bar:not(.cm--inline) .cm__btn-group--uneven,#cc-main .cm--wide .cm__btn-group--uneven{display:flex;flex:1;justify-content:space-between}#cc-main .cm--bar:not(.cm--inline).cm--flip .cm__btn-group--uneven,#cc-main .cm--wide.cm--flip .cm__btn-group--uneven{flex-direction:row-reverse}#cc-main .cm__btn{background:var(--cc-btn-primary-bg);border:1px solid var(--cc-btn-primary-border-color);border-radius:var(--cc-btn-border-radius);color:var(--cc-btn-primary-color);font-size:.82em;font-weight:600;min-height:42px;padding:.5em 1em;text-align:center}#cc-main .cm__btn:hover{background:var(--cc-btn-primary-hover-bg);border-color:var(--cc-btn-primary-hover-border-color);color:var(--cc-btn-primary-hover-color)}#cc-main .cm__btn--secondary{background:var(--cc-btn-secondary-bg);border-color:var(--cc-btn-secondary-border-color);color:var(--cc-btn-secondary-color)}#cc-main .cm__btn--secondary:hover{background:var(--cc-btn-secondary-hover-bg);border-color:var(--cc-btn-secondary-hover-border-color);color:var(--cc-btn-secondary-hover-color)}#cc-main .cm__btn--close{border-radius:0;border-bottom-left-radius:var(--cc-btn-border-radius);border-right:none;border-top:none;display:none;font-size:1em;height:42px;min-width:auto!important;overflow:hidden;padding:0!important;position:absolute;right:0;top:0;width:42px}#cc-main .cm__btn--close svg{stroke:var(--cc-btn-primary-color);transform:scale(.5);transition:stroke .15s ease}#cc-main .cm__btn--close:hover svg{stroke:var(--cc-btn-primary-hover-color)}#cc-main .cm__btn--close.cm__btn--secondary svg{stroke:var(--cc-btn-secondary-color)}#cc-main .cm__btn--close.cm__btn--secondary:hover svg{stroke:var(--cc-btn-secondary-hover-color)}#cc-main .cm__btn--close+.cm__texts .cm__title{padding-right:3rem}#cc-main .cm--inline .cm__btn-group{grid-auto-flow:column}#cc-main .cm__footer{background:var(--cc-footer-bg);border-top:1px solid var(--cc-footer-border-color);color:var(--cc-footer-color);padding:.4em 0 .5em}#cc-main .cm__links{display:flex;flex-direction:row;padding-bottom:0;padding-top:0}#cc-main .cm__link-group{display:flex;flex-direction:row;font-size:.8em;width:100%}#cc-main .cm__link-group>*+*{margin-left:1.3rem}#cc-main .cm--flip .cm__btn:last-child{grid-row:1}#cc-main .cm--inline.cm--flip .cm__btn:last-child{grid-column:1}#cc-main .cm--box .cm__btn--close{display:block}#cc-main .cm--box.cm--flip .cm__btns{flex-direction:column-reverse}#cc-main .cm--box.cm--wide{max-width:36em}#cc-main .cm--box.cm--wide .cm__btns{flex-direction:row;justify-content:space-between}#cc-main .cm--box.cm--wide .cm__btn-group{grid-auto-flow:column}#cc-main .cm--box.cm--wide .cm__btn{min-width:120px;padding-left:1.8em;padding-right:1.8em}#cc-main .cm--box.cm--wide.cm--flip .cm__btns{flex-direction:row-reverse}#cc-main .cm--box.cm--wide.cm--flip .cm__btn:last-child{grid-column:1}#cc-main .cm--cloud{max-width:54em;width:unset}#cc-main .cm--cloud .cm__body{flex-direction:row}#cc-main .cm--cloud .cm__texts{flex:1}#cc-main .cm--cloud .cm__desc{max-height:9.4em}#cc-main .cm--cloud .cm__btns{border-left:1px solid var(--cc-separator-border-color);border-top:none;max-width:23em}#cc-main .cm--cloud .cm__btn-group{flex-direction:column}#cc-main .cm--cloud .cm__btn{min-width:19em}#cc-main .cm--cloud.cm--flip .cm__btn-group,#cc-main .cm--cloud.cm--flip .cm__btns{flex-direction:column-reverse}#cc-main .cm--cloud.cm--inline .cm__btn-group{flex-direction:row}#cc-main .cm--cloud.cm--inline .cm__btn{min-width:10em}#cc-main .cm--cloud.cm--inline.cm--flip .cm__btn-group{flex-direction:row-reverse}#cc-main .cm--bar{border-radius:0;left:0;margin:0;max-width:unset;opacity:1;right:0;transform:translateY(0);width:100vw;--cc-modal-transition-duration:.35s}#cc-main .cm--bar.cm--top{top:0;transform:translateY(-100%)}#cc-main .cm--bar.cm--bottom{bottom:0;transform:translateY(100%)}#cc-main .cm--bar .cm__body,#cc-main .cm--bar .cm__links{margin:0 auto;max-width:55em;width:100%}#cc-main .cm--bar .cm__body{padding:.5em 0 .9em}#cc-main .cm--bar .cm__btns{border-top:none;flex-direction:row;justify-content:space-between}#cc-main .cm--bar .cm__btn-group{grid-auto-flow:column}#cc-main .cm--bar:not(.cm--inline) .cm__btn+.cm__btn,#cc-main .cm--bar:not(.cm--inline) .cm__btn-group+.cm__btn-group{margin-left:.375rem;margin-top:0}#cc-main .cm--bar .cm__btn{min-width:120px;padding-left:2em;padding-right:2em}#cc-main .cm--bar.cm--flip:not(.cm--inline) .cm__btn+.cm__btn,#cc-main .cm--bar.cm--flip:not(.cm--inline) .cm__btn-group+.cm__btn-group{margin-bottom:0;margin-left:0;margin-right:.375rem}#cc-main .cm--bar.cm--flip .cm__btns{flex-direction:row-reverse}#cc-main .cm--bar.cm--flip .cm__btn:last-child{grid-column:1}#cc-main .cm--bar.cm--inline .cm__body,#cc-main .cm--bar.cm--inline .cm__links{max-width:74em}#cc-main .cm--bar.cm--inline .cm__body{flex-direction:row;padding:0}#cc-main .cm--bar.cm--inline .cm__btns{flex-direction:column;justify-content:center;max-width:23em}#cc-main .cm--bar.cm--inline.cm--flip .cm__btns{flex-direction:column-reverse}#cc-main .cc--anim .cm,#cc-main .cc--anim.cm-wrapper:before{transition:opacity var(--cc-modal-transition-duration) ease,visibility var(--cc-modal-transition-duration) ease,transform var(--cc-modal-transition-duration) ease}#cc-main .cc--anim .cm__btn,#cc-main .cc--anim .cm__close{transition:background-color .15s ease,border-color .15s ease,color .15s ease}.disable--interaction #cc-main .cm-wrapper:before{background:var(--cc-overlay-bg);bottom:0;content:"";left:0;opacity:0;position:fixed;right:0;top:0;visibility:hidden;z-index:0}.show--consent #cc-main .cc--anim .cm{opacity:1;transform:translateY(0);visibility:visible!important}.show--consent #cc-main .cc--anim .cm--middle{transform:translateY(-50%)}.show--consent #cc-main .cc--anim .cm--bar{transform:translateY(0)}.show--consent #cc-main .cc--anim.cm-wrapper:before{opacity:1;visibility:visible}#cc-main.cc--rtl .cm__btn--close{border-bottom-left-radius:unset;border-bottom-right-radius:var(--cc-btn-border-radius);left:0;right:unset}#cc-main.cc--rtl .cm__btn--close+.cm__texts .cm__title{padding-left:3rem!important;padding-right:1.3rem}#cc-main.cc--rtl .cm--inline .cm__btn+.cm__btn{margin-left:0;margin-right:.375rem}#cc-main.cc--rtl .cm--inline.cm--flip .cm__btn+.cm__btn{margin-left:.375rem;margin-right:0}#cc-main.cc--rtl .cm:not(.cm--inline).cm--bar .cm__btn+.cm__btn,#cc-main.cc--rtl .cm:not(.cm--inline).cm--bar .cm__btn-group+.cm__btn-group,#cc-main.cc--rtl .cm:not(.cm--inline).cm--wide .cm__btn+.cm__btn,#cc-main.cc--rtl .cm:not(.cm--inline).cm--wide .cm__btn-group+.cm__btn-group{margin-left:0;margin-right:.375rem}#cc-main.cc--rtl .cm:not(.cm--inline).cm--bar.cm--flip .cm__btn+.cm__btn,#cc-main.cc--rtl .cm:not(.cm--inline).cm--wide.cm--flip .cm__btn+.cm__btn{margin-left:.375rem;margin-right:0}#cc-main.cc--rtl .cm__link-group>*+*{margin-left:0;margin-right:1.3rem}@media screen and (max-width:640px){#cc-main{--cc-modal-margin:.5em}#cc-main .cm{max-width:none!important;width:auto!important}#cc-main .cm__body{flex-direction:column!important;padding:0!important}#cc-main .cm__btns,#cc-main .cm__desc,#cc-main .cm__links,#cc-main .cm__title{padding-left:1.1rem!important;padding-right:1.1rem!important}#cc-main .cm__btns{border-left:none!important;border-top:1px solid var(--cc-separator-border-color)!important;flex-direction:column!important;max-width:none!important;min-width:auto!important}#cc-main .cm__btn+.cm__btn,#cc-main .cm__btn-group+.cm__btn-group{margin:.375rem 0 0!important}#cc-main .cm--flip .cm__btn+.cm__btn,#cc-main .cm--flip .cm__btn-group+.cm__btn-group{margin-bottom:.375rem!important;margin-top:0!important}#cc-main .cm__btn-group{display:flex!important;flex-direction:column!important;min-width:auto!important}#cc-main .cm__btn{flex:auto!important}#cc-main .cm__link-group{justify-content:center!important}#cc-main .cm--flip .cm__btn-group,#cc-main .cm--flip .cm__btns{flex-direction:column-reverse!important}}#cc-main .pm-wrapper{position:relative;z-index:2}#cc-main .pm{background:var(--cc-bg);border-radius:var(--cc-modal-border-radius);box-shadow:0 .625em 1.875em rgba(0,0,2,.3);display:flex;flex-direction:column;opacity:0;overflow:hidden;position:fixed;visibility:hidden;width:100%;width:unset;z-index:1}#cc-main svg{fill:none;width:100%}#cc-main .pm__body,#cc-main .pm__footer,#cc-main .pm__header{padding:1em 1.4em}#cc-main .pm__header{align-items:center;border-bottom:1px solid var(--cc-separator-border-color);display:flex;justify-content:space-between}#cc-main .pm__title{align-items:center;display:flex;flex:1;font-weight:600;margin-right:2em}#cc-main .pm__close-btn{background:var(--cc-btn-secondary-bg);border:1px solid var(--cc-btn-secondary-border-color);border-radius:var(--cc-btn-border-radius);height:40px;position:relative;transition:all .15s ease;width:40px}#cc-main .pm__close-btn span{display:flex;height:100%;width:100%}#cc-main .pm__close-btn svg{stroke:var(--cc-btn-secondary-color);transform:scale(.5);transition:stroke .15s ease}#cc-main .pm__close-btn:hover{background:var(--cc-btn-secondary-hover-bg);border-color:var(--cc-btn-secondary-hover-border-color)}#cc-main .pm__close-btn:hover svg{stroke:var(--cc-btn-secondary-hover-color)}#cc-main .pm__body{flex:1;overflow-y:auto;overflow-y:overlay}#cc-main .pm__section,#cc-main .pm__section--toggle{border-radius:var(--cc-btn-border-radius);display:flex;flex-direction:column;margin-bottom:.5em}#cc-main .pm__section--toggle .pm__section-desc-wrapper{border:1px solid var(--cc-cookie-category-block-border);border-radius:var(--cc-btn-border-radius);border-top:none;border-top-left-radius:0;border-top-right-radius:0;display:none;margin-top:0!important;overflow:hidden}#cc-main .pm__section{border:1px solid var(--cc-separator-border-color);padding:1em;transition:background-color .25s ease,border-color .25s ease}#cc-main .pm__section:first-child{border:none;margin-bottom:2em;margin-top:0;padding:0;transition:none}#cc-main .pm__section:not(:first-child):hover{background:var(--cc-cookie-category-block-bg);border-color:var(--cc-cookie-category-block-border)}#cc-main .pm__section-toggles+.pm__section{margin-top:2em}#cc-main .pm__section--toggle{background:var(--cc-cookie-category-block-bg);border-top:none;margin-bottom:.375rem}#cc-main .pm__section--toggle .pm__section-title{align-items:center;background:var(--cc-cookie-category-block-bg);border:1px solid var(--cc-cookie-category-block-border);display:flex;justify-content:space-between;min-height:58px;padding:1.1em 5.4em 1.1em 1.2em;position:relative;transition:background-color .25s ease,border-color .25s ease;width:100%}#cc-main .pm__section--toggle .pm__section-title:hover{background:var(--cc-cookie-category-block-hover-bg);border-color:var(--cc-cookie-category-block-hover-border)}#cc-main .pm__section--toggle .pm__section-desc{margin-top:0;padding:1em}#cc-main .pm__section--toggle.is-expanded{--cc-cookie-category-block-bg:var(--cc-cookie-category-expanded-block-bg);--cc-cookie-category-block-border:var(--cc-cookie-category-expanded-block-hover-bg)}#cc-main .pm__section--toggle.is-expanded .pm__section-title{border-bottom-left-radius:0;border-bottom-right-radius:0}#cc-main .pm__section--toggle.is-expanded .pm__section-arrow svg{transform:scale(.5) rotate(180deg)}#cc-main .pm__section--toggle.is-expanded .pm__section-desc-wrapper{display:flex}#cc-main .pm__section--expandable .pm__section-title{cursor:pointer;padding-left:3.4em}#cc-main .pm__section--expandable .pm__section-arrow{background:var(--cc-toggle-readonly-bg);border-radius:100%;display:flex;height:20px;justify-content:center;left:18px;pointer-events:none;position:absolute;width:20px}#cc-main .pm__section--expandable .pm__section-arrow svg{stroke:var(--cc-btn-secondary-color);transform:scale(.5)}#cc-main .pm__section-title-wrapper{align-items:center;display:flex;position:relative}#cc-main .pm__section-title-wrapper+.pm__section-desc-wrapper{margin-top:.85em}#cc-main .pm__section-title{border-radius:var(--cc-btn-border-radius);font-size:.95em;font-weight:600}#cc-main .pm__badge{align-items:center;background:var(--cc-btn-secondary-bg);border-radius:5em;color:var(--cc-secondary-color);display:flex;flex:none;font-size:.8em;font-weight:600;height:23px;justify-content:center;margin-left:1em;min-width:23px;overflow:hidden;padding:0 .6em 1px;position:relative;text-align:center;white-space:nowrap;width:auto}#cc-main .pm__service-counter{background:var(--cc-btn-primary-bg);color:var(--cc-btn-primary-color);padding:0;width:23px}#cc-main .pm__service-counter[data-counterlabel]{padding:0 .6em 1px;width:auto}#cc-main .section__toggle,#cc-main .section__toggle-wrapper,#cc-main .toggle__icon,#cc-main .toggle__label{border-radius:var(--cc-pm-toggle-border-radius);height:23px;transform:translateZ(0);width:50px}#cc-main .section__toggle-wrapper{cursor:pointer;position:absolute;right:18px;z-index:1}#cc-main .toggle-service{height:19px;position:relative;right:0;width:42px}#cc-main .toggle-service .section__toggle,#cc-main .toggle-service .toggle__icon,#cc-main .toggle-service .toggle__label{height:19px;width:42px}#cc-main .toggle-service .toggle__icon{position:relative}#cc-main .toggle-service .toggle__icon-circle{height:19px;width:19px}#cc-main .toggle-service .section__toggle:checked~.toggle__icon .toggle__icon-circle{transform:translateX(23px)}#cc-main .pm__section--toggle:nth-child(2) .section__toggle-wrapper:after{display:none!important}#cc-main .section__toggle{border:0;cursor:pointer;display:block;left:0;margin:0;position:absolute;top:0}#cc-main .section__toggle:disabled{cursor:not-allowed}#cc-main .toggle__icon{background:var(--cc-toggle-off-bg);box-shadow:0 0 0 1px var(--cc-toggle-off-bg);display:flex;flex-direction:row;pointer-events:none;position:absolute;transition:all .25s ease}#cc-main .toggle__icon-circle{background:var(--cc-toggle-off-knob-bg);border:none;border-radius:var(--cc-pm-toggle-border-radius);box-shadow:0 1px 2px rgba(24,32,3,.36);display:block;height:23px;left:0;position:absolute;top:0;transition:transform .25s ease,background-color .25s ease;width:23px}#cc-main .toggle__icon-off,#cc-main .toggle__icon-on{height:100%;position:absolute;transition:opacity .15s ease;width:100%}#cc-main .toggle__icon-on{opacity:0;transform:rotate(45deg)}#cc-main .toggle__icon-on svg{stroke:var(--cc-toggle-on-bg);transform:scale(.55) rotate(-45deg)}#cc-main .toggle__icon-off{opacity:1}#cc-main .toggle__icon-off svg{stroke:var(--cc-toggle-off-bg);transform:scale(.55)}#cc-main .section__toggle:checked~.toggle__icon{background:var(--cc-toggle-on-bg);box-shadow:0 0 0 1px var(--cc-toggle-on-bg)}#cc-main .section__toggle:checked~.toggle__icon .toggle__icon-circle{background-color:var(--cc-toggle-on-knob-bg);transform:translateX(27px)}#cc-main .section__toggle:checked~.toggle__icon .toggle__icon-on{opacity:1}#cc-main .section__toggle:checked~.toggle__icon .toggle__icon-off{opacity:0}#cc-main .section__toggle:checked:disabled~.toggle__icon{background:var(--cc-toggle-readonly-bg);box-shadow:0 0 0 1px var(--cc-toggle-readonly-bg)}#cc-main .section__toggle:checked:disabled~.toggle__icon .toggle__icon-circle{background:var(--cc-toggle-readonly-knob-bg);box-shadow:none}#cc-main .section__toggle:checked:disabled~.toggle__icon svg{stroke:var(--cc-toggle-readonly-knob-icon-color)}#cc-main .toggle__label{opacity:0;overflow:hidden;pointer-events:none;position:absolute;top:0;z-index:-1}#cc-main .pm__section-desc-wrapper{color:var(--cc-secondary-color);display:flex;flex-direction:column;font-size:.9em}#cc-main .pm__section-desc-wrapper>:not(:last-child){border-bottom:1px solid var(--cc-cookie-category-block-border)}#cc-main .pm__section-services{display:flex;flex-direction:column}#cc-main .pm__service{align-items:center;display:flex;justify-content:space-between;padding:.4em 1.2em;position:relative;transition:background-color .15s ease}#cc-main .pm__service:hover{background-color:var(--cc-cookie-category-block-hover-bg)}#cc-main .pm__service-header{align-items:center;display:flex;margin-right:1em;width:100%}#cc-main .pm__service-icon{border:2px solid;border-radius:100%;height:8px;margin-left:6px;margin-right:20px;margin-top:1px;min-width:8px}#cc-main .pm__service-title{font-size:.95em;width:100%;word-break:break-word}#cc-main .pm__section-desc{line-height:1.5em}#cc-main .pm__section-table{border-collapse:collapse;font-size:.9em;margin:0;overflow:hidden;padding:0;text-align:left;width:100%}#cc-main .pm__table-caption{text-align:left}#cc-main .pm__table-caption,#cc-main .pm__table-head>tr{border-bottom:1px dashed var(--cc-separator-border-color);color:var(--cc-primary-color);font-weight:600}#cc-main .pm__table-tr{transition:background-color .15s ease}#cc-main .pm__table-tr:hover{background:var(--cc-cookie-category-block-hover-bg)}#cc-main .pm__table-caption,#cc-main .pm__table-td,#cc-main .pm__table-th{padding:.625em .625em .625em 1.2em;vertical-align:top}#cc-main .pm__footer{border-top:1px solid var(--cc-separator-border-color);display:flex;justify-content:space-between}#cc-main .pm__btn-group{display:flex}#cc-main .pm__btn+.pm__btn,#cc-main .pm__btn-group+.pm__btn-group{margin-left:.375rem}#cc-main .pm--flip .pm__btn+.pm__btn,#cc-main .pm--flip .pm__btn-group+.pm__btn-group{margin-left:0;margin-right:.375rem}#cc-main .pm__btn{background:var(--cc-btn-primary-bg);border:1px solid var(--cc-btn-primary-border-color);border-radius:var(--cc-btn-border-radius);color:var(--cc-btn-primary-color);flex:auto;font-size:.82em;font-weight:600;min-height:42px;min-width:110px;padding:.5em 1.5em;text-align:center;transition:background-color .15s ease,border-color .15s ease,color .15s ease}#cc-main .pm__btn:hover{background:var(--cc-btn-primary-hover-bg);border-color:var(--cc-btn-primary-hover-border-color);color:var(--cc-btn-primary-hover-color)}#cc-main .pm__btn--secondary{background:var(--cc-btn-secondary-bg);border-color:var(--cc-btn-secondary-border-color);color:var(--cc-btn-secondary-color)}#cc-main .pm__btn--secondary:hover{background:var(--cc-btn-secondary-hover-bg);border-color:var(--cc-btn-secondary-hover-border-color);color:var(--cc-btn-secondary-hover-color)}#cc-main .pm--box{height:calc(100% - 2em);left:var(--cc-modal-margin);margin:0 auto;max-height:37.5em;max-width:43em;right:var(--cc-modal-margin);top:50%;transform:translateY(calc(-50% + 1.6em))}#cc-main .pm--box.pm--flip .pm__btn-group,#cc-main .pm--box.pm--flip .pm__footer{flex-direction:row-reverse}#cc-main .pm--bar{border-radius:0;bottom:0;height:100%;margin:0;max-height:none;max-width:29em;opacity:1;top:0;width:100%;--cc-modal-transition-duration:.35s}#cc-main .pm--bar .pm__section-table,#cc-main .pm--bar .pm__table-body,#cc-main .pm--bar .pm__table-td,#cc-main .pm--bar .pm__table-th,#cc-main .pm--bar .pm__table-tr{display:block}#cc-main .pm--bar .pm__table-head{display:none}#cc-main .pm--bar .pm__table-caption{display:block}#cc-main .pm--bar .pm__table-tr:not(:last-child){border-bottom:1px solid var(--cc-separator-border-color)}#cc-main .pm--bar .pm__table-td{display:flex;justify-content:space-between}#cc-main .pm--bar .pm__table-td:before{color:var(--cc-primary-color);content:attr(data-column);flex:1;font-weight:600;min-width:100px;overflow:hidden;padding-right:2em;text-overflow:ellipsis}#cc-main .pm--bar .pm__table-td>div{flex:3}#cc-main .pm--bar:not(.pm--wide) .pm__body,#cc-main .pm--bar:not(.pm--wide) .pm__footer,#cc-main .pm--bar:not(.pm--wide) .pm__header{padding:1em 1.3em}#cc-main .pm--bar:not(.pm--wide) .pm__btn-group,#cc-main .pm--bar:not(.pm--wide) .pm__footer{flex-direction:column}#cc-main .pm--bar:not(.pm--wide) .pm__btn+.pm__btn,#cc-main .pm--bar:not(.pm--wide) .pm__btn-group+.pm__btn-group{margin:.375rem 0 0}#cc-main .pm--bar:not(.pm--wide).pm--flip .pm__btn-group,#cc-main .pm--bar:not(.pm--wide).pm--flip .pm__footer{flex-direction:column-reverse}#cc-main .pm--bar:not(.pm--wide).pm--flip .pm__btn+.pm__btn,#cc-main .pm--bar:not(.pm--wide).pm--flip .pm__btn-group+.pm__btn-group{margin-bottom:.375rem;margin-top:0}#cc-main .pm--bar:not(.pm--wide) .pm__badge{display:none}#cc-main .pm--bar.pm--left{left:0;transform:translateX(-100%)}#cc-main .pm--bar.pm--right{right:0;transform:translateX(100%)}#cc-main .pm--bar.pm--wide{max-width:35em}#cc-main .pm--bar.pm--wide .pm__body,#cc-main .pm--bar.pm--wide .pm__footer,#cc-main .pm--bar.pm--wide .pm__header{padding:1em 1.4em}#cc-main .pm--bar.pm--wide.pm--flip .pm__btn-group,#cc-main .pm--bar.pm--wide.pm--flip .pm__footer{flex-direction:row-reverse}#cc-main .pm-overlay{background:var(--cc-overlay-bg);bottom:0;content:"";left:0;opacity:0;position:fixed;right:0;top:0;visibility:hidden;z-index:1}#cc-main .cc--anim .pm,#cc-main .cc--anim .pm-overlay{transition:opacity var(--cc-modal-transition-duration) ease,visibility var(--cc-modal-transition-duration) ease,transform var(--cc-modal-transition-duration) ease}.show--preferences #cc-main .cc--anim .pm{opacity:1;visibility:visible!important}.show--preferences #cc-main .cc--anim .pm--box{transform:translateY(-50%)}.show--preferences #cc-main .cc--anim .pm--bar{transform:translateX(0)}.show--preferences #cc-main .cc--anim .pm-overlay{opacity:1;visibility:visible}#cc-main.cc--rtl .pm__service-header{margin-left:1em;margin-right:0}#cc-main.cc--rtl .pm__section-arrow{left:unset;right:18px}#cc-main.cc--rtl .section__toggle-wrapper{left:18px;right:unset;transform-origin:left}#cc-main.cc--rtl .toggle-service{left:0}#cc-main.cc--rtl .pm__service-icon{margin-left:20px;margin-right:5px}#cc-main.cc--rtl .pm__section--toggle .pm__section-title{padding-left:5.4em;padding-right:1.2em}#cc-main.cc--rtl .pm__section--expandable .pm__section-title{padding-right:3.4em}#cc-main.cc--rtl .pm__badge{margin-left:unset;margin-right:1em}#cc-main.cc--rtl .toggle__icon-circle{transform:translateX(27px)}#cc-main.cc--rtl .toggle-service .toggle__icon-circle{transform:translateX(23px)}#cc-main.cc--rtl .section__toggle:checked~.toggle__icon .toggle__icon-circle{transform:translateX(0)}#cc-main.cc--rtl .pm__table-td,#cc-main.cc--rtl .pm__table-th{padding-left:unset;padding-right:1.2em;text-align:right}#cc-main.cc--rtl .pm__table-td{padding-left:unset;padding-right:1.2em}#cc-main.cc--rtl .pm__table-td:before{padding-left:2em;padding-right:unset}#cc-main.cc--rtl .pm__btn+.pm__btn,#cc-main.cc--rtl .pm__btn-group+.pm__btn-group{margin-left:0;margin-right:.375rem}#cc-main.cc--rtl .pm--flip .pm__btn+.pm__btn,#cc-main.cc--rtl .pm--flip .pm__btn-group+.pm__btn-group{margin-left:.375rem;margin-right:0}#cc-main.cc--rtl .pm--flip.pm--bar:not(.pm--wide) .pm__btn+.pm__btn,#cc-main.cc--rtl .pm--flip.pm--bar:not(.pm--wide) .pm__btn-group+.pm__btn-group{margin-left:0}@media screen and (max-width:640px){#cc-main .pm{border-radius:0;bottom:0;height:auto;left:0;max-height:100%;max-width:none!important;right:0;top:0;transform:translateY(1.6em)}#cc-main .pm__body,#cc-main .pm__footer,#cc-main .pm__header{padding:.9em!important}#cc-main .pm__badge{display:none}#cc-main .pm__section-table,#cc-main .pm__table-body,#cc-main .pm__table-caption,#cc-main .pm__table-td,#cc-main .pm__table-th,#cc-main .pm__table-tr{display:block}#cc-main .pm__table-head{display:none}#cc-main .pm__table-tr:not(:last-child){border-bottom:1px solid var(--cc-separator-border-color)}#cc-main .pm__table-td{display:flex;justify-content:space-between}#cc-main .pm__table-td:before{color:var(--cc-primary-color);content:attr(data-column);flex:1;font-weight:600;min-width:100px;overflow:hidden;padding-right:2em;text-overflow:ellipsis}#cc-main .pm__table-td>div{flex:3}#cc-main .pm__btn-group,#cc-main .pm__footer{flex-direction:column!important}#cc-main .pm__btn-group{display:flex!important}#cc-main .pm__btn+.pm__btn,#cc-main .pm__btn-group+.pm__btn-group{margin:.375rem 0 0!important}#cc-main .pm--flip .pm__btn+.pm__btn,#cc-main .pm--flip .pm__btn-group+.pm__btn-group{margin-bottom:.375rem!important;margin-top:0!important}#cc-main .pm--flip .pm__btn-group,#cc-main .pm--flip .pm__footer{flex-direction:column-reverse!important}.show--preferences #cc-main .cc--anim .pm{transform:translateY(0)!important}}',""]);const a=i},314(e){e.exports=function(e){var c=[];return c.toString=function(){return this.map(function(c){var o="",t=void 0!==c[5];return c[4]&&(o+="@supports (".concat(c[4],") {")),c[2]&&(o+="@media ".concat(c[2]," {")),t&&(o+="@layer".concat(c[5].length>0?" ".concat(c[5]):""," {")),o+=e(c),t&&(o+="}"),c[2]&&(o+="}"),c[4]&&(o+="}"),o}).join("")},c.i=function(e,o,t,n,r){"string"==typeof e&&(e=[[null,e,void 0]]);var i={};if(t)for(var a=0;a0?" ".concat(s[5]):""," {").concat(s[1],"}")),s[5]=r),o&&(s[2]?(s[1]="@media ".concat(s[2]," {").concat(s[1],"}"),s[2]=o):s[2]=o),n&&(s[4]?(s[1]="@supports (".concat(s[4],") {").concat(s[1],"}"),s[4]=n):s[4]="".concat(n)),c.push(s))}},c}},601(e){e.exports=function(e){return e[1]}},72(e){var c=[];function o(e){for(var o=-1,t=0;t0?" ".concat(o.layer):""," {")),t+=o.css,n&&(t+="}"),o.media&&(t+="}"),o.supports&&(t+="}");var r=o.sourceMap;r&&"undefined"!=typeof btoa&&(t+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(r))))," */")),c.styleTagTransform(t,e,c.options)}(c,e,o)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(c)}}}},113(e){e.exports=function(e,c){if(c.styleSheet)c.styleSheet.cssText=e;else{for(;c.firstChild;)c.removeChild(c.firstChild);c.appendChild(document.createTextNode(e))}}}},c={};function o(t){var n=c[t];if(void 0!==n)return n.exports;var r=c[t]={id:t,exports:{}};return e[t](r,r.exports,o),r.exports}o.n=e=>{var c=e&&e.__esModule?()=>e.default:()=>e;return o.d(c,{a:c}),c},o.d=(e,c)=>{for(var t in c)o.o(c,t)&&!o.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:c[t]})},o.o=(e,c)=>Object.prototype.hasOwnProperty.call(e,c),o.nc=void 0;var t=o(72),n=o.n(t),r=o(825),i=o.n(r),a=o(659),m=o.n(a),l=o(56),s=o.n(l),d=o(540),p=o.n(d),g=o(113),b=o.n(g),_=o(969),f={};f.styleTagTransform=b(),f.setAttributes=s(),f.insert=m().bind(null,"head"),f.domAPI=i(),f.insertStyleElement=p(),n()(_.A,f),_.A&&_.A.locals&&_.A.locals;const u="opt-in",h="opt-out",v="show--consent",y="show--preferences",w="disable--interaction",x="data-category",k="div",C="button",M="aria-hidden",S="btn-group",T="click",L="data-role",A="consentModal",z="preferencesModal";const j=new class{constructor(){this.t={mode:u,revision:0,autoShow:!0,lazyHtmlGeneration:!0,autoClearCookies:!0,manageScriptTags:!0,hideFromBots:!0,cookie:{name:"cc_cookie",expiresAfterDays:182,domain:"",path:"/",secure:!0,sameSite:"Lax"}},this.o={i:{},l:"",_:{},u:{},p:{},m:[],v:!1,h:null,C:null,S:null,M:"",D:!0,T:!1,k:!1,A:!1,N:!1,H:[],V:!1,I:!0,L:[],j:!1,F:"",P:!1,O:[],R:[],B:[],$:[],G:!1,J:!1,U:!1,q:[],K:[],W:[],X:{},Y:{},Z:{},ee:{},te:{},oe:[]},this.ne={ae:{},se:{}},this.ce={},this.re={ie:"cc:onFirstConsent",le:"cc:onConsent",de:"cc:onChange",fe:"cc:onModalShow",_e:"cc:onModalHide",ue:"cc:onModalReady"}}},I=(e,c)=>e.indexOf(c),O=(e,c)=>-1!==I(e,c),B=e=>Array.isArray(e),H=e=>"string"==typeof e,N=e=>!!e&&"object"==typeof e&&!B(e),D=e=>"function"==typeof e,P=e=>Object.keys(e),E=e=>Array.from(new Set(e)),R=()=>document.activeElement,Y=e=>e.preventDefault(),F=(e,c)=>e.querySelectorAll(c),X=e=>{const c=document.createElement(e);return e===C&&(c.type=e),c},Z=(e,c,o)=>e.setAttribute(c,o),J=(e,c,o)=>{e.removeAttribute(o?"data-"+c:c)},U=(e,c,o)=>e.getAttribute(o?"data-"+c:c),q=(e,c)=>e.appendChild(c),W=(e,c)=>e.classList.add(c),G=(e,c)=>W(e,"cm__"+c),$=(e,c)=>W(e,"pm__"+c),V=(e,c)=>e.classList.remove(c),K=e=>{if("object"!=typeof e)return e;if(e instanceof Date)return new Date(e.getTime());let c=Array.isArray(e)?[]:{};for(let o in e){let t=e[o];c[o]=K(t)}return c},Q=(e,c)=>dispatchEvent(new CustomEvent(e,{detail:c})),ee=(e,c,o,t)=>{e.addEventListener(c,o),t&&j.o.m.push({pe:e,ge:c,me:o})},ce=()=>{const e=j.t.cookie.expiresAfterDays;return D(e)?e(j.o.F):e},oe=(e,c)=>{const o=e||[],t=c||[];return o.filter(e=>!O(t,e)).concat(t.filter(e=>!O(o,e)))},te=e=>{j.o.R=E(e),j.o.F=(()=>{let e="custom";const{R:c,O:o,B:t}=j.o,n=c.length;return n===o.length?e="all":n===t.length&&(e="necessary"),e})()},ne=(e,c,o,t)=>{const n="accept-",{show:r,showPreferences:i,hide:a,hidePreferences:m,acceptCategory:l}=c,s=e||document,d=e=>F(s,`[data-cc="${e}"]`),p=(e,c)=>{Y(e),l(c),m(),a()},g=d("show-preferencesModal"),b=d("show-consentModal"),_=d(n+"all"),f=d(n+"necessary"),u=d(n+"custom"),h=j.t.lazyHtmlGeneration;for(const e of g)Z(e,"aria-haspopup","dialog"),ee(e,T,e=>{Y(e),i()}),h&&(ee(e,"mouseenter",e=>{Y(e),j.o.N||o(c,t)},!0),ee(e,"focus",()=>{j.o.N||o(c,t)}));for(let e of b)Z(e,"aria-haspopup","dialog"),ee(e,T,e=>{Y(e),r(!0)},!0);for(let e of _)ee(e,T,e=>{p(e,"all")},!0);for(let e of u)ee(e,T,e=>{p(e)},!0);for(let e of f)ee(e,T,e=>{p(e,[])},!0)},re=(e,c)=>{e&&(c&&(e.tabIndex=-1),e.focus(),c&&e.removeAttribute("tabindex"))},ie=(e,c)=>{const o=t=>{t.target.removeEventListener("transitionend",o),"opacity"===t.propertyName&&"1"===getComputedStyle(e).opacity&&re((e=>1===e?j.ne.be:j.ne.ve)(c))};ee(e,"transitionend",o)};let ae;const me=e=>{clearTimeout(ae),e?W(j.ne.ye,w):ae=setTimeout(()=>{V(j.ne.ye,w)},500)},le=["M 19.5 4.5 L 4.5 19.5 M 4.5 4.501 L 19.5 19.5","M 3.572 13.406 L 8.281 18.115 L 20.428 5.885","M 21.999 6.94 L 11.639 17.18 L 2.001 6.82 "],se=(e=0,c=1.5)=>``,de=e=>{const c=j.ne,o=j.o;(e=>{const t=e===c.he,n=o.i.disablePageInteraction?c.ye:t?c.Ce:c.ye;ee(n,"keydown",c=>{if("Tab"!==c.key||!(t?o.k&&!o.A:o.A))return;const n=R(),r=t?o.q:o.K;0!==r.length&&(c.shiftKey?n!==r[0]&&e.contains(n)||(Y(c),re(r[1])):n!==r[1]&&e.contains(n)||(Y(c),re(r[0])))},!0)})(e)},pe=["[href]",C,"input","details","[tabindex]"].map(e=>e+':not([tabindex="-1"])').join(","),ge=e=>{const{o:c,ne:o}=j,t=(e,c)=>{const o=F(e,pe);c[0]=o[0],c[1]=o[o.length-1]};1===e&&c.T&&t(o.he,c.q),2===e&&c.N&&t(o.we,c.K)},be=(e,c,o)=>{const{de:t,le:n,ie:r,_e:i,ue:a,fe:m}=j.ce,l=j.re;if(c){const t={modalName:c};return e===l.fe?D(m)&&m(t):e===l._e?D(i)&&i(t):(t.modal=o,D(a)&&a(t)),Q(e,t)}const s={cookie:j.o.p};e===l.ie?D(r)&&r(K(s)):e===l.le?D(n)&&n(K(s)):(s.changedCategories=j.o.L,s.changedServices=j.o.ee,D(t)&&t(K(s))),Q(e,K(s))},_e=(e,c)=>{try{return e()}catch(e){return!c&&console.warn("CookieConsent:",e),!1}},fe=e=>{const{Y:c,ee:o,O:t,X:n,oe:r,p:i,L:a}=j.o;for(const e of t){const t=o[e]||c[e]||[];for(const o of t){const t=n[e][o];if(!t)continue;const{onAccept:r,onReject:i}=t;!t.Se&&O(c[e],o)?(t.Se=!0,D(r)&&r()):t.Se&&!O(c[e],o)&&(t.Se=!1,D(i)&&i())}}if(!j.t.manageScriptTags)return;const m=r,l=e||i.categories||[],s=(e,t)=>{if(t>=e.length)return;const n=r[t];if(n.xe)return s(e,t+1);const i=n.Me,m=n.De,d=n.Te,p=O(l,m),g=!!d&&O(c[m],d);if(!d&&!n.ke&&p||!d&&n.ke&&!p&&O(a,m)||d&&!n.ke&&g||d&&n.ke&&!g&&O(o[m]||[],d)){n.xe=!0;const c=U(i,"type",!0);J(i,"type",!!c),J(i,x);let o=U(i,"src",!0);o&&J(i,"src",!0);const r=X("script");r.textContent=i.innerHTML;for(const{nodeName:e}of i.attributes)Z(r,e,i[e]||U(i,e));c&&(r.type=c),o?r.src=o:o=i.src;const a=!!o&&(!c||["text/javascript","module"].includes(c));if(a&&(r.onload=r.onerror=()=>{s(e,++t)}),i.replaceWith(r),a)return}s(e,++t)};s(m,0)},ue="bottom",he="left",ve="center",ye="right",we="inline",xe="wide",ke="pm--",Ce=["middle","top",ue],Me=[he,ve,ye],Se={box:{Ee:[xe,we],Ae:Ce,Ne:Me,He:ue,Ve:ye},cloud:{Ee:[we],Ae:Ce,Ne:Me,He:ue,Ve:ve},bar:{Ee:[we],Ae:Ce.slice(1),Ne:[],He:ue,Ve:""}},Te={box:{Ee:[],Ae:[],Ne:[],He:"",Ve:""},bar:{Ee:[xe],Ae:[],Ne:[he,ye],He:"",Ve:he}},Le=e=>{const c=j.o.i.guiOptions,o=c&&c.consentModal,t=c&&c.preferencesModal;0===e&&Ae(j.ne.he,Se,o,"cm--","box","cm"),1===e&&Ae(j.ne.we,Te,t,ke,"box","pm")},Ae=(e,c,o,t,n,r)=>{e.className=r;const i=o&&o.layout,a=o&&o.position,m=o&&o.flipButtons,l=!o||!1!==o.equalWeightButtons,s=i&&i.split(" ")||[],d=s[0],p=s[1],g=d in c?d:n,b=c[g],_=O(b.Ee,p)&&p,f=a&&a.split(" ")||[],u=f[0],h=t===ke?f[0]:f[1],v=O(b.Ae,u)?u:b.He,y=O(b.Ne,h)?h:b.Ve,w=c=>{c&&W(e,t+c)};w(g),w(_),w(v),w(y),m&&w("flip");const x=r+"__btn--secondary";if("cm"===r){const{Ie:e,Le:c}=j.ne;e&&(l?V(e,x):W(e,x)),c&&(l?V(c,x):W(c,x))}else{const{je:e}=j.ne;e&&(l?V(e,x):W(e,x))}},ze=(e,c)=>{const o=j.o,t=j.ne,{hide:n,hidePreferences:r,acceptCategory:i}=e,a=e=>{i(e),r(),n()},m=o.u&&o.u.preferencesModal;if(!m)return;const l=m.title,s=m.closeIconLabel,d=m.acceptAllBtn,p=m.acceptNecessaryBtn,g=m.savePreferencesBtn,b=m.sections||[],_=d||p||g;if(t.Fe)t.Pe=X(k),$(t.Pe,"body");else{t.Fe=X(k),W(t.Fe,"pm-wrapper");const e=X("div");W(e,"pm-overlay"),q(t.Fe,e),ee(e,T,r),t.we=X(k),W(t.we,"pm"),Z(t.we,"role","dialog"),Z(t.we,M,!0),Z(t.we,"aria-modal",!0),Z(t.we,"aria-labelledby","pm__title"),ee(t.ye,"keydown",e=>{27===e.keyCode&&r()},!0),t.Oe=X(k),$(t.Oe,"header"),t.Re=X("h2"),$(t.Re,"title"),t.Re.id="pm__title",t.Be=X(C),$(t.Be,"close-btn"),Z(t.Be,"aria-label",m.closeIconLabel||""),ee(t.Be,T,r),t.$e=X("span"),t.$e.innerHTML=se(),q(t.Be,t.$e),t.Ge=X(k),$(t.Ge,"body"),t.Je=X(k),$(t.Je,"footer");var f=X(k);W(f,"btns");var u=X(k),h=X(k);$(u,S),$(h,S),q(t.Je,u),q(t.Je,h),q(t.Oe,t.Re),q(t.Oe,t.Be),t.ve=X(k),Z(t.ve,"tabIndex",-1),q(t.we,t.ve),q(t.we,t.Oe),q(t.we,t.Ge),_&&q(t.we,t.Je),q(t.Fe,t.we)}let v;l&&(t.Re.innerHTML=l,s&&Z(t.Be,"aria-label",s)),b.forEach((e,c)=>{const n=e.title,r=e.description,i=e.linkedCategory,a=i&&o.P[i],l=e.cookieTable,s=l&&l.body,d=l&&l.caption,p=s&&s.length>0,g=!!a,b=g&&o.X[i],_=N(b)&&P(b)||[],f=g&&(!!r||!!p||P(b).length>0);var u=X(k);if($(u,"section"),f||r){var h=X(k);$(h,"section-desc-wrapper")}let y=_.length;if(f&&y>0){const e=X(k);$(e,"section-services");for(const c of _){const o=b[c],t=o&&o.label||c,n=X(k),r=X(k),m=X(k),l=X(k);$(n,"service"),$(l,"service-title"),$(r,"service-header"),$(m,"service-icon");const s=je(t,c,a,!0,i);l.innerHTML=t,q(r,m),q(r,l),q(n,r),q(n,s),q(e,n)}q(h,e)}if(n){var w=X(k),x=X(g?C:k);if($(w,"section-title-wrapper"),$(x,"section-title"),x.innerHTML=n,q(w,x),g){const e=X("span");e.innerHTML=se(2,3.5),$(e,"section-arrow"),q(w,e),u.className+="--toggle";const c=je(n,i,a);let o=m.serviceCounterLabel;if(y>0&&H(o)){let e=X("span");$(e,"badge"),$(e,"service-counter"),Z(e,M,!0),Z(e,"data-servicecounter",y),o&&(o=o.split("|"),o=o.length>1&&y>1?o[1]:o[0],Z(e,"data-counterlabel",o)),e.innerHTML=y+(o?" "+o:""),q(x,e)}if(f){$(u,"section--expandable");var S=i+"-desc";Z(x,"aria-expanded",!1),Z(x,"aria-controls",S)}q(w,c)}else Z(x,"role","heading"),Z(x,"aria-level","3");q(u,w)}if(r){var L=X("p");$(L,"section-desc"),L.innerHTML=r,q(h,L)}if(f&&(Z(h,M,"true"),h.id=S,((e,c,o)=>{ee(x,T,()=>{c.classList.contains("is-expanded")?(V(c,"is-expanded"),Z(o,"aria-expanded","false"),Z(e,M,"true")):(W(c,"is-expanded"),Z(o,"aria-expanded","true"),Z(e,M,"false"))})})(h,u,x),p)){const e=X("table"),o=X("thead"),n=X("tbody");if(d){const c=X("caption");$(c,"table-caption"),c.innerHTML=d,e.appendChild(c)}$(e,"section-table"),$(o,"table-head"),$(n,"table-body");const r=l.headers,i=P(r),a=t.Ue.createDocumentFragment(),m=X("tr");for(const e of i){const o=r[e],t=X("th");t.id="cc__row-"+o+c,Z(t,"scope","col"),$(t,"table-th"),t.innerHTML=o,q(a,t)}q(m,a),q(o,m);const p=t.Ue.createDocumentFragment();for(const e of s){const o=X("tr");$(o,"table-tr");for(const t of i){const n=r[t],i=e[t],a=X("td"),m=X(k);$(a,"table-td"),Z(a,"data-column",n),Z(a,"headers","cc__row-"+n+c),m.insertAdjacentHTML("beforeend",i),q(a,m),q(o,a)}q(p,o)}q(n,p),q(e,o),q(e,n),q(h,e)}(f||r)&&q(u,h);const A=t.Pe||t.Ge;g?(v||(v=X(k),$(v,"section-toggles")),v.appendChild(u)):v=null,q(A,v||u)}),d&&(t.ze||(t.ze=X(C),$(t.ze,"btn"),Z(t.ze,L,"all"),q(u,t.ze),ee(t.ze,T,()=>a("all"))),t.ze.innerHTML=d),p&&(t.je||(t.je=X(C),$(t.je,"btn"),Z(t.je,L,"necessary"),q(u,t.je),ee(t.je,T,()=>a([]))),t.je.innerHTML=p),g&&(t.qe||(t.qe=X(C),$(t.qe,"btn"),$(t.qe,"btn--secondary"),Z(t.qe,L,"save"),q(h,t.qe),ee(t.qe,T,()=>a())),t.qe.innerHTML=g),t.Pe&&(t.we.replaceChild(t.Pe,t.Ge),t.Ge=t.Pe),Le(1),o.N||(o.N=!0,be(j.re.ue,z,t.we),c(e),q(t.Ce,t.Fe),de(t.we),setTimeout(()=>W(t.Fe,"cc--anim"),100)),ge(2)};function je(e,c,o,t,n){const r=j.o,i=j.ne,a=X("label"),m=X("input"),l=X("span"),s=X("span"),d=X("span"),p=X("span"),g=X("span");if(p.innerHTML=se(1,3),g.innerHTML=se(0,3),m.type="checkbox",W(a,"section__toggle-wrapper"),W(m,"section__toggle"),W(p,"toggle__icon-on"),W(g,"toggle__icon-off"),W(l,"toggle__icon"),W(s,"toggle__icon-circle"),W(d,"toggle__label"),Z(l,M,"true"),t?(W(a,"toggle-service"),Z(m,x,n),i.se[n][c]=m):i.ae[c]=m,t?(e=>{ee(m,"change",()=>{const c=i.se[e],o=i.ae[e];r.Z[e]=[];for(let o in c){const t=c[o];t.checked&&r.Z[e].push(t.value)}o.checked=r.Z[e].length>0})})(n):(e=>{ee(m,T,()=>{const c=i.se[e],o=m.checked;r.Z[e]=[];for(let t in c)c[t].checked=o,o&&r.Z[e].push(t)})})(c),m.value=c,d.textContent=e.replace(/<.*>.*<\/.*>/gm,""),q(s,g),q(s,p),q(l,s),r.D)(o.readOnly||o.enabled)&&(m.checked=!0);else if(t){const e=r.Y[n];m.checked=o.readOnly||O(e,c)}else O(r.R,c)&&(m.checked=!0);return o.readOnly&&(m.disabled=!0),q(a,m),q(a,l),q(a,d),a}const Ie=()=>{const e=X("span");return j.ne.Ke||(j.ne.Ke=e),e},Oe=(e,c)=>{const o=j.o,t=j.ne,{hide:n,showPreferences:r,acceptCategory:i}=e,a=o.u&&o.u.consentModal;if(!a)return;const m=a.acceptAllBtn,l=a.acceptNecessaryBtn,s=a.showPreferencesBtn,d=a.closeIconLabel,p=a.footer,g=a.label,b=a.title,_=e=>{n(),i(e)};if(!t.Qe){t.Qe=X(k),t.he=X(k),t.We=X(k),t.Xe=X(k),t.Ye=X(k),W(t.Qe,"cm-wrapper"),W(t.he,"cm"),G(t.We,"body"),G(t.Xe,"texts"),G(t.Ye,"btns"),Z(t.he,"role","dialog"),Z(t.he,"aria-modal","true"),Z(t.he,M,"false"),Z(t.he,"aria-describedby","cm__desc"),g?Z(t.he,"aria-label",g):b&&Z(t.he,"aria-labelledby","cm__title");const e="box",c=o.i.guiOptions,n=c&&c.consentModal,r=(n&&n.layout||e).split(" ")[0]===e;b&&d&&r&&(t.Le||(t.Le=X(C),t.Le.innerHTML=se(),G(t.Le,"btn"),G(t.Le,"btn--close"),ee(t.Le,T,()=>{_([])}),q(t.We,t.Le)),Z(t.Le,"aria-label",d)),q(t.We,t.Xe),(m||l||s)&&q(t.We,t.Ye),t.be=X(k),Z(t.be,"tabIndex",-1),q(t.he,t.be),q(t.he,t.We),q(t.Qe,t.he)}b&&(t.Ze||(t.Ze=X("h2"),t.Ze.className=t.Ze.id="cm__title",q(t.Xe,t.Ze)),t.Ze.innerHTML=b);let f=a.description;if(f&&(o.V&&(f=f.replace("{{revisionMessage}}",o.I?"":a.revisionMessage||"")),t.et||(t.et=X("p"),t.et.className=t.et.id="cm__desc",q(t.Xe,t.et)),t.et.innerHTML=f),m&&(t.tt||(t.tt=X(C),q(t.tt,Ie()),G(t.tt,"btn"),Z(t.tt,L,"all"),ee(t.tt,T,()=>{_("all")})),t.tt.firstElementChild.innerHTML=m),l&&(t.Ie||(t.Ie=X(C),q(t.Ie,Ie()),G(t.Ie,"btn"),Z(t.Ie,L,"necessary"),ee(t.Ie,T,()=>{_([])})),t.Ie.firstElementChild.innerHTML=l),s&&(t.ot||(t.ot=X(C),q(t.ot,Ie()),G(t.ot,"btn"),G(t.ot,"btn--secondary"),Z(t.ot,L,"show"),ee(t.ot,"mouseenter",()=>{o.N||ze(e,c)}),ee(t.ot,T,r)),t.ot.firstElementChild.innerHTML=s),t.nt||(t.nt=X(k),G(t.nt,S),m&&q(t.nt,t.tt),l&&q(t.nt,t.Ie),(m||l)&&q(t.We,t.nt),q(t.Ye,t.nt)),t.ot&&!t.st&&(t.st=X(k),t.Ie&&t.tt?(G(t.st,S),q(t.st,t.ot),q(t.Ye,t.st)):(q(t.nt,t.ot),G(t.nt,S+"--uneven"))),p){if(!t.ct){let e=X(k),c=X(k);t.ct=X(k),G(e,"footer"),G(c,"links"),G(t.ct,"link-group"),q(c,t.ct),q(e,c),q(t.he,e)}t.ct.innerHTML=p}Le(0),o.T||(o.T=!0,be(j.re.ue,A,t.he),c(e),q(t.Ce,t.Qe),de(t.he),setTimeout(()=>W(t.Qe,"cc--anim"),100)),ge(1),ne(t.We,e,ze,c)},Be=e=>{if(!H(e))return null;if(e in j.o._)return e;let c=e.slice(0,2);return c in j.o._?c:null},He=()=>j.o.l||j.o.i.language.default,Ne=e=>{e&&(j.o.l=e)},De=()=>{const e=j.ne;if(e.Ce)return;e.Ce=X(k),e.Ce.id="cc-main",e.Ce.setAttribute("data-nosnippet",""),(()=>{let e=j.o.i.language.rtl,c=j.ne.Ce;e&&c&&(B(e)||(e=[e]),O(e,j.o.l)?W(c,"cc--rtl"):V(c,"cc--rtl"))})();let c=j.o.i.root;c&&H(c)&&(c=document.querySelector(c)),(c||e.Ue.body).appendChild(e.Ce)},Pe=(e,c)=>{if(c instanceof RegExp)return e.filter(e=>c.test(e));{const o=I(e,c);return o>-1?[e[o]]:[]}},Ee=(e,c,o)=>{if(0===e.length)return;const t=o||j.t.cookie.domain,n=c||j.t.cookie.path,r="www."===t.slice(0,4),i=r&&t.substring(4),a=(e,c)=>{c&&"."!==c.slice(0,1)&&(c="."+c),document.cookie=e+"=; path="+n+(c?"; domain="+c:"")+"; expires=Thu, 01 Jan 1970 00:00:01 GMT;"};for(const c of e)a(c,o),o||a(c,t),r&&a(c,i)},Re=(e,c)=>{const o=document.cookie.match("(^|;)\\s*"+e+"\\s*=\\s*([^;]+)");return o?c?o.pop():e:""},Ye=e=>{const c=j.o.D?[]:j.o.R;return O(c,e)},Fe=(e,c)=>{const o=j.o.D?[]:j.o.Y[c]||[];return O(o,e)},Xe=e=>{const{ne:c,o}=j;if(!o.k){if(!o.T){if(!e)return;Oe(Je,De)}o.k=!0,o.J=R(),o.v&&me(!0),ie(c.he,1),W(c.ye,v),Z(c.he,M,"false"),setTimeout(()=>{re(j.ne.be)},100),be(j.re.fe,A)}},Ze=()=>{const e=j.o;e.A||(e.N||ze(Je,De),e.A=!0,e.k?e.U=R():e.J=R(),ie(j.ne.we,2),W(j.ne.ye,y),Z(j.ne.we,M,"false"),setTimeout(()=>{re(j.ne.ve)},100),be(j.re.fe,z))};var Je={show:Xe,hide:()=>{const{ne:e,o:c,re:o}=j;c.k&&(c.k=!1,c.v&&me(),re(e.Ke,!0),V(e.ye,v),Z(e.he,M,"true"),re(c.J),c.J=null,be(o._e,A))},showPreferences:Ze,hidePreferences:()=>{const e=j.o;e.A&&(e.A=!1,(()=>{const e=Ue(),c=j.o.P,o=j.ne.ae,t=j.ne.se,n=e=>O(j.o.$,e);for(const r in o){const i=!!c[r].readOnly;o[r].checked=i||(e?Ye(r):n(r));for(const c in t[r])t[r][c].checked=i||(e?Fe(c,r):n(r))}})(),re(j.ne.$e,!0),V(j.ne.ye,y),Z(j.ne.we,M,"true"),e.k?(re(e.U),e.U=null):(re(e.J),e.J=null),be(j.re._e,z))},acceptCategory:(e,c=[])=>{((e,c)=>{const{O:o,R:t,B:n,N:r,Z:i,$:a,X:m}=j.o;let l=[];if(e){B(e)?l.push(...e):H(e)&&(l="all"===e?o:[e]);for(const e of o)i[e]=O(l,e)?P(m[e]):[]}else l=[...t,...a],r&&(l=(()=>{const e=j.ne.ae;if(!e)return[];let c=[];for(let o in e)e[o].checked&&c.push(o);return c})());l=l.filter(e=>!O(o,e)||!O(c,e)),l.push(...n),te(l)})(e,c),(()=>{const e=j.o,{Z:c,B:o,Y:t,X:n,O:r}=e,i=r;e.te=K(t);for(const r of i){const i=n[r],a=P(i),m=c[r]&&c[r].length>0,l=O(o,r);if(0!==a.length){if(t[r]=[],l)t[r].push(...a);else if(m){const e=c[r];t[r].push(...e)}else t[r]=e.Z[r];t[r]=E(t[r])}}})(),(()=>{const e=j.o;e.L=j.t.mode===h&&e.D?oe(e.$,e.R):oe(e.R,e.p.categories);let c=e.L.length>0,o=!1;for(const c of e.O)e.ee[c]=oe(e.Y[c],e.te[c]),e.ee[c].length>0&&(o=!0);const t=j.ne.ae;for(const c in t)t[c].checked=O(e.R,c);for(const c of e.O){const o=j.ne.se[c],t=e.Y[c];for(const e in o)o[e].checked=O(t,e)}e.C||(e.C=new Date),e.M||(e.M=([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,e=>(e^crypto.getRandomValues(new Uint8Array(1))[0]&15>>e/4).toString(16))),e.p={categories:K(e.R),revision:j.t.revision,data:e.h,consentTimestamp:e.C.toISOString(),consentId:e.M,services:K(e.Y),languageCode:j.o.l},e.S&&(e.p.lastConsentTimestamp=e.S.toISOString());let n=!1;const r=c||o;(e.D||r)&&(e.D&&(e.D=!1,n=!0),e.S=e.S?new Date:e.C,e.p.lastConsentTimestamp=e.S.toISOString(),(e=>{const{hostname:c,protocol:o}=location,{name:t,path:n,domain:r,sameSite:i,useLocalStorage:a,secure:m}=j.t.cookie,l=e?(()=>{const e=j.o.S,c=e?new Date-e:0;return 864e5*ce()-c})():864e5*ce(),s=new Date;s.setTime(s.getTime()+l),j.o.p.expirationTime=s.getTime();const d=JSON.stringify(j.o.p);let p=t+"="+encodeURIComponent(d)+(0!==l?"; expires="+s.toUTCString():"")+"; Path="+n+"; SameSite="+i;O(c,".")&&(p+="; Domain="+r),m&&"https:"===o&&(p+="; Secure"),a?((e,c)=>{_e(()=>localStorage.setItem(e,c))})(t,d):document.cookie=p,j.o.p})(),j.t.autoClearCookies&&(n||r)&&(e=>{const c=j.o,o=(e=>{const c=document.cookie.split(/;\s*/),o=[];for(const t of c){let c=t.split("=")[0];e?_e(()=>{e.test(c)&&o.push(c)}):o.push(c)}return o})(),t=(e=>{const c=j.o;return(e?c.O:c.L).filter(e=>{const o=c.P[e];return!!o&&!o.readOnly&&!!o.autoClear})})(e);for(const e in c.ee)for(const t of c.ee[e]){const n=c.X[e][t].cookies;if(!O(c.Y[e],t)&&n)for(const e of n){const c=Pe(o,e.name);Ee(c,e.path,e.domain)}}for(const n of t){const t=c.P[n].autoClear,r=t&&t.cookies||[],i=O(c.L,n),a=!O(c.R,n),m=i&&a;if(e?a:m){t.reloadPage&&m&&(c.j=!0);for(const e of r){const c=Pe(o,e.name);Ee(c,e.path,e.domain)}}}})(n),fe()),n&&(be(j.re.ie),be(j.re.le),j.t.mode===u)||(r&&be(j.re.de),e.j&&(e.j=!1,location.reload()))})()}};const Ue=()=>!j.o.D,qe={cookie:{name:"cc_cookie",expiresAfterDays:182},guiOptions:{consentModal:{layout:"cloud inline",position:"bottom center",equalWeightButtons:!0,flipButtons:!1},preferencesModal:{layout:"box",equalWeightButtons:!0,flipButtons:!1}},onFirstConsent:({cookie:e})=>{console.log("onFirstConsent fired",e)},onConsent:({cookie:e})=>{console.log("onConsent fired!",e)},onChange:({changedCategories:e,changedServices:c})=>{console.log("onChange fired!",e,c)},onModalReady:({modalName:e})=>{console.log("ready:",e)},onModalShow:({modalName:e})=>{console.log("visible:",e)},onModalHide:({modalName:e})=>{console.log("hidden:",e)},categories:{necessary:{enabled:!0,readOnly:!0},analytics:{enabled:!1,readOnly:!1,autoClear:{cookies:[{name:/^_ga/},{name:"_gid"},{name:"_gat"}]}}},language:{default:"en",translations:{en:{consentModal:{title:"We use cookies",description:"This website uses cookies to ensure its proper operation and to understand how you interact with it.",acceptAllBtn:"Accept all",acceptNecessaryBtn:"Reject all",showPreferencesBtn:"Manage preferences"},preferencesModal:{title:"Manage cookie preferences",acceptAllBtn:"Accept all",acceptNecessaryBtn:"Reject all",savePreferencesBtn:"Accept current selection",closeIconLabel:"Close modal",sections:[{title:"Your Privacy Choices",description:"This panel allows you to customize your cookie preferences."},{title:"Strictly Necessary",description:"These cookies are essential for the proper functioning of the website and cannot be disabled.",linkedCategory:"necessary"},{title:"Performance and Analytics",description:"These cookies collect information about how you use our website. All of the data is anonymized and cannot be used to identify you.",linkedCategory:"analytics"}]}}}}};document.addEventListener("DOMContentLoaded",function(){try{console.log("Initializing cookie consent...");const e=void 0!==window.warderSettings?function(e,c){console.log("Creating config from settings:",c);const o=JSON.parse(JSON.stringify(e));if(!c||!c.settings)return console.warn("WordPress settings not available, using defaults"),o;const t=c.settings;try{if(t.current_lang&&(o.language.default=t.current_lang),o.language.translations[o.language.default]){const e=o.language.translations[o.language.default];e.consentModal.title=t.title||e.consentModal.title,e.consentModal.description=t.description||e.consentModal.description,e.consentModal.acceptAllBtn=t.primary_btn_text||e.consentModal.acceptAllBtn,e.consentModal.acceptNecessaryBtn=t.secondary_btn_text||e.consentModal.acceptNecessaryBtn;const c=e.preferencesModal.sections[0];e.preferencesModal.sections=[c]}return t.cookie_categories&&"object"==typeof t.cookie_categories&&(console.log("Cookie categories from WordPress:",t.cookie_categories),Object.entries(t.cookie_categories).forEach(([e,c])=>{if(o.categories[e]=o.categories[e]||{},o.categories[e].enabled="necessary"===e,o.categories[e].readOnly="necessary"===e,c.cookies&&c.cookies.length>0&&(o.categories[e].autoClear={cookies:c.cookies.map(e=>{if(!(e.is_regex&&e.name.startsWith("/")&&e.name.includes("/")))return{name:e.name};try{const c=e.name.slice(1,e.name.lastIndexOf("/"));return{name:new RegExp(c)}}catch(c){return console.error("Invalid regex pattern:",e.name),{name:e.name}}})}),o.language.translations[o.language.default]){const t=o.language.translations[o.language.default],n=t.preferencesModal.sections.find(c=>c.linkedCategory===e);n?(n.title=c.title||n.title,n.description=c.description||n.description):t.preferencesModal.sections.push({title:c.title||e.charAt(0).toUpperCase()+e.slice(1),description:c.description||"",linkedCategory:e})}})),console.log("Final cookie consent configuration:",o),o}catch(c){return console.error("Error building cookie consent config:",c),e}}(qe,window.warderSettings):qe;console.log("Running cookie consent with config:",e),(async e=>{const{o:c,t:o,re:t}=j,n=window;if(!n._ccRun){if(n._ccRun=!0,(e=>{const{ne:c,t:o,o:t}=j,n=o,r=t,{cookie:i}=n,a=j.ce,m=e.cookie,l=e.categories,s=P(l)||[],d=navigator,p=document;c.Ue=p,c.ye=p.documentElement,i.domain=location.hostname,r.i=e,r.P=l,r.O=s,r._=e.language.translations,r.v=!!e.disablePageInteraction,a.ie=e.onFirstConsent,a.le=e.onConsent,a.de=e.onChange,a._e=e.onModalHide,a.fe=e.onModalShow,a.ue=e.onModalReady;const{mode:g,autoShow:b,lazyHtmlGeneration:_,autoClearCookies:f,revision:u,manageScriptTags:v,hideFromBots:y}=e;g===h&&(n.mode=g),"boolean"==typeof f&&(n.autoClearCookies=f),"boolean"==typeof v&&(n.manageScriptTags=v),"number"==typeof u&&u>=0&&(n.revision=u,r.V=!0),"boolean"==typeof b&&(n.autoShow=b),"boolean"==typeof _&&(n.lazyHtmlGeneration=_),!1===y&&(n.hideFromBots=!1),!0===n.hideFromBots&&d&&(r.G=d.userAgent&&/bot|crawl|spider|slurp|teoma/i.test(d.userAgent)||d.webdriver),N(m)&&(n.cookie={...i,...m}),n.autoClearCookies,r.V,n.manageScriptTags,(e=>{const{P:c,X:o,Y:t,Z:n,B:r}=j.o;for(let i of e){const e=c[i],a=e.services||{},m=N(a)&&P(a)||[];o[i]={},t[i]=[],n[i]=[],e.readOnly&&(r.push(i),t[i]=m),j.ne.se[i]={};for(let e of m){const c=a[e];c.Se=!1,o[i][e]=c}}})(s),(()=>{if(!j.t.manageScriptTags)return;const e=j.o,c=F(document,"script["+x+"]");for(const o of c){let c=U(o,x),t=o.dataset.service||"",n=!1;if(c&&"!"===c.charAt(0)&&(c=c.slice(1),n=!0),"!"===t.charAt(0)&&(t=t.slice(1),n=!0),O(e.O,c)&&(e.oe.push({Me:o,xe:!1,ke:n,De:c,Te:t}),t)){const o=e.X[c];o[t]||(o[t]={Se:!1})}}})(),Ne((()=>{const e=j.o.i.language.autoDetect;if(e){const c={browser:navigator.language,document:document.documentElement.lang},o=Be(c[e]);if(o)return o}return He()})())})(e),c.G)return;(()=>{const e=j.o,c=j.t,o=(e=>{const c=e||j.t.cookie.name,o=j.t.cookie.useLocalStorage;return((e,c)=>{let o;return o=_e(()=>JSON.parse(c?e:decodeURIComponent(e)),!0)||{},o})(o?(t=c,_e(()=>localStorage.getItem(t))||""):Re(c,!0),o);var t})(),{categories:t,services:n,consentId:r,consentTimestamp:i,lastConsentTimestamp:a,data:m,revision:l}=o,s=B(t);e.p=o,e.M=r;const d=!!r&&H(r);e.C=i,e.C&&(e.C=new Date(i)),e.S=a,e.S&&(e.S=new Date(a)),e.h=void 0!==m?m:null,e.V&&d&&l!==c.revision&&(e.I=!1),e.D=!(d&&e.I&&e.C&&e.S&&s),c.cookie.useLocalStorage&&!e.D&&(e.D=(new Date).getTime()>(o.expirationTime||0),e.D&&(e=>{_e(()=>localStorage.removeItem(e))})(c.cookie.name)),e.D,(()=>{const e=j.o;for(const c of e.O){const o=e.P[c];if(o.readOnly||o.enabled){e.$.push(c);const o=e.X[c]||{};for(let t in o)e.Z[c].push(t),e.i.mode===h&&e.Y[c].push(t)}}})(),e.D?c.mode===h&&(e.R=[...e.$]):(e.Y={...e.Y,...n},e.Z={...e.Y},te([...e.B,...t]))})();const i=Ue();if(!await(async e=>{const c=j.o;let o=Be(e)?e:He(),t=c._[o];if(H(t)?t=await(async e=>{try{const c=await fetch(e);return await c.json()}catch(e){return console.error(e),!1}})(t):D(t)&&(t=await t()),!t)throw`Could not load translation for the '${o}' language`;return c.u=t,Ne(o),!0})())return!1;if(ne(null,r=Je,ze,De),j.o.D&&Oe(r,De),j.t.lazyHtmlGeneration||ze(r,De),o.autoShow&&!i&&Xe(!0),i)return fe(),be(t.le);o.mode===h&&fe(c.$)}var r})(e);const c=document.getElementById("warder-preferences-toggle");c&&c.addEventListener("click",function(){Ze()}),console.log("Cookie consent initialized successfully")}catch(e){console.error("Error initializing cookie consent:",e),console.error("Error details:",e.message,e.stack)}})})(); \ No newline at end of file diff --git a/docs/cookie-category-rules.md b/docs/cookie-category-rules.md new file mode 100644 index 0000000..91e4fa5 --- /dev/null +++ b/docs/cookie-category-rules.md @@ -0,0 +1,79 @@ +# Cookie Category Rules + +This document defines the hard rules for how cookie categories behave across the admin, PHP layer, and JavaScript frontend. These rules are enforced in code and must not be changed without reviewing all three layers. + +--- + +## Necessary category + +| Property | Value | Where enforced | +|---|---|---| +| Enabled | Always `true` | `settings.php` validation, `index.js` config mapping | +| Read-only | Always `true` | `settings.php` validation, `index.js` config mapping | +| User can toggle | No | vanilla-cookieconsent `readOnly: true` | +| Admin UI | Locked — info text only, no checkboxes | `admin.php` | + +**Rationale:** Strictly necessary cookies are required for the site to function. They must always be active regardless of user preference. + +--- + +## All other categories (analytics, marketing, custom, …) + +| Property | Value | Where enforced | +|---|---|---| +| Enabled | Always `false` | `settings.php` validation, `index.js` config mapping | +| Read-only | Always `false` | `settings.php` validation, `index.js` config mapping | +| User can toggle | Yes | vanilla-cookieconsent `readOnly: false` | +| Admin UI | Info text only, no checkboxes | `admin.php` | + +**Rationale:** GDPR requires that non-necessary cookies are opt-in. Pre-selecting or locking optional categories is not permitted. Users must actively choose to enable them. + +--- + +## Where each rule is enforced + +### `inc/settings.php` — `warder_validate_options()` + +```php +'enabled' => $is_necessary, // true for necessary, false for everything else +'readonly' => $is_necessary, // true for necessary, false for everything else +``` + +This ensures the database never stores `enabled: true` or `readonly: true` for non-necessary categories, even if a future UI change were to expose those fields again. + +### `src/index.js` — `createConfigFromSettings()` + +```js +config.categories[categoryId].enabled = (categoryId === 'necessary'); +config.categories[categoryId].readOnly = (categoryId === 'necessary'); +``` + +This is the final safety layer. Even if the DB somehow contains stale values, the JavaScript runtime always applies the correct policy before passing the config to vanilla-cookieconsent. + +### `inc/admin.php` — category settings row + +The "Enabled by default" and "Read-only" checkboxes have been removed. The admin now shows: + +- **Necessary:** lock icon + "Always enabled — users cannot turn this off" +- **Other:** unlock icon + "Always off by default — users can opt in" + +This eliminates admin-side confusion that previously caused the bug where analytics appeared locked on the frontend. + +--- + +## What to do if a new category is added + +1. Add the category via the **Add Category** form in the admin. +2. Give it a title, description, and list the cookies it controls. +3. Do **not** try to make it enabled by default or read-only — the code enforces these as `false` automatically. +4. The category will appear in the preferences modal as an optional, off-by-default toggle. + +--- + +## Browser cookie cache note + +vanilla-cookieconsent stores accepted consent in a `cc_cookie` browser cookie. If a visitor previously accepted all cookies while a bug was present (all categories locked/on), their browser still holds the old consent state. + +To reset your own browser for testing: open DevTools → Application → Cookies → delete `cc_cookie`, then reload. + +New visitors who have never consented will always see the correct default state (necessary on and locked, everything else off and optional). diff --git a/inc/admin.php b/inc/admin.php index 91218e9..db21f8a 100644 --- a/inc/admin.php +++ b/inc/admin.php @@ -258,33 +258,21 @@ class="regular-text warder-category-title-field" - + - -

-
- -

+ +

+ + +

+

+ +

+ + +

+

+ diff --git a/inc/settings.php b/inc/settings.php index a34b658..791d4d0 100644 --- a/inc/settings.php +++ b/inc/settings.php @@ -67,8 +67,8 @@ function warder_validate_options( $input ) { $valid['cookie_categories'][ $sanitized_id ] = array( 'title' => $title, 'description' => wp_kses_post( $category['description'] ), - 'enabled' => $is_necessary ? true : ( isset( $category['enabled'] ) ? true : false ), - 'readonly' => $is_necessary ? true : ( isset( $category['readonly'] ) ? true : false ), + 'enabled' => $is_necessary, + 'readonly' => $is_necessary, 'cookies' => array(), ); diff --git a/src/index.js b/src/index.js index 91feeb1..7efe2f2 100644 --- a/src/index.js +++ b/src/index.js @@ -155,10 +155,12 @@ function createConfigFromSettings(defaultConfig, wpSettings) { // Map WordPress categories to the config Object.entries(settings.cookie_categories).forEach(([categoryId, category]) => { - // Create category if it doesn't exist, or update existing + // Create category if it doesn't exist, or update existing. + // Necessary is always on and locked; all other categories are always + // off by default and optional — users must actively opt in (GDPR). config.categories[categoryId] = config.categories[categoryId] || {}; - config.categories[categoryId].enabled = category.enabled || false; - config.categories[categoryId].readOnly = category.readonly || false; + config.categories[categoryId].enabled = (categoryId === 'necessary'); + config.categories[categoryId].readOnly = (categoryId === 'necessary'); // Set up cookie auto-clearing if (category.cookies && category.cookies.length > 0) { From 148a12b56673033002d57e7892e9c98c49843ba5 Mon Sep 17 00:00:00 2001 From: Jasper Frumau Date: Thu, 28 May 2026 15:34:43 +0700 Subject: [PATCH 5/5] docs: expand 2.0.1 changelog to cover all three bug fixes The version bump commit only captured the first fix. Two more were landed afterwards: is_regex always saving as true, and non-necessary categories appearing locked in the frontend modal. Upgrade notice updated to summarise all three data-corruption issues. --- CHANGELOG.md | 3 +++ readme.txt | 5 ++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d8ec4a2..04d0bcd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,9 @@ All notable changes to Warder Cookie Consent are documented here. ### Fixed - `necessary` category `enabled` and `readonly` values were silently overwritten as `false` on every admin settings save. The admin form is submitted via AJAX with `form.serialize()`, which drops `disabled` fields — the readonly checkbox for `necessary` is `disabled`, so it was never submitted. `warder_validate_options` now forces `enabled = true` and `readonly = true` for the `necessary` category regardless of form input. The `enabled` checkbox in the admin UI is also now `disabled` for `necessary`, consistent with `readonly`. +- `is_regex` was always saved as `true` for every cookie. The hidden input used `value=""` for false, so PHP's `isset()` returned `true` for the empty string, silently marking non-regex cookies (`_gid`, `_gat`) as regex patterns and corrupting the autoClear list. The hidden input now outputs `'0'` for false; validation uses `!empty()` with a literal `'0'` check so only the string `'1'` is treated as true. +- Non-necessary categories (e.g. Analytics) were appearing as locked and pre-selected in the frontend preferences modal. `warder_validate_options` was using `isset()` to read `enabled`/`readonly` from DB values rather than enforcing them by policy. PHP now always saves `enabled = false, readonly = false` for non-necessary categories; `src/index.js` derives `enabled`/`readOnly` from the category id rather than trusting DB values; the admin UI replaces the confusing enabled/readonly checkboxes with descriptive lock/unlock icons. +- AJAX save handler no longer returns a misleading "No changes detected" message. `update_option()` returns `false` when the value is unchanged, but the save did succeed — the response now always says "Settings saved successfully." ## [2.0.0] - 2026-05-28 diff --git a/readme.txt b/readme.txt index 7de8df1..19dc403 100644 --- a/readme.txt +++ b/readme.txt @@ -76,6 +76,9 @@ Yes. Settings are versioned via a timestamp that is appended to the script URL, *2026-05-28* * Fixed: necessary category enabled/readonly values were silently overwritten as false on every admin settings save because the disabled checkboxes were not submitted by form.serialize(). The necessary category is now always forced to enabled=true and readonly=true in validation, regardless of form input. +* Fixed: is_regex was always saved as true for every cookie. The hidden input used value="" for false, so PHP's isset() returned true for the empty string, silently marking non-regex cookies (_gid, _gat) as regex patterns and corrupting the autoClear cookie list. The hidden input now outputs '0' for false; validation uses !empty() with an explicit '0' check so only the string '1' is treated as true. +* Fixed: non-necessary categories (e.g. Analytics) appeared as locked and pre-selected in the frontend preferences modal. Validation now always saves enabled=false, readonly=false for non-necessary categories; src/index.js derives enabled/readOnly from the category id rather than DB values; admin UI replaces confusing enabled/readonly checkboxes with descriptive lock/unlock icons. +* Fixed: AJAX save no longer returns a misleading "No changes detected" message when a setting is toggled back to its current DB value — the response is always "Settings saved successfully." = 2.0.0 = *2026-05-28* @@ -186,7 +189,7 @@ Yes. Settings are versioned via a timestamp that is appended to the script URL, == Upgrade Notice == = 2.0.1 = -Fixes a bug where the Strictly Necessary category would lose its locked/readonly state after the first admin settings save, allowing users to toggle it off in the frontend modal. +Fixes three data-corruption bugs: (1) Strictly Necessary category losing its locked state after every save; (2) all cookies being silently saved as regex patterns due to a hidden-input value bug; (3) non-necessary categories appearing locked and pre-selected in the frontend consent modal. = 2.0.0 = Internal refactor only — plugin logic split into `inc/` files for maintainability. Admin page title and Settings sidebar label updated to "Warder Cookie Consent" / "Warder Consent". No settings migration required, no behaviour changes.