@consenti/ui 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import{a as U}from"./chunk-K2UN3O67.mjs";var j="#consenti-root{position:relative}.consenti-d-none{display:none}:root{--consenti-color-bg: #ffffff;--consenti-color-text: #1a2e4a;--consenti-color-primary: #1565c0;--consenti-color-primary-text: #ffffff;--consenti-color-secondary: #f0f4f8;--consenti-color-secondary-text: #1a2e4a;--consenti-color-border: #dbe4ee;--consenti-color-secondary-border: #1a2e4a;--consenti-color-overlay: rgba(26, 52, 96, 0.55);--consenti-color-accent: #d32f2f;--consenti-color-accent-text: #ffffff;--consenti-font-family: system-ui, -apple-system, sans-serif;--consenti-font-size-base: 14px;--consenti-font-size-heading: 16px;--consenti-font-weight-heading: 600;--consenti-line-height: 1.5;--consenti-spacing-sm: 8px;--consenti-spacing-md: 16px;--consenti-spacing-lg: 24px;--consenti-border-radius: 8px;--consenti-border-radius-btn: 0;--consenti-shadow: 0 4px 24px rgba(21, 101, 192, 0.14);--consenti-toggle-bg-on: #43a047;--consenti-toggle-bg-off: #9ca3af;--consenti-toggle-knob: #ffffff;--consenti-toggle-width: 52px;--consenti-toggle-height: 28px;--consenti-z-banner: 9999;--consenti-z-overlay: 9998;--consenti-z-modal: 10000}.consenti-root--dark{--consenti-color-bg: #1e2535;--consenti-color-text: #e2e8f0;--consenti-color-primary: #4a9eff;--consenti-color-primary-text: #ffffff;--consenti-color-secondary: #2a3447;--consenti-color-secondary-text: #cbd5e1;--consenti-color-border: #374151;--consenti-color-overlay: rgba(0, 0, 0, 0.65);--consenti-shadow: 0 4px 24px rgba(0, 0, 0, 0.4);--consenti-toggle-bg-off: #6b7280}.consenti-overlay{position:fixed;inset:0;background:var(--consenti-color-overlay);z-index:var(--consenti-z-overlay)}.consenti-btn{display:inline-flex;align-items:center;justify-content:center;padding:var(--consenti-spacing-sm) var(--consenti-spacing-md);border:none;border-radius:var(--consenti-border-radius-btn);font-family:var(--consenti-font-family);font-size:var(--consenti-font-size-base);font-weight:500;line-height:1;cursor:pointer;text-decoration:none;transition:opacity .15s ease}.consenti-btn:focus-visible{outline:2px solid var(--consenti-color-primary);outline-offset:2px}.consenti-btn:hover{opacity:.9}.consenti-btn--primary{background:var(--consenti-color-primary);color:var(--consenti-color-primary-text)}.consenti-btn--secondary{background:var(--consenti-color-secondary);color:var(--consenti-color-primary);border:1px solid var(--consenti-color-primary)}.consenti-btn--secondary:hover{background:var(--consenti-color-primary);color:var(--consenti-color-secondary);border:1px solid var(--consenti-color-secondary)}.consenti-btn--text{background:rgba(0,0,0,0);color:var(--consenti-color-primary);padding-left:0;padding-right:0;text-decoration:underline;text-underline-offset:4px}.consenti-btn--accent{background:var(--consenti-color-accent);color:var(--consenti-color-accent-text)}.consenti-btn--close{background:rgba(0,0,0,0);color:var(--consenti-color-text);font-size:20px;line-height:1;padding:4px 8px;border-radius:50%}.consenti-btn--close:hover{background:var(--consenti-color-secondary);opacity:1}.consenti-banner{position:fixed;left:0;right:0;z-index:var(--consenti-z-banner);background:var(--consenti-color-bg);color:var(--consenti-color-text);font-family:var(--consenti-font-family);font-size:var(--consenti-font-size-base);line-height:var(--consenti-line-height);box-shadow:var(--consenti-shadow);padding:var(--consenti-spacing-lg);display:flex;flex-wrap:wrap;align-items:center;gap:var(--consenti-spacing-md)}.consenti-banner--top{top:0;border-bottom:1px solid var(--consenti-color-border)}@media(prefers-reduced-motion: no-preference){.consenti-banner--top{animation:consenti-slide-down .2s ease-out}}.consenti-banner--bottom{bottom:0;border-top:1px solid var(--consenti-color-border)}@media(prefers-reduced-motion: no-preference){.consenti-banner--bottom{animation:consenti-slide-up .2s ease-out}}.consenti-banner--middle{top:50%;transform:translateY(-50%);left:50%;right:auto;transform:translate(-50%, -50%);width:min(600px,90vw);border-radius:var(--consenti-border-radius)}.consenti-banner--left-bottom{bottom:var(--consenti-spacing-lg);left:var(--consenti-spacing-lg);right:auto;width:min(400px,90vw);border-radius:var(--consenti-border-radius)}.consenti-banner--right-bottom{bottom:var(--consenti-spacing-lg);right:var(--consenti-spacing-lg);left:auto;width:min(400px,90vw);border-radius:var(--consenti-border-radius)}.consenti-banner__text-container{flex:1;min-width:500px}.consenti-banner__heading{font-size:var(--consenti-font-size-heading);font-weight:var(--consenti-font-weight-heading);margin:0 0 var(--consenti-spacing-sm);width:100%}.consenti-banner__text{margin:0}.consenti-banner__links{display:flex;flex-wrap:wrap;gap:var(--consenti-spacing-sm);margin-top:var(--consenti-spacing-sm)}.consenti-banner__link{font-size:.85em}.consenti-banner__controls{position:absolute;top:var(--consenti-spacing-sm);right:var(--consenti-spacing-sm);display:flex;align-items:center;gap:4px}.consenti-banner__buttons{display:flex;flex-wrap:wrap;gap:var(--consenti-spacing-sm);align-items:center;margin-block:var(--consenti-spacing-md)}.consenti-banner__powered-by{position:absolute;right:10px;bottom:2px;opacity:.2;color:var(--consenti-color-primary)}@media(max-width: 576px){.consenti-banner{padding:var(--consenti-spacing-md);gap:var(--consenti-spacing-sm)}.consenti-banner--left-bottom,.consenti-banner--right-bottom{left:0;right:0;bottom:0;width:100%;border-radius:0;border-top:1px solid var(--consenti-color-border)}.consenti-banner--middle{width:95vw}.consenti-banner__buttons{width:100%;flex-direction:row;align-items:stretch;margin-bottom:var(--consenti-spacing-md)}.consenti-banner__text-container{min-width:0;width:100%}}@keyframes consenti-slide-up{from{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes consenti-slide-down{from{transform:translateY(-100%)}to{transform:translateY(0)}}.consenti-modal{position:fixed;inset:0;z-index:var(--consenti-z-modal);display:flex;font-family:var(--consenti-font-family);font-size:var(--consenti-font-size-base);color:var(--consenti-color-text);line-height:var(--consenti-line-height)}.consenti-modal--passthrough{pointer-events:none}.consenti-modal--passthrough .consenti-modal__container{pointer-events:auto}.consenti-modal--center{align-items:center;justify-content:center}.consenti-modal--left{align-items:stretch;justify-content:flex-start}.consenti-modal--left .consenti-modal__container{border-radius:0 var(--consenti-border-radius) var(--consenti-border-radius) 0;height:100%;max-height:100vh}.consenti-modal--right{align-items:stretch;justify-content:flex-end}.consenti-modal--right .consenti-modal__container{border-radius:0;height:100%;max-height:100vh}.consenti-modal--fullscreen{align-items:flex-start;justify-content:flex-start}.consenti-modal--fullscreen .consenti-modal__container{width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;border-radius:0;margin:0}.consenti-modal__overlay{position:absolute;inset:0;background:var(--consenti-color-overlay)}.consenti-modal__container{position:relative;z-index:1;background:var(--consenti-color-bg);border-radius:var(--consenti-border-radius);box-shadow:var(--consenti-shadow);width:min(560px,90vw);max-height:85vh;display:flex;flex-direction:column;overflow:hidden}@media(prefers-reduced-motion: no-preference){.consenti-modal__container{animation:consenti-fade-in .15s ease-out}}.consenti-modal__header{display:flex;justify-content:space-between;padding:var(--consenti-spacing-md) var(--consenti-spacing-lg);border-bottom:1px solid var(--consenti-color-border);flex-shrink:0;position:relative;flex-direction:column}.consenti-modal__heading{font-size:var(--consenti-font-size-heading);font-weight:var(--consenti-font-weight-heading);margin:0;flex:1}.consenti-modal__header-controls{display:flex;align-items:center;gap:4px;flex-shrink:0;position:absolute;right:15px;top:10px}.consenti-modal__close{flex-shrink:0}.consenti-modal__links{display:flex;flex-wrap:wrap;gap:var(--consenti-spacing-sm);padding:var(--consenti-spacing-sm) var(--consenti-spacing-lg)}.consenti-modal__link{font-size:.85em;text-decoration:underline;text-underline-offset:2px}.consenti-modal__subheading{padding-top:var(--consenti-spacing-sm);margin:0;color:#6b7280;font-size:13px}.consenti-modal__text{padding:var(--consenti-spacing-sm) 0}.consenti-modal__body{overflow-y:auto;flex:1;padding:var(--consenti-spacing-sm) var(--consenti-spacing-lg);position:relative}.consenti-modal__categories{display:flex;flex-direction:column;gap:var(--consenti-spacing-md);padding:var(--consenti-spacing-md) 0}.consenti-modal__buttons{display:flex;flex-wrap:wrap;gap:var(--consenti-spacing-sm);padding:var(--consenti-spacing-md);border-top:1px solid var(--consenti-color-border);flex-shrink:0}.consenti-modal__receipt-option{padding-top:var(--consenti-spacing-md);border-top:1px solid var(--consenti-color-border);flex-shrink:0}.consenti-modal__receipt-label{display:flex;align-items:center;gap:var(--consenti-spacing-sm);font-size:var(--consenti-font-size-base);cursor:pointer}.consenti-modal__receipt-checkbox{width:16px;height:16px;flex-shrink:0;cursor:pointer}.consenti-modal__receipt-desc{margin:4px 0 0 24px;font-size:12px;color:#6b7280}.consenti-modal__powered-by{opacity:.5;color:var(--consenti-color-primary)}@keyframes consenti-fade-in{from{opacity:0;transform:scale(0.97)}to{opacity:1;transform:scale(1)}}.consenti-category{padding:var(--consenti-spacing-md) 0;border-bottom:1px solid var(--consenti-color-border)}.consenti-category:last-child{border-bottom:none}.consenti-category--mandatory .consenti-category__toggle{opacity:.6;cursor:default}.consenti-category__header{display:flex;align-items:center;justify-content:space-between;gap:var(--consenti-spacing-md);margin-bottom:var(--consenti-spacing-sm)}.consenti-category__heading{font-size:var(--consenti-font-size-heading);font-weight:var(--consenti-font-weight-heading);margin:0}.consenti-category__text{color:#949dab;font-size:13px;margin:0}.consenti-category__li-desc{margin:var(--consenti-spacing-sm) 0 0;font-size:12px;color:#6b7280;font-style:italic}.consenti-category__toggle{flex-shrink:0;position:relative;width:var(--consenti-toggle-width);height:var(--consenti-toggle-height);border-radius:calc(var(--consenti-toggle-height)/2);background:var(--consenti-toggle-bg-off);border:none;cursor:pointer;transition:background .2s ease;padding:0}.consenti-category__toggle:focus-visible{outline:2px solid var(--consenti-color-primary);outline-offset:2px}.consenti-category__toggle[aria-checked=true]{background:var(--consenti-toggle-bg-on)}.consenti-category__toggle--mandatory{cursor:default}.consenti-category__toggle-icon{position:absolute;top:50%;transform:translateY(-50%);width:10px;height:10px;display:flex;align-items:center;justify-content:center;pointer-events:none;transition:opacity .15s ease;color:hsla(0,0%,100%,.9)}.consenti-category__toggle-icon svg{width:10px;height:10px;overflow:visible}.consenti-category__toggle-icon--check{left:8px;opacity:0}[aria-checked=true] .consenti-category__toggle-icon--check{opacity:1}.consenti-category__toggle-icon--cross{right:8px;opacity:1}[aria-checked=true] .consenti-category__toggle-icon--cross{opacity:0}.consenti-category__toggle-knob{position:absolute;top:2px;left:2px;width:calc(var(--consenti-toggle-height) - 4px);height:calc(var(--consenti-toggle-height) - 4px);border-radius:50%;background:var(--consenti-toggle-knob);transition:transform .2s ease;display:block}[aria-checked=true] .consenti-category__toggle-knob{transform:translateX(calc(var(--consenti-toggle-width) - var(--consenti-toggle-height)))}.consenti-locale-switcher{position:relative;display:inline-flex}.consenti-locale-switcher__btn{font-size:1rem;line-height:1;cursor:pointer}.consenti-locale-switcher__list{position:absolute;top:calc(100% + 4px);right:0;z-index:calc(var(--consenti-z-modal) + 1);background:var(--consenti-color-bg);border:1px solid var(--consenti-color-border);border-radius:var(--consenti-border-radius);box-shadow:var(--consenti-shadow);list-style:none;margin:0;padding:4px 0;min-width:80px}.consenti-locale-switcher__list li{display:block}.consenti-locale-switcher__option{display:block;width:100%;padding:6px 12px;text-align:left;font-size:var(--consenti-font-size-base);color:var(--consenti-color-text);background:none;border:none;cursor:pointer}.consenti-locale-switcher__option:hover{background:var(--consenti-color-secondary)}.consenti-locale-switcher__option--active{font-weight:600;color:var(--consenti-color-primary)}.consenti-locale-switcher--modal .consenti-locale-switcher__list{right:0}";var l=()=>typeof window<"u"&&typeof document<"u",ne=()=>l()?window:null;var oe=()=>l()&&typeof navigator<"u"?navigator:null;var A=["error"];function ie(i){A=i}var b={info:(...i)=>{A.includes("info")&&console.info("[Consenti]",...i)},log:(...i)=>{A.includes("log")&&console.log("[Consenti]",...i)},warn:(...i)=>{A.includes("warning")&&console.warn("[Consenti]",...i)},error:(...i)=>{A.includes("error")&&console.error("[Consenti]",...i)}};var E=class{constructor(){this.channel=null}get isSupported(){return l()&&typeof BroadcastChannel<"u"}connect(e){this.isSupported&&(this.onMessageCallback=e,this.channel=new BroadcastChannel("consenti"),this.channel.onmessage=t=>{t.data?.type&&e(t.data)},this.channel.onmessageerror=()=>{b.warn("BroadcastChannel message error \u2014 ignoring")})}send(e){this.channel?.postMessage(e)}disconnect(){this.channel?.close(),this.channel=null,this.onMessageCallback=void 0}};function ae(i){let e={version:"1.0",issuedAt:new Date().toISOString(),visitorId:i.visitorId,profileId:i.profileId,profileVersion:i.profileVersion,locale:i.locale,consent:i.consent};return i.signature&&(e.signature=i.signature),e}function re(i){if(typeof window>"u"||typeof document>"u")return;let e=JSON.stringify(i,null,2),t=new Blob([e],{type:"application/json"}),n=URL.createObjectURL(t),o=document.createElement("a");o.href=n,o.download=`consenti-receipt-${i.issuedAt.slice(0,10)}.json`,o.style.display="none",document.body.appendChild(o),o.click(),document.body.removeChild(o),setTimeout(()=>URL.revokeObjectURL(n),1e3)}function se(i){if(!l())return null;let e=document.cookie.match(new RegExp(`(?:^|;\\s*)${Re(i)}=([^;]*)`));return e?decodeURIComponent(e[1]??""):null}function K(i,e,t={}){if(!l())return;let n=t.secure??(typeof window<"u"&&typeof window.location<"u"&&window.location.protocol==="https:"),o=[`${encodeURIComponent(i)}=${encodeURIComponent(e)}`,`Path=${t.path??"/"}`,`SameSite=${t.sameSite??"Lax"}`,t.maxAge!=null?`Max-Age=${t.maxAge}`:"",n?"Secure":"",t.domain?`Domain=${t.domain}`:""];document.cookie=o.filter(Boolean).join("; ")}function ce(i,e={}){K(i,"",{...e,maxAge:0})}function Re(i){return i.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}var D=class{constructor(e){this.mode=e;e==="localStorage"&&l()&&typeof localStorage>"u"&&(b.warn("localStorage is not available, falling back to cookie storage"),this.mode="cookie")}read(e){return l()?this.mode==="localStorage"?localStorage.getItem(e):se(e):null}write(e,t,n={}){l()&&(this.mode==="localStorage"?localStorage.setItem(e,t):K(e,t,n))}remove(e,t={}){l()&&(this.mode==="localStorage"?localStorage.removeItem(e):ce(e,t))}};function Ie(i){return i.map(t=>t.expiry??365).reduce((t,n)=>Math.min(t,n),365)*24*60*60}var de="consenti";function Be(i,e){return`${de}_${i}_${e}`}function le(i){let e=Math.floor(Date.now()/1e3),t=Object.entries(i).map(([n,o])=>`${n}:${o}`).join("|");return`t:${e}::${t}`}function pe(i){let e=i.split("::");if(e.length<2)return null;let t=e[0]??"",n;if(t.startsWith("t:")){let c=t.slice(2),u=parseInt(c,10);if(!c||isNaN(u))return null;n=new Date(u*1e3).toISOString()}else if(t.startsWith("ConsentTimestamp:")){if(n=t.replace("ConsentTimestamp:",""),!n)return null}else return null;let o=e[1]??"",a=e[2],r={};for(let c of o.split("|")){let u=c.indexOf(":");if(u===-1)return null;let d=c.slice(0,u),f=c.slice(u+1);if(!d||f!=="granted"&&f!=="denied"&&f!=="objected")return null;r[d]=f}let s={timestamp:n,consent:r};return a?.startsWith("sig:")&&(s.signature=a.slice(4)),s}var T=class i{constructor(e,t,n,o){this.userId=e;this.profileId=t;this.cookieDomains=o;this.cachedConsent=null;this.cachedTimestamp=null;this.cookies=[];this.storage=new D(n)}setProfileCookies(e){this.cookies=e}get cookieName(){return Be(this.userId,this.profileId)}read(){let e=this.storage.read(this.cookieName);if(!e)return null;let t=pe(e);return t&&(this.cachedConsent=t.consent,this.cachedTimestamp=t.timestamp),t}async readAndVerify(e){let t=this.storage.read(this.cookieName);if(!t)return null;let n=t.split("::");if(n.length<2)return null;let o=pe(t);if(!o)return null;if(n.length===3&&(n[2]??"").startsWith("sig:")){let{verifyValue:r}=await import("./hmac-UKMRMKN6.mjs"),s=(n[0]??"")+"::"+(n[1]??""),c=(n[2]??"").slice(4);if(!await r(s,c,e))return b.warn("Cookie signature mismatch \u2014 consent cleared and banner will re-appear"),this.delete(),null}return this.cachedConsent=o.consent,this.cachedTimestamp=o.timestamp,o}write(e,t){let n=le(e);t&&(n=`${n}::sig:${t}`);let o=this.buildCookieOpts();this.storage.write(this.cookieName,n,o),this.cachedConsent=e,this.cachedTimestamp=new Date().toISOString()}async writeAndSign(e,t){let{signValue:n}=await import("./hmac-UKMRMKN6.mjs"),o=le(e),a=await n(o,t),r=`${o}::sig:${a}`,s=this.buildCookieOpts();return this.storage.write(this.cookieName,r,s),this.cachedConsent=e,this.cachedTimestamp=new Date().toISOString(),a}delete(){let e=this.buildCookieOpts();this.storage.remove(this.cookieName,e),this.cachedConsent=null,this.cachedTimestamp=null}hasConsent(){return this.cachedConsent?!0:this.read()!==null}getConsent(){return this.cachedConsent?this.cachedConsent:this.read()?.consent??null}getConsentDate(){if(this.cachedTimestamp)return new Date(this.cachedTimestamp);let e=this.read();return e?new Date(e.timestamp):!1}setInMemory(e){this.cachedConsent=e,this.cachedTimestamp=new Date().toISOString()}clearInMemory(){this.cachedConsent=null,this.cachedTimestamp=null}static getOrCreateUserId(e,t){if(typeof document>"u")return crypto.randomUUID();let n=`${de}_`,o=`_${e}`,a=t==="localStorage"?i._localStorageKeys():i._cookieNames();for(let r of a)if(r.startsWith(n)&&r.endsWith(o)){let s=r.slice(n.length,r.length-o.length);if(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(s))return s}return crypto.randomUUID()}static _cookieNames(){return document.cookie.split(";").map(e=>e.split("=")[0]?.trim()??"")}static _localStorageKeys(){return typeof localStorage>"u"?[]:Object.keys(localStorage)}buildCookieOpts(){let e={path:"/",sameSite:"Lax",maxAge:this.cookies.length>0?Ie(this.cookies):31536e3};if(this.cookieDomains){let t=this.cookieDomains.split(",")[0]?.trim();t&&(e.domain=t)}return e}};var L=class{constructor(e,t){this.profileId=e;this.gtmConfig=t}dispatch(e,t={}){if(!l())return;let n=new CustomEvent(e,{detail:t,bubbles:!0});window.dispatchEvent(n),this.pushToGTM(e,t)}pushToGTM(e,t){let n=this.gtmConfig;if(!n)return;let o=ne();if(!o)return;let a=n.dataLayer??"dataLayer",r=o[a];if(!(!Array.isArray(r)||!(!n.events||n.events.length===0||n.events.includes(e)))&&(r.push({event:e,consenti:{profileId:this.profileId,consent:t.consent,consentId:t.consentId,consentAction:t.consentAction}}),e==="consenti:consentSubmitted"&&this.hasGtag(o)&&(n.urlPassthrough&&r.push({url_passthrough:!0}),n.adsDataRedaction))){let c=t.consent?.ad_storage!=="granted";r.push({ads_data_redaction:c})}}hasGtag(e){return typeof e.gtag=="function"||typeof e.google_tag_manager<"u"}};function ue(i,e,t){let n=i[t];if(!n)throw new Error(`[Consenti] No translations found for defaultLocale "${t}"`);if(i[e])return x(n,i[e]);let o=e.split("-")[0]??"";return o!==e&&i[o]?x(n,i[o]):n}function x(i,e){let t={...i};for(let n in e){let o=e[n];if(o==null)continue;let a=t[n];typeof o=="object"&&!Array.isArray(o)&&typeof a=="object"&&a!==null&&!Array.isArray(a)?t[n]=x(a,o):t[n]=o}return t}function $(){return{tz:Intl.DateTimeFormat().resolvedOptions().timeZone,lang:navigator.language,langs:Array.from(navigator.languages)}}var me=["opt-in","opt-out","opt-out-strict","opt-in-dpdpa","opt-in-china","opt-in-brazil","general-privacy-consent","notice-only"];var R={version:"2026-07",countries:{AT:{name:"Austria",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Austria (GDPR)",locales:["de-AT"]},BE:{name:"Belgium",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Belgium (GDPR)",locales:["nl-BE","fr-BE"]},BG:{name:"Bulgaria",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Bulgaria (GDPR)",locales:["bg-BG"]},HR:{name:"Croatia",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Croatia (GDPR)",locales:["hr-HR"]},CY:{name:"Cyprus",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Cyprus (GDPR)",locales:["el-CY"]},CZ:{name:"Czechia",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Czechia (GDPR)",locales:["cs-CZ"]},DK:{name:"Denmark",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Denmark (GDPR)",locales:["da-DK"]},EE:{name:"Estonia",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Estonia (GDPR)",locales:["et-EE"]},FI:{name:"Finland",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Finland (GDPR)",locales:["fi-FI"]},FR:{name:"France",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"France (GDPR)",locales:["fr-FR"]},DE:{name:"Germany",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Germany (GDPR)",locales:["de-DE"]},GR:{name:"Greece",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Greece (GDPR)",locales:["el-GR"]},HU:{name:"Hungary",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Hungary (GDPR)",locales:["hu-HU"]},IE:{name:"Ireland",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Ireland (GDPR)",locales:["en"]},IT:{name:"Italy",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Italy (GDPR)",locales:["it-IT"]},LV:{name:"Latvia",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Latvia (GDPR)",locales:["lv-LV"]},LT:{name:"Lithuania",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Lithuania (GDPR)",locales:["lt-LT"]},LU:{name:"Luxembourg",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Luxembourg (GDPR)",locales:["fr-LU","de-LU"]},MT:{name:"Malta",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Malta (GDPR)",locales:["mt-MT","en"]},NL:{name:"Netherlands",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Netherlands (GDPR)",locales:["nl-NL"]},PL:{name:"Poland",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Poland (GDPR)",locales:["pl-PL"]},PT:{name:"Portugal",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Portugal (GDPR)",locales:["pt-PT"]},RO:{name:"Romania",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Romania (GDPR)",locales:["ro-RO"]},SK:{name:"Slovakia",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Slovakia (GDPR)",locales:["sk-SK"]},SI:{name:"Slovenia",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Slovenia (GDPR)",locales:["sl-SI"]},ES:{name:"Spain",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Spain (GDPR)",locales:["es-ES"]},SE:{name:"Sweden",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Sweden (GDPR)",locales:["sv-SE"]},IS:{name:"Iceland",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Iceland (GDPR via EEA)",locales:["is-IS"]},LI:{name:"Liechtenstein",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Liechtenstein (GDPR via EEA)",locales:["de-LI"]},NO:{name:"Norway",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Norway (GDPR via EEA)",locales:["nb-NO"]},AD:{name:"Andorra",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Andorra (GDPR-aligned)",locales:["ca-AD"]},AL:{name:"Albania",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Albania (GDPR-aligned)",locales:["sq-AL"]},BA:{name:"Bosnia and Herzegovina",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Bosnia and Herzegovina (GDPR-aligned)",locales:["bs-BA","sr-Latn-BA"]},GG:{name:"Guernsey",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Guernsey (DPA based on GDPR)",locales:["en"]},GI:{name:"Gibraltar",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Gibraltar (DPA based on UK GDPR)",locales:["en"]},GL:{name:"Greenland",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Greenland (Danish GDPR implementation)",locales:["da-GL"]},MC:{name:"Monaco",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Monaco (GDPR-aligned)",locales:["fr-MC"]},ME:{name:"Montenegro",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Montenegro (GDPR-aligned)",locales:["sr-Latn-ME"]},MK:{name:"North Macedonia",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"North Macedonia (GDPR-aligned)",locales:["mk-MK"]},RS:{name:"Serbia",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Serbia (GDPR-aligned)",locales:["sr-RS"]},SM:{name:"San Marino",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"San Marino (GDPR-aligned)",locales:["it-SM"]},TR:{name:"T\xFCrkiye",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"T\xFCrkiye (KVKK)",locales:["tr-TR"]},CA:{name:"Canada",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Canada (PIPEDA / Law 25)",locales:["en","fr-CA"],overriddenRegions:{QC:{name:"Quebec",type:"region",complianceGroup:"opt-in",description:"Quebec \u2014 Law 25 (GDPR-style opt-in)"}}},US:{name:"United States",type:"country",complianceGroup:"opt-out",default:"opt-out-strict",description:"United States \u2014 opt-out-strict (CPRA) used when state cannot be detected",locales:["en","es-US"],overriddenRegions:{CA:{name:"California",type:"region",complianceGroup:"opt-out-strict",description:"California \u2014 CPRA/CCPA"},VA:{name:"Virginia",type:"region",complianceGroup:"opt-out",description:"Virginia \u2014 VCDPA"},CO:{name:"Colorado",type:"region",complianceGroup:"opt-out",description:"Colorado \u2014 CPA"},CT:{name:"Connecticut",type:"region",complianceGroup:"opt-out",description:"Connecticut \u2014 CTDPA"},UT:{name:"Utah",type:"region",complianceGroup:"opt-out",description:"Utah \u2014 UCPA"},TX:{name:"Texas",type:"region",complianceGroup:"opt-out",description:"Texas \u2014 TDPSA"},DE:{name:"Delaware",type:"region",complianceGroup:"opt-out",description:"Delaware \u2014 DPDPA"},NJ:{name:"New Jersey",type:"region",complianceGroup:"opt-out",description:"New Jersey \u2014 NJDPA"},OR:{name:"Oregon",type:"region",complianceGroup:"opt-out",description:"Oregon \u2014 OCPA"},MN:{name:"Minnesota",type:"region",complianceGroup:"opt-out",description:"Minnesota \u2014 MCDPA"},MD:{name:"Maryland",type:"region",complianceGroup:"opt-out",description:"Maryland \u2014 MODPA"},KY:{name:"Kentucky",type:"region",complianceGroup:"opt-out",description:"Kentucky \u2014 KCDPA"},TN:{name:"Tennessee",type:"region",complianceGroup:"opt-out",description:"Tennessee \u2014 TIPA"},NE:{name:"Nebraska",type:"region",complianceGroup:"opt-out",description:"Nebraska \u2014 NDPA"},IA:{name:"Iowa",type:"region",complianceGroup:"opt-out",description:"Iowa \u2014 ICDPA"},IN:{name:"Indiana",type:"region",complianceGroup:"opt-out",description:"Indiana \u2014 ICDPA"},MT:{name:"Montana",type:"region",complianceGroup:"opt-out",description:"Montana \u2014 MCDPA"},NH:{name:"New Hampshire",type:"region",complianceGroup:"opt-out",description:"New Hampshire \u2014 NHPA"},RI:{name:"Rhode Island",type:"region",complianceGroup:"opt-out",description:"Rhode Island \u2014 RIDTPA"}}},AR:{name:"Argentina",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Argentina (LPDP)",locales:["es-AR"]},BO:{name:"Bolivia",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Bolivia",locales:["es-BO"]},BR:{name:"Brazil",type:"country",complianceGroup:"opt-in-brazil",default:"opt-in-brazil",description:"Brazil (LGPD)",locales:["pt-BR"]},CL:{name:"Chile",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Chile (Law 19.628)",locales:["es-CL"]},CO:{name:"Colombia",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Colombia (Law 1581)",locales:["es-CO"]},CR:{name:"Costa Rica",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Costa Rica (LPDP)",locales:["es-CR"]},DO:{name:"Dominican Republic",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Dominican Republic",locales:["es-DO"]},EC:{name:"Ecuador",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Ecuador (LOPDP)",locales:["es-EC"]},GF:{name:"French Guiana",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"French Guiana",locales:["fr-GF"]},GT:{name:"Guatemala",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Guatemala",locales:["es-GT"]},GY:{name:"Guyana",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Guyana",locales:["en"]},HN:{name:"Honduras",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Honduras",locales:["es-HN"]},HT:{name:"Haiti",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Haiti",locales:["fr-HT"]},JM:{name:"Jamaica",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Jamaica",locales:["en"]},MX:{name:"Mexico",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Mexico (LFPDPPP)",locales:["es-MX"]},NI:{name:"Nicaragua",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Nicaragua",locales:["es-NI"]},PA:{name:"Panama",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Panama",locales:["es-PA"]},PE:{name:"Peru",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Peru (LPDP)",locales:["es-PE"]},PY:{name:"Paraguay",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Paraguay",locales:["es-PY"]},SR:{name:"Suriname",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Suriname",locales:["nl-SR"]},SV:{name:"El Salvador",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"El Salvador",locales:["es-SV"]},TT:{name:"Trinidad and Tobago",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Trinidad and Tobago",locales:["en"]},UY:{name:"Uruguay",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Uruguay (Law 18.331)",locales:["es-UY"]},VE:{name:"Venezuela",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Venezuela",locales:["es-VE"]},AG:{name:"Antigua and Barbuda",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Antigua and Barbuda",locales:["en"]},BB:{name:"Barbados",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Barbados",locales:["en"]},BL:{name:"Saint Barth\xE9lemy",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Saint Barth\xE9lemy",locales:["fr-BL"]},BM:{name:"Bermuda",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Bermuda",locales:["en"]},BS:{name:"Bahamas",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Bahamas",locales:["en"]},CU:{name:"Cuba",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Cuba",locales:["es-CU"]},DM:{name:"Dominica",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Dominica",locales:["en"]},GD:{name:"Grenada",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Grenada",locales:["en"]},KN:{name:"Saint Kitts and Nevis",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Saint Kitts and Nevis",locales:["en"]},LC:{name:"Saint Lucia",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Saint Lucia",locales:["en"]},PM:{name:"Saint Pierre and Miquelon",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Saint Pierre and Miquelon",locales:["fr-PM"]},PR:{name:"Puerto Rico",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Puerto Rico",locales:["es-PR","en"]},VC:{name:"Saint Vincent and the Grenadines",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Saint Vincent and the Grenadines",locales:["en"]},IN:{name:"India",type:"country",complianceGroup:"opt-in-dpdpa",default:"opt-in-dpdpa",description:"India (DPDPA)",locales:["hi-IN","en","bn-IN","ta-IN"]},CN:{name:"China",type:"country",complianceGroup:"opt-in-china",default:"opt-in-china",description:"China (PIPL + DSL + CSL)",locales:["zh-CN"]},BN:{name:"Brunei",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Brunei (Personal Data Protection Order)",locales:["ms-BN","en"]},ID:{name:"Indonesia",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Indonesia (PDP Law)",locales:["id-ID"]},KH:{name:"Cambodia",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Cambodia",locales:["km-KH"]},LA:{name:"Laos",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Laos",locales:["lo-LA"]},MM:{name:"Myanmar",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Myanmar",locales:["my-MM"]},MY:{name:"Malaysia",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Malaysia (PDPA)",locales:["ms-MY","zh-MY","en"]},PH:{name:"Philippines",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Philippines (DPA)",locales:["fil-PH","en"]},SG:{name:"Singapore",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Singapore (PDPA)",locales:["zh-SG","ms-SG","ta-SG","en"]},TH:{name:"Thailand",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Thailand (PDPA \u2014 GDPR-style opt-in)",locales:["th-TH"]},TL:{name:"Timor-Leste",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Timor-Leste",locales:["pt-TL"]},VN:{name:"Vietnam",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Vietnam (PDPD)",locales:["vi-VN"]},HK:{name:"Hong Kong",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Hong Kong SAR (PDPO)",locales:["zh-HK"]},JP:{name:"Japan",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Japan (APPI)",locales:["ja-JP"]},KP:{name:"North Korea",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"North Korea",locales:["ko-KP"]},KR:{name:"South Korea",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"South Korea (PIPA)",locales:["ko-KR"]},MN:{name:"Mongolia",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Mongolia",locales:["mn-MN"]},MO:{name:"Macau",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Macau SAR (PDPA)",locales:["zh-MO","pt-MO"]},TW:{name:"Taiwan",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Taiwan (PDPL)",locales:["zh-TW"]},AF:{name:"Afghanistan",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Afghanistan",locales:["fa-AF"]},BD:{name:"Bangladesh",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Bangladesh",locales:["bn-BD"]},BT:{name:"Bhutan",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Bhutan",locales:["dz-BT"]},IO:{name:"British Indian Ocean Territory",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"British Indian Ocean Territory",locales:["en"]},LK:{name:"Sri Lanka",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Sri Lanka",locales:["si-LK","ta-LK"]},MV:{name:"Maldives",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Maldives",locales:["dv-MV"]},NP:{name:"Nepal",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Nepal",locales:["ne-NP"]},PK:{name:"Pakistan",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Pakistan",locales:["ur-PK","en"]},AM:{name:"Armenia",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Armenia",locales:["hy-AM"]},AZ:{name:"Azerbaijan",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Azerbaijan",locales:["az-AZ"]},GE:{name:"Georgia",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Georgia",locales:["ka-GE"]},KG:{name:"Kyrgyzstan",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Kyrgyzstan",locales:["ky-KG","ru-KG"]},KZ:{name:"Kazakhstan",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Kazakhstan",locales:["kk-KZ","ru-KZ"]},TJ:{name:"Tajikistan",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Tajikistan",locales:["tg-TJ"]},TM:{name:"Turkmenistan",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Turkmenistan",locales:["tk-TM"]},UZ:{name:"Uzbekistan",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Uzbekistan",locales:["uz-UZ"]},AE:{name:"United Arab Emirates",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"United Arab Emirates (UAE PDPL / DIFC DPL / ADGM DPR)",locales:["ar-AE"]},BH:{name:"Bahrain",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Bahrain (PDPL)",locales:["ar-BH"]},IL:{name:"Israel",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Israel (Privacy Protection Law)",locales:["he-IL","ar-IL"]},IQ:{name:"Iraq",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Iraq",locales:["ar-IQ"]},IR:{name:"Iran",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Iran",locales:["fa-IR"]},JO:{name:"Jordan",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Jordan",locales:["ar-JO"]},KW:{name:"Kuwait",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Kuwait",locales:["ar-KW"]},LB:{name:"Lebanon",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Lebanon",locales:["ar-LB"]},OM:{name:"Oman",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Oman (PDPL)",locales:["ar-OM"]},PS:{name:"Palestine",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Palestine",locales:["ar-PS"]},QA:{name:"Qatar",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Qatar (PDPL)",locales:["ar-QA"]},SA:{name:"Saudi Arabia",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Saudi Arabia (PDPL)",locales:["ar-SA"]},SY:{name:"Syria",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Syria",locales:["ar-SY"]},YE:{name:"Yemen",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Yemen",locales:["ar-YE"]},BF:{name:"Burkina Faso",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Burkina Faso",locales:["fr-BF"]},BJ:{name:"Benin",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Benin",locales:["fr-BJ"]},CI:{name:"C\xF4te d'Ivoire",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"C\xF4te d'Ivoire",locales:["fr-CI"]},CM:{name:"Cameroon",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Cameroon",locales:["fr-CM","en"]},CV:{name:"Cabo Verde",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Cabo Verde",locales:["pt-CV"]},GA:{name:"Gabon",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Gabon",locales:["fr-GA"]},GH:{name:"Ghana",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Ghana (DPA)",locales:["en"]},GM:{name:"Gambia",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Gambia",locales:["en"]},GN:{name:"Guinea",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Guinea",locales:["fr-GN"]},GQ:{name:"Equatorial Guinea",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Equatorial Guinea",locales:["es-GQ","fr-GQ"]},GW:{name:"Guinea-Bissau",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Guinea-Bissau",locales:["pt-GW"]},LR:{name:"Liberia",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Liberia",locales:["en"]},ML:{name:"Mali",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Mali",locales:["fr-ML"]},MR:{name:"Mauritania",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Mauritania",locales:["ar-MR"]},NE:{name:"Niger",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Niger",locales:["fr-NE"]},NG:{name:"Nigeria",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Nigeria (NDPA)",locales:["en"]},SL:{name:"Sierra Leone",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Sierra Leone",locales:["en"]},SN:{name:"Senegal",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Senegal",locales:["fr-SN"]},TG:{name:"Togo",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Togo",locales:["fr-TG"]},BI:{name:"Burundi",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Burundi",locales:["fr-BI"]},DJ:{name:"Djibouti",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Djibouti",locales:["fr-DJ","ar-DJ"]},ER:{name:"Eritrea",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Eritrea",locales:["ti-ER"]},ET:{name:"Ethiopia",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Ethiopia",locales:["am-ET"]},KE:{name:"Kenya",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Kenya (DPA)",locales:["sw-KE","en"]},KM:{name:"Comoros",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Comoros",locales:["ar-KM","fr-KM"]},MG:{name:"Madagascar",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Madagascar",locales:["fr-MG"]},MU:{name:"Mauritius",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Mauritius (DPA)",locales:["en","fr-MU"]},MW:{name:"Malawi",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Malawi",locales:["en"]},MZ:{name:"Mozambique",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Mozambique",locales:["pt-MZ"]},RW:{name:"Rwanda",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Rwanda (DPA)",locales:["rw-RW","en"]},SC:{name:"Seychelles",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Seychelles",locales:["fr-SC","en"]},SO:{name:"Somalia",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Somalia",locales:["so-SO"]},SS:{name:"South Sudan",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"South Sudan",locales:["en"]},ST:{name:"S\xE3o Tom\xE9 and Pr\xEDncipe",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"S\xE3o Tom\xE9 and Pr\xEDncipe",locales:["pt-ST"]},TZ:{name:"Tanzania",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Tanzania",locales:["sw-TZ","en"]},UG:{name:"Uganda",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Uganda (DPA)",locales:["en"]},AO:{name:"Angola",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Angola",locales:["pt-AO"]},BW:{name:"Botswana",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Botswana (DPA)",locales:["en"]},LS:{name:"Lesotho",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Lesotho",locales:["en"]},NA:{name:"Namibia",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Namibia",locales:["en"]},SZ:{name:"Eswatini",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Eswatini",locales:["en"]},ZA:{name:"South Africa",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"South Africa (POPIA)",locales:["en","af-ZA"]},ZM:{name:"Zambia",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Zambia (DPA)",locales:["en"]},ZW:{name:"Zimbabwe",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Zimbabwe (DPA)",locales:["en"]},DZ:{name:"Algeria",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Algeria",locales:["ar-DZ","fr-DZ"]},EG:{name:"Egypt",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Egypt (DPA)",locales:["ar-EG"]},LY:{name:"Libya",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Libya",locales:["ar-LY"]},MA:{name:"Morocco",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Morocco",locales:["ar-MA","fr-MA"]},SD:{name:"Sudan",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Sudan",locales:["ar-SD"]},TN:{name:"Tunisia",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Tunisia (DPA)",locales:["ar-TN","fr-TN"]},CD:{name:"DR Congo",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"DR Congo",locales:["fr-CD"]},CF:{name:"Central African Republic",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Central African Republic",locales:["fr-CF"]},CG:{name:"Republic of Congo",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Republic of Congo",locales:["fr-CG"]},TD:{name:"Chad",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Chad",locales:["fr-TD","ar-TD"]},BY:{name:"Belarus",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Belarus",locales:["be-BY","ru-BY"]},MD:{name:"Moldova",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Moldova",locales:["ro-MD"]},RU:{name:"Russia",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Russia",locales:["ru-RU"]},UA:{name:"Ukraine",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Ukraine",locales:["uk-UA"]},VA:{name:"Holy See",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Holy See",locales:["it-VA"]},AU:{name:"Australia",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Australia (Privacy Act)",locales:["en"]},FJ:{name:"Fiji",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Fiji",locales:["en"]},FM:{name:"Micronesia",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Micronesia",locales:["en"]},KI:{name:"Kiribati",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Kiribati",locales:["en"]},MH:{name:"Marshall Islands",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Marshall Islands",locales:["en"]},MP:{name:"Northern Mariana Islands",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Northern Mariana Islands",locales:["en"]},NC:{name:"New Caledonia",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"New Caledonia",locales:["fr-NC"]},NF:{name:"Norfolk Island",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Norfolk Island",locales:["en"]},NR:{name:"Nauru",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Nauru",locales:["en"]},NU:{name:"Niue",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Niue",locales:["en"]},NZ:{name:"New Zealand",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"New Zealand (Privacy Act)",locales:["en"]},PF:{name:"French Polynesia",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"French Polynesia",locales:["fr-PF"]},PG:{name:"Papua New Guinea",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Papua New Guinea",locales:["en"]},PW:{name:"Palau",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Palau",locales:["en"]},SB:{name:"Solomon Islands",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Solomon Islands",locales:["en"]},TO:{name:"Tonga",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Tonga",locales:["en"]},TV:{name:"Tuvalu",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Tuvalu",locales:["en"]},VU:{name:"Vanuatu",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Vanuatu",locales:["fr-VU","en"]},WS:{name:"Samoa",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Samoa",locales:["en"]},UK:{name:"United Kingdom",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"United Kingdom (UK GDPR + PECR)",locales:["en"]},CH:{name:"Switzerland",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Switzerland (revFADP)",locales:["de-CH","fr-CH","it-CH"]}}},Gt=Object.entries(R.countries).reduce(function(i,[e,t]){return i[e]=t.name,i},{}),St=Object.values(R.countries).reduce(function(i,e){return e.locales.forEach(t=>{i[t]=e.name}),i},{});var Ne={id:0,version:1,defaultLocale:"en",complianceGroup:"general-privacy-consent",gpcMode:"honor",cookies:[{id:"necessary",legalBasis:"mandatory"},{id:"analytics",legalBasis:"consent",listenGpc:!0,expiry:365},{id:"marketing",legalBasis:"consent",listenGpc:!0,expiry:365},{id:"functional",legalBasis:"consent",expiry:365}],mainBanner:{position:"bottom",heading:"We value your privacy",htmlText:'We use cookies and similar technologies to enhance your browsing experience, personalise content and ads, and analyse our traffic. By clicking <strong>Accept All</strong>, you consent to our use of these technologies. You can change your preferences at any time. See our <a href="/privacy-policy">Privacy Policy</a> for more information.',buttons:[{text:"Accept All",cookies:"*",style:"primary",action:"custom"},{text:"Reject Optional",cookies:"!",style:"secondary",action:"custom"},{text:"Manage Preferences",style:"text",action:"manage"}]},gpcBanner:{position:"bottom",heading:"Your Privacy Preference Has Been Recognized",htmlText:"Your browser sent a Global Privacy Control (GPC) signal indicating you prefer to limit data collection. We have applied your preference. You can review or update your choices at any time.",buttons:[{text:"Review Preferences",style:"primary",action:"manage"},{text:"Continue",style:"secondary",action:"submit"}]},preferenceModal:{position:"right",heading:"Cookie Preferences",subheading:"Choose which types of cookies you allow us to use. You can change these settings at any time.",htmlText:"We use different types of cookies to optimise your experience on our website. Click on the different category headings to find out more and change your default settings. Note that blocking some types of cookies may impact your experience of the site and the services we are able to offer.",showClose:!0,overlayOpacity:50,categories:[{id:"cat-necessary",heading:"Strictly Necessary",htmlText:"These cookies are necessary for the website to function and cannot be switched off. They are usually only set in response to actions you have taken such as setting your privacy preferences, logging in, or filling in forms.",mandatory:!0,cookies:["necessary"]},{id:"cat-functional",heading:"Functional",htmlText:"These cookies enable enhanced functionality and personalisation. They may be set by us or by third parties whose services we have added to our pages.",cookies:["functional"]},{id:"cat-analytics",heading:"Analytics",htmlText:"These cookies help us understand how our website is being used, or how effective our marketing campaigns are. All information these cookies collect is aggregated and therefore anonymous.",cookies:["analytics"]},{id:"cat-marketing",heading:"Marketing",htmlText:"These cookies are used by our advertising partners to build a profile of your interests and show you relevant advertisements on other sites. They work by uniquely identifying your browser and device. If you do not allow these cookies, you will not experience targeted advertising.",cookies:["marketing"]}],buttons:[{text:"Accept All",cookies:"*",style:"primary",action:"custom"},{text:"Reject Optional",cookies:"!",style:"secondary",action:"custom"},{text:"Save My Choices",style:"text",action:"submit"}]}},ye=Ne;var Oe={id:0,version:1,defaultLocale:"en",complianceGroup:"notice-only",gpcMode:"ignore",cookies:[{id:"necessary",legalBasis:"mandatory"},{id:"analytics",legalBasis:"legitimate_interest",expiry:365},{id:"functional",legalBasis:"legitimate_interest",expiry:365}],mainBanner:{position:"bottom",heading:"Cookie Notice",htmlText:'This website uses cookies and similar technologies to ensure it works correctly and to improve your experience. By continuing to browse this site, you acknowledge the use of these technologies. For more information, please read our <a href="/privacy-policy">Privacy Policy</a> and <a href="/cookie-policy">Cookie Policy</a>.',buttons:[{text:"Got It",style:"primary",action:"submit"},{text:"Learn More",style:"text",action:"manage"}]},gpcBanner:{position:"bottom",heading:"Cookie Notice",htmlText:'This site uses cookies necessary for its operation and for improving your experience. No consent is required in this jurisdiction. See our <a href="/privacy-policy">Privacy Policy</a> for details.',buttons:[{text:"Acknowledge",style:"primary",action:"submit"}]},preferenceModal:{position:"right",heading:"Cookie Information",subheading:"This notice explains how and why we use cookies on this website.",htmlText:"This website uses cookies to function correctly and to improve your experience. In the jurisdiction where you are located, explicit consent for cookies may not be required. However, we believe in transparency and provide this information so you understand how we use cookies. Some cookies are strictly necessary for the site to work.",showClose:!0,overlayOpacity:40,categories:[{id:"cat-necessary",heading:"Strictly Necessary",htmlText:"These cookies are required for the website to function correctly. Without these cookies, some parts of the website will not work as intended. They cannot be disabled.",mandatory:!0,cookies:["necessary"]},{id:"cat-functional",heading:"Functional and Analytics",htmlText:"These cookies help us deliver a better experience by remembering your preferences and measuring how the site is used. They are used under a legitimate interest basis and do not require your consent in this jurisdiction.",type:"legitimate_interest",legitimateInterest:{enabled:!0,description:"We use functional and analytics cookies under a legitimate interest basis to improve our service and to understand how users interact with our website. This data is anonymised and does not identify you personally."},cookies:["functional","analytics"]}],buttons:[{text:"Acknowledge",style:"primary",action:"submit"},{text:"Close",style:"text",action:"close"}]}},fe=Oe;var He={id:0,version:1,defaultLocale:"en",complianceGroup:"opt-in",gpcMode:"honor",cookies:[{id:"necessary",legalBasis:"mandatory"},{id:"analytics",legalBasis:"consent",listenGpc:!0,expiry:395},{id:"marketing",legalBasis:"consent",listenGpc:!0,expiry:395},{id:"functional",legalBasis:"consent",expiry:395}],mainBanner:{position:"bottom",heading:"We use cookies",htmlText:'We and our partners use cookies and similar technologies to provide you with a better browsing experience, to analyse site traffic, and to personalise content and advertisements. Please give your consent to our use of cookies as described in our <a href="/privacy-policy">Privacy Policy</a>. You may withdraw your consent at any time.',buttons:[{text:"Accept All",cookies:"*",style:"primary",action:"custom"},{text:"Reject All",cookies:"!",style:"secondary",action:"custom"},{text:"Manage Preferences",style:"text",action:"manage"}]},gpcBanner:{position:"bottom",heading:"Your Privacy Preference Has Been Detected",htmlText:"Your browser or device has sent a Global Privacy Control (GPC) signal indicating you prefer to limit the sale or sharing of your personal data. As required under applicable law, we have applied your preference. You can review or update your choices at any time.",buttons:[{text:"Manage Preferences",style:"primary",action:"manage"},{text:"Continue",style:"secondary",action:"submit"}]},preferenceModal:{position:"right",heading:"Privacy Preferences",subheading:"Manage your cookie preferences below. Strictly necessary cookies cannot be disabled.",htmlText:"We use different types of cookies to optimise your experience on our website. You can choose which categories to allow. Your choices are saved for the duration indicated for each category and can be changed at any time.",showClose:!0,overlayOpacity:50,categories:[{id:"cat-necessary",heading:"Strictly Necessary",htmlText:"These cookies are essential for the website to function and cannot be disabled. They are set in response to actions you take such as logging in, filling in forms, or setting privacy preferences. They do not store personally identifiable information.",mandatory:!0,cookies:["necessary"]},{id:"cat-functional",heading:"Functional",htmlText:"These cookies enable enhanced functionality and personalisation, such as remembering your language preference or region. They may be set by us or by third-party providers whose services we have added to our pages.",cookies:["functional"]},{id:"cat-analytics",heading:"Analytics",htmlText:"These cookies help us understand how visitors interact with our site by collecting and reporting information anonymously. This data helps us improve our content and navigation. No personally identifiable information is collected.",cookies:["analytics"]},{id:"cat-marketing",heading:"Marketing",htmlText:"These cookies track your online activity to help advertisers deliver more relevant advertising to you, or to limit how many times you see an advertisement. They may be shared with other organisations or advertisers. Declining these cookies will not reduce the number of advertisements you see.",cookies:["marketing"]}],buttons:[{text:"Accept All",cookies:"*",style:"primary",action:"custom"},{text:"Reject All",cookies:"!",style:"secondary",action:"custom"},{text:"Save My Choices",style:"text",action:"submit"}]}},ge=He;var ze={id:0,version:1,defaultLocale:"en",complianceGroup:"opt-in-brazil",gpcMode:"honor",cookies:[{id:"necessary",legalBasis:"mandatory"},{id:"analytics",legalBasis:"consent",listenGpc:!0,expiry:365},{id:"marketing",legalBasis:"consent",listenGpc:!0,expiry:365},{id:"functional",legalBasis:"consent",expiry:365}],mainBanner:{position:"bottom",heading:"Your Privacy Matters \u2014 LGPD Notice",htmlText:'In accordance with the Lei Geral de Prote\xE7\xE3o de Dados (LGPD \u2014 Brazilian General Data Protection Law), we request your consent before collecting and processing personal data beyond what is strictly necessary. As a data subject (titular), you have the right to access, correct, delete, and withdraw consent at any time. Read our <a href="/privacy-policy">Privacy Policy</a> for full details.',buttons:[{text:"Accept All",cookies:"*",style:"primary",action:"custom"},{text:"Reject All",cookies:"!",style:"secondary",action:"custom"},{text:"Manage Preferences",style:"text",action:"manage"}]},gpcBanner:{position:"bottom",heading:"Your Privacy Signal Was Detected",htmlText:"A Global Privacy Control (GPC) signal was detected from your browser. We have applied your preference in accordance with applicable data protection law. You may manage your choices at any time.",buttons:[{text:"Manage Preferences",style:"primary",action:"manage"},{text:"Continue",style:"secondary",action:"submit"}]},preferenceModal:{position:"right",heading:"Privacy Preferences \u2014 LGPD",subheading:"Under the LGPD, you have the right to give, manage, or withdraw consent for each purpose of personal data processing. You may update your choices at any time.",htmlText:"As a titular (data subject) under the Lei Geral de Prote\xE7\xE3o de Dados (LGPD), you have the right to: confirm the existence of processing, access your data, correct incomplete or inaccurate data, anonymise or delete unnecessary data, and withdraw consent. Use the controls below to set your preferences.",showClose:!0,overlayOpacity:50,categories:[{id:"cat-necessary",heading:"Strictly Necessary",htmlText:"Processing under this purpose is indispensable for the operation of our services. This is based on the legal bases of contract performance and legal obligation under Article 7 of the LGPD.",mandatory:!0,cookies:["necessary"]},{id:"cat-functional",heading:"Functional",htmlText:"These cookies allow us to remember your preferences and provide a personalised experience. Your consent enables this functionality.",cookies:["functional"]},{id:"cat-analytics",heading:"Analytics",htmlText:"With your consent, we collect statistical data about your use of our services to improve our offering. Data is anonymised where possible and is not used to identify you.",cookies:["analytics"]},{id:"cat-marketing",heading:"Marketing",htmlText:"With your consent, we and our partners process your personal data to deliver personalised advertising content. You may withdraw this consent at any time, and withdrawal will not affect the lawfulness of prior processing.",cookies:["marketing"]}],buttons:[{text:"Accept All",cookies:"*",style:"primary",action:"custom"},{text:"Reject All",cookies:"!",style:"secondary",action:"custom"},{text:"Save My Choices",style:"text",action:"submit"}]}},he=ze;var Ve={id:0,version:1,defaultLocale:"en",complianceGroup:"opt-in-china",gpcMode:"ignore",cookies:[{id:"necessary",legalBasis:"mandatory"},{id:"analytics",legalBasis:"consent",expiry:365},{id:"marketing",legalBasis:"consent",expiry:365},{id:"functional",legalBasis:"consent",expiry:365}],mainBanner:{position:"bottom",heading:"Personal Information Processing Notice",htmlText:`In accordance with the Personal Information Protection Law of the People's Republic of China (PIPL), we hereby inform you of the types of personal information we collect, the purposes for which it is used, and your rights as a personal information subject. Your consent is required before we may process your personal information beyond what is strictly necessary. Please read our <a href="/privacy-policy">Privacy Policy</a> carefully.`,buttons:[{text:"Agree to All",cookies:"*",style:"primary",action:"custom"},{text:"Reject Non-Necessary",cookies:"!",style:"secondary",action:"custom"},{text:"Manage Preferences",style:"text",action:"manage"}]},gpcBanner:{position:"bottom",heading:"Privacy Notice",htmlText:"We have detected a privacy preference signal. We have applied your preferences for the processing of your personal information. You may review and update your choices at any time.",buttons:[{text:"Manage Preferences",style:"primary",action:"manage"},{text:"Continue",style:"secondary",action:"submit"}]},preferenceModal:{position:"right",heading:"Personal Information Processing Preferences",subheading:"Under the PIPL, you have the right to know, decide, access, copy, correct, delete, and withdraw consent for the processing of your personal information. Please select your preferences.",htmlText:"We process personal information lawfully, legitimately, and necessarily in accordance with the PIPL. Your personal information is stored and processed within the territory of China. Cross-border transfer of your data, if any, is handled in accordance with Chapter III of the PIPL. You may withdraw your consent at any time by updating these settings.",showClose:!0,overlayOpacity:50,categories:[{id:"cat-necessary",heading:"Strictly Necessary",htmlText:"Processing under this purpose is required for the normal functioning of our services as requested by you. This is processed under the legitimate basis of contract performance and legal obligation under the PIPL.",mandatory:!0,cookies:["necessary"]},{id:"cat-functional",heading:"Functional",htmlText:"These cookies allow us to remember your preferences and settings to provide you with an enhanced experience. Your consent allows us to personalise our service for you.",cookies:["functional"]},{id:"cat-analytics",heading:"Statistical Analysis",htmlText:"With your consent, we collect usage data to analyse how our services are used, enabling us to improve performance and user experience. Data is anonymised where possible.",cookies:["analytics"]},{id:"cat-marketing",heading:"Marketing and Commercial Purposes",htmlText:"With your consent, we use your personal information to deliver personalised commercial information and advertisements. You may withdraw this consent at any time.",cookies:["marketing"]}],buttons:[{text:"Agree and Continue",cookies:"*",style:"primary",action:"custom"},{text:"Only Necessary",cookies:"!",style:"secondary",action:"custom"},{text:"Save My Choices",style:"text",action:"submit"}]}},ve=Ve;var Ue={id:0,version:1,defaultLocale:"en",complianceGroup:"opt-in-dpdpa",gpcMode:"honor",cookies:[{id:"necessary",legalBasis:"mandatory"},{id:"analytics",legalBasis:"consent",listenGpc:!0,expiry:365},{id:"marketing",legalBasis:"consent",listenGpc:!0,expiry:365},{id:"functional",legalBasis:"consent",expiry:365}],mainBanner:{position:"bottom",heading:"We Need Your Consent",htmlText:'In accordance with the Digital Personal Data Protection Act, 2023 (DPDPA) of India, we require your explicit consent before collecting and processing your personal data. You have the right to withdraw consent at any time and to access, correct, or erase your data. Please review our <a href="/privacy-policy">Privacy Policy</a> for details.',buttons:[{text:"Accept All",cookies:"*",style:"primary",action:"custom"},{text:"Reject All",cookies:"!",style:"secondary",action:"custom"},{text:"Manage Preferences",style:"text",action:"manage"}]},gpcBanner:{position:"bottom",heading:"Privacy Preference Detected",htmlText:"A privacy preference signal was detected from your browser. We have applied your opt-out preference in accordance with applicable privacy regulations. You may review and update your consent choices at any time.",buttons:[{text:"Manage Preferences",style:"primary",action:"manage"},{text:"Continue",style:"secondary",action:"submit"}]},preferenceModal:{position:"right",heading:"Consent Preferences \u2014 DPDPA",subheading:"Under the Digital Personal Data Protection Act (DPDPA), you have the right to give, withdraw, or manage your consent for each purpose of data processing. Please select your preferences below.",htmlText:"As a Data Principal under the DPDPA, you have the right to access, correct, erase, and withdraw consent for your personal data. This notice is provided by the Data Fiduciary as required under Section 5 of the DPDPA. You can update your preferences at any time.",showClose:!0,overlayOpacity:50,categories:[{id:"cat-necessary",heading:"Necessary Processing",htmlText:"Processing your personal data under this purpose is necessary for the delivery of the service you have requested. This processing is exempt from consent requirements under Section 7(a) of the DPDPA.",mandatory:!0,cookies:["necessary"]},{id:"cat-functional",heading:"Functional Enhancements",htmlText:"We process limited personal data to remember your preferences and settings, improving your experience on return visits. Your consent enables this personalisation.",cookies:["functional"]},{id:"cat-analytics",heading:"Analytics and Improvement",htmlText:"With your consent, we collect data about how you use our services in order to improve them. The data is anonymised where possible and is not shared with third parties for commercial purposes.",cookies:["analytics"]},{id:"cat-marketing",heading:"Marketing and Personalised Advertising",htmlText:"With your consent, we and our advertising partners process your personal data to deliver advertisements tailored to your interests. You may withdraw this consent at any time without affecting the lawfulness of prior processing.",cookies:["marketing"]}],buttons:[{text:"Give Consent to All",cookies:"*",style:"primary",action:"custom"},{text:"Withdraw All Consent",cookies:"!",style:"secondary",action:"custom"},{text:"Save My Choices",style:"text",action:"submit"}]}},be=Ue;var je={id:0,version:1,defaultLocale:"en",complianceGroup:"opt-out",gpcMode:"honor",cookies:[{id:"necessary",legalBasis:"mandatory"},{id:"analytics",legalBasis:"consent",listenGpc:!0,expiry:365},{id:"marketing",legalBasis:"consent",listenGpc:!0,expiry:365,cpraCategory:"sale"},{id:"functional",legalBasis:"consent",expiry:365}],mainBanner:{position:"bottom",heading:"Your Privacy Choices",htmlText:'We use cookies and similar technologies on this site. Some help us operate the site, while others are used for analytics and advertising purposes. You may opt out of the sale or sharing of your personal information at any time. See our <a href="/privacy-policy">Privacy Policy</a> for more information.',buttons:[{text:"Accept All",cookies:"*",style:"primary",action:"custom"},{text:"Do Not Sell or Share My Personal Information",cookies:"!",style:"secondary",action:"custom"},{text:"Manage Preferences",style:"text",action:"manage"}]},gpcBanner:{position:"bottom",heading:"Your Opt-Out Preference Has Been Applied",htmlText:"We detected a Global Privacy Control (GPC) signal from your browser. In compliance with applicable privacy law, we have opted you out of the sale and sharing of your personal information. You can review or update your preferences below.",buttons:[{text:"Manage Preferences",style:"primary",action:"manage"},{text:"Continue",style:"secondary",action:"submit"}]},preferenceModal:{position:"right",heading:"Privacy Preferences",subheading:"You have the right to opt out of the sale and sharing of your personal information. Toggle the categories below to set your preferences.",htmlText:"We use different types of cookies and tracking technologies. Strictly necessary cookies are always active. For all other categories, you can choose to opt out at any time.",showClose:!0,overlayOpacity:50,categories:[{id:"cat-necessary",heading:"Strictly Necessary",htmlText:"These cookies are required for the website to operate. They include cookies that enable you to log in, use shopping carts, and access secure areas of the website.",mandatory:!0,cookies:["necessary"]},{id:"cat-functional",heading:"Functional",htmlText:"These cookies allow the website to remember choices you make (such as your user name, language, or the region you are in) and provide enhanced, more personal features.",cookies:["functional"]},{id:"cat-analytics",heading:"Analytics",htmlText:"These cookies collect information about how visitors use our website, such as which pages they visit most often. This data helps us improve the site and your experience.",cookies:["analytics"]},{id:"cat-marketing",heading:"Sale / Sharing of Personal Information",htmlText:'These cookies and trackers are used to deliver targeted advertising to you, and may constitute a "sale" or "sharing" of personal information under the California Consumer Privacy Act (CCPA). You have the right to opt out of this activity.',cookies:["marketing"]}],buttons:[{text:"Accept All",cookies:"*",style:"primary",action:"custom"},{text:"Opt Out of Sale/Sharing",cookies:"!",style:"secondary",action:"custom"},{text:"Save My Choices",style:"text",action:"submit"}]}},Ce=je;var Ke={id:0,version:1,defaultLocale:"en",complianceGroup:"opt-out-strict",gpcMode:"strict",cookies:[{id:"necessary",legalBasis:"mandatory"},{id:"analytics",legalBasis:"consent",listenGpc:!0,expiry:365},{id:"marketing",legalBasis:"consent",listenGpc:!0,expiry:365,cpraCategory:"sale"},{id:"sensitive",legalBasis:"consent",listenGpc:!0,expiry:365,cpraCategory:"sensitive"},{id:"functional",legalBasis:"consent",expiry:365}],mainBanner:{position:"bottom",heading:"Your Privacy Rights (CPRA)",htmlText:'Under the California Privacy Rights Act (CPRA), you have the right to opt out of the sale, sharing, and use of your sensitive personal information. We also honor Global Privacy Control (GPC) signals automatically. See our <a href="/privacy-policy">Privacy Policy</a> and <a href="/do-not-sell">Do Not Sell or Share My Personal Information</a> page.',buttons:[{text:"Accept All",cookies:"*",style:"primary",action:"custom"},{text:"Opt Out of Sale, Sharing & Sensitive Use",cookies:"!",style:"secondary",action:"custom"},{text:"Manage Preferences",style:"text",action:"manage"}]},gpcBanner:{position:"bottom",heading:"GPC Signal Detected \u2014 Opt-Out Applied",htmlText:"A Global Privacy Control (GPC) opt-out signal was detected. As required by CPRA, we have automatically applied your opt-out of the sale and sharing of your personal information and the use of your sensitive personal information. Your preference has been saved.",buttons:[{text:"Manage Preferences",style:"primary",action:"manage"},{text:"Acknowledge",style:"secondary",action:"submit"}]},preferenceModal:{position:"right",heading:"Privacy Preferences (CPRA)",subheading:"Manage your privacy choices. You may opt out of the sale, sharing, and sensitive use of your personal information at any time.",htmlText:"The California Privacy Rights Act (CPRA) provides you with additional rights over your personal information. GPC signals are honored automatically. You can update your choices below.",showClose:!0,overlayOpacity:50,categories:[{id:"cat-necessary",heading:"Strictly Necessary",htmlText:"These cookies are essential for the website to function and are always active. They are exempt from CPRA opt-out requirements.",mandatory:!0,cookies:["necessary"]},{id:"cat-functional",heading:"Functional",htmlText:"These cookies personalise your experience (e.g. language, region preferences). They do not involve the sale or sharing of personal information.",cookies:["functional"]},{id:"cat-analytics",heading:"Analytics",htmlText:"These cookies measure site performance and visitor behaviour. Data is used internally to improve our services. Opting out stops this collection.",cookies:["analytics"]},{id:"cat-marketing",heading:"Sale and Sharing of Personal Information",htmlText:'These technologies may constitute a "sale" or "sharing" of your personal information under CPRA, including cross-context behavioural advertising. You have the right to opt out.',cookies:["marketing"]},{id:"cat-sensitive",heading:"Use of Sensitive Personal Information",htmlText:"Some technologies may use sensitive personal information as defined by CPRA (e.g. precise geolocation, health data). You have the right to limit such use.",cookies:["sensitive"]}],buttons:[{text:"Accept All",cookies:"*",style:"primary",action:"custom"},{text:"Opt Out of All Non-Necessary",cookies:"!",style:"secondary",action:"custom"},{text:"Save My Choices",style:"text",action:"submit"}]}},we=Ke;var $e={"general-privacy-consent":ye,"notice-only":fe,"opt-in":ge,"opt-in-brazil":he,"opt-in-china":ve,"opt-in-dpdpa":be,"opt-out":Ce,"opt-out-strict":we},ke=new Map;function Pe(i,e){ke.set(String(i),e)}var W={id:0,version:1,defaultLocale:"en",gpcMode:"honor",cookies:[{id:"functionality_storage",mandatory:!0},{id:"analytics_storage",listenGpc:!0,expiry:365},{id:"ad_storage",listenGpc:!0,expiry:365},{id:"ad_user_data",listenGpc:!0,expiry:365},{id:"ad_personalization",listenGpc:!0,expiry:365}],mainBanner:{position:"bottom",heading:"We value your privacy",htmlText:"We use cookies to enhance your browsing experience, serve personalised ads or content, and analyse our traffic. By clicking <strong>Accept All</strong> you consent to our use of cookies. You may change your preferences at any time.",buttons:[{text:"Accept All",cookies:"*",style:"primary",action:"custom"},{text:"Reject Optional",cookies:"!",style:"primary",action:"custom"},{text:"Customize",style:"text",action:"manage"}]},gpcBanner:{position:"bottom",heading:"Your Privacy Preference Has Been Recognized",htmlText:"Your browser has sent a Global Privacy Control (GPC) signal. We've applied your privacy preference where required by applicable law. You can review or update your cookie choices at any time.",buttons:[{text:"Review Preferences",style:"primary",action:"manage"},{text:"Continue",style:"secondary",action:"submit"}]},preferenceModal:{heading:"Cookie Preferences",subheading:"Choose which cookies you allow us to use.",htmlText:"We use different types of cookies to optimise your experience. You can choose to enable or disable each category below. Necessary cookies cannot be disabled as they are required for core site functionality.",showClose:!0,overlayOpacity:50,categories:[{id:"cat-necessary",heading:"Strictly Necessary",htmlText:"These cookies are essential for the website to function correctly. They include authentication, security, and accessibility features. They cannot be disabled.",mandatory:!0,cookies:["functionality_storage"]},{id:"cat-analytics",heading:"Analytics",htmlText:"These cookies help us understand how visitors interact with our website by collecting and reporting information anonymously. (e.g. Google Analytics)",cookies:["analytics_storage"]},{id:"cat-advertising",heading:"Advertising",htmlText:"These cookies are used to deliver advertisements more relevant to you and your interests. (e.g. Google Ads, Meta Pixel)",cookies:["ad_storage","ad_user_data","ad_personalization"]}],buttons:[{text:"Accept All",cookies:"*",style:"primary",action:"custom"},{text:"Reject Optional",cookies:"!",style:"primary",action:"custom"},{text:"Save Selection",style:"secondary",action:"submit"}]}};function Y(i){let e;return i.gpcMode===!0?e="honor":i.gpcMode===!1?e="ignore":i.gpcMode&&(e=i.gpcMode),{id:0,profileUuid:i.id,version:i.version,defaultLocale:i.defaultLocale,locales:i.locales,cookies:i.cookies,mainBanner:i.mainBanner,preferenceModal:i.preferenceModal,...i.gpcBanner?{gpcBanner:i.gpcBanner}:{},...e?{gpcMode:e}:{},...i.darkMode!==void 0?{darkMode:i.darkMode}:{},...i.complianceGroup?{complianceGroup:i.complianceGroup}:{},...i.complianceConfig?{complianceConfig:i.complianceConfig}:{}}}var xe="__consenti_resolved_",Ye=3600*1e3;function qe(i,e,t){if(!t)return null;let n=`${xe}${i}_${e}`;try{let o=sessionStorage.getItem(n);if(!o)return null;let a=JSON.parse(o);return Date.now()>a.expiresAt?(sessionStorage.removeItem(n),null):a}catch{return null}}function Fe(i,e,t,n){if(!t)return;let o=`${xe}${i}_${e}`;try{sessionStorage.setItem(o,JSON.stringify({...n,expiresAt:Date.now()+Ye}))}catch{}}function q(i,e){if(e)return!0;let t=i.allowedOrigins;if(!t||t.length===0)return!0;let n=window.location.origin;return t.some(o=>o===n||o==="*")}function Ge(i){return $e[i]??null}function Se(i,e){let t=e.core.usePrebuiltProfiles??"all";return t==="all"?!0:t.includes(i)}function We(i,e){let t=e.replace(/_/g,"-").split("-"),n=t.length>=2?t[t.length-1]?.toUpperCase():void 0,o=n&&/^[A-Z]{2}$/.test(n)?n:void 0;if(o){let r=R.countries[o];if(r?.default)return r.default}let a=i.split("/");if(a[0]==="Europe")return"opt-in";if(a[0]==="America"){let r=a[1]??"";if(["Los_Angeles","Denver","Chicago","New_York","Phoenix","Anchorage","Honolulu"].includes(r))return"opt-out"}return"opt-in"}function J(i){let e=i.core.locale;return!e||e==="auto"?navigator.language:e}function Ae(i){return i.api?.tenantId??i.core.tenantId??"default"}function Je(i){return me.includes(i)}async function _(i,e){try{return await U(i,{},e)}catch{return null}}async function S(i){let{tz:e,lang:t}=$(),n=We(e,t);if(Se(n,i)){let o=Ge(n);if(o)return o}return W}async function F(i,e){if(Se(i,e)){let t=Ge(i);if(t)return t}return W}async function Te(i){let e=J(i),t=Ae(i),n=i.core.cacheResolvedProfiles!==!1,o=i.api?.baseUrl??window.location.origin,a=i.api?.trustDomain??!1,r=qe(t,e,n);if(r){let m=await _(r.filePath,i.api?.authToken);if(m)return q(m,a)?Y(m):(b.error(`Domain ${window.location.origin} is not in allowedOrigins for this profile. Falling back to pre-built profile.`),S(i))}let{tz:s,lang:c}=$(),u=`${o}/consenti/api/v1/resolve-profile?tz=${encodeURIComponent(s)}&lang=${encodeURIComponent(c)}&locale=${encodeURIComponent(e)}&tenantId=${encodeURIComponent(t)}`,d,f,y;try{let m=await U(u,{},i.api?.authToken);m.warning==="locale_not_found"&&b.info("Locale not found; using default locale."),d=m.filePath,f=m.complianceGroup,y=m.version,Fe(t,e,n,{filePath:d,version:y,complianceGroup:f,tenantId:t,locale:e})}catch{return b.warn("resolve-profile failed; falling back to pre-built profile."),S(i)}let p=await _(d,i.api?.authToken)??await _(`${o}/consenti/api/v1/profiles/${t}/${f}/default.json`,i.api?.authToken);return p?q(p,a)?Y(p):(b.error(`Domain ${window.location.origin} is not in allowedOrigins for this profile. Falling back to pre-built profile.`),S(i)):(b.warn("Profile fetch failed; falling back to pre-built profile."),S(i))}async function Ze(i,e){let t=J(e),n=Ae(e),o=e.api?.baseUrl??window.location.origin,a=e.api?.trustDomain??!1,r=e.api?.complianceGroup??i,s=await _(`${o}/consenti/api/v1/profiles/${n}/${r}/${encodeURIComponent(t)}.json`,e.api?.authToken)??await _(`${o}/consenti/api/v1/profiles/${n}/${r}/default.json`,e.api?.authToken);return s?q(s,a)?Y(s):(b.error(`Domain ${window.location.origin} is not in allowedOrigins for this profile. Falling back to pre-built profile.`),F(r,e)):(b.warn(`Could not fetch profile for ${r}; falling back to pre-built.`),F(r,e))}async function Qe(i,e){e.api?.enabled&&b.warn("Local profile used instead of server profile. Check compliance.type config.");let t=J(e),n=Array.from(ke.values()).find(o=>o.complianceGroup===i);if(n){let o=ue(n.translations??{},t,n.defaultLocale);return{id:0,version:1,defaultLocale:n.defaultLocale,locales:Object.keys(n.translations??{}),cookies:n.cookies??[],mainBanner:o.mainBanner,...o.gpcBanner?{gpcBanner:o.gpcBanner}:{},preferenceModal:o.preferenceModal,...n.darkMode!==void 0?{darkMode:n.darkMode}:{},...n.complianceGroup?{complianceGroup:n.complianceGroup}:{}}}return e.api?.enabled?Te(e):S(e)}async function _e(i){let e=i.compliance?.type??"auto",t=i.api?.enabled??!1;try{return e==="auto"?t?await Te(i):await S(i):Je(e)?t?await Ze(e,i):await F(e,i):await Qe(e,i)}catch{return W}}function M(){let i=oe();return i?"globalPrivacyControl"in i&&i.globalPrivacyControl===!0:!1}function Me(i,e,t){if(!t||!M())return{...e};let n={...e};for(let o of i)o.mandatory||o.listenGpc&&(n[o.id]=o.type==="legitimate_interest"?"objected":"denied");for(let o of i)o.mandatory&&(n[o.id]="granted");return n}function I(i,e){let t=document.createElement("button");return t.type="button",t.className=`consenti-btn consenti-btn--${i.style}`,t.textContent=i.text,t.addEventListener("click",()=>{switch(i.action){case"custom":{let n=i.cookies;n==="*"?e.onGrantAll():n==="!"?e.onDenyAll():Array.isArray(n)&&n.length>0&&e.onGrantSpecific(n);break}case"submit":e.onSubmit();break;case"manage":e.onManage();break;case"close":e.onClose();break}}),t}function B(i,e){let t=document.createElement("div");return t.className="consenti-overlay",t.style.opacity=String(i/100),t.setAttribute("aria-hidden","true"),e&&t.addEventListener("click",e),t}var N=class{constructor(){this.el=null;this.overlayEl=null}build(e,t,n,o,a,r,s=!1){let c=document.createElement("div");c.id="consenti-banner",c.className=`consenti-banner consenti-banner--${e.position}`,c.setAttribute("role","region"),c.setAttribute("aria-label","Cookie consent"),c.setAttribute("aria-live","polite");let u=document.createElement("div");u.className="consenti-banner__text-container";let d=document.createElement("div");if(d.className="consenti-banner__links",e.heading){let h=e.headingTag??"h2",C=document.createElement(h);C.id="consenti-banner-heading",C.className="consenti-banner__heading",C.textContent=e.heading,u.appendChild(C)}let f=document.createElement("div");if(f.className="consenti-banner__text",f.innerHTML=e.htmlText,n){let h=document.createElement("a");h.href=n,h.className="consenti-banner__link consenti-banner__link--privacy consenti-btn consenti-btn--text",h.textContent="Privacy Policy",h.setAttribute("target","_blank"),h.setAttribute("rel","noopener noreferrer"),d.appendChild(h)}u.appendChild(f);let y=e.buttons.filter(h=>h.action==="link");if(y.length>0)for(let h of y){if(!h.url)continue;let C=document.createElement("a");C.href=h.url,C.className=`consenti-banner__link consenti-btn consenti-btn--${h.style??"text"}`,C.textContent=h.text,C.setAttribute("target","_blank"),C.setAttribute("rel","noopener noreferrer"),d.appendChild(C)}(y.length>0||n)&&u.appendChild(d),c.appendChild(u);let p=e.buttons.filter(h=>h.action!=="link");if(p.length>0){let h=document.createElement("div");h.className="consenti-banner__buttons";for(let C of p)h.appendChild(I(C,t));c.appendChild(h)}let m=e.showClose,k=e.showLocaleSwitcher&&o&&o.length>1;if(m||k){let h=document.createElement("div");if(h.className="consenti-banner__controls",k&&o&&r&&h.appendChild(Xe(o,a,r)),m){let C=document.createElement("button");C.type="button",C.className="consenti-banner__close consenti-btn consenti-btn--close",C.setAttribute("aria-label","Close cookie banner"),C.textContent="\xD7",C.addEventListener("click",t.onClose),h.appendChild(C)}c.appendChild(h)}e.overlayOpacity&&e.overlayOpacity>0&&(this.overlayEl=B(e.overlayOpacity));let w=document.createElement("a");return w.href="https://consenti.dev",w.className="consenti-banner__powered-by",w.textContent="Powered by Consenti",w.setAttribute("target","_blank"),w.setAttribute("rel","noopener noreferrer"),s&&w.classList.add("consenti-d-none"),c.appendChild(w),this.el=c,c}getOverlay(){return this.overlayEl}show(){this.el&&(this.el.style.display=""),this.overlayEl&&(this.overlayEl.style.display="")}hide(){this.el&&(this.el.style.display="none"),this.overlayEl&&(this.overlayEl.style.display="none")}remove(){this.el?.remove(),this.overlayEl?.remove(),this.el=null,this.overlayEl=null}};function Xe(i,e,t){let n=document.createElement("div");n.className="consenti-locale-switcher";let o=document.createElement("button");o.type="button",o.className="consenti-locale-switcher__btn consenti-btn consenti-btn--close",o.setAttribute("aria-label","Switch language"),o.setAttribute("aria-haspopup","listbox"),o.textContent="\u{1F310}";let a=document.createElement("ul");a.className="consenti-locale-switcher__list",a.setAttribute("role","listbox"),a.setAttribute("aria-label","Select language"),a.hidden=!0;for(let r of i){let s=document.createElement("li");s.setAttribute("role","option"),s.setAttribute("aria-selected",String(r===e));let c=document.createElement("button");c.type="button",c.className=`consenti-locale-switcher__option${r===e?" consenti-locale-switcher__option--active":""}`,c.textContent=r,c.addEventListener("click",u=>{u.stopPropagation(),a.hidden=!0,r!==e&&t(r)}),s.appendChild(c),a.appendChild(s)}return o.addEventListener("click",r=>{r.stopPropagation(),a.hidden=!a.hidden}),document.addEventListener("click",()=>{a.hidden=!0},{capture:!0,once:!1}),n.appendChild(o),n.appendChild(a),n}var et=["a[href]","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])",'[tabindex]:not([tabindex="-1"])','[contenteditable="true"]'].join(", ");function Ee(i){let e=()=>Array.from(i.querySelectorAll(et)).filter(o=>!o.closest('[aria-hidden="true"]')),t=o=>{if(o.key!=="Tab")return;let a=e();if(a.length===0)return;let r=a[0],s=a[a.length-1];o.shiftKey?(document.activeElement===r||document.activeElement===i)&&(o.preventDefault(),s.focus()):document.activeElement===s&&(o.preventDefault(),r.focus())},n=o=>{o.key==="Escape"&&i.dispatchEvent(new CustomEvent("consenti:closeRequest",{bubbles:!0}))};return document.addEventListener("keydown",t),document.addEventListener("keydown",n),e()[0]?.focus(),()=>{document.removeEventListener("keydown",t),document.removeEventListener("keydown",n)}}var O=class{constructor(){this.el=null;this.triggerEl=null;this.trapCleanup=null;this.toggleMap=new Map;this.receiptCheckbox=null;this.toggleState=new Map;this.passthrough=!1;this.mobileBreakpoint=576;this.savedBodyOverflow=void 0}build(e,t,n,o,a,r,s,c,u=!1){this.mobileBreakpoint=e.mobileFullScreenBreakpoint??576;let d=e.position??"center",f=document.createElement("div");f.id="consenti-modal",f.className=`consenti-modal consenti-modal--${d}`,f.setAttribute("role","dialog"),f.setAttribute("aria-modal","true");let y=e.overlayOpacity??50;if(this.passthrough=y===0,y>0){let g=e.persistent?void 0:()=>n.onClose(),v=B(y,g);v.className="consenti-modal__overlay",f.appendChild(v)}else f.classList.add("consenti-modal--passthrough");let p=document.createElement("div");p.className="consenti-modal__container";let m=document.createElement("div");m.className="consenti-modal__header";let k=document.createElement("div");if(k.className="consenti-modal__body",e.heading){let g=e.headingTag??"h2",v=document.createElement(g);v.id="consenti-modal-heading",v.className="consenti-modal__heading",v.textContent=e.heading,m.appendChild(v),f.setAttribute("aria-labelledby","consenti-modal-heading")}if(e.subheading){let g=document.createElement("p");g.className="consenti-modal__subheading",g.textContent=e.subheading,m.appendChild(g)}let w=e.showClose!==!1,h=e.showLocaleSwitcher&&r&&r.length>1;if(h||w){let g=document.createElement("div");if(g.className="consenti-modal__header-controls",h&&r&&c&&g.appendChild(tt(r,s,c)),w){let v=document.createElement("button");v.type="button",v.className="consenti-modal__close consenti-btn consenti-btn--close",v.setAttribute("aria-label","Close preference modal"),v.textContent="\xD7",v.addEventListener("click",n.onClose),g.appendChild(v)}m.appendChild(g)}if(p.appendChild(m),e.htmlText){let g=document.createElement("div");g.className="consenti-modal__text",g.innerHTML=e.htmlText,k.appendChild(g)}let C=e.buttons.filter(g=>g.action==="link");if(C.length>0){let g=document.createElement("div");g.className="consenti-modal__links";for(let v of C){if(!v.url)continue;let P=document.createElement("a");P.href=v.url,P.className=`consenti-modal__link consenti-btn consenti-btn--${v.style??"text"}`,P.textContent=v.text,P.setAttribute("target","_blank"),P.setAttribute("rel","noopener noreferrer"),g.appendChild(P)}p.appendChild(g)}let z=document.createElement("div");z.className="consenti-modal__categories";for(let g of e.categories){let v=this.buildCategory(g,t);z.appendChild(v)}if(k.appendChild(z),p.appendChild(k),o&&k.appendChild(this.buildReceiptOption()),a){let g=document.createElement("div");g.className="consenti-modal__dpdpa-notice";let v=Le=>Le.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;"),P=a.grievanceEmail.includes("@")&&!a.grievanceEmail.toLowerCase().startsWith("javascript:")?a.grievanceEmail:"";g.innerHTML=[`<strong>Data Fiduciary:</strong> ${v(a.dataFiduciary)}.`,a.purposeDescription?` <strong>Purpose:</strong> ${v(a.purposeDescription)}.`:""," You may withdraw consent at any time or contact our Grievance Officer at",P?` <a href="mailto:${v(P)}">${v(P)}</a>.`:"."].join(""),p.appendChild(g)}let V=document.createElement("div");V.className="consenti-modal__buttons";for(let g of e.buttons.filter(v=>v.action!=="link"))V.appendChild(I(g,n));p.appendChild(V);let G=document.createElement("a");G.href="https://consenti.dev",G.className="consenti-modal__powered-by",G.textContent="Powered by Consenti",G.setAttribute("target","_blank"),G.setAttribute("rel","noopener noreferrer"),u&&G.classList.add("consenti-d-none"),k.appendChild(G),f.appendChild(p),f.addEventListener("consenti:closeRequest",()=>n.onClose()),this.el=f}buildCategory(e,t){let n=e.type==="legitimate_interest",o=e.mandatory===!0,a;o?a=!0:n?a=t[e.cookies[0]??""]!=="objected":a=t[e.cookies[0]??""]==="granted",this.toggleState.set(e.id,a);let r=document.createElement("div");r.className=`consenti-category${o?" consenti-category--mandatory":""}`;let s=document.createElement("div");s.className="consenti-category__header";let c=e.headingTag??"h3",u=document.createElement(c);u.id=`consenti-cat-${e.id}-heading`,u.className="consenti-category__heading",u.textContent=e.heading,s.appendChild(u);let d=document.createElement("button");d.type="button",d.className=`consenti-category__toggle${o?" consenti-category__toggle--mandatory":""}`,d.setAttribute("role","switch"),d.setAttribute("aria-checked",String(a)),d.setAttribute("aria-labelledby",`consenti-cat-${e.id}-heading`),o&&d.setAttribute("aria-disabled","true");let f=document.createElement("span");f.className="consenti-category__toggle-icon consenti-category__toggle-icon--check",f.setAttribute("aria-hidden","true"),f.innerHTML='<svg viewBox="0 0 10 10" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.5 5L4 7.5L8.5 2.5" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>',d.appendChild(f);let y=document.createElement("span");y.className="consenti-category__toggle-icon consenti-category__toggle-icon--cross",y.setAttribute("aria-hidden","true"),y.innerHTML='<svg viewBox="0 0 10 10" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M2 2L8 8M8 2L2 8" stroke="currentColor" stroke-width="2" stroke-linecap="round"/></svg>',d.appendChild(y);let p=document.createElement("span");p.className="consenti-category__toggle-knob",p.setAttribute("aria-hidden","true"),d.appendChild(p),o||d.addEventListener("click",()=>{let w=!(this.toggleState.get(e.id)??!1);this.toggleState.set(e.id,w),d.setAttribute("aria-checked",String(w))}),this.toggleMap.set(e.id,d),s.appendChild(d),r.appendChild(s);let m=document.createElement("div");if(m.className="consenti-category__text",m.innerHTML=e.htmlText,r.appendChild(m),n&&e.legitimateInterest?.description){let k=document.createElement("p");k.className="consenti-category__li-desc",k.textContent=e.legitimateInterest.description,r.appendChild(k)}return r}buildReceiptOption(){let e=document.createElement("div");e.className="consenti-modal__receipt-option";let t=document.createElement("label");t.className="consenti-modal__receipt-label";let n=document.createElement("input");n.type="checkbox",n.className="consenti-modal__receipt-checkbox",n.id="consenti-receipt-checkbox",n.setAttribute("aria-describedby","consenti-receipt-desc"),this.receiptCheckbox=n,t.appendChild(n),t.append(" Get a copy of my consent choices (JSON)"),e.appendChild(t);let o=document.createElement("p");return o.id="consenti-receipt-desc",o.className="consenti-modal__receipt-desc",o.textContent="A JSON file will be downloaded to your device when you save your preferences.",e.appendChild(o),e}open(e){if(!this.el)return;this.triggerEl=e??document.activeElement,this.receiptCheckbox&&(this.receiptCheckbox.checked=!1);let t=this.mobileBreakpoint>0&&window.innerWidth<=this.mobileBreakpoint;t?this.el.classList.add("consenti-modal--fullscreen"):this.el.classList.remove("consenti-modal--fullscreen"),document.body.appendChild(this.el),(!this.passthrough||t)&&(this.savedBodyOverflow=document.body.style.overflow,document.body.style.overflow="hidden"),this.passthrough||(this.trapCleanup=Ee(this.el))}close(){this.trapCleanup?.(),this.trapCleanup=null,this.savedBodyOverflow!==void 0&&(document.body.style.overflow=this.savedBodyOverflow,this.savedBodyOverflow=void 0),this.el?.remove(),this.triggerEl?.focus(),this.triggerEl=null}isOpen(){return this.el?.isConnected===!0}isReceiptRequested(){return this.receiptCheckbox?.checked??!1}getToggleConsent(e){let t={};for(let n of e){let o=n.type==="legitimate_interest",a=n.mandatory===!0,r=this.toggleState.get(n.id)??!1;for(let s of n.cookies)a?t[s]="granted":o?t[s]=r?"granted":"objected":t[s]=r?"granted":"denied"}return t}destroy(){this.trapCleanup?.(),this.savedBodyOverflow!==void 0&&(document.body.style.overflow=this.savedBodyOverflow,this.savedBodyOverflow=void 0),this.el?.remove(),this.el=null,this.toggleMap.clear(),this.toggleState.clear(),this.receiptCheckbox=null}};function tt(i,e,t){let n=document.createElement("div");n.className="consenti-locale-switcher consenti-locale-switcher--modal";let o=document.createElement("button");o.type="button",o.className="consenti-locale-switcher__btn consenti-btn consenti-btn--close",o.setAttribute("aria-label","Switch language"),o.setAttribute("aria-haspopup","listbox"),o.textContent="\u{1F310}";let a=document.createElement("ul");a.className="consenti-locale-switcher__list",a.setAttribute("role","listbox"),a.setAttribute("aria-label","Select language"),a.hidden=!0;for(let r of i){let s=document.createElement("li");s.setAttribute("role","option"),s.setAttribute("aria-selected",String(r===e));let c=document.createElement("button");c.type="button",c.className=`consenti-locale-switcher__option${r===e?" consenti-locale-switcher__option--active":""}`,c.textContent=r,c.addEventListener("click",u=>{u.stopPropagation(),a.hidden=!0,r!==e&&t(r)}),s.appendChild(c),a.appendChild(s)}return o.addEventListener("click",r=>{r.stopPropagation(),a.hidden=!a.hidden}),document.addEventListener("click",()=>{a.hidden=!0},{capture:!0,once:!1}),n.appendChild(o),n.appendChild(a),n}var De="consenti-root",H=class{constructor(){this.root=null;this.styleEl=null}mount(e){if(!l())throw new Error("[Consenti] Renderer.mount() called in SSR context");if(this.root)return this.root;if(e!==void 0){if(typeof e=="string"){let n=document.querySelector(e);if(!n)throw new Error(`[Consenti] rootEl selector "${e}" did not match any element.`);this.root=n}else{if(!document.contains(e))throw new Error("[Consenti] rootEl element is not attached to the document.");this.root=e}return this.root}let t=document.getElementById(De);return t||(t=document.createElement("div"),t.id=De,document.body.appendChild(t)),this.root=t,t}injectStyles(e){if(!l()||this.styleEl)return;let t=document.createElement("style");t.id="consenti-styles",t.textContent=e,document.head.appendChild(t),this.styleEl=t}unmount(){this.root?.remove(),this.styleEl?.remove(),this.root=null,this.styleEl=null}announceToScreenReader(e){if(!l())return;let t=document.getElementById("consenti-announcer");t||(t=document.createElement("div"),t.id="consenti-announcer",t.setAttribute("role","status"),t.setAttribute("aria-live","polite"),t.setAttribute("aria-atomic","true"),t.style.cssText="position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;",document.body.appendChild(t)),t.textContent="",requestAnimationFrame(()=>{t&&(t.textContent=e)})}};var Z=class{constructor(e){this.config=e;this.initialized=!1;this.initializing=!1;this.profile=null;this.resolvedBase=null;this.consentStore=null;this.eventBus=null;this.banner=null;this.modal=null;this.renderer=null;this.broadcastChannel=new E;this.plugins=[];this._bannerVariant=null;this._eventHandlers=new Map;this.readyPromise=new Promise(t=>{this.readyResolve=t}),l()&&(ie(e.core.console??["error"]),e.api?.enabled&&e.core.storage==="localStorage"&&(b.warn("localStorage storage mode cannot be used with API mode (API sets cookies via Set-Cookie header). Falling back to cookie storage."),e.core.storage="cookie"),e.autoInit!==!1&&this.init().catch(t=>b.warn("Init error:",t)))}profileId(){return this.profile?.id??0}async init(){if(l()&&!this.initializing){this.initializing=!0,this.initialized=!1,this.readyPromise=new Promise(e=>{this.readyResolve=e});try{let e=this.config.core.storage??"cookie",t=this.config.core.userId??T.getOrCreateUserId(this.profileId(),e),n=await _e(this.config);this.resolvedBase=n,this.config.darkMode!==void 0&&(n.darkMode=this.config.darkMode);let o=this.config.profileOverride?x(n,this.config.profileOverride):n;this.profile=o,this.eventBus=new L(this.profileId(),this.config.utils?.gtm),this.consentStore=new T(t,this.profileId(),e,this.config.core.cookieDomains),this.consentStore.setProfileCookies(o.cookies),this.renderer=new H,!this.config.core.disableCssTemplate&&j&&this.renderer.injectStyles(j),this.banner=new N,this.modal=new O,this.applyTheme(),this.applyDarkMode(),this.broadcastChannel.connect(p=>this.handleBroadcastMessage(p)),await this.runPlugins();let a=o.cookieSigningKey??this.config.core.cookieSigningKey,s=(a?await this.consentStore.readAndVerify(a):this.consentStore.read())!==null;this.eventBus.dispatch("consenti:bannerInitialized",{profileId:this.profileId(),hasExistingConsent:s});let c=o.gpcMode,u=this.config.core.autoHonorGPC!==void 0?this.config.core.autoHonorGPC:c==="strict"?"strict":c==="honor";if(u&&M()){let p=Me(o.cookies,{},u);if(u==="strict"){await this.submitConsent(p,!0),this.initialized=!0,this.readyResolve();return}if(!s){let m=o.cookieSigningKey??this.config.core.cookieSigningKey;m&&this.consentStore?this.lastSignature=await this.consentStore.writeAndSign(p,m):this.consentStore?.write(p),this.broadcastChannel.send({type:"consentUpdated",consent:p,profileId:this.profileId()}),this.eventBus?.dispatch("consenti:consentSubmitted",{consent:p,gpcDetected:!0,consentId:crypto.randomUUID(),consentAction:this.deriveAction(p,!1),pageUrl:window.location.href}),this.showBanner(!0),this.initialized=!0,this.readyResolve();return}}let d=o.complianceGroup??"",f=d==="opt-out",y=d==="opt-out-strict";if(f&&!s){let p={};for(let k of o.cookies)p[k.id]="granted";let m=o.cookieSigningKey??this.config.core.cookieSigningKey;m?await this.consentStore.writeAndSign(p,m):this.consentStore.write(p),this.initialized=!0,this.readyResolve();return}if(y&&!s){let p=this.config.core.autoHonorGPC&&M(),m={};for(let w of o.cookies){if(w.mandatory){m[w.id]="granted";continue}w.cpraCategory==="sensitive"||p&&(w.cpraCategory==="sale"||w.cpraCategory==="sharing")?m[w.id]="denied":m[w.id]="granted"}let k=o.cookieSigningKey??this.config.core.cookieSigningKey;k?await this.consentStore.writeAndSign(m,k):this.consentStore.write(m),this.initialized=!0,this.readyResolve();return}s||this.showBanner(),this.initialized=!0,this.readyResolve()}finally{this.initializing=!1}}}applyDarkMode(){if(!this.renderer)return;let e=this.config.darkMode??this.profile?.darkMode??!1,t=this.renderer.mount(this.config.rootEl);e?t.classList.add("consenti-root--dark"):t.classList.remove("consenti-root--dark")}applyTheme(){let e=this.config.core.theme;if(!e||!this.renderer)return;let t={"--consenti-color-bg":e.bgColor,"--consenti-color-text":e.textColor,"--consenti-color-primary":e.primaryColor,"--consenti-color-primary-text":e.primaryTextColor,"--consenti-color-secondary":e.secondaryColor,"--consenti-color-secondary-text":e.secondaryTextColor,"--consenti-color-border":e.borderColor,"--consenti-font-family":e.fontFamily,"--consenti-font-size-base":e.fontSizeBase,"--consenti-font-size-heading":e.fontSizeHeading,"--consenti-border-radius":e.borderRadius,"--consenti-border-radius-btn":e.buttonBorderRadius,"--consenti-toggle-bg-on":e.toggleBgOn,"--consenti-toggle-bg-off":e.toggleBgOff,"--consenti-color-accent":e.accentColor,"--consenti-color-accent-text":e.accentTextColor},n=this.renderer.mount(this.config.rootEl);for(let[o,a]of Object.entries(t))a!==void 0&&n.style.setProperty(o,a);if(e.fontSizeMultiplier){let o=parseFloat(e.fontSizeMultiplier);if(!isNaN(o)){let a=parseFloat(getComputedStyle(n).getPropertyValue("--consenti-font-size-base")||"14"),r=parseFloat(getComputedStyle(n).getPropertyValue("--consenti-font-size-heading")||"16");n.style.setProperty("--consenti-font-size-base",`${Math.round(a*o)}px`),n.style.setProperty("--consenti-font-size-heading",`${Math.round(r*o)}px`)}}}async runPlugins(){this.plugins=this.config.plugins??[];for(let e of this.plugins)try{await e.initialize(this)}catch(t){b.warn("Plugin initialize error:",t)}}async callPluginHook(e){for(let t of this.plugins)try{await e(t,this)}catch(n){b.warn("Plugin hook failed:",n)}}_buildGrantAllConsent(e=!1){let t={};for(let n of this.profile?.cookies??[])t[n.id]=e&&!n.mandatory?"denied":"granted";return t}_buildDenyAllConsent(e=!1){let t={};for(let n of this.profile?.cookies??[])t[n.id]=!e&&n.mandatory?"granted":"denied";return t}buildHandlers(e){return{onGrantAll:()=>{this.submitConsent(this._buildGrantAllConsent()),e==="banner"&&(this.banner?.hide(),this._bannerVariant=null)},onDenyAll:()=>{this.submitConsent(this._buildDenyAllConsent()),e==="banner"&&(this.banner?.hide(),this._bannerVariant=null)},onSubmit:()=>{if(e==="modal"&&this.modal&&this.profile){let t=this.modal.getToggleConsent(this.profile.preferenceModal.categories);this.submitConsent(t),this.hideModal()}else{let t={};for(let n of this.profile?.cookies??[])n.mandatory&&(t[n.id]="granted");this.submitConsent(t),e==="banner"&&(this.banner?.hide(),this._bannerVariant=null)}},onManage:()=>{this.showModal()},onClose:()=>{e==="modal"?this.hideModal():(this.banner?.hide(),this._bannerVariant=null,this.broadcastChannel.send({type:"bannerClosed"}),this.eventBus?.dispatch("consenti:bannerVisibility",{show:!1,action:!0}),this.callPluginHook(t=>t.onBannerHide?.()))},onGrantSpecific:t=>{let n={};for(let o of this.profile?.cookies??[])o.mandatory||t.includes(o.id)?n[o.id]="granted":n[o.id]="denied";this.submitConsent(n),e==="banner"&&this.hideBanner()}}}deriveAction(e,t){if(t)return"update";let n=this.profile?.cookies.filter(r=>!r.mandatory)??[];if(n.length===0)return"custom";let o=n.every(r=>e[r.id]==="granted"),a=n.every(r=>e[r.id]==="denied"||e[r.id]==="objected");return o?"accept_all":a?"reject_all":"custom"}handleBroadcastMessage(e){switch(e.type){case"consentUpdated":if(e.profileId!==this.profileId())return;this.consentStore?.setInMemory(e.consent),this.banner?.hide(),this.modal?.isOpen()&&this.modal.close(),this.eventBus?.dispatch("consenti:consentSubmitted",{consent:e.consent,fromBroadcast:!0});break;case"bannerClosed":this.banner?.hide(),this._bannerVariant=null;break;case"consentDeleted":this.consentStore?.clearInMemory();break}}hasConsent(){return l()?this.consentStore?.hasConsent()??!1:!1}getConsent(){return l()?this.consentStore?.getConsent()??null:null}getConsentDate(){return l()?this.consentStore?.getConsentDate()??!1:!1}getGTMConsent(){let e=this.getConsent();if(!e)return null;let t=["ad_storage","analytics_storage","ad_user_data","ad_personalization","functionality_storage","personalization_storage","security_storage"],n={};for(let o of t){let a=e[o];if(a==="granted")n[o]="granted";else if(a==="denied"||a==="objected")n[o]="denied";else{let r=o==="functionality_storage"||o==="security_storage"?"granted":"denied";n[o]=r}}return n}async submitConsent(e,t=!1){if(!l()||!this.profile||!this.consentStore)return;let n=this.profile.complianceGroup??"",o=this.consentStore.hasConsent(),a=crypto.randomUUID(),r=window.location.href,s={};for(let y of this.profile.cookies)if(y.mandatory)s[y.id]="granted";else if(n==="opt-out-strict"){let p=y.cpraCategory==="sensitive"?"denied":"granted";s[y.id]=e[y.id]??p}else{let p=n!=="opt-out"&&n!=="notice-only";s[y.id]=e[y.id]??(p?"denied":"granted")}let c=this.deriveAction(s,o);this.eventBus?.dispatch("consenti:consentBeingSubmitted",{consent:s,consentId:a});let u;if(this.config.api?.enabled)try{let y=this.config.api.baseUrl??window.location.origin,{httpRequest:p}=await import("./http-UU2NIW6M.mjs");u=await p(`${y}/consenti/api/v1/consent`,{method:"POST",body:JSON.stringify({profileId:this.profileId(),profileUuid:this.profile?.profileUuid,consent:s,locale:this.config.core.locale??"en",gpcDetected:t||M(),consentId:a,action:c,pageUrl:r})},this.config.api.authToken)}catch(y){b.warn("API consent submission failed:",y)}let d=this.profile.cookieSigningKey??this.config.core.cookieSigningKey;if(d?this.lastSignature=await this.consentStore.writeAndSign(s,d):this.consentStore.write(s),(this.modal?.isReceiptRequested()??!1)&&this.config.core.allowReceipt){let m={visitorId:this.consentStore.cookieName.split("_").slice(1,-1).join("_"),profileId:this.profileId(),profileVersion:this.profile.version,locale:this.config.core.locale??"en",consent:s,...this.lastSignature?{signature:this.lastSignature}:{}},k=ae(m);re(k)}this.broadcastChannel.send({type:"consentUpdated",consent:s,profileId:this.profileId()}),this.eventBus?.dispatch("consenti:consentSubmitted",{consent:s,apiResponse:u,gpcDetected:t,consentId:a,consentAction:c,pageUrl:r}),await this.callPluginHook(y=>y.onConsentSubmit?.(s)),this.renderer?.announceToScreenReader("Your cookie preferences have been saved."),this.hideBanner(),this.modal?.isOpen()&&this.hideModal()}bannerVisibility(){return this._bannerVariant??!1}modalVisibility(){return this.modal?.isOpen()?"preference":!1}showBanner(e=!1){if(!l()||!this.profile||!this.banner||!this.renderer)return;let t=e&&this.profile.gpcBanner?"gpc":"main";if(this._bannerVariant===t)return;let n=t==="gpc"?this.profile.gpcBanner:this.profile.mainBanner,o=this.renderer.mount(this.config.rootEl),a=this.buildHandlers("banner");this.banner.remove();let r=this.profile.locales,s=this.config.core.locale??"en",c=this.banner.build(n,a,void 0,r,s,d=>this.switchLocale(d),this.config.hidePoweredBy??!1);o.appendChild(c);let u=this.banner.getOverlay();u&&o.appendChild(u),this._bannerVariant=t,this.eventBus?.dispatch("consenti:bannerVisibility",{show:!0,action:!1}),this.callPluginHook(d=>d.onBannerShow?.())}hideBanner(){this._bannerVariant!==null&&(this.banner?.hide(),this._bannerVariant=null,this.broadcastChannel.send({type:"bannerClosed"}),this.eventBus?.dispatch("consenti:bannerVisibility",{show:!1,action:!0}),this.renderer?.announceToScreenReader("Cookie banner dismissed."),this.callPluginHook(e=>e.onBannerHide?.()))}showModal(e){if(!l()||!this.profile||!this.modal||this.modal.isOpen())return;let t=this.buildHandlers("modal"),n=this.consentStore?.getConsent()??{},o=this.profile.complianceGroup==="opt-in-dpdpa"?this.profile.dpdpa:void 0,a=this.profile.locales,r=this.config.core.locale??"en";this.modal.build(this.profile.preferenceModal,n,t,this.config.core.allowReceipt??!1,o,a,r,c=>{this.hideModal(),this.switchLocale(c)},!(this.config.hidePoweredBy??!1)),this.banner?.hide(),this.modal.open(e);let s=this.config.darkMode??this.profile?.darkMode??!1;document.getElementById("consenti-modal")?.classList.toggle("consenti-root--dark",s),this.eventBus?.dispatch("consenti:modalVisibility",{show:!0,action:!0}),this.callPluginHook(c=>c.onModalShow?.())}hideModal(){this.modal?.isOpen()&&(this.modal.close(),this.eventBus?.dispatch("consenti:modalVisibility",{show:!1,action:!0}),this.callPluginHook(e=>e.onModalHide?.()),!this.consentStore?.hasConsent()&&this._bannerVariant!==null?this.banner?.show():this.consentStore?.hasConsent()||this.showBanner())}onReady(e){this.initialized?e():this.readyPromise.then(e)}get ready(){return this.readyPromise}async deleteConsent(){if(!(!l()||!this.consentStore)){if(this.config.api?.enabled)try{let e=this.config.api.baseUrl??window.location.origin,t=this.consentStore.cookieName,{httpRequest:n}=await import("./http-UU2NIW6M.mjs");await n(`${e}/consenti/api/v1/consent/${t}`,{method:"DELETE"},this.config.api?.authToken)}catch(e){b.warn("API consent deletion failed:",e)}this.consentStore.delete(),this.broadcastChannel.send({type:"consentDeleted"})}}async reConsent(){await this.deleteConsent(),this.showBanner()}getProfile(){return this.profile}getRootElement(){return l()?this.config.rootEl?typeof this.config.rootEl=="string"?document.querySelector(this.config.rootEl):this.config.rootEl:document.getElementById("consenti-root"):null}getBannerElement(){return l()?document.getElementById("consenti-banner"):null}getModalElement(){return l()?document.getElementById("consenti-modal"):null}switchLocale(e){l()&&(this.config.core.locale=e,this.banner?.remove(),this.modal?.isOpen()&&this.modal.close(),this._bannerVariant=null,this.profile=null,this.initialized=!1,this.readyPromise=new Promise(t=>{this.readyResolve=t}),this.init().catch(t=>b.warn("Locale switch error:",t)))}isCookieGranted(e,t=!1){if(!l())return!1;let n=this.getConsent()?.[e];return t?n??!1:n==="granted"}isCategoryGranted(e,t=!1){if(!l()||!this.profile)return t?[]:!1;let n=this.profile.preferenceModal.categories.find(a=>a.id===e);if(!n)return t?[]:!1;let o=this.getConsent();return t?n.cookies.map(a=>({[a]:o?.[a]??"denied"})):n.cookies.every(a=>o?.[a]==="granted")}async grantAll(e=!1){!l()||!this.profile||await this.submitConsent(this._buildGrantAllConsent(e))}async denyAll(e=!1){!l()||!this.profile||(e&&b.warn("denyAll called with includingMandatory=true \u2014 mandatory cookies will be denied. Ensure this is intentional."),await this.submitConsent(this._buildDenyAllConsent(e)))}on(e,t){if(!l())return;let n=e.startsWith("consenti:")?e:`consenti:${e}`,o=r=>t(r.detail),a=this._eventHandlers.get(t)??[];a.push({name:n,wrapped:o}),this._eventHandlers.set(t,a),window.addEventListener(n,o)}off(e,t){if(!l())return;let n=e.startsWith("consenti:")?e:`consenti:${e}`,o=this._eventHandlers.get(t);if(!o)return;let a=o.findIndex(s=>s.name===n);if(a===-1)return;let r=o[a];r&&window.removeEventListener(n,r.wrapped),o.splice(a,1),o.length===0&&this._eventHandlers.delete(t)}version(){return{package:"0.2.0",profileVersion:this.profile?.version??null,consentVersion:1}}setDarkMode(e){if(!l())return;this.config.darkMode=e===void 0?!this.config.darkMode:e,this.applyDarkMode();let t=this.config.darkMode??!1;document.getElementById("consenti-modal")?.classList.toggle("consenti-root--dark",t)}setTheme(e){l()&&(this.config.core.theme=Object.assign({},this.config.core.theme,e),this.applyTheme())}setConfig(e){this.config=x(this.config,e),l()&&(this.applyTheme(),this.applyDarkMode())}setProfile(e){if(!l()||!this.resolvedBase)return;this.config.profileOverride=this.config.profileOverride?x(this.config.profileOverride,e):e,this.profile=x(this.resolvedBase,this.config.profileOverride);let t=this.modal?.isOpen()??!1;if(t&&this.modal?.close(),this._bannerVariant!==null){let n=this._bannerVariant==="gpc";this._bannerVariant=null,this.showBanner(n)}t&&this.showModal()}destroy(){for(let e of this.plugins)try{e.destroy()}catch{}if(this.modal?.destroy(),this.renderer?.unmount(),this.broadcastChannel.disconnect(),l()){for(let e of this._eventHandlers.values())for(let{name:t,wrapped:n}of e)window.removeEventListener(t,n);this._eventHandlers.clear()}this.banner=null,this.modal=null,this.renderer=null,this.consentStore=null,this.eventBus=null,this.initialized=!1}};var Q=class{};var nt=1e3,X=class{constructor(e){this.config=e;this.id=nt++,Pe(this.id,e)}getId(){return this.id}toJSON(){return this.config}};var ee=class{constructor(e){this.options=e;this.scriptEl=null;this.handler=()=>this.evaluate(),l()&&(e.bind!==!1&&window.addEventListener("consenti:consentSubmitted",this.handler),this.evaluate())}evaluate(){let t=this.options.widget.getConsent()?.[this.options.cookieId]==="granted";t&&!this.scriptEl?this.inject():!t&&this.scriptEl&&this.revoke()}inject(){let e=document.createElement("script");if(this.options.src){let t=this.options.src.trim();if(/^javascript:/i.test(t)){b.warn("ConsentScript: rejected src with javascript: protocol");return}e.src=t}this.options.unsafeInnerHTML&&(e.innerHTML=this.options.unsafeInnerHTML);for(let[t,n]of Object.entries(this.options.attributes??{})){if(/^on/i.test(t)){b.warn(`ConsentScript: rejected attribute "${t}" (inline event handlers are not allowed)`);continue}e.setAttribute(t,n)}document.head.appendChild(e),this.scriptEl=e,this.options.onLoad?.()}revoke(){this.scriptEl?.remove(),this.scriptEl=null,this.options.onRevoke?.()}destroy(){l()&&(this.options.bind!==!1&&window.removeEventListener("consenti:consentSubmitted",this.handler),this.revoke())}};var te=class{constructor(e){let t=e.action??"modal";if(this.clickHandler=()=>{t==="modal"?e.widget.showModal():e.widget.showBanner()},e.el)if(typeof e.el=="string"){if(!l()){this.el=document.createElement("span"),this.created=!1;return}let n=document.querySelector(e.el);if(!n)throw new Error(`[Consenti] CookieTrigger: element not found for selector "${e.el}"`);this.el=n,this.created=!1}else this.el=e.el,this.created=!1;else{let n=document.createElement("button");n.type="button",n.className="consenti-btn consenti-btn--text consenti-cookie-trigger",n.textContent=e.label??"Cookie Settings",n.setAttribute("aria-label",e.label??"Open cookie settings"),this.el=n,this.created=!0}this.el.addEventListener("click",this.clickHandler)}getElement(){return this.el}destroy(){this.el.removeEventListener("click",this.clickHandler),this.created&&this.el.remove()}};export{ee as ConsentScript,Q as ConsentiPlugin,X as ConsentiProfile,Z as ConsentiSetup,te as CookieTrigger};
1
+ import"./chunk-J4BKXUD6.mjs";import{a as le}from"./chunk-3EXCD24H.mjs";function N(t){let e=new Map;for(let n of Object.values(t))for(let o of n.cookies)e.set(o,n);return e}function pe(t,e){return e.get(t)?.legalBasis??"consent"}function S(t,e){return pe(t,e)==="mandatory"}var z={version:"2026-07",countries:{AT:{name:"Austria",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Austria (GDPR)",locales:["de-AT"],compliance:["gdpr","eprivacy"],timezones:["Europe/Vienna"]},BE:{name:"Belgium",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Belgium (GDPR)",locales:["nl-BE","fr-BE"],compliance:["gdpr","eprivacy"],timezones:["Europe/Brussels"]},BG:{name:"Bulgaria",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Bulgaria (GDPR)",locales:["bg-BG"],compliance:["gdpr","eprivacy"],timezones:["Europe/Sofia"]},HR:{name:"Croatia",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Croatia (GDPR)",locales:["hr-HR"],compliance:["gdpr","eprivacy"],timezones:["Europe/Zagreb"]},CY:{name:"Cyprus",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Cyprus (GDPR)",locales:["el-CY"],compliance:["gdpr","eprivacy"],timezones:["Asia/Nicosia"]},CZ:{name:"Czechia",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Czechia (GDPR)",locales:["cs-CZ"],compliance:["gdpr","eprivacy"],timezones:["Europe/Prague"]},DK:{name:"Denmark",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Denmark (GDPR)",locales:["da-DK"],compliance:["gdpr","eprivacy"],timezones:["Europe/Copenhagen"]},EE:{name:"Estonia",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Estonia (GDPR)",locales:["et-EE"],compliance:["gdpr","eprivacy"],timezones:["Europe/Tallinn"]},FI:{name:"Finland",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Finland (GDPR)",locales:["fi-FI"],compliance:["gdpr","eprivacy"],timezones:["Europe/Helsinki"]},FR:{name:"France",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"France (GDPR)",locales:["fr-FR"],compliance:["gdpr","eprivacy"],timezones:["Europe/Paris"]},DE:{name:"Germany",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Germany (GDPR)",locales:["de-DE"],compliance:["gdpr","eprivacy"],timezones:["Europe/Berlin"]},GR:{name:"Greece",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Greece (GDPR)",locales:["el-GR"],compliance:["gdpr","eprivacy"],timezones:["Europe/Athens"]},HU:{name:"Hungary",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Hungary (GDPR)",locales:["hu-HU"],compliance:["gdpr","eprivacy"],timezones:["Europe/Budapest"]},IE:{name:"Ireland",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Ireland (GDPR)",locales:["en"],compliance:["gdpr","eprivacy"],timezones:["Europe/Dublin"]},IT:{name:"Italy",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Italy (GDPR)",locales:["it-IT"],compliance:["gdpr","eprivacy"],timezones:["Europe/Rome"]},LV:{name:"Latvia",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Latvia (GDPR)",locales:["lv-LV"],compliance:["gdpr","eprivacy"],timezones:["Europe/Riga"]},LT:{name:"Lithuania",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Lithuania (GDPR)",locales:["lt-LT"],compliance:["gdpr","eprivacy"],timezones:["Europe/Vilnius"]},LU:{name:"Luxembourg",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Luxembourg (GDPR)",locales:["fr-LU","de-LU"],compliance:["gdpr","eprivacy"],timezones:["Europe/Luxembourg"]},MT:{name:"Malta",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Malta (GDPR)",locales:["mt-MT","en"],compliance:["gdpr","eprivacy"],timezones:["Europe/Malta"]},NL:{name:"Netherlands",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Netherlands (GDPR)",locales:["nl-NL"],compliance:["gdpr","eprivacy"],timezones:["Europe/Amsterdam"]},PL:{name:"Poland",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Poland (GDPR)",locales:["pl-PL"],compliance:["gdpr","eprivacy"],timezones:["Europe/Warsaw"]},PT:{name:"Portugal",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Portugal (GDPR)",locales:["pt-PT"],compliance:["gdpr","eprivacy"],timezones:["Europe/Lisbon","Atlantic/Madeira","Atlantic/Azores"]},RO:{name:"Romania",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Romania (GDPR)",locales:["ro-RO"],compliance:["gdpr","eprivacy"],timezones:["Europe/Bucharest"]},SK:{name:"Slovakia",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Slovakia (GDPR)",locales:["sk-SK"],compliance:["gdpr","eprivacy"],timezones:["Europe/Bratislava"]},SI:{name:"Slovenia",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Slovenia (GDPR)",locales:["sl-SI"],compliance:["gdpr","eprivacy"],timezones:["Europe/Ljubljana"]},ES:{name:"Spain",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Spain (GDPR)",locales:["es-ES"],compliance:["gdpr","eprivacy"],timezones:["Europe/Madrid","Africa/Ceuta","Atlantic/Canary"]},SE:{name:"Sweden",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Sweden (GDPR)",locales:["sv-SE"],compliance:["gdpr","eprivacy"],timezones:["Europe/Stockholm"]},IS:{name:"Iceland",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Iceland (GDPR via EEA)",locales:["is-IS"],compliance:["gdpr","eprivacy"],timezones:["Atlantic/Reykjavik"]},LI:{name:"Liechtenstein",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Liechtenstein (GDPR via EEA)",locales:["de-LI"],compliance:["gdpr","eprivacy"],timezones:["Europe/Vaduz"]},NO:{name:"Norway",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Norway (GDPR via EEA)",locales:["nb-NO"],compliance:["gdpr","eprivacy"],timezones:["Europe/Oslo","Arctic/Longyearbyen"]},AD:{name:"Andorra",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Andorra (GDPR-aligned)",locales:["ca-AD"],compliance:["gdpr"],timezones:["Europe/Andorra"]},AL:{name:"Albania",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Albania (GDPR-aligned)",locales:["sq-AL"],compliance:["gdpr"],timezones:["Europe/Tirane"]},BA:{name:"Bosnia and Herzegovina",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Bosnia and Herzegovina (GDPR-aligned)",locales:["bs-BA","sr-Latn-BA"],compliance:["gdpr"],timezones:["Europe/Sarajevo"]},GG:{name:"Guernsey",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Guernsey (DPA based on GDPR)",locales:["en"],compliance:["gdpr"],timezones:["Europe/Guernsey"]},GI:{name:"Gibraltar",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Gibraltar (DPA based on UK GDPR)",locales:["en"],compliance:["uk-gdpr"],timezones:["Europe/Gibraltar"]},GL:{name:"Greenland",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Greenland (Danish GDPR implementation)",locales:["da-GL"],compliance:["gdpr"],timezones:["America/Nuuk","America/Danmarkshavn","America/Scoresbysund","America/Thule"]},MC:{name:"Monaco",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Monaco (GDPR-aligned)",locales:["fr-MC"],compliance:["gdpr"],timezones:["Europe/Monaco"]},ME:{name:"Montenegro",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Montenegro (GDPR-aligned)",locales:["sr-Latn-ME"],compliance:["gdpr"],timezones:["Europe/Podgorica"]},MK:{name:"North Macedonia",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"North Macedonia (GDPR-aligned)",locales:["mk-MK"],compliance:["gdpr"],timezones:["Europe/Skopje"]},RS:{name:"Serbia",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Serbia (GDPR-aligned)",locales:["sr-RS"],compliance:["gdpr"],timezones:["Europe/Belgrade"]},SM:{name:"San Marino",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"San Marino (GDPR-aligned)",locales:["it-SM"],compliance:["gdpr"],timezones:["Europe/San_Marino"]},TR:{name:"T\xFCrkiye",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"T\xFCrkiye (KVKK)",locales:["tr-TR"],compliance:["kvkk"],timezones:["Europe/Istanbul"]},CA:{name:"Canada",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Canada (PIPEDA / Law 25)",locales:["en","fr-CA"],compliance:["pipeda","law25"],timezones:["America/St_Johns","America/Halifax","America/Toronto","America/Winnipeg","America/Edmonton","America/Vancouver"],overriddenRegions:{QC:{name:"Quebec",type:"region",complianceGroup:"opt-in",description:"Quebec \u2014 Law 25 (GDPR-style opt-in)"}}},US:{name:"United States",type:"country",complianceGroup:"opt-out",default:"opt-out-strict",description:"United States \u2014 opt-out-strict (CPRA) used when state cannot be detected",locales:["en","es-US"],compliance:["ccpa","cpra","vcdpa","cpa-co","ctdpa","ucpa","icdpa-ia","icdpa-in","tipa","mcdpa-mt","mcdpa-mn","ocpa","tdpsa","dpdpa-de","njdpa","nhpa","ndpa-ne","modpa","kcdpa","ridtpa"],timezones:["America/New_York","America/Chicago","America/Denver","America/Phoenix","America/Los_Angeles","America/Anchorage","Pacific/Honolulu"],overriddenRegions:{CA:{name:"California",type:"region",complianceGroup:"opt-out-strict",description:"California \u2014 CPRA/CCPA"},VA:{name:"Virginia",type:"region",complianceGroup:"opt-out",description:"Virginia \u2014 VCDPA"},CO:{name:"Colorado",type:"region",complianceGroup:"opt-out",description:"Colorado \u2014 CPA"},CT:{name:"Connecticut",type:"region",complianceGroup:"opt-out",description:"Connecticut \u2014 CTDPA"},UT:{name:"Utah",type:"region",complianceGroup:"opt-out",description:"Utah \u2014 UCPA"},TX:{name:"Texas",type:"region",complianceGroup:"opt-out",description:"Texas \u2014 TDPSA"},DE:{name:"Delaware",type:"region",complianceGroup:"opt-out",description:"Delaware \u2014 DPDPA"},NJ:{name:"New Jersey",type:"region",complianceGroup:"opt-out",description:"New Jersey \u2014 NJDPA"},OR:{name:"Oregon",type:"region",complianceGroup:"opt-out",description:"Oregon \u2014 OCPA"},MN:{name:"Minnesota",type:"region",complianceGroup:"opt-out",description:"Minnesota \u2014 MCDPA"},MD:{name:"Maryland",type:"region",complianceGroup:"opt-out",description:"Maryland \u2014 MODPA"},KY:{name:"Kentucky",type:"region",complianceGroup:"opt-out",description:"Kentucky \u2014 KCDPA"},TN:{name:"Tennessee",type:"region",complianceGroup:"opt-out",description:"Tennessee \u2014 TIPA"},NE:{name:"Nebraska",type:"region",complianceGroup:"opt-out",description:"Nebraska \u2014 NDPA"},IA:{name:"Iowa",type:"region",complianceGroup:"opt-out",description:"Iowa \u2014 ICDPA"},IN:{name:"Indiana",type:"region",complianceGroup:"opt-out",description:"Indiana \u2014 ICDPA"},MT:{name:"Montana",type:"region",complianceGroup:"opt-out",description:"Montana \u2014 MCDPA"},NH:{name:"New Hampshire",type:"region",complianceGroup:"opt-out",description:"New Hampshire \u2014 NHPA"},RI:{name:"Rhode Island",type:"region",complianceGroup:"opt-out",description:"Rhode Island \u2014 RIDTPA"}}},AR:{name:"Argentina",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Argentina (LPDP)",locales:["es-AR"],compliance:["lpdp-ar"],timezones:["America/Argentina/Buenos_Aires"]},BO:{name:"Bolivia",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Bolivia",locales:["es-BO"],compliance:[],timezones:["America/La_Paz"]},BR:{name:"Brazil",type:"country",complianceGroup:"opt-in-brazil",default:"opt-in-brazil",description:"Brazil (LGPD)",locales:["pt-BR"],compliance:["lgpd"],timezones:["America/Noronha","America/Sao_Paulo","America/Manaus","America/Rio_Branco"]},CL:{name:"Chile",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Chile (Law 19.628)",locales:["es-CL"],compliance:["law19628-cl"],timezones:["America/Santiago","Pacific/Easter"]},CO:{name:"Colombia",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Colombia (Law 1581)",locales:["es-CO"],compliance:["law1581-co"],timezones:["America/Bogota"]},CR:{name:"Costa Rica",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Costa Rica (LPDP)",locales:["es-CR"],compliance:["lpdp-cr"],timezones:["America/Costa_Rica"]},DO:{name:"Dominican Republic",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Dominican Republic",locales:["es-DO"],compliance:["data-protection-do"],timezones:["America/Santo_Domingo"]},EC:{name:"Ecuador",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Ecuador (LOPDP)",locales:["es-EC"],compliance:["lopdp-ec"],timezones:["America/Guayaquil","Pacific/Galapagos"]},GF:{name:"French Guiana",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"French Guiana",locales:["fr-GF"],compliance:[],timezones:["America/Cayenne"]},GT:{name:"Guatemala",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Guatemala",locales:["es-GT"],compliance:[],timezones:["America/Guatemala"]},GY:{name:"Guyana",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Guyana",locales:["en"],compliance:[],timezones:["America/Guyana"]},HN:{name:"Honduras",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Honduras",locales:["es-HN"],compliance:[],timezones:["America/Tegucigalpa"]},HT:{name:"Haiti",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Haiti",locales:["fr-HT"],compliance:[],timezones:["America/Port-au-Prince"]},JM:{name:"Jamaica",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Jamaica",locales:["en"],compliance:[],timezones:["America/Jamaica"]},MX:{name:"Mexico",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Mexico (LFPDPPP)",locales:["es-MX"],compliance:["lfpdppp"],timezones:["America/Mexico_City","America/Cancun","America/Chihuahua","America/Hermosillo","America/Tijuana"]},NI:{name:"Nicaragua",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Nicaragua",locales:["es-NI"],compliance:[],timezones:["America/Managua"]},PA:{name:"Panama",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Panama",locales:["es-PA"],compliance:["data-protection-pa"],timezones:["America/Panama"]},PE:{name:"Peru",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Peru (LPDP)",locales:["es-PE"],compliance:["lpdp-pe"],timezones:["America/Lima"]},PY:{name:"Paraguay",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Paraguay",locales:["es-PY"],compliance:[],timezones:["America/Asuncion"]},SR:{name:"Suriname",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Suriname",locales:["nl-SR"],compliance:[],timezones:["America/Paramaribo"]},SV:{name:"El Salvador",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"El Salvador",locales:["es-SV"],compliance:[],timezones:["America/El_Salvador"]},TT:{name:"Trinidad and Tobago",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Trinidad and Tobago",locales:["en"],compliance:[],timezones:["America/Port_of_Spain"]},UY:{name:"Uruguay",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Uruguay (Law 18.331)",locales:["es-UY"],compliance:["law18331-uy"],timezones:["America/Montevideo"]},VE:{name:"Venezuela",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Venezuela",locales:["es-VE"],compliance:[],timezones:["America/Caracas"]},AG:{name:"Antigua and Barbuda",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Antigua and Barbuda",locales:["en"],compliance:[],timezones:["America/Antigua"]},BB:{name:"Barbados",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Barbados",locales:["en"],compliance:[],timezones:["America/Barbados"]},BL:{name:"Saint Barth\xE9lemy",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Saint Barth\xE9lemy",locales:["fr-BL"],compliance:[],timezones:["America/St_Barthelemy"]},BM:{name:"Bermuda",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Bermuda",locales:["en"],compliance:[],timezones:["Atlantic/Bermuda"]},BS:{name:"Bahamas",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Bahamas",locales:["en"],compliance:[],timezones:["America/Nassau"]},CU:{name:"Cuba",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Cuba",locales:["es-CU"],compliance:[],timezones:["America/Havana"]},DM:{name:"Dominica",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Dominica",locales:["en"],compliance:[],timezones:["America/Dominica"]},GD:{name:"Grenada",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Grenada",locales:["en"],compliance:[],timezones:["America/Grenada"]},KN:{name:"Saint Kitts and Nevis",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Saint Kitts and Nevis",locales:["en"],compliance:[],timezones:["America/St_Kitts"]},LC:{name:"Saint Lucia",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Saint Lucia",locales:["en"],compliance:[],timezones:["America/St_Lucia"]},PM:{name:"Saint Pierre and Miquelon",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Saint Pierre and Miquelon",locales:["fr-PM"],compliance:[],timezones:["America/Miquelon"]},PR:{name:"Puerto Rico",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Puerto Rico",locales:["es-PR","en"],compliance:[],timezones:["America/Puerto_Rico"]},VC:{name:"Saint Vincent and the Grenadines",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Saint Vincent and the Grenadines",locales:["en"],compliance:[],timezones:["America/St_Vincent"]},IN:{name:"India",type:"country",complianceGroup:"opt-in-dpdpa",default:"opt-in-dpdpa",description:"India (DPDPA)",locales:["hi-IN","en","bn-IN","ta-IN"],compliance:["dpdpa"],timezones:["Asia/Kolkata","Asia/Calcutta"]},CN:{name:"China",type:"country",complianceGroup:"opt-in-china",default:"opt-in-china",description:"China (PIPL + DSL + CSL)",locales:["zh-CN"],compliance:["pipl","dsl-cn","csl-cn"],timezones:["Asia/Shanghai"]},BN:{name:"Brunei",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Brunei (Personal Data Protection Order)",locales:["ms-BN","en"],compliance:["privacy-bn"],timezones:["Asia/Brunei"]},ID:{name:"Indonesia",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Indonesia (PDP Law)",locales:["id-ID"],compliance:["pdp-id"],timezones:["Asia/Jakarta","Asia/Makassar","Asia/Jayapura"]},KH:{name:"Cambodia",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Cambodia",locales:["km-KH"],compliance:[],timezones:["Asia/Phnom_Penh"]},LA:{name:"Laos",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Laos",locales:["lo-LA"],compliance:[],timezones:["Asia/Vientiane"]},MM:{name:"Myanmar",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Myanmar",locales:["my-MM"],compliance:[],timezones:["Asia/Yangon"]},MY:{name:"Malaysia",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Malaysia (PDPA)",locales:["ms-MY","zh-MY","en"],compliance:["pdpa-my"],timezones:["Asia/Kuala_Lumpur","Asia/Kuching"]},PH:{name:"Philippines",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Philippines (DPA)",locales:["fil-PH","en"],compliance:["dpa-ph"],timezones:["Asia/Manila"]},SG:{name:"Singapore",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Singapore (PDPA)",locales:["zh-SG","ms-SG","ta-SG","en"],compliance:["pdpa-sg"],timezones:["Asia/Singapore"]},TH:{name:"Thailand",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Thailand (PDPA \u2014 GDPR-style opt-in)",locales:["th-TH"],compliance:["pdpa-th"],timezones:["Asia/Bangkok"]},TL:{name:"Timor-Leste",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Timor-Leste",locales:["pt-TL"],compliance:[],timezones:["Asia/Dili"]},VN:{name:"Vietnam",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Vietnam (PDPD)",locales:["vi-VN"],compliance:["pdpd-vn"],timezones:["Asia/Ho_Chi_Minh"]},HK:{name:"Hong Kong",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Hong Kong SAR (PDPO)",locales:["zh-HK"],compliance:["pdpl-hk"],timezones:["Asia/Hong_Kong"]},JP:{name:"Japan",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Japan (APPI)",locales:["ja-JP"],compliance:["appi"],timezones:["Asia/Tokyo"]},KP:{name:"North Korea",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"North Korea",locales:["ko-KP"],compliance:[],timezones:["Asia/Pyongyang"]},KR:{name:"South Korea",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"South Korea (PIPA)",locales:["ko-KR"],compliance:["pipa-kr"],timezones:["Asia/Seoul"]},MN:{name:"Mongolia",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Mongolia",locales:["mn-MN"],compliance:[],timezones:["Asia/Ulaanbaatar","Asia/Hovd"]},MO:{name:"Macau",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Macau SAR (PDPA)",locales:["zh-MO","pt-MO"],compliance:["pdpa-mo"],timezones:["Asia/Macau"]},TW:{name:"Taiwan",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Taiwan (PDPL)",locales:["zh-TW"],compliance:["pdpl-tw"],timezones:["Asia/Taipei"]},AF:{name:"Afghanistan",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Afghanistan",locales:["fa-AF"],compliance:[],timezones:["Asia/Kabul"]},BD:{name:"Bangladesh",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Bangladesh",locales:["bn-BD"],compliance:[],timezones:["Asia/Dhaka"]},BT:{name:"Bhutan",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Bhutan",locales:["dz-BT"],compliance:[],timezones:["Asia/Thimphu"]},IO:{name:"British Indian Ocean Territory",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"British Indian Ocean Territory",locales:["en"],compliance:[],timezones:["Indian/Chagos"]},LK:{name:"Sri Lanka",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Sri Lanka",locales:["si-LK","ta-LK"],compliance:["privacy-lk"],timezones:["Asia/Colombo"]},MV:{name:"Maldives",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Maldives",locales:["dv-MV"],compliance:[],timezones:["Indian/Maldives"]},NP:{name:"Nepal",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Nepal",locales:["ne-NP"],compliance:["privacy-np"],timezones:["Asia/Kathmandu"]},PK:{name:"Pakistan",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Pakistan",locales:["ur-PK","en"],compliance:[],timezones:["Asia/Karachi"]},AM:{name:"Armenia",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Armenia",locales:["hy-AM"],compliance:[],timezones:["Asia/Yerevan"]},AZ:{name:"Azerbaijan",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Azerbaijan",locales:["az-AZ"],compliance:[],timezones:["Asia/Baku"]},GE:{name:"Georgia",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Georgia",locales:["ka-GE"],compliance:[],timezones:["Asia/Tbilisi"]},KG:{name:"Kyrgyzstan",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Kyrgyzstan",locales:["ky-KG","ru-KG"],compliance:[],timezones:["Asia/Bishkek"]},KZ:{name:"Kazakhstan",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Kazakhstan",locales:["kk-KZ","ru-KZ"],compliance:[],timezones:["Asia/Almaty","Asia/Aqtobe"]},TJ:{name:"Tajikistan",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Tajikistan",locales:["tg-TJ"],compliance:[],timezones:["Asia/Dushanbe"]},TM:{name:"Turkmenistan",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Turkmenistan",locales:["tk-TM"],compliance:[],timezones:["Asia/Ashgabat"]},UZ:{name:"Uzbekistan",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Uzbekistan",locales:["uz-UZ"],compliance:[],timezones:["Asia/Tashkent","Asia/Samarkand"]},AE:{name:"United Arab Emirates",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"United Arab Emirates (UAE PDPL / DIFC DPL / ADGM DPR)",locales:["ar-AE"],compliance:["uae-pdpl","difc-dpl","adgm-dpr"],timezones:["Asia/Dubai"]},BH:{name:"Bahrain",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Bahrain (PDPL)",locales:["ar-BH"],compliance:["pdpl-bh"],timezones:["Asia/Bahrain"]},IL:{name:"Israel",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Israel (Privacy Protection Law)",locales:["he-IL","ar-IL"],compliance:["privacy-il"],timezones:["Asia/Jerusalem"]},IQ:{name:"Iraq",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Iraq",locales:["ar-IQ"],compliance:[],timezones:["Asia/Baghdad"]},IR:{name:"Iran",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Iran",locales:["fa-IR"],compliance:[],timezones:["Asia/Tehran"]},JO:{name:"Jordan",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Jordan",locales:["ar-JO"],compliance:[],timezones:["Asia/Amman"]},KW:{name:"Kuwait",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Kuwait",locales:["ar-KW"],compliance:["privacy-kw"],timezones:["Asia/Kuwait"]},LB:{name:"Lebanon",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Lebanon",locales:["ar-LB"],compliance:[],timezones:["Asia/Beirut"]},OM:{name:"Oman",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Oman (PDPL)",locales:["ar-OM"],compliance:["pdpl-om"],timezones:["Asia/Muscat"]},PS:{name:"Palestine",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Palestine",locales:["ar-PS"],compliance:[],timezones:["Asia/Gaza","Asia/Hebron"]},QA:{name:"Qatar",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Qatar (PDPL)",locales:["ar-QA"],compliance:["qpdl-qa"],timezones:["Asia/Qatar"]},SA:{name:"Saudi Arabia",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Saudi Arabia (PDPL)",locales:["ar-SA"],compliance:["pdpl-sa"],timezones:["Asia/Riyadh"]},SY:{name:"Syria",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Syria",locales:["ar-SY"],compliance:[],timezones:["Asia/Damascus"]},YE:{name:"Yemen",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Yemen",locales:["ar-YE"],compliance:[],timezones:["Asia/Aden"]},BF:{name:"Burkina Faso",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Burkina Faso",locales:["fr-BF"],compliance:[],timezones:["Africa/Ouagadougou"]},BJ:{name:"Benin",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Benin",locales:["fr-BJ"],compliance:[],timezones:["Africa/Porto-Novo"]},CI:{name:"C\xF4te d'Ivoire",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"C\xF4te d'Ivoire",locales:["fr-CI"],compliance:[],timezones:["Africa/Abidjan"]},CM:{name:"Cameroon",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Cameroon",locales:["fr-CM","en"],compliance:[],timezones:["Africa/Douala"]},CV:{name:"Cabo Verde",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Cabo Verde",locales:["pt-CV"],compliance:[],timezones:["Atlantic/Cape_Verde"]},GA:{name:"Gabon",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Gabon",locales:["fr-GA"],compliance:[],timezones:["Africa/Libreville"]},GH:{name:"Ghana",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Ghana (DPA)",locales:["en"],compliance:["dpa-gh"],timezones:["Africa/Accra"]},GM:{name:"Gambia",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Gambia",locales:["en"],compliance:[],timezones:["Africa/Banjul"]},GN:{name:"Guinea",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Guinea",locales:["fr-GN"],compliance:[],timezones:["Africa/Conakry"]},GQ:{name:"Equatorial Guinea",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Equatorial Guinea",locales:["es-GQ","fr-GQ"],compliance:[],timezones:["Africa/Malabo"]},GW:{name:"Guinea-Bissau",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Guinea-Bissau",locales:["pt-GW"],compliance:[],timezones:["Africa/Bissau"]},LR:{name:"Liberia",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Liberia",locales:["en"],compliance:[],timezones:["Africa/Monrovia"]},ML:{name:"Mali",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Mali",locales:["fr-ML"],compliance:[],timezones:["Africa/Bamako"]},MR:{name:"Mauritania",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Mauritania",locales:["ar-MR"],compliance:[],timezones:["Africa/Nouakchott"]},NE:{name:"Niger",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Niger",locales:["fr-NE"],compliance:[],timezones:["Africa/Niamey"]},NG:{name:"Nigeria",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Nigeria (NDPA)",locales:["en"],compliance:["ndpa-ng"],timezones:["Africa/Lagos"]},SL:{name:"Sierra Leone",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Sierra Leone",locales:["en"],compliance:[],timezones:["Africa/Freetown"]},SN:{name:"Senegal",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Senegal",locales:["fr-SN"],compliance:[],timezones:["Africa/Dakar"]},TG:{name:"Togo",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Togo",locales:["fr-TG"],compliance:[],timezones:["Africa/Lome"]},BI:{name:"Burundi",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Burundi",locales:["fr-BI"],compliance:[],timezones:["Africa/Bujumbura"]},DJ:{name:"Djibouti",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Djibouti",locales:["fr-DJ","ar-DJ"],compliance:[],timezones:["Africa/Djibouti"]},ER:{name:"Eritrea",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Eritrea",locales:["ti-ER"],compliance:[],timezones:["Africa/Asmara"]},ET:{name:"Ethiopia",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Ethiopia",locales:["am-ET"],compliance:[],timezones:["Africa/Addis_Ababa"]},KE:{name:"Kenya",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Kenya (DPA)",locales:["sw-KE","en"],compliance:["dpa-ke"],timezones:["Africa/Nairobi"]},KM:{name:"Comoros",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Comoros",locales:["ar-KM","fr-KM"],compliance:[],timezones:["Indian/Comoro"]},MG:{name:"Madagascar",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Madagascar",locales:["fr-MG"],compliance:[],timezones:["Indian/Antananarivo"]},MU:{name:"Mauritius",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Mauritius (DPA)",locales:["en","fr-MU"],compliance:["dpa-mu"],timezones:["Indian/Mauritius"]},MW:{name:"Malawi",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Malawi",locales:["en"],compliance:[],timezones:["Africa/Blantyre"]},MZ:{name:"Mozambique",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Mozambique",locales:["pt-MZ"],compliance:[],timezones:["Africa/Maputo"]},RW:{name:"Rwanda",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Rwanda (DPA)",locales:["rw-RW","en"],compliance:["dpa-rw"],timezones:["Africa/Kigali"]},SC:{name:"Seychelles",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Seychelles",locales:["fr-SC","en"],compliance:[],timezones:["Indian/Mahe"]},SO:{name:"Somalia",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Somalia",locales:["so-SO"],compliance:[],timezones:["Africa/Mogadishu"]},SS:{name:"South Sudan",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"South Sudan",locales:["en"],compliance:[],timezones:["Africa/Juba"]},ST:{name:"S\xE3o Tom\xE9 and Pr\xEDncipe",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"S\xE3o Tom\xE9 and Pr\xEDncipe",locales:["pt-ST"],compliance:[],timezones:["Africa/Sao_Tome"]},TZ:{name:"Tanzania",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Tanzania",locales:["sw-TZ","en"],compliance:[],timezones:["Africa/Dar_es_Salaam"]},UG:{name:"Uganda",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Uganda (DPA)",locales:["en"],compliance:["dpa-ug"],timezones:["Africa/Kampala"]},AO:{name:"Angola",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Angola",locales:["pt-AO"],compliance:[],timezones:["Africa/Luanda"]},BW:{name:"Botswana",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Botswana (DPA)",locales:["en"],compliance:["dpa-bw"],timezones:["Africa/Gaborone"]},LS:{name:"Lesotho",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Lesotho",locales:["en"],compliance:[],timezones:["Africa/Maseru"]},NA:{name:"Namibia",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Namibia",locales:["en"],compliance:[],timezones:["Africa/Windhoek"]},SZ:{name:"Eswatini",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Eswatini",locales:["en"],compliance:[],timezones:["Africa/Mbabane"]},ZA:{name:"South Africa",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"South Africa (POPIA)",locales:["en","af-ZA"],compliance:["popia"],timezones:["Africa/Johannesburg"]},ZM:{name:"Zambia",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Zambia (DPA)",locales:["en"],compliance:["dpa-zm"],timezones:["Africa/Lusaka"]},ZW:{name:"Zimbabwe",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Zimbabwe (DPA)",locales:["en"],compliance:["dpa-zw"],timezones:["Africa/Harare"]},DZ:{name:"Algeria",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Algeria",locales:["ar-DZ","fr-DZ"],compliance:["dpa-dz"],timezones:["Africa/Algiers"]},EG:{name:"Egypt",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Egypt (DPA)",locales:["ar-EG"],compliance:["dpa-eg"],timezones:["Africa/Cairo"]},LY:{name:"Libya",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Libya",locales:["ar-LY"],compliance:[],timezones:["Africa/Tripoli"]},MA:{name:"Morocco",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Morocco",locales:["ar-MA","fr-MA"],compliance:["dpa-ma"],timezones:["Africa/Casablanca"]},SD:{name:"Sudan",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Sudan",locales:["ar-SD"],compliance:[],timezones:["Africa/Khartoum"]},TN:{name:"Tunisia",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Tunisia (DPA)",locales:["ar-TN","fr-TN"],compliance:["dpa-tn"],timezones:["Africa/Tunis"]},CD:{name:"DR Congo",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"DR Congo",locales:["fr-CD"],compliance:[],timezones:["Africa/Kinshasa","Africa/Lubumbashi"]},CF:{name:"Central African Republic",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Central African Republic",locales:["fr-CF"],compliance:[],timezones:["Africa/Bangui"]},CG:{name:"Republic of Congo",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Republic of Congo",locales:["fr-CG"],compliance:[],timezones:["Africa/Brazzaville"]},TD:{name:"Chad",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Chad",locales:["fr-TD","ar-TD"],compliance:[],timezones:["Africa/Ndjamena"]},BY:{name:"Belarus",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Belarus",locales:["be-BY","ru-BY"],compliance:[],timezones:["Europe/Minsk"]},MD:{name:"Moldova",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Moldova",locales:["ro-MD"],compliance:[],timezones:["Europe/Chisinau"]},RU:{name:"Russia",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Russia",locales:["ru-RU"],compliance:[],timezones:["Europe/Kaliningrad","Europe/Moscow","Europe/Samara","Asia/Yekaterinburg","Asia/Omsk","Asia/Krasnoyarsk","Asia/Irkutsk","Asia/Yakutsk","Asia/Vladivostok","Asia/Magadan","Asia/Kamchatka"]},UA:{name:"Ukraine",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Ukraine",locales:["uk-UA"],compliance:[],timezones:["Europe/Kyiv"]},VA:{name:"Holy See",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Holy See",locales:["it-VA"],compliance:[],timezones:["Europe/Vatican"]},AU:{name:"Australia",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"Australia (Privacy Act)",locales:["en"],compliance:["privacy-au"],timezones:["Australia/Sydney","Australia/Brisbane","Australia/Adelaide","Australia/Darwin","Australia/Perth","Australia/Hobart"]},FJ:{name:"Fiji",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Fiji",locales:["en"],compliance:["privacy-fj"],timezones:["Pacific/Fiji"]},FM:{name:"Micronesia",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Micronesia",locales:["en"],compliance:[],timezones:["Pacific/Chuuk","Pacific/Pohnpei","Pacific/Kosrae"]},KI:{name:"Kiribati",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Kiribati",locales:["en"],compliance:[],timezones:["Pacific/Tarawa","Pacific/Enderbury","Pacific/Kiritimati"]},MH:{name:"Marshall Islands",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Marshall Islands",locales:["en"],compliance:[],timezones:["Pacific/Majuro","Pacific/Kwajalein"]},MP:{name:"Northern Mariana Islands",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Northern Mariana Islands",locales:["en"],compliance:[],timezones:["Pacific/Saipan"]},NC:{name:"New Caledonia",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"New Caledonia",locales:["fr-NC"],compliance:[],timezones:["Pacific/Noumea"]},NF:{name:"Norfolk Island",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Norfolk Island",locales:["en"],compliance:[],timezones:["Pacific/Norfolk"]},NR:{name:"Nauru",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Nauru",locales:["en"],compliance:[],timezones:["Pacific/Nauru"]},NU:{name:"Niue",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Niue",locales:["en"],compliance:[],timezones:["Pacific/Niue"]},NZ:{name:"New Zealand",type:"country",complianceGroup:"general-privacy-consent",default:"general-privacy-consent",description:"New Zealand (Privacy Act)",locales:["en"],compliance:["privacy-nz"],timezones:["Pacific/Auckland","Pacific/Chatham"]},PF:{name:"French Polynesia",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"French Polynesia",locales:["fr-PF"],compliance:[],timezones:["Pacific/Tahiti","Pacific/Marquesas","Pacific/Gambier"]},PG:{name:"Papua New Guinea",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Papua New Guinea",locales:["en"],compliance:["privacy-pg"],timezones:["Pacific/Port_Moresby","Pacific/Bougainville"]},PW:{name:"Palau",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Palau",locales:["en"],compliance:[],timezones:["Pacific/Palau"]},SB:{name:"Solomon Islands",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Solomon Islands",locales:["en"],compliance:[],timezones:["Pacific/Guadalcanal"]},TO:{name:"Tonga",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Tonga",locales:["en"],compliance:[],timezones:["Pacific/Tongatapu"]},TV:{name:"Tuvalu",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Tuvalu",locales:["en"],compliance:[],timezones:["Pacific/Funafuti"]},VU:{name:"Vanuatu",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Vanuatu",locales:["fr-VU","en"],compliance:[],timezones:["Pacific/Efate"]},WS:{name:"Samoa",type:"country",complianceGroup:"notice-only",default:"notice-only",description:"Samoa",locales:["en"],compliance:[],timezones:["Pacific/Apia"]},UK:{name:"United Kingdom",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"United Kingdom (UK GDPR + PECR)",locales:["en"],compliance:["uk-gdpr","pecr"],timezones:["Europe/London"]},CH:{name:"Switzerland",type:"country",complianceGroup:"opt-in",default:"opt-in",description:"Switzerland (revFADP)",locales:["de-CH","fr-CH","it-CH"],compliance:["revfadp"],timezones:["Europe/Zurich"]}}},Xn=Object.entries(z.countries).reduce(function(t,[e,n]){return t[e]=n.name,t},{}),et=Object.values(z.countries).reduce(function(t,e){return e.locales.forEach(n=>{t[n]=e.name}),t},{});var Y="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";function fn(t){return new TextEncoder().encode(t)}function yn(t){let e="";for(let n=0;n<t.length;n+=3){let o=t[n]??0,i=n+1<t.length?t[n+1]??0:0,a=n+2<t.length?t[n+2]??0:0;e+=Y[o>>2],e+=Y[(o&3)<<4|i>>4],n+1<t.length&&(e+=Y[(i&15)<<2|a>>6]),n+2<t.length&&(e+=Y[a&63])}return e}function Me(t){let e={v:2,ts:Math.floor(Date.now()/100),cmpId:t.cmpId,cmpV:t.cmpVersion,cs:t.consentScreen,lang:t.consentLanguage.toUpperCase().slice(0,2),vlV:t.vendorListVersion,pc:t.purposeConsents,vc:t.vendorConsents};return yn(fn(JSON.stringify(e)))}var hn=["ar","he","fa","ur","ps","sd","ug","yi"];function Ie(t,e){if(e==="ltr"||e==="rtl")return e;let n=t.slice(0,2).toLowerCase();return hn.includes(n)?"rtl":"ltr"}var p=()=>typeof window<"u"&&typeof document<"u",H=()=>p()?window:null;var Le=()=>p()&&typeof navigator<"u"?navigator:null;var V=["error"];function de(t){V=t}var w={info:(...t)=>{V.includes("info")&&console.info("[Consenti]",...t)},log:(...t)=>{V.includes("log")&&console.log("[Consenti]",...t)},warn:(...t)=>{V.includes("warning")&&console.warn("[Consenti]",...t)},error:(...t)=>{V.includes("error")&&console.error("[Consenti]",...t)}};function R(t){let e=document.createElement("script");if(t.src){let n=t.src.trim();if(/^javascript:/i.test(n))return w.warn(`${t.warnPrefix}: rejected src with javascript: protocol`),null;e.src=n}t.unsafeInnerHTML&&(e.innerHTML=t.unsafeInnerHTML);for(let[n,o]of Object.entries(t.attributes??{})){if(/^on/i.test(n)){w.warn(`${t.warnPrefix}: rejected attribute "${n}" (inline event handlers are not allowed)`);continue}e.setAttribute(n,o)}return document.head.appendChild(e),e}function Z(t){t?.remove()}var j=class{constructor(e){this.options=e;this.scriptEl=null;this.handler=()=>this.evaluate(),p()&&(e.bind!==!1&&window.addEventListener("consenti:consentSubmitted",this.handler),this.evaluate())}evaluate(){let n=this.options.widget.getConsent()?.[this.options.cookieId]==="granted";n&&!this.scriptEl?this.inject():!n&&this.scriptEl&&this.revoke()}inject(){let e=R({...this.options.src!==void 0?{src:this.options.src}:{},...this.options.unsafeInnerHTML!==void 0?{unsafeInnerHTML:this.options.unsafeInnerHTML}:{},...this.options.attributes!==void 0?{attributes:this.options.attributes}:{},warnPrefix:"ConsentScript"});e&&(this.scriptEl=e,this.options.onLoad?.())}revoke(){Z(this.scriptEl),this.scriptEl=null,this.options.onRevoke?.()}destroy(){p()&&(this.options.bind!==!1&&window.removeEventListener("consenti:consentSubmitted",this.handler),this.revoke())}};var U=class{constructor(e){this.options=e;this.scriptEl=null;this.handler=()=>this.evaluate(),p()&&(e.bind!==!1&&window.addEventListener("consenti:consentSubmitted",this.handler),this.evaluate())}evaluate(){let n=this.options.widget.getProfile()?.preferenceModal.categories[this.options.categoryId]?.cookies??[],o=this.options.widget.getConsent(),i=n.length>0&&n.every(a=>o?.[a]==="granted");i&&!this.scriptEl?this.inject():!i&&this.scriptEl&&this.revoke()}inject(){let e=R({...this.options.src!==void 0?{src:this.options.src}:{},...this.options.unsafeInnerHTML!==void 0?{unsafeInnerHTML:this.options.unsafeInnerHTML}:{},...this.options.attributes!==void 0?{attributes:this.options.attributes}:{},warnPrefix:"CategoryScript"});e&&(this.scriptEl=e,this.options.onLoad?.())}revoke(){Z(this.scriptEl),this.scriptEl=null,this.options.onRevoke?.()}destroy(){p()&&(this.options.bind!==!1&&window.removeEventListener("consenti:consentSubmitted",this.handler),this.revoke())}};var De="data-consenti-consent-script",Te="data-consenti-category-script",vn="data-consenti-bind",ue="data-consenti-scanned";function bn(t){return t.getAttribute(vn)!=="false"}function me(t){if(!p())return[];let e=document.querySelectorAll(`script[type="text/plain"][${De}]:not([${ue}]), script[type="text/plain"][${Te}]:not([${ue}])`),n=[];for(let o of e){o.setAttribute(ue,"");let i=o.getAttribute("src")??void 0,a=i?void 0:o.textContent?.trim()||void 0,r=bn(o),c=o.getAttribute(De),s=o.getAttribute(Te);c?n.push(new j({cookieId:c,widget:t,...i!==void 0?{src:i}:{},...a!==void 0?{unsafeInnerHTML:a}:{},bind:r})):s&&n.push(new U({categoryId:s,widget:t,...i!==void 0?{src:i}:{},...a!==void 0?{unsafeInnerHTML:a}:{},bind:r}))}return n}function k(t,e,n){let o="denied";for(let[i,a]of Object.entries(e)){if(a.purpose!==n)continue;let r=t[i];if(r==="granted")return"granted";r==="objected"&&o==="denied"&&(o="objected")}return o}var Cn=["ad_storage","analytics_storage","ad_user_data","ad_personalization","functionality_storage","personalization_storage","security_storage"];function K(t){let e={};for(let n of Cn){let o=t[n];o==="granted"?e[n]="granted":o==="denied"||o==="objected"?e[n]="denied":e[n]=n==="functionality_storage"||n==="security_storage"?"granted":"denied"}return e.ads_data_redaction=e.ad_storage==="denied"?"true":"false",e.url_passthrough="false",e}function ze(t,e){return{necessary:"granted",functional:k(t,e,"functional"),preferences:k(t,e,"preferences"),analytics:k(t,e,"analytics"),marketing:k(t,e,"marketing")}}function Re(t,e){return{analytics:k(t,e,"analytics"),target:k(t,e,"preferences"),manager:k(t,e,"marketing"),optimizer:k(t,e,"marketing")}}function Be(t,e){return{pixel:k(t,e,"marketing"),api:k(t,e,"marketing"),plugins:k(t,e,"functional"),facebookLogin:k(t,e,"functional")}}function Oe(t,e){return{session:k(t,e,"analytics"),heatmaps:k(t,e,"analytics"),performance:k(t,e,"analytics")}}function Ne(t,e){return{identify:k(t,e,"preferences"),page:k(t,e,"analytics"),track:k(t,e,"analytics"),group:k(t,e,"analytics"),alias:k(t,e,"analytics")}}var ge='.consenti-root{position:relative}.consenti-d-none{display:none !important}:root{--consenti-color-bg: #ffffff;--consenti-color-text: #1a2e4a;--consenti-color-text-muted: #949dab;--consenti-color-primary: #04111f;--consenti-color-primary-text: #ffffff;--consenti-color-secondary: #f0f4f8;--consenti-color-secondary-text: #1a2e4a;--consenti-color-border: #dbe4ee;--consenti-color-secondary-border: #1a2e4a;--consenti-color-overlay: #04111f;--consenti-color-accent: #d32f2f;--consenti-color-accent-text: #ffffff;--consenti-font-family: system-ui, -apple-system, sans-serif;--consenti-font-size-base: 14px;--consenti-font-size-heading: 16px;--consenti-font-weight-heading: 600;--consenti-line-height: 1.5;--consenti-spacing-xs: 5px;--consenti-spacing-sm: 8px;--consenti-spacing-md: 16px;--consenti-spacing-lg: 24px;--consenti-border-radius: 8px;--consenti-border-radius-btn: 0;--consenti-shadow: 0 4px 24px rgba(21, 101, 192, 0.14);--consenti-toggle-bg-on: #43a047;--consenti-toggle-bg-partial: #97c098;--consenti-toggle-bg-off: #9ca3af;--consenti-toggle-knob: #ffffff;--consenti-toggle-width: 52px;--consenti-toggle-height: 28px;--consenti-z-banner: 9999;--consenti-z-overlay: 9998;--consenti-z-modal: 10000}.consenti-root--dark{--consenti-color-bg: #1e2535;--consenti-color-text: #e2e8f0;--consenti-color-text-muted: #a4acb9;--consenti-color-primary: #e2e8f0;--consenti-color-primary-text: #2a3447;--consenti-color-secondary: #2a3447;--consenti-color-secondary-text: #cbd5e1;--consenti-color-border: #374151;--consenti-color-overlay: rgba(0, 0, 0, 0.65);--consenti-shadow: 0 4px 24px rgba(0, 0, 0, 0.4);--consenti-toggle-bg-off: #6b7280}.consenti-overlay{position:fixed;inset:0;background:var(--consenti-color-overlay);z-index:var(--consenti-z-overlay)}.consenti-btn{display:inline-flex;align-items:center;justify-content:center;padding:var(--consenti-spacing-sm) var(--consenti-spacing-md);border:none;border-radius:var(--consenti-border-radius-btn);font-family:var(--consenti-font-family);font-size:var(--consenti-font-size-base);font-weight:500;line-height:1;cursor:pointer;text-decoration:none;transition:opacity .15s ease}.consenti-btn:focus-visible{outline:2px solid var(--consenti-color-primary);outline-offset:2px}.consenti-btn:hover{opacity:.9}.consenti-btn--primary{background:var(--consenti-color-primary);color:var(--consenti-color-primary-text);border:1px solid var(--consenti-color-primary)}.consenti-btn--secondary{background:var(--consenti-color-secondary);color:var(--consenti-color-primary);border:1px solid var(--consenti-color-primary)}.consenti-btn--secondary:hover{background:var(--consenti-color-primary);color:var(--consenti-color-secondary)}.consenti-btn--text{background:rgba(0,0,0,0);color:var(--consenti-color-primary);padding-left:0;padding-right:0;text-decoration:underline;text-underline-offset:4px;border:1px solid rgba(0,0,0,0)}.consenti-btn--accent{background:var(--consenti-color-accent);color:var(--consenti-color-accent-text)}.consenti-btn--action{background:rgba(0,0,0,0);color:var(--consenti-color-text);font-size:20px;line-height:1;border-radius:50%;height:24px;width:24px;font-size:24px;padding:0}.consenti-banner{position:fixed;left:0;right:0;z-index:var(--consenti-z-banner);background:var(--consenti-color-bg);color:var(--consenti-color-text);font-family:var(--consenti-font-family);font-size:var(--consenti-font-size-base);line-height:var(--consenti-line-height);box-shadow:var(--consenti-shadow);padding:var(--consenti-spacing-lg);display:flex;flex-wrap:wrap;align-items:center;gap:var(--consenti-spacing-md)}.consenti-banner--top{top:0;border-bottom:1px solid var(--consenti-color-border)}@media(prefers-reduced-motion: no-preference){.consenti-banner--top{animation:consenti-slide-down .2s ease-out}}.consenti-banner--bottom{bottom:0;border-top:1px solid var(--consenti-color-border)}@media(prefers-reduced-motion: no-preference){.consenti-banner--bottom{animation:consenti-slide-up .2s ease-out}}.consenti-banner--top .consenti-banner__text-container,.consenti-banner--bottom .consenti-banner__text-container{min-width:60vw}.consenti-banner--middle{top:50%;transform:translateY(-50%);left:50%;right:auto;transform:translate(-50%, -50%);width:min(600px,90vw);border-radius:var(--consenti-border-radius);flex-direction:column;align-items:flex-start}.consenti-banner--left-bottom{bottom:var(--consenti-spacing-lg);left:var(--consenti-spacing-lg);right:auto;width:min(400px,90vw);border-radius:var(--consenti-border-radius)}.consenti-banner--right-bottom{bottom:var(--consenti-spacing-lg);right:var(--consenti-spacing-lg);left:auto;width:min(400px,90vw);border-radius:var(--consenti-border-radius)}.consenti-banner__text-container{flex:1}.consenti-banner__text-container a:not(.consenti-banner__link){color:var(--consenti-color-text)}.consenti-banner__text-container a:not(.consenti-banner__link):hover{color:var(--consenti-color-primary)}.consenti-banner__heading{font-size:var(--consenti-font-size-heading);font-weight:var(--consenti-font-weight-heading);margin:0 0 var(--consenti-spacing-sm);width:calc(100% - 56px)}.consenti-banner__text{margin:0}.consenti-banner__links{display:flex;flex-wrap:wrap;gap:var(--consenti-spacing-sm);margin-top:var(--consenti-spacing-sm)}.consenti-banner__link{font-size:.87em;padding:var(--consenti-spacing-xs) var(--consenti-spacing-sm);border-radius:var(--consenti-spacing-xs)}.consenti-banner__controls{position:absolute;top:var(--consenti-spacing-sm);right:var(--consenti-spacing-sm);display:flex;align-items:center;gap:4px}.consenti-banner__buttons{display:flex;flex-wrap:wrap;gap:var(--consenti-spacing-sm);align-items:center;margin-top:var(--consenti-spacing-sm)}.consenti-banner__close{margin-top:-5px}.consenti-banner .consenti__powered-by{bottom:0}@media(max-width: 576px){.consenti-banner{padding:var(--consenti-spacing-md);gap:var(--consenti-spacing-sm)}.consenti-banner--left-bottom,.consenti-banner--right-bottom{left:0;right:0;bottom:0;width:100%;border-radius:0;border-top:1px solid var(--consenti-color-border)}.consenti-banner--middle{width:95vw}.consenti-banner__buttons{width:100%;flex-direction:column;align-items:stretch}.consenti-banner__text-container{min-width:0;width:100%}}@keyframes consenti-slide-up{from{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes consenti-slide-down{from{transform:translateY(-100%)}to{transform:translateY(0)}}.consenti-modal{position:fixed;inset:0;z-index:var(--consenti-z-modal);display:flex;font-family:var(--consenti-font-family);font-size:var(--consenti-font-size-base);color:var(--consenti-color-text);line-height:var(--consenti-line-height)}.consenti-modal--passthrough{pointer-events:none}.consenti-modal--passthrough .consenti-modal__container{pointer-events:auto}.consenti-modal--center{align-items:center;justify-content:center}.consenti-modal--left{align-items:stretch;justify-content:flex-start}.consenti-modal--left .consenti-modal__container{border-radius:0 var(--consenti-border-radius) var(--consenti-border-radius) 0;height:100%;max-height:100vh}.consenti-modal--right{align-items:stretch;justify-content:flex-end}.consenti-modal--right .consenti-modal__container{border-radius:0;height:100%;max-height:100vh}.consenti-modal--fullscreen{align-items:flex-start;justify-content:flex-start}.consenti-modal--fullscreen .consenti-modal__container{width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;border-radius:0;margin:0}.consenti-modal__overlay{position:absolute;inset:0;background:var(--consenti-color-overlay)}.consenti-modal__container{position:relative;z-index:1;background:var(--consenti-color-bg);border-radius:var(--consenti-border-radius);box-shadow:var(--consenti-shadow);width:min(560px,90vw);max-height:85vh;display:flex;flex-direction:column;overflow:hidden}@media(prefers-reduced-motion: no-preference){.consenti-modal__container{animation:consenti-fade-in .15s ease-out}}.consenti-modal__header{display:flex;justify-content:space-between;padding:var(--consenti-spacing-md) var(--consenti-spacing-lg);border-bottom:1px solid var(--consenti-color-border);flex-shrink:0;position:relative;flex-direction:column}.consenti-modal__heading{font-size:var(--consenti-font-size-heading);font-weight:var(--consenti-font-weight-heading);margin:0;flex:1;width:calc(100% - 56px)}.consenti-modal__header-controls{display:flex;align-items:center;gap:6px;flex-shrink:0;position:absolute;inset-inline-end:15px;top:10px}.consenti-modal__close{flex-shrink:0;margin-top:-5px}.consenti-modal__links{display:flex;flex-wrap:wrap;gap:var(--consenti-spacing-sm);margin-top:var(--consenti-spacing-md)}.consenti-modal__link{font-size:.87em;padding:var(--consenti-spacing-xs) var(--consenti-spacing-sm);border-radius:var(--consenti-spacing-xs)}.consenti-modal__subheading{padding-top:var(--consenti-spacing-sm);margin:0;color:var(--consenti-color-text-muted);font-size:13px}.consenti-modal__text{padding:var(--consenti-spacing-sm) 0}.consenti-modal__body{overflow-y:auto;flex:1;padding:var(--consenti-spacing-sm) var(--consenti-spacing-lg);position:relative}.consenti-modal__categories{display:flex;flex-direction:column;gap:var(--consenti-spacing-md);padding:var(--consenti-spacing-md) 0}.consenti-modal__buttons{display:flex;flex-wrap:wrap;gap:var(--consenti-spacing-sm);padding:var(--consenti-spacing-md);border-top:1px solid var(--consenti-color-border);flex-shrink:0}.consenti-modal__receipt-option{padding-top:var(--consenti-spacing-md);border-top:1px solid var(--consenti-color-border);flex-shrink:0}.consenti-modal__receipt-label{display:flex;align-items:center;gap:var(--consenti-spacing-sm);font-size:var(--consenti-font-size-base);cursor:pointer}.consenti-modal__receipt-checkbox{width:16px;height:16px;flex-shrink:0;cursor:pointer;accent-color:var(--consenti-toggle-bg-on)}.consenti-modal__receipt-desc{margin:4px 0 0 0;margin-inline-start:24px;font-size:12px;color:#6b7280}@keyframes consenti-fade-in{from{opacity:0;transform:scale(0.97)}to{opacity:1;transform:scale(1)}}.consenti-category{padding:var(--consenti-spacing-md) 0;border-bottom:1px solid var(--consenti-color-border)}.consenti-category:last-child{border-bottom:none}.consenti-category--mandatory .consenti-category__toggle{opacity:.6;cursor:default}.consenti-category__header{display:flex;align-items:center;justify-content:space-between;gap:var(--consenti-spacing-md);margin-bottom:var(--consenti-spacing-sm)}.consenti-category__heading{font-size:var(--consenti-font-size-heading);font-weight:var(--consenti-font-weight-heading);margin:0}.consenti-category__text{color:var(--consenti-color-text-muted);font-size:13px;margin:0}.consenti-category__text--clamped{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.consenti-category__text-wrap{display:flex;flex-direction:column;align-items:flex-start;gap:4px}.consenti-category__show-more{background:none;border:none;padding:0;color:var(--consenti-color-primary);cursor:pointer;font-size:12px;text-decoration:underline;text-underline-offset:2px}.consenti-category__show-more:hover{opacity:.8}.consenti-category__li-desc{margin-bottom:var(--consenti-spacing-sm);font-size:12px;color:#6b7280;font-style:italic}.consenti-category__toggle{flex-shrink:0;position:relative;width:var(--consenti-toggle-width);height:var(--consenti-toggle-height);border-radius:calc(var(--consenti-toggle-height)/2);background:var(--consenti-toggle-bg-off);border:none;cursor:pointer;transition:background .2s ease;padding:0}.consenti-category__toggle:focus-visible{outline:2px solid var(--consenti-color-primary);outline-offset:2px}.consenti-category__toggle[aria-checked=true]{background:var(--consenti-toggle-bg-on)}.consenti-category__toggle--mandatory{cursor:default}.consenti-category__toggle--partial{background:var(--consenti-toggle-bg-partial, var(--consenti-color-accent, #f59e0b))}.consenti-category__toggle--partial .consenti-category__toggle-icon--check,.consenti-category__toggle--partial .consenti-category__toggle-icon--cross,.consenti-category__toggle--partial .consenti-category__toggle-icon--objected{opacity:0}.consenti-category__toggle--partial.consenti-toggle--li .consenti-category__toggle-icon--objected{opacity:0}.consenti-category__toggle--partial .consenti-category__toggle-knob{transform:translateX(calc((var(--consenti-toggle-width) - var(--consenti-toggle-height)) / 2))}.consenti-category__toggle--partial::after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);width:8px;height:2px;border-radius:1px;background:hsla(0,0%,100%,.9);pointer-events:none;z-index:1}.consenti-category__toggle-icon{position:absolute;top:50%;transform:translateY(-50%);width:10px;height:10px;display:flex;align-items:center;justify-content:center;pointer-events:none;transition:opacity .15s ease;color:hsla(0,0%,100%,.9)}.consenti-category__toggle-icon svg{width:10px;height:10px;overflow:visible}.consenti-category__toggle-icon--check{left:8px;opacity:0}[aria-checked=true] .consenti-category__toggle-icon--check{opacity:1}.consenti-category__toggle-icon--cross{right:8px;opacity:1}[aria-checked=true] .consenti-category__toggle-icon--cross{opacity:0}.consenti-category__toggle-icon--objected{right:8px;opacity:0}.consenti-category__toggle-knob{position:absolute;top:2px;left:2px;width:calc(var(--consenti-toggle-height) - 4px);height:calc(var(--consenti-toggle-height) - 4px);border-radius:50%;background:var(--consenti-toggle-knob);transition:transform .2s ease;display:block}[aria-checked=true] .consenti-category__toggle-knob{transform:translateX(calc(var(--consenti-toggle-width) - var(--consenti-toggle-height)))}.consenti-category__params{display:flex;flex-direction:column;gap:var(--consenti-spacing-xs, 6px);margin-top:var(--consenti-spacing-sm);padding-top:var(--consenti-spacing-sm);border-top:1px dashed var(--consenti-color-border)}.consenti-category__param{display:flex;align-items:center;justify-content:space-between;gap:var(--consenti-spacing-sm)}.consenti-category__param-info{display:flex;flex-direction:column;gap:2px;min-width:0}.consenti-category__param-label{font-size:12px;font-family:var(--consenti-font-family-mono, monospace);color:var(--consenti-color-text);overflow-wrap:anywhere}.consenti-category__param-meta{font-size:11px;color:var(--consenti-color-text-muted)}.consenti-category__param-toggle{flex-shrink:0;position:relative;width:calc(var(--consenti-toggle-width)*.8);height:calc(var(--consenti-toggle-height)*.8);border-radius:calc(var(--consenti-toggle-height)*.4);background:var(--consenti-toggle-bg-off);border:none;cursor:pointer;transition:background .2s ease;padding:0}.consenti-category__param-toggle:focus-visible{outline:2px solid var(--consenti-color-primary);outline-offset:2px}.consenti-category__param-toggle[aria-checked=true]{background:var(--consenti-toggle-bg-on)}.consenti-category__param-toggle--mandatory{cursor:default;opacity:.6}.consenti-category__param-toggle .consenti-category__toggle-icon{width:8px;height:8px}.consenti-category__param-toggle .consenti-category__toggle-icon svg{width:8px;height:8px}.consenti-category__param-toggle .consenti-category__toggle-icon--check{left:6px}.consenti-category__param-toggle .consenti-category__toggle-icon--cross{right:6px}.consenti-category__param-toggle .consenti-category__toggle-icon--objected{right:6px}.consenti-category__param-toggle .consenti-category__toggle-knob{width:calc(var(--consenti-toggle-height)*.8 - 4px);height:calc(var(--consenti-toggle-height)*.8 - 4px)}.consenti-category__param-toggle[aria-checked=true] .consenti-category__toggle-knob{transform:translateX(calc(var(--consenti-toggle-width) * 0.8 - var(--consenti-toggle-height) * 0.8))}.consenti-toggle--li .consenti-category__toggle-icon--cross{opacity:0}.consenti-toggle--li .consenti-category__toggle-icon--objected{opacity:1}.consenti-toggle--li[aria-checked=true] .consenti-category__toggle-icon--objected{opacity:0}[dir=rtl] .consenti-category__toggle-knob{left:auto;right:2px}[dir=rtl] .consenti-category__toggle[aria-checked=true] .consenti-category__toggle-knob{transform:translateX(calc(-1 * (var(--consenti-toggle-width) - var(--consenti-toggle-height))))}[dir=rtl] .consenti-category__toggle--partial .consenti-category__toggle-knob{transform:translateX(calc(-1 * (var(--consenti-toggle-width) - var(--consenti-toggle-height)) / 2))}[dir=rtl] .consenti-category__param-toggle[aria-checked=true] .consenti-category__toggle-knob{transform:translateX(calc(-1 * (var(--consenti-toggle-width) * 0.8 - var(--consenti-toggle-height) * 0.8)))}[dir=rtl] .consenti-category__toggle-icon--check{left:auto;right:8px}[dir=rtl] .consenti-category__toggle-icon--cross,[dir=rtl] .consenti-category__toggle-icon--objected{right:auto;left:8px}[dir=rtl] .consenti-category__param-toggle .consenti-category__toggle-icon--check{left:auto;right:6px}[dir=rtl] .consenti-category__param-toggle .consenti-category__toggle-icon--cross,[dir=rtl] .consenti-category__param-toggle .consenti-category__toggle-icon--objected{right:auto;left:6px}.consenti-locale-switcher{position:relative;display:inline-flex}.consenti-locale-switcher__btn{font-size:1rem;line-height:1;cursor:pointer}.consenti-locale-switcher__list{position:absolute;top:calc(100% + 4px);inset-inline-end:0;z-index:calc(var(--consenti-z-modal) + 1);background:var(--consenti-color-bg);border:1px solid var(--consenti-color-border);border-radius:var(--consenti-border-radius);box-shadow:var(--consenti-shadow);list-style:none;margin:0;padding:4px 0;min-width:80px}.consenti-locale-switcher__list li{display:block}.consenti-locale-switcher__option{display:block;width:100%;padding:6px 12px;text-align:start;font-size:var(--consenti-font-size-base);color:var(--consenti-color-text);background:none;border:none;cursor:pointer}.consenti-locale-switcher__option:hover{background:var(--consenti-color-secondary)}.consenti-locale-switcher__option--active{font-weight:600;color:var(--consenti-color-primary)}.consenti-locale-switcher--modal .consenti-locale-switcher__list{inset-inline-end:0}.consenti-meta-footer{display:flex;flex-wrap:wrap;gap:.75rem;font-size:.7rem;color:var(--consenti-color-text);opacity:.6;border-top:1px solid var(--consenti-color-border);padding-top:.5rem;margin-top:.75rem}.consenti-meta-footer__item{display:inline-flex;align-items:center;gap:.25rem}.consenti-meta-footer__id{font-family:monospace;font-size:.65rem}.consenti-meta-footer__settings{background:none;border:none;padding:0;color:var(--consenti-color-primary);cursor:pointer;font-size:.7rem;text-decoration:underline;text-underline-offset:2px}.consenti-meta-footer__settings:hover{opacity:.8}.consenti--enhanced-a11y .consenti-btn{min-height:44px;min-width:44px}.consenti--enhanced-a11y .consenti-category__toggle{min-width:52px;min-height:28px}.consenti--enhanced-a11y .consenti-category__param-toggle{min-width:44px;min-height:24px}.consenti--enhanced-a11y *:focus-visible{outline:3px solid var(--consenti-color-primary);outline-offset:2px}.consenti-age-gate{position:fixed;inset:0;z-index:var(--consenti-z-modal);margin:auto;width:min(400px,90vw);height:fit-content;background:var(--consenti-color-bg);color:var(--consenti-color-text);border-radius:var(--consenti-border-radius);box-shadow:var(--consenti-shadow);padding:var(--consenti-spacing-lg);font-family:var(--consenti-font-family);font-size:var(--consenti-font-size-base);line-height:var(--consenti-line-height)}.consenti-age-gate__heading{font-size:var(--consenti-font-size-heading);font-weight:var(--consenti-font-weight-heading);margin-bottom:var(--consenti-spacing-sm)}.consenti-age-gate__text{color:var(--consenti-color-text-muted);margin-bottom:var(--consenti-spacing-md)}.consenti-age-gate__buttons{display:flex;gap:var(--consenti-spacing-sm)}.consenti__powered-by{position:absolute;inset-inline-end:var(--consenti-spacing-md);opacity:.3;color:var(--consenti-color-primary);font-size:70%}.consenti-transition-1_2x{transition:transform 300ms ease-in-out}.consenti-transition-1_2x:hover{transform:scale(1.2)}';var Q=class{constructor(){this.channel=null}get isSupported(){return p()&&typeof BroadcastChannel<"u"}connect(e){this.isSupported&&(this.onMessageCallback=e,this.channel=new BroadcastChannel("consenti"),this.channel.onmessage=n=>{n.data?.type&&e(n.data)},this.channel.onmessageerror=()=>{w.warn("BroadcastChannel message error \u2014 ignoring")})}send(e){this.channel?.postMessage(e)}disconnect(){this.channel?.close(),this.channel=null,this.onMessageCallback=void 0}};function He(t){let e={version:t.version,issuedAt:new Date().toISOString(),visitorId:t.visitorId,profileId:t.profileId,locale:t.locale,consent:t.consent};return t.signature&&(e.signature=t.signature),e}function Ve(t){if(typeof window>"u"||typeof document>"u")return;let e=JSON.stringify(t,null,2),n=new Blob([e],{type:"application/json"}),o=URL.createObjectURL(n),i=document.createElement("a");i.href=o,i.download=`consenti-receipt-${t.issuedAt.slice(0,10)}.json`,i.style.display="none",document.body.appendChild(i),i.click(),document.body.removeChild(i),setTimeout(()=>URL.revokeObjectURL(o),1e3)}function E(t){return`${t}_${crypto.randomUUID().replace(/-/g,"")}`}var je="consenti_config";function wn(){if(!p())return{};try{let t=localStorage.getItem(je);return t?JSON.parse(t):{}}catch{return{}}}function _n(t){if(p())try{localStorage.setItem(je,JSON.stringify(t))}catch{}}function Ue(){let t=wn();if(t.visitorId)return t.visitorId;let e=E("visi");return _n({...t,visitorId:e}),e}function Ke(t){if(!p())return null;let e=document.cookie.match(new RegExp(`(?:^|;\\s*)${kn(t)}=([^;]*)`));return e?decodeURIComponent(e[1]??""):null}function fe(t,e,n={}){if(!p())return;let o=n.secure??(typeof window<"u"&&typeof window.location<"u"&&window.location.protocol==="https:"),i=[`${encodeURIComponent(t)}=${encodeURIComponent(e)}`,`Path=${n.path??"/"}`,`SameSite=${n.sameSite??"Lax"}`,n.maxAge!=null?`Max-Age=${n.maxAge}`:"",o?"Secure":"",n.domain?`Domain=${n.domain}`:""];document.cookie=i.filter(Boolean).join("; ")}function $e(t,e={}){fe(t,"",{...e,maxAge:0})}function kn(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function An(t){if(typeof t!="object"||t===null)return!1;let e=t;return typeof e.s=="string"&&typeof e.v=="number"&&typeof e.i=="string"&&typeof e.u=="string"&&typeof e.t=="number"&&(e.g===0||e.g===1)&&typeof e.p=="number"&&typeof e.c=="object"&&e.c!==null&&typeof e.l=="string"}function X(t){return JSON.stringify(t)}function B(t){let e=t.lastIndexOf("::sig:"),n=e!==-1?t.slice(0,e):t;try{let o=JSON.parse(n);return An(o)?o:null}catch{return null}}function ye(t){let e={};for(let[n,o]of Object.entries(t.c))o==="g"?e[n]="granted":o==="o"?e[n]="objected":e[n]="denied";return e}function ee(t){let e={};for(let[n,o]of Object.entries(t))o==="granted"?e[n]="g":o==="objected"?e[n]="o":e[n]="d";return e}var $=class{constructor(e){this.mode=e;e==="localStorage"&&p()&&typeof localStorage>"u"&&(w.warn("localStorage is not available, falling back to cookie storage"),this.mode="cookie")}read(e){return p()?this.mode==="localStorage"?localStorage.getItem(e):Ke(e):null}write(e,n,o={}){p()&&(this.mode==="localStorage"?localStorage.setItem(e,n):fe(e,n,o))}remove(e,n={}){p()&&(this.mode==="localStorage"?localStorage.removeItem(e):$e(e,n))}};function xn(t){return t*24*60*60}var M="consenti_data";function Fe(t="cookie"){let n=new $(t).read(M);return n&&B(n)?.l||null}var he="consenti";function Pn(t){let e=t.split("::");if(e.length<2)return null;let n=e[0]??"",o;if(n.startsWith("t:")){let s=n.slice(2),l=parseInt(s,10);if(!s||isNaN(l))return null;o=new Date(l*1e3).toISOString()}else if(n.startsWith("ConsentTimestamp:")){if(o=n.replace("ConsentTimestamp:",""),!o)return null}else return null;let i=e[1]??"",a=e[2],r={};for(let s of i.split("|")){let l=s.indexOf(":");if(l===-1)return null;let m=s.slice(0,l),d=s.slice(l+1);if(!m||d!=="granted"&&d!=="denied"&&d!=="objected")return null;r[m]=d}let c={timestamp:o,consent:r};return a?.startsWith("sig:")&&(c.signature=a.slice(4)),c}var ne=class{constructor(e,n,o,i){this.profileId=e;this.storageMode=n;this.cookieDomains=o;this.appUserId=i;this.cachedData=null;this.expiryDays=365;this.profileVersion=0;this.storage=new $(n)}setProfileExpiry(e){this.expiryDays=e}setProfileVersion(e){this.profileVersion=e}get cookieName(){return M}read(){let e=this.storage.read(M);if(e){let o=B(e);if(o)return this.cachedData=o,this.toParseConsent(o)}let n=this.migrateLegacyCookie();return n?(this.cachedData=n,this.toParseConsent(n)):null}async readAndVerify(e){let n=this.storage.read(M);if(!n){let s=this.migrateLegacyCookie();return s?(this.cachedData=s,this.toParseConsent(s)):null}let o=n.lastIndexOf("::sig:"),i=o!==-1?n.slice(0,o):n,a=o!==-1?n.slice(o+6):void 0,r=B(n);if(!r)return null;if(a){let{verifyValue:s}=await import("./hmac-UKMRMKN6.mjs");if(!await s(i,a,e))return w.warn("Cookie signature mismatch \u2014 consent cleared and banner will re-appear"),this.delete(),null}this.cachedData=r;let c=this.toParseConsent(r);return a?{...c,signature:a}:c}write(e,n={},o){let i=this.buildCookieData(e,n),a=X(i);o&&(a=`${a}::sig:${o}`),this.storage.write(M,a,this.buildCookieOpts()),this.cachedData=i}async writeAndSign(e,n,o={}){let{signValue:i}=await import("./hmac-UKMRMKN6.mjs"),a=this.buildCookieData(e,o),r=X(a),c=await i(r,n);return this.storage.write(M,`${r}::sig:${c}`,this.buildCookieOpts()),this.cachedData=a,c}delete(){let e=this.buildCookieOpts();this.storage.remove(M,e),this.deleteLegacyCookies(),this.cachedData=null}hasConsent(){return this.cachedData?!0:this.read()!==null}getConsent(){return this.cachedData?ye(this.cachedData):this.read()?.consent??null}getConsentDate(){if(this.cachedData)return new Date(this.cachedData.t*1e3);let e=this.read();return e?new Date(e.timestamp):!1}getConsentId(){if(this.cachedData)return this.cachedData.i;let e=this.storage.read(M);return e?B(e)?.i??null:null}getConsentLocale(){if(this.cachedData)return this.cachedData.l||null;let e=this.storage.read(M);return e&&B(e)?.l||null}setInMemory(e){this.cachedData={s:this.profileId,v:this.profileVersion,i:this.cachedData?.i??E("cons"),t:Math.round(Date.now()/1e3),u:this.appUserId??"",g:0,p:0,c:ee(e),l:this.cachedData?.l??""}}clearInMemory(){this.cachedData=null}toParseConsent(e){return{timestamp:new Date(e.t*1e3).toISOString(),consent:ye(e)}}buildCookieData(e,n={}){return{s:this.profileId,v:this.profileVersion,i:n.consentId??E("cons"),t:Math.round(Date.now()/1e3),u:this.appUserId??"",g:n.gpcDetected?1:0,p:n.source??0,c:ee(e),l:n.locale??""}}migrateLegacyCookie(){if(typeof document>"u")return null;let e=`_${this.profileId}`,n=this.storageMode==="localStorage"?typeof localStorage<"u"?Object.keys(localStorage):[]:document.cookie.split(";").map(o=>o.split("=")[0]?.trim()??"");for(let o of n){if(!o.startsWith(`${he}_`)||!o.endsWith(e))continue;let i=this.storage.read(o);if(!i)continue;let a=Pn(i);if(!a)continue;let r=o.slice(he.length+1,o.length-e.length),c=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(r)?r:"",s={s:this.profileId,v:0,i:E("cons"),t:Math.round(new Date(a.timestamp).getTime()/1e3),u:c,g:0,p:0,c:ee(a.consent),l:""};return this.storage.write(M,X(s),this.buildCookieOpts()),this.storage.remove(o,this.buildCookieOpts()),w.info(`Migrated consent cookie from "${o}" to "${M}"`),s}return null}deleteLegacyCookies(){if(typeof document>"u"||this.storageMode==="localStorage")return;let e=`_${this.profileId}`,n=this.buildCookieOpts();for(let o of document.cookie.split(";")){let i=o.split("=")[0]?.trim()??"";i.startsWith(`${he}_`)&&i.endsWith(e)&&this.storage.remove(i,n)}}buildCookieOpts(){let e={path:"/",sameSite:"Lax",maxAge:xn(this.expiryDays)};if(this.cookieDomains){let n=this.cookieDomains.split(",")[0]?.trim();n&&(e.domain=n)}return e}};var te=class{constructor(e,n){this.profileId=e;this.gtmConfig=n;this.gtmConfig&&this.initConsentMode()}initConsentMode(){if(!p())return;let e=H();if(!e)return;let n=this.gtmConfig,o=n.dataLayer??"dataLayer";Array.isArray(e[o])||(e[o]=[]),typeof e.gtag!="function"&&(e.gtag=((...a)=>{e[o].push(a)}));let i=e.gtag;if(i("consent","default",K({})),n.containerId){let a=o!=="dataLayer"?`&l=${encodeURIComponent(o)}`:"";R({src:`https://www.googletagmanager.com/gtm.js?id=${encodeURIComponent(n.containerId)}${a}`,warnPrefix:"GTM"})}}dispatch(e,n){if(!p())return;let o=new CustomEvent(e,{detail:n,bubbles:!0});window.dispatchEvent(o),this.pushToGTM(e,n)}pushToGTM(e,n){let o=this.gtmConfig;if(!o)return;let i=H();if(!i)return;let a=o.dataLayer??"dataLayer",r=i[a];if(Array.isArray(r)&&(o.verbose&&(!o.events||o.events.length===0||o.events.includes(e))&&r.push({event:e,content:n}),e==="consenti:consentSubmitted")){let c=n.consentJson??{},s=typeof i.gtag=="function"?i.gtag:(...l)=>r.push(l);s("consent","update",K(c)),o.urlPassthrough&&s("set","url_passthrough",!0),o.adsDataRedaction&&s("set","ads_data_redaction",c.ad_storage!=="granted")}}};function qe(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function ve(t,e){if(e===void 0||e===null)return t;if(Array.isArray(t)&&Array.isArray(e)){let n=Math.max(t.length,e.length);return Array.from({length:n},(o,i)=>i>=e.length?t[i]:i>=t.length?e[i]:ve(t[i],e[i]))}if(qe(t)&&qe(e)){let n={...t};for(let o of Object.keys(e)){let i=e[o];if(i===null){delete n[o];continue}n[o]=ve(t[o],i)}return n}return e}function I(t,e){return ve(t,e)}function We(){return{tz:Intl.DateTimeFormat().resolvedOptions().timeZone,lang:navigator.language,langs:Array.from(navigator.languages)}}function Je(t){let e=Intl.DateTimeFormat().resolvedOptions();return btoa(JSON.stringify({timezone:e.timeZone,languages:Array.from(navigator.languages??[]),language:navigator.language??"",locale:t??e.locale??navigator.language??""}))}function Gn(t){return{purpose:t.purpose,...t.listenGpc?{listenGpc:!0}:{},...t.preGrant?{preGrant:!0}:{},...t.cpraCategory?{cpraCategory:t.cpraCategory}:{}}}function Sn(t){let e={};for(let[n,o]of Object.entries(t))e[n]=Gn(o);return e}function En(t){return{text:t.text,style:t.style,action:t.action,...t.cookies!==void 0?{cookies:t.cookies}:{}}}function Ze(t){let e={};for(let[n,o]of Object.entries(t))e[n]=En(o);return e}function Mn(t){return{heading:t.heading,htmlText:t.htmlText,legalBasis:t.legalBasis,...t.legitimateInterestDescription!==void 0?{legitimateInterestDescription:t.legitimateInterestDescription}:{},cookies:t.cookies}}function In(t){let e={};for(let[n,o]of Object.entries(t))e[n]=Mn(o);return e}function Ye(t){return{position:t.position,htmlText:t.htmlText,buttons:Ze(t.buttons),...t.heading?{heading:t.heading}:{},...t.showClose!==void 0?{showClose:t.showClose}:{},...t.showLocaleSwitcher!==void 0?{showLocaleSwitcher:t.showLocaleSwitcher}:{}}}function Ln(t){return{heading:t.heading,htmlText:t.htmlText??"",buttons:Ze(t.buttons),categories:In(t.categories),...t.position?{position:t.position}:{},...t.subheading?{subheading:t.subheading}:{},...t.persistent!==void 0?{persistent:t.persistent}:{}}}function Dn(t,e,n){if(e){if(t[e])return t[e];let o=e.split("-")[0]??"",i=Object.keys(t).find(a=>a===o||a.startsWith(`${o}-`));if(i)return t[i]}return t[n]??Object.values(t)[0]}function Qe(t,e){let n=Dn(t.translations,e,t.defaultLocale);return{id:"0",defaultLocale:t.defaultLocale,locales:Object.keys(t.translations),cookies:Sn(t.cookies),...t.expiryDays?{expiryDays:t.expiryDays}:{},mainBanner:Ye(n.mainBanner),preferenceModal:Ln(n.preferenceModal),gpcMode:t.gpcMode,complianceGroup:t.complianceGroup,...n.gpcBanner?{gpcBanner:Ye(n.gpcBanner)}:{}}}var ke=new Map;function Xe(t,e){ke.set(t,e)}function Tn(t){return ke.get(t)}function zn(t){for(let e of ke.values())if(e.complianceGroup===t)return e}function Ce(t){let e=t.gpcMode,n="ignore";return typeof e=="boolean"?n=e?"honor":"ignore":e&&(n=e),{id:t.id,...t.version!==void 0?{version:t.version}:{},defaultLocale:t.defaultLocale,locales:t.locales,cookies:t.cookies,mainBanner:t.mainBanner,allowReceipt:t.allowReceipt??!1,preferenceModal:t.preferenceModal,...t.expiryDays?{expiryDays:t.expiryDays}:{},...t.gpcBanner?{gpcBanner:t.gpcBanner}:{},...n?{gpcMode:n}:{},...t.darkMode!==void 0?{darkMode:t.darkMode}:{},...t.complianceGroup?{complianceGroup:t.complianceGroup}:{},...t.complianceConfig?{complianceConfig:t.complianceConfig}:{},...t.dpdpa?{dpdpa:t.dpdpa}:{},...t.hidePoweredBy!==void 0?{hidePoweredBy:t.hidePoweredBy}:{},...t.showFooterMetadata!==void 0?{showFooterMetadata:t.showFooterMetadata}:{},...t.enhanceAccessibility!==void 0?{enhanceAccessibility:t.enhanceAccessibility}:{}}}var en="__consenti_resolved_",Rn=3600*1e3;function Bn(t,e,n){if(!n)return null;let o=`${en}${t}_${e}`;try{let i=sessionStorage.getItem(o);if(!i)return null;let a=JSON.parse(i);return Date.now()>a.expiresAt?(sessionStorage.removeItem(o),null):a}catch{return null}}function On(t,e,n,o){if(!n)return;let i=`${en}${t}_${e}`;try{sessionStorage.setItem(i,JSON.stringify({...o,expiresAt:Date.now()+Rn}))}catch{}}function we(t,e){if(e)return!0;let n=t.allowedOrigins;if(!n||n.length===0)return!0;let o=window.location.origin;return n.some(i=>i===o||i==="*")}async function q(t,e){let{DEFAULT_PROFILES:n}=await import("./profiles-OEZAKEWL.mjs"),o=n[t];return o?Qe(o,"en"):null}function nn(t,e){let n=e.core?.usePrebuiltProfiles??"all";return n==="all"?!0:n.includes(t)}var be;function Nn(){if(be)return be;let t=new Map,e=z.countries;for(let[n,o]of Object.entries(e))for(let i of o.timezones??[]){let a=t.get(i)??[];a.push(n),t.set(i,a)}return be=t,t}function Hn(t){let e=t.replace(/_/g,"-").split("-"),n=e.length>=2?e[e.length-1]?.toUpperCase():void 0;return n&&/^[A-Z]{2}$/.test(n)&&n in z.countries?n:void 0}function Vn(t,e){let n=Nn().get(t)??[],o=e.map(Hn).filter(i=>!!i);return n.length===1?n[0]:n.length>1?o.find(i=>n.includes(i))??n[0]:o[0]}function jn(t,e){let n=Vn(t,e),o=z.countries,i=n?o[n]:void 0;if(i?.default)return i.default;let a=t.split("/");return a[0]==="Europe"?"opt-in":a[0]==="America"?"opt-out":"opt-in"}function W(t){let e=t.core?.locale;if(e&&e!=="auto")return e;let n=Fe(t.core?.storage??"cookie");return n||navigator.language}function tn(t){return t.api?.tenantId??t.core?.tenantId??"default"}async function oe(t,e){try{return await le(t,{},e)}catch{return null}}function on(t){let e=t;return{...e.id!==void 0?{id:e.id}:{},...e.defaultLocale!==void 0?{defaultLocale:e.defaultLocale}:{},...e.expiryDays!==void 0?{expiryDays:e.expiryDays}:{},...e.cookies!==void 0?{cookies:e.cookies}:{},...e.mainBanner!==void 0?{mainBanner:e.mainBanner}:{},...e.gpcBanner!==void 0?{gpcBanner:e.gpcBanner}:{},...e.preferenceModal!==void 0?{preferenceModal:e.preferenceModal}:{},...e.darkMode!==void 0?{darkMode:e.darkMode}:{},...e.allowedOrigins!==void 0?{allowedOrigins:e.allowedOrigins}:{},...e.dpdpa!==void 0?{dpdpa:e.dpdpa}:{},...e.complianceGroup!==void 0?{complianceGroup:e.complianceGroup}:{},...e.gpcMode!==void 0?{gpcMode:e.gpcMode}:{},...e.hidePoweredBy!==void 0?{hidePoweredBy:e.hidePoweredBy}:{},...e.allowReceipt!==void 0?{allowReceipt:e.allowReceipt}:{},...e.complianceConfig!==void 0?{complianceConfig:e.complianceConfig}:{},...e.showFooterMetadata!==void 0?{showFooterMetadata:e.showFooterMetadata}:{},...e.enhanceAccessibility!==void 0?{enhanceAccessibility:e.enhanceAccessibility}:{}}}async function an(t,e){let n=zn(t);if(n){if(n.deepMerge){let o=await q(t,e),i=on(n);return o?I(o,i):i}return sn(n,e)}}async function F(t){let{tz:e,lang:n,langs:o}=We(),i=jn(e,o.length?o:[n]),a=W(t),r=await an(i,a);if(r)return r;if(!nn(i,t))throw new Error(`Pre-built profile for complianceGroup "${i}" is disallowed by usePrebuiltProfiles config.`);let c=await q(i,a);if(!c)throw new Error(`No embedded profile found for complianceGroup "${i}".`);return c}async function _e(t,e){let n=W(e),o=await an(t,n);if(o)return o;if(!nn(t,e))throw new Error(`Pre-built profile for complianceGroup "${t}" is disallowed by usePrebuiltProfiles config.`);let i=await q(t,n);if(!i)throw new Error(`No embedded profile found for complianceGroup "${t}".`);return i}async function rn(t){let e=W(t),n=tn(t),o=t.core?.cacheResolvedProfiles!==!1,i=t.api?.baseUrl??window.location.origin,a=t.api?.trustDomain??!1,r=Bn(n,e,o);if(r){let d=await oe(r.filePath,t.api?.authToken);if(d)return we(d,a)?Ce(d):(w.error(`Domain ${window.location.origin} is not in allowedOrigins for this profile. Falling back to pre-built profile.`),F(t))}let c=`${i}/consenti/api/v1/resolve-profile?data=${encodeURIComponent(Je(e))}`,s,l,m;try{let d=await le(c,{},t.api?.authToken);s=d.path,l=d.complianceGroup,m=d.locale,d.found&&s&&On(n,e,o,{filePath:`${i}${s}`,version:0,complianceGroup:l,tenantId:n,locale:m})}catch{return w.warn("resolve-profile failed; falling back to pre-built profile."),F(t)}if(s){let d=await oe(`${i}${s}`,t.api?.authToken);if(d&&we(d,a))return Ce(d)}if(l){let d=await q(l,m);if(d)return d}return F(t)}async function Un(t,e){let n=W(e),o=tn(e),i=e.api?.baseUrl??window.location.origin,a=e.api?.trustDomain??!1,r=e.api?.complianceGroup??t,c=await oe(`${i}/consenti/api/v1/profiles/${o}/${r}/${encodeURIComponent(n)}`,e.api?.authToken)??await oe(`${i}/consenti/api/v1/profiles/${o}/${r}/default`,e.api?.authToken);return c?we(c,a)?Ce(c):(w.error(`Domain ${window.location.origin} is not in allowedOrigins for this profile. Falling back to pre-built profile.`),_e(r,e)):(w.warn(`Could not fetch profile for ${r}; falling back to pre-built.`),_e(r,e))}function sn(t,e,n){let o=t.translations?.[e];if(o===void 0)return e!==t.defaultLocale&&w.warn(`Unable to resolve requested locale "${e}" of profile "${n??t.id}", Using default "${t.defaultLocale}".`),{id:t.id,gpcMode:t.gpcMode??"ignore",allowReceipt:t.allowReceipt??!1,defaultLocale:t.defaultLocale,locales:[t.defaultLocale,...Object.keys(t.translations??{})],cookies:t.cookies??{},...t.expiryDays?{expiryDays:t.expiryDays}:{},mainBanner:t.mainBanner,...t.gpcBanner?{gpcBanner:t.gpcBanner}:{},preferenceModal:t.preferenceModal,...t.darkMode!==void 0?{darkMode:t.darkMode}:{},...t.complianceGroup?{complianceGroup:t.complianceGroup}:{}};let i=I(t.mainBanner,o.mainBanner),a=t.gpcBanner?I(t.gpcBanner,o.gpcBanner??{}):!1,r=I(t.preferenceModal??{},o.preferenceModal??{});return{id:t.id,gpcMode:t.gpcMode??"ignore",allowReceipt:t.allowReceipt??!1,defaultLocale:t.defaultLocale,locales:[t.defaultLocale,...Object.keys(t.translations??{})],cookies:t.cookies??{},...t.expiryDays?{expiryDays:t.expiryDays}:{},mainBanner:i,...a?{gpcBanner:a}:{},preferenceModal:r,...t.darkMode!==void 0?{darkMode:t.darkMode}:{},...t.complianceGroup?{complianceGroup:t.complianceGroup}:{}}}async function Kn(t,e){e.api?.enabled&&w.warn("Local profile used instead of server profile. Check compliance.type config.");let n=W(e),o=Tn(t);if(o){if(o.deepMerge&&o.complianceGroup){let i=await q(o.complianceGroup,n),a=on(o);return i?I(i,a):a}return sn(o,n,t.description)}return w.error(`Unable to resolve locally registered profile "${t.description}", Using compliance.type: 'auto'.`),e.api?.enabled?rn(e):F(e)}async function cn(t){let e=t.compliance?.type??"auto",n=t.api?.enabled??!1;return e==="auto"?n?rn(t):F(t):typeof e=="symbol"?Kn(e,t):n?Un(e,t):_e(e,t)}function T(){let t=Le();return t?"globalPrivacyControl"in t&&t.globalPrivacyControl===!0:!1}function ln(t,e,n,o){if(o==="ignore"||!T())return{...n};let i={...n},a=N(e);for(let[r,c]of Object.entries(t))S(r,a)||c.listenGpc&&(i[r]=pe(r,a)==="legitimate_interest"?"objected":"denied");for(let r of Object.keys(t))S(r,a)&&(i[r]="granted");return i}var pn=4,$n="2.2";function Fn(t,e){let n=new Set,o=new Set;if(t&&e){for(let[i,a]of Object.entries(t.cookies))if(!(e[i]!=="granted"||!a.tcfVendorId)){o.add(a.tcfVendorId);for(let r of a.tcfPurposes??[])n.add(r)}}return{purposeConsents:Array.from(n).sort((i,a)=>i-a),vendorConsents:Array.from(o).sort((i,a)=>i-a)}}function ie(t,e){let n={};for(let o=1;o<=e;o++)n[o]=t.includes(o);return n}function dn(t){if(!p())return;let e=H();if(!e||!t().tcfConfig?.enabled||e.__tcfapi)return;let n=new Map,o=0;function i(l){let{profile:m,consent:d,tcfConfig:y}=t(),f=y??{enabled:!1,cmpId:0,cmpVersion:0},{purposeConsents:u,vendorConsents:v}=Fn(m,d);return{tcString:Me({cmpId:f.cmpId,cmpVersion:f.cmpVersion,consentScreen:1,consentLanguage:"en",vendorListVersion:0,purposeConsents:u,vendorConsents:v}),tcfPolicyVersion:pn,cmpId:f.cmpId,cmpVersion:f.cmpVersion,gdprApplies:!0,eventStatus:d?"tcloaded":"cmpuishown",cmpStatus:"loaded",isServiceSpecific:!0,useNonStandardStacks:!1,publisherCC:"AA",purposeOneTreatment:!1,...l!==void 0?{listenerId:l}:{},purpose:{consents:ie(u,10),legitimateInterests:ie([],10)},vendor:{consents:ie(v,Math.max(0,...v)),legitimateInterests:ie([],0)}}}function a(){for(let[l,m]of n)m(i(l),!0)}function r(l,m,d,y){switch(l){case"ping":{let{consent:f,tcfConfig:u}=t();d({gdprApplies:!0,cmpLoaded:!0,cmpStatus:"loaded",displayStatus:f?"hidden":"visible",apiVersion:$n,cmpVersion:u?.cmpVersion??0,cmpId:u?.cmpId??0,gvlVersion:0,tcfPolicyVersion:pn},!0);return}case"getTCData":d(i(),!0);return;case"addEventListener":{let f=++o;n.set(f,d),d(i(f),!0);return}case"removeEventListener":{let f=typeof y=="number"?y:void 0,u=f!==void 0&&n.delete(f);d(u,u);return}}}let c=e.__tcfapi?.a??[],s=((l,m,d,y)=>{r(l,m,d,y)});s.a=[],e.__tcfapi=s,window.addEventListener("consenti:consentSubmitted",a);for(let[l,m,d,y]of c)r(l,m,d,y)}function ae(t,e,n){let o=document.createElement("button");return o.type="button",t&&(o.id=t),o.className=`consenti-btn consenti-btn--${e.style}`,o.textContent=e.text,o.addEventListener("click",()=>{switch(e.action){case"custom":{let i=e.cookies;i==="*"?n.onGrantAll():i==="!"?n.onDenyAll():Array.isArray(i)&&i.length>0&&n.onGrantSpecific(i);break}case"submit":n.onSubmit();break;case"manage":n.onManage();break;case"close":n.onClose();break}}),o}function O(t,e){let n=document.createElement("div");return n.className="consenti-overlay",n.style.opacity=String(t/100),n.setAttribute("aria-hidden","true"),e&&n.addEventListener("click",e),n}var re=class{constructor(){this.el=null;this.overlayEl=null}build(e,n,o,i,a,r,c=!0,s="main"){let l=document.createElement("div");l.id="consenti-banner",l.className=`consenti-banner consenti-banner--${s} consenti-banner--${e.position}`,l.setAttribute("role","region"),l.setAttribute("aria-label","Cookie consent"),l.setAttribute("aria-live","polite");let m=document.createElement("div");m.className="consenti-banner__text-container";let d=document.createElement("div");if(d.className="consenti-banner__links",e.heading){let g=e.headingTag??"div",b=document.createElement(g);b.id="consenti-banner-heading",b.className="consenti-banner__heading",b.textContent=e.heading,m.appendChild(b)}let y=document.createElement("div");if(y.className="consenti-banner__text",y.innerHTML=e.htmlText,o){let g=document.createElement("a");g.href=o,g.className="consenti-banner__link consenti-banner__link--privacy consenti-btn consenti-btn--text",g.textContent="Privacy Policy",g.setAttribute("target","_blank"),g.setAttribute("rel","noopener noreferrer"),d.appendChild(g)}m.appendChild(y);let f=Object.entries(e.buttons),u=f.filter(g=>g[1].action==="link");if(u.length>0)for(let[,g]of u){if(!g.url)continue;let b=document.createElement("a");b.href=g.url,b.className=`consenti-banner__link consenti-btn consenti-btn--${g.style??"text"}`,b.textContent=g.text,b.setAttribute("target","_blank"),b.setAttribute("rel","noopener noreferrer"),d.appendChild(b)}(u.length>0||o)&&m.appendChild(d),l.appendChild(m);let v=f.filter(([,g])=>g.action!=="link");if(v.length>0){let g=document.createElement("div");g.className="consenti-banner__buttons";for(let[b,x]of v)g.appendChild(ae(b,x,n));l.appendChild(g)}let _=e.showClose,A=e.showLocaleSwitcher&&i&&i.length>0;if(_||A){let g=document.createElement("div");if(g.className="consenti-banner__controls",A&&i&&r&&g.appendChild(qn(i,a,r)),_){let b=document.createElement("button");b.type="button",b.className="consenti-banner__close consenti-btn consenti-transition-1_2x consenti-btn--action",b.setAttribute("aria-label","Close cookie banner"),b.textContent="\xD7",b.addEventListener("click",n.onClose),g.appendChild(b)}l.appendChild(g)}e.overlayOpacity&&e.overlayOpacity>0&&(this.overlayEl=O(e.overlayOpacity));let G=document.createElement("a");return G.href="https://consenti.dev/?utm_source=widget&utm_medium=powered-by&utm_campaign=consenti-ui",G.className="consenti__powered-by",G.textContent="Powered by Consenti \u2197",G.setAttribute("target","_blank"),G.setAttribute("rel","noopener noreferrer"),c&&G.classList.add("consenti-d-none"),l.appendChild(G),this.el=l,l}getOverlay(){return this.overlayEl}show(){this.el&&(this.el.style.display=""),this.overlayEl&&(this.overlayEl.style.display="")}hide(){this.el&&(this.el.style.display="none"),this.overlayEl&&(this.overlayEl.style.display="none")}remove(){this.el?.remove(),this.overlayEl?.remove(),this.el=null,this.overlayEl=null}};function qn(t,e,n){let o=document.createElement("div");o.className="consenti-locale-switcher";let i=document.createElement("button");i.type="button",i.className="consenti-locale-switcher__btn consenti-btn consenti-transition-1_2x consenti-btn--action",i.setAttribute("aria-label","Switch language"),i.setAttribute("aria-haspopup","listbox"),i.textContent="\u{1F310}";let a=document.createElement("ul");a.className="consenti-locale-switcher__list",a.setAttribute("role","listbox"),a.setAttribute("aria-label","Select language"),a.hidden=!0;for(let r of t){let c=document.createElement("li");c.setAttribute("role","option"),c.setAttribute("aria-selected",String(r===e));let s=document.createElement("button");s.type="button",s.className=`consenti-locale-switcher__option${r===e?" consenti-locale-switcher__option--active":""}`,s.textContent=r,s.addEventListener("click",l=>{l.stopPropagation(),a.hidden=!0,r!==e&&n(r)}),c.appendChild(s),a.appendChild(c)}return i.addEventListener("click",r=>{r.stopPropagation(),a.hidden=!a.hidden}),document.addEventListener("click",()=>{a.hidden=!0},{capture:!0,once:!1}),o.appendChild(i),o.appendChild(a),o}var Wn=["a[href]","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])",'[tabindex]:not([tabindex="-1"])','[contenteditable="true"]'].join(", ");function un(t){let e=()=>Array.from(t.querySelectorAll(Wn)).filter(i=>!i.closest('[aria-hidden="true"]')),n=i=>{if(i.key!=="Tab")return;let a=e();if(a.length===0)return;let r=a[0],c=a[a.length-1];i.shiftKey?(document.activeElement===r||document.activeElement===t)&&(i.preventDefault(),c.focus()):document.activeElement===c&&(i.preventDefault(),r.focus())},o=i=>{i.key==="Escape"&&t.dispatchEvent(new CustomEvent("consenti:closeRequest",{bubbles:!0}))};return document.addEventListener("keydown",n),document.addEventListener("keydown",o),e()[0]?.focus(),()=>{document.removeEventListener("keydown",n),document.removeEventListener("keydown",o)}}var se=class t{constructor(){this.el=null;this.triggerEl=null;this.trapCleanup=null;this.toggleState=new Map;this.paramToggles=new Map;this.categoryToggles=new Map;this.categoryDisclosures=new Map;this.receiptCheckbox=null;this.passthrough=!1;this.mobileBreakpoint=576;this.savedBodyOverflow=void 0}build(e,n,o,i,a,r,c,s,l,m=!0){this.mobileBreakpoint=e.mobileFullScreenBreakpoint??576;let d=e.position??"center",y=document.createElement("div");y.id="consenti-modal",y.className=`consenti-modal consenti-modal--${d}`,y.setAttribute("role","dialog"),y.setAttribute("aria-modal","true");let f=e.overlayOpacity??50;if(this.passthrough=f===0,f>0){let h=e.persistent?void 0:()=>i.onClose(),C=O(f,h);C.className="consenti-modal__overlay",y.appendChild(C)}else y.classList.add("consenti-modal--passthrough");let u=document.createElement("div");u.className="consenti-modal__container";let v=document.createElement("div");v.className="consenti-modal__header";let _=document.createElement("div");if(_.className="consenti-modal__body",e.heading){let h=e.headingTag??"div",C=document.createElement(h);C.id="consenti-modal-heading",C.className="consenti-modal__heading",C.textContent=e.heading,v.appendChild(C),y.setAttribute("aria-labelledby","consenti-modal-heading")}if(e.subheading){let h=document.createElement("p");h.className="consenti-modal__subheading",h.textContent=e.subheading,v.appendChild(h)}let A=e.showClose!==!1,G=e.showLocaleSwitcher&&c&&c.length>0;if(G||A){let h=document.createElement("div");if(h.className="consenti-modal__header-controls",G&&c&&l&&h.appendChild(Jn(c,s,l)),A){let C=document.createElement("button");C.type="button",C.className="consenti-modal__close consenti-transition-1_2x consenti-btn consenti-btn--action",C.setAttribute("aria-label","Close preference modal"),C.textContent="\xD7",C.addEventListener("click",i.onClose),h.appendChild(C)}v.appendChild(h)}if(u.appendChild(v),e.htmlText){let h=document.createElement("div");h.className="consenti-modal__text",h.innerHTML=e.htmlText,_.appendChild(h)}let g=Object.entries(e.buttons),b=g.filter(h=>h[1].action==="link");if(b.length>0){let h=document.createElement("div");h.className="consenti-modal__links";for(let[,C]of b){if(!C.url)continue;let P=document.createElement("a");P.href=C.url,P.className=`consenti-modal__link consenti-btn consenti-btn--${C.style??"text"}`,P.textContent=C.text,P.setAttribute("target","_blank"),P.setAttribute("rel","noopener noreferrer"),h.appendChild(P)}v.appendChild(h)}let x=document.createElement("div");x.className="consenti-modal__categories";for(let[h,C]of Object.entries(e.categories)){let P=this.buildCategory(h,C,n,o);x.appendChild(P)}if(_.appendChild(x),u.appendChild(_),a&&_.appendChild(this.buildReceiptOption(e.receiptLabel,e.receiptDescription)),r){let h=document.createElement("div");h.className="consenti-modal__dpdpa-notice";let C=gn=>gn.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;"),P=r.grievanceEmail.includes("@")&&!r.grievanceEmail.toLowerCase().startsWith("javascript:")?r.grievanceEmail:"";h.innerHTML=[`<strong>Data Fiduciary:</strong> ${C(r.dataFiduciary)}.`,r.purposeDescription?` <strong>Purpose:</strong> ${C(r.purposeDescription)}.`:""," You may withdraw consent at any time or contact our Grievance Officer at",P?` <a href="mailto:${C(P)}">${C(P)}</a>.`:"."].join(""),u.appendChild(h)}let L=document.createElement("div");L.className="consenti-modal__buttons";for(let[h,C]of g.filter(([,P])=>P.action!=="link"))L.appendChild(ae(h,C,i));u.appendChild(L);let D=document.createElement("a");D.href="https://consenti.dev/?utm_source=widget&utm_medium=powered-by&utm_campaign=consenti-ui",D.className="consenti__powered-by",D.textContent="Powered by Consenti \u2197",D.setAttribute("target","_blank"),D.setAttribute("rel","noopener noreferrer"),m&&D.classList.add("consenti-d-none"),_.appendChild(D),y.appendChild(u),y.addEventListener("consenti:closeRequest",()=>i.onClose()),this.el=y}static appendToggleIcons(e,n){n&&e.classList.add("consenti-toggle--li");let o=document.createElement("span");o.className="consenti-category__toggle-icon consenti-category__toggle-icon--check",o.setAttribute("aria-hidden","true"),o.innerHTML='<svg viewBox="0 0 10 10" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.5 5L4 7.5L8.5 2.5" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>',e.appendChild(o);let i=document.createElement("span");if(i.className="consenti-category__toggle-icon consenti-category__toggle-icon--cross",i.setAttribute("aria-hidden","true"),i.innerHTML='<svg viewBox="0 0 10 10" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M2 2L8 8M8 2L2 8" stroke="currentColor" stroke-width="2" stroke-linecap="round"/></svg>',e.appendChild(i),n){let r=document.createElement("span");r.className="consenti-category__toggle-icon consenti-category__toggle-icon--objected",r.setAttribute("aria-hidden","true"),r.innerHTML='<svg viewBox="0 0 10 10" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="5" cy="5" r="3.5" stroke="currentColor" stroke-width="1.4"/><path d="M2.5 2.5L7.5 7.5" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"/></svg>',e.appendChild(r)}let a=document.createElement("span");a.className="consenti-category__toggle-knob",a.setAttribute("aria-hidden","true"),e.appendChild(a)}computeRollup(e,n){let o=n?"objected":"denied",i=e.map(a=>this.toggleState.get(a));return i.every(a=>a==="granted")?"allowed":i.every(a=>a===o||a===void 0)?"denied":"mixed"}updateCategoryToggleVisual(e){let n=this.categoryToggles.get(e);if(!n)return;let o=this.computeRollup(n.cookieIds,n.isLI),i=o==="allowed"?"true":o==="denied"?"false":"mixed";n.el.setAttribute("aria-checked",i),n.el.classList.toggle("consenti-category__toggle--partial",o==="mixed")}buildParamRow(e,n,o,i,a){let r=document.createElement("div");r.className="consenti-category__param";let c=document.createElement("div");c.className="consenti-category__param-info";let s=document.createElement("span");s.className="consenti-category__param-label",s.textContent=n,c.appendChild(s);let l=document.createElement("span");l.className="consenti-category__param-meta";let m=[];o?.purpose&&m.push(o.purpose),o?.cpraCategory&&m.push(`CPRA: ${o.cpraCategory}`),o?.tcfVendorId!=null&&m.push(`TCF Vendor #${o.tcfVendorId}`),l.textContent=m.join(" \xB7 "),m.length&&c.appendChild(l),r.appendChild(c);let d=a?"objected":"denied",f=(this.toggleState.get(n)??d)==="granted",u=document.createElement("button");return u.type="button",u.className=`consenti-category__param-toggle${i?" consenti-category__param-toggle--mandatory":""}`,u.setAttribute("role","switch"),u.setAttribute("aria-checked",String(f)),u.setAttribute("aria-label",n),i&&(u.setAttribute("aria-disabled","true"),u.disabled=!0),t.appendToggleIcons(u,a),i||u.addEventListener("click",()=>{let v=this.toggleState.get(n)==="granted"?d:"granted";this.toggleState.set(n,v),u.setAttribute("aria-checked",String(v==="granted")),this.updateCategoryToggleVisual(e)}),this.paramToggles.set(n,u),r.appendChild(u),r}buildCategory(e,n,o,i){let a=n.legalBasis==="legitimate_interest",r=n.legalBasis==="mandatory",c=a?"objected":"denied";for(let g of n.cookies){let b=i[g],x;b!==void 0?x=b:r||a?x="granted":x=o[g]?.preGrant?"granted":"denied",this.toggleState.set(g,x)}let s=document.createElement("div");s.className=`consenti-category${r?" consenti-category--mandatory":""}`;let l=document.createElement("div");l.className="consenti-category__header";let m=n.headingTag??"div",d=document.createElement(m);d.id=`consenti-cat-${e}-heading`,d.className="consenti-category__heading",d.textContent=n.heading,l.appendChild(d);let y=this.computeRollup(n.cookies,a),f=document.createElement("button");if(f.type="button",f.className=`consenti-category__toggle${r?" consenti-category__toggle--mandatory":""}${y==="mixed"?" consenti-category__toggle--partial":""}`,f.setAttribute("role","checkbox"),f.setAttribute("aria-checked",y==="allowed"?"true":y==="denied"?"false":"mixed"),f.setAttribute("aria-labelledby",`consenti-cat-${e}-heading`),r&&(f.setAttribute("aria-disabled","true"),f.disabled=!0),t.appendToggleIcons(f,a),this.categoryToggles.set(e,{el:f,cookieIds:n.cookies,isLI:a}),r||f.addEventListener("click",()=>{let b=this.computeRollup(n.cookies,a)==="allowed"?c:"granted";for(let x of n.cookies){this.toggleState.set(x,b);let L=this.paramToggles.get(x);L&&!L.disabled&&L.setAttribute("aria-checked",String(b==="granted"))}this.updateCategoryToggleVisual(e)}),l.appendChild(f),s.appendChild(l),a&&n.legitimateInterestDescription){let g=document.createElement("p");g.className="consenti-category__li-desc",g.textContent=n.legitimateInterestDescription,s.appendChild(g)}let u=document.createElement("div");u.className="consenti-category__text-wrap";let v=document.createElement("div");v.className="consenti-category__text consenti-category__text--clamped",v.innerHTML=n.htmlText,u.appendChild(v);let _=document.createElement("button");_.type="button",_.className="consenti-category__show-more consenti-d-none",_.setAttribute("aria-expanded","false"),_.textContent="Show more",u.appendChild(_),s.appendChild(u);let A=document.createElement("div");A.className="consenti-category__params";for(let g of n.cookies)A.appendChild(this.buildParamRow(e,g,o[g],r,a));let G=n.cookies.length>1;return A.classList.add("consenti-d-none"),s.appendChild(A),_.addEventListener("click",()=>{let g=!v.classList.toggle("consenti-category__text--clamped");G&&A.classList.toggle("consenti-d-none",!g),_.setAttribute("aria-expanded",String(g)),_.textContent=g?"Show less":"Show more"}),this.categoryDisclosures.set(e,{text:v,toggle:_,params:G?A:null}),s}buildReceiptOption(e,n){let o=document.createElement("div");o.className="consenti-modal__receipt-option";let i=document.createElement("label");i.className="consenti-modal__receipt-label";let a=document.createElement("input");a.type="checkbox",a.className="consenti-modal__receipt-checkbox",a.id="consenti-receipt-checkbox",a.setAttribute("aria-describedby","consenti-receipt-desc"),this.receiptCheckbox=a,i.appendChild(a),i.append(" "+(e??"Get a copy of my consent choices (JSON)")),o.appendChild(i);let r=document.createElement("p");return r.id="consenti-receipt-desc",r.className="consenti-modal__receipt-desc",r.textContent=n??"A JSON file will be downloaded to your device when you save your preferences.",o.appendChild(r),o}open(e,n){if(!this.el)return;this.triggerEl=e??document.activeElement,this.receiptCheckbox&&(this.receiptCheckbox.checked=!1);let o=this.mobileBreakpoint>0&&window.innerWidth<=this.mobileBreakpoint;o?this.el.classList.add("consenti-modal--fullscreen"):this.el.classList.remove("consenti-modal--fullscreen"),(n??document.body).appendChild(this.el),(!this.passthrough||o)&&(this.savedBodyOverflow=document.body.style.overflow,document.body.style.overflow="hidden"),this.passthrough||(this.trapCleanup=un(this.el)),this.resetCategoryDisclosures()}resetCategoryDisclosures(){for(let{text:e,toggle:n,params:o}of this.categoryDisclosures.values()){e.classList.add("consenti-category__text--clamped"),o?.classList.add("consenti-d-none"),n.setAttribute("aria-expanded","false"),n.textContent="Show more";let i=e.scrollHeight>e.clientHeight+1;n.classList.toggle("consenti-d-none",!(i||o!==null))}}close(){this.trapCleanup?.(),this.trapCleanup=null,this.savedBodyOverflow!==void 0&&(document.body.style.overflow=this.savedBodyOverflow,this.savedBodyOverflow=void 0),this.el?.remove(),this.triggerEl?.focus(),this.triggerEl=null}isOpen(){return this.el?.isConnected===!0}isReceiptRequested(){return this.receiptCheckbox?.checked??!1}getToggleConsent(e){let n={};for(let o of Object.values(e)){let i=o.legalBasis==="legitimate_interest",a=o.legalBasis==="mandatory",r=a?"granted":i?"objected":"denied";for(let c of o.cookies)n[c]=a?"granted":this.toggleState.get(c)??r}return n}destroy(){this.trapCleanup?.(),this.savedBodyOverflow!==void 0&&(document.body.style.overflow=this.savedBodyOverflow,this.savedBodyOverflow=void 0),this.el?.remove(),this.el=null,this.paramToggles.clear(),this.categoryToggles.clear(),this.categoryDisclosures.clear(),this.toggleState.clear(),this.receiptCheckbox=null}};function Jn(t,e,n){let o=document.createElement("div");o.className="consenti-locale-switcher consenti-locale-switcher--modal";let i=document.createElement("button");i.type="button",i.className="consenti-locale-switcher__btn consenti-btn consenti-btn--action consenti-transition-1_2x",i.setAttribute("aria-label","Switch language"),i.setAttribute("aria-haspopup","listbox"),i.textContent="\u{1F310}";let a=document.createElement("ul");a.className="consenti-locale-switcher__list",a.setAttribute("role","listbox"),a.setAttribute("aria-label","Select language"),a.hidden=!0;for(let r of t){let c=document.createElement("li");c.setAttribute("role","option"),c.setAttribute("aria-selected",String(r===e));let s=document.createElement("button");s.type="button",s.className=`consenti-locale-switcher__option${r===e?" consenti-locale-switcher__option--active":""}`,s.textContent=r,s.addEventListener("click",l=>{l.stopPropagation(),a.hidden=!0,r!==e&&n(r)}),c.appendChild(s),a.appendChild(c)}return i.addEventListener("click",r=>{r.stopPropagation(),a.hidden=!a.hidden}),document.addEventListener("click",()=>{a.hidden=!0},{capture:!0,once:!1}),o.appendChild(i),o.appendChild(a),o}var J=class{constructor(){this.el=null;this.overlayEl=null}buildPrompt(e,n,o){let i=document.createElement("div");i.id="consenti-age-gate",i.className="consenti-age-gate",i.setAttribute("role","dialog"),i.setAttribute("aria-modal","true"),i.setAttribute("aria-label","Age verification");let a=document.createElement("div");a.className="consenti-age-gate__heading",a.textContent=`Are you ${e} or older?`,i.appendChild(a);let r=document.createElement("div");r.className="consenti-age-gate__text",r.textContent="Please confirm your age before we show you cookie preferences.",i.appendChild(r);let c=document.createElement("div");c.className="consenti-age-gate__buttons";let s=document.createElement("button");s.type="button",s.className="consenti-btn consenti-btn--primary",s.textContent="Yes",s.addEventListener("click",n),c.appendChild(s);let l=document.createElement("button");return l.type="button",l.className="consenti-btn consenti-btn--secondary",l.textContent="No",l.addEventListener("click",o),c.appendChild(l),i.appendChild(c),this.overlayEl=O(60),this.el=i,i}buildParentalConsentMessage(e){let n=document.createElement("div");n.id="consenti-age-gate",n.className="consenti-age-gate",n.setAttribute("role","dialog"),n.setAttribute("aria-modal","true"),n.setAttribute("aria-label","Parental consent required");let o=document.createElement("div");o.className="consenti-age-gate__heading",o.textContent="Parental consent required",n.appendChild(o);let i=document.createElement("div");i.className="consenti-age-gate__text",i.textContent="Only strictly necessary cookies will be used until a parent or guardian verifies consent on your behalf.",n.appendChild(i);let a=document.createElement("div");a.className="consenti-age-gate__buttons";let r=document.createElement("button");return r.type="button",r.className="consenti-btn consenti-btn--primary",r.textContent="OK",r.addEventListener("click",e),a.appendChild(r),n.appendChild(a),this.el=n,n}getOverlay(){return this.overlayEl}remove(){this.el?.remove(),this.overlayEl?.remove(),this.el=null,this.overlayEl=null}};var mn="consenti-root",ce=class{constructor(){this.root=null;this.styleEl=null}mount(e){if(!p())throw new Error("[Consenti] Renderer.mount() called in SSR context");if(this.root)return this.root;if(e!==void 0){if(typeof e=="string"){let o=document.querySelector(e);if(!o)throw new Error(`[Consenti] rootEl selector "${e}" did not match any element.`);this.root=o}else{if(!document.contains(e))throw new Error("[Consenti] rootEl element is not attached to the document.");this.root=e}return this.root.classList.add("consenti-root"),this.root}let n=document.getElementById(mn);return n||(n=document.createElement("div"),n.id=mn,document.body.appendChild(n)),n.classList.add("consenti-root"),this.root=n,n}injectStyles(e){if(!p()||this.styleEl)return;let n=document.createElement("style");n.id="consenti-styles",n.textContent=e,document.head.appendChild(n),this.styleEl=n}unmount(){this.root?.remove(),this.styleEl?.remove(),this.root=null,this.styleEl=null}announceToScreenReader(e){if(!p())return;let n=document.getElementById("consenti-announcer");n||(n=document.createElement("div"),n.id="consenti-announcer",n.setAttribute("role","status"),n.setAttribute("aria-live","polite"),n.setAttribute("aria-atomic","true"),n.style.cssText="position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;",document.body.appendChild(n)),n.textContent="",requestAnimationFrame(()=>{n&&(n.textContent=e)})}};var Ae=class{constructor(e){this.initialized=!1;this.initializing=!1;this.profile=null;this.resolvedBase=null;this.categoryIndex=new Map;this.scannedScripts=[];this.consentStore=null;this.eventBus=null;this.banner=null;this.modal=null;this.ageGate=null;this.renderer=null;this._ageVerified=void 0;this._parentalConsentToken=void 0;this.broadcastChannel=new Q;this.plugins=[];this._bannerVariant=null;this._bannerMounted=null;this._focusTrapListener=null;this._eventHandlers=new Map;this.config={...e,core:e.core??{}},this.readyPromise=new Promise(n=>{this.readyResolve=n}),p()&&(e.verbose?de(["error","info","warning","log"]):de(this.config.core.console??["error"]),e.api?.enabled&&this.config.core.storage==="localStorage"&&(w.warn("localStorage storage mode cannot be used with API mode (API sets cookies via Set-Cookie header). Falling back to cookie storage."),this.config.core.storage="cookie"),e.autoInit!==!1&&this.init().catch(n=>w.warn("Init error:",n)))}visitorId(){return Ue()}profileId(){return this.profile?.id??"0"}async init(){if(p()&&!this.initializing){this.initializing=!0,this.initialized=!1,this.readyPromise=new Promise(e=>{this.readyResolve=e});try{let e=this.config.core.storage??"cookie",n=await cn(this.config);this.resolvedBase=n,this.config.darkMode!==void 0&&(n.darkMode=this.config.darkMode);let o=this.config.profileOverride?I(n,this.config.profileOverride):n,i=T();o.gpcMode=o.gpcMode??"ignore",this.profile=o,this.categoryIndex=N(o.preferenceModal.categories),this.eventBus=new te(this.profileId(),this.config.utils?.gtm),this.consentStore=new ne(this.profileId(),e,this.config.core.cookieDomains,this.config.core.userId),this.consentStore.setProfileExpiry(o.expiryDays??365),this.consentStore.setProfileVersion(o.version??0),dn(()=>({profile:this.profile,consent:this.getConsent(),tcfConfig:this.config.compliance?.tcf})),this.renderer=new ce,!this.config.core.disableCssTemplate&&ge&&this.renderer.injectStyles(ge),this.banner=new re,this.modal=new se,this.applyTheme(),this.applyDarkMode(),this.applyDirection(),this.applyAccessibility(),this.applyStackButtonsBreakpoint(),this.broadcastChannel.connect(l=>this.handleBroadcastMessage(l)),await this.runPlugins();let a=o.cookieSigningKey??this.config.core.cookieSigningKey,c=(a?await this.consentStore.readAndVerify(a):this.consentStore.read())!==null,s=this.config.compliance?.ageGate;if(s?.enabled&&!c){this.showAgeGate(s,o);return}await this.continueInit(o,i,c)}finally{this.initializing=!1}}}async continueInit(e,n,o){if(!this.consentStore||!this.eventBus)return;if(this.eventBus.dispatch("consenti:bannerInitialized",{profileId:this.profileId(),hasExistingConsent:o,complianceGroup:e.complianceGroup??"auto",gpcDetected:n,willShow:!o&&!(n&&e.gpcMode==="strict")}),e.gpcMode!=="ignore"&&n){let c=ln(e.cookies,e.preferenceModal.categories,{},e.gpcMode);if(e.gpcMode==="strict"){await this.submitConsent(c,!0),this.finishInit();return}if(!o){let s=e.cookieSigningKey??this.config.core.cookieSigningKey,l={gpcDetected:!0,locale:this.config.core.locale??"en"};s?this.lastSignature=await this.consentStore.writeAndSign(c,s,l):this.consentStore.write(c,l),this.broadcastChannel.send({type:"consentUpdated",consent:c,profileId:this.profileId()}),this.eventBus.dispatch("consenti:consentSubmitted",{consentJson:c,gpcDetected:!0,consentId:E("cons"),consentAction:this.deriveAction(c,!1),pageUrl:window.location.href,visitorId:this.visitorId(),timestamp:Math.round(Date.now()/1e3),profileId:this.profileId()}),this.showBanner(!0),this.finishInit();return}}let i=e.complianceGroup??"",a=i==="opt-out",r=i==="opt-out-strict";if(this.getRootElement()?.setAttribute("data-consenti-cg",i),this.config.verbose&&this.getRootElement()?.setAttribute("data-consenti-gpc",e.gpcMode??""),a&&!o){let c={};for(let m of Object.keys(e.cookies))c[m]="granted";let s=e.cookieSigningKey??this.config.core.cookieSigningKey,l={locale:this.config.core.locale??"en"};s?await this.consentStore.writeAndSign(c,s,l):this.consentStore.write(c,l),this.finishInit();return}if(r&&!o){let c={};for(let[m,d]of Object.entries(e.cookies)){if(S(m,this.categoryIndex)){c[m]="granted";continue}d.cpraCategory==="sensitive"||n&&(d.cpraCategory==="sale"||d.cpraCategory==="sharing")?c[m]="denied":c[m]="granted"}let s=e.cookieSigningKey??this.config.core.cookieSigningKey,l={locale:this.config.core.locale??"en"};s?await this.consentStore.writeAndSign(c,s,l):this.consentStore.write(c,l),this.finishInit();return}o||this.showBanner(),this.finishInit()}showAgeGate(e,n){if(!this.renderer)return;let o=e.minimumAge,i=this.renderer.mount(this.config.rootEl);this.ageGate=new J;let a=this.ageGate.buildPrompt(o,()=>{this.resolveAgeGate(!0,e,n)},()=>{this.resolveAgeGate(!1,e,n)}),r=this.ageGate.getOverlay();r&&i.appendChild(r),i.appendChild(a)}async resolveAgeGate(e,n,o){if(this.ageGate?.remove(),this.ageGate=null,this._ageVerified=e,e){await this.continueInit(o,T(),!1);return}if(n.requireParentalConsent){if(this._parentalConsentToken=E("pcon"),await this.submitConsent(this._buildDenyAllConsent()),this.eventBus?.dispatch("consenti:parentalConsentRequired",{parentalConsentToken:this._parentalConsentToken,profileId:this.profileId(),visitorId:this.visitorId(),timestamp:Math.round(Date.now()/1e3)}),this.renderer){let i=this.renderer.mount(this.config.rootEl);this.ageGate=new J;let a=this.ageGate.buildParentalConsentMessage(()=>{this.ageGate?.remove(),this.ageGate=null});i.appendChild(a)}}else await this.submitConsent(this._buildDenyAllConsent());this.finishInit()}finishInit(){this.initialized=!0,this.readyResolve(),this.scannedScripts.push(...me(this))}applyDirection(){if(!this.renderer)return;this.renderer.mount(this.config.rootEl).setAttribute("dir",Ie(this.config.core.locale??"en",this.config.core.dir))}applyDarkMode(){if(!this.renderer)return;let e=this.config.darkMode??this.profile?.darkMode??!1,n=this.renderer.mount(this.config.rootEl);e?n.classList.add("consenti-root--dark"):n.classList.remove("consenti-root--dark")}applyAccessibility(){if(!this.renderer)return;let e=this.renderer.mount(this.config.rootEl);this.profile?.enhanceAccessibility?e.classList.add("consenti--enhanced-a11y"):e.classList.remove("consenti--enhanced-a11y")}_appendMetaFooter(e,n=!1){let o=document.createElement("div");o.className="consenti-meta-footer";let i=this.consentStore?.getConsentId();if(i){let r=document.createElement("span");r.className="consenti-meta-footer__item",r.innerHTML=`ID: <code class="consenti-meta-footer__id">${i.slice(0,8)}&hellip;</code>`,o.appendChild(r)}let a=this.consentStore?.getConsentDate();if(a){let r=document.createElement("span");r.className="consenti-meta-footer__item",r.textContent=`Date: ${a.toISOString().slice(0,10)}`,o.appendChild(r)}if(this.profile?.id){let r=document.createElement("span");r.className="consenti-meta-footer__item",r.textContent=`v${this.profile.id}`,o.appendChild(r)}if(!n){let r=document.createElement("button");r.type="button",r.className="consenti-meta-footer__settings",r.textContent="Privacy Settings",r.addEventListener("click",()=>this.showModal()),o.appendChild(r)}e.appendChild(o)}applyStackButtonsBreakpoint(){if(!this.renderer||!this.profile)return;let e=this.profile.mainBanner?.stackButtonsOnBreakpoint;if(!e||e<=0)return;let n=this.renderer.mount(this.config.rootEl);n.querySelector("#consenti-stack-btn-style")?.remove();let i=document.createElement("style");i.id="consenti-stack-btn-style",i.textContent=`@media(max-width:${e}px){.consenti-banner__buttons{flex-direction:column;}.consenti-banner__btn{width:100%;}}`,n.appendChild(i)}_installFocusTrap(e){this._removeFocusTrap();let n='button:not([disabled]),[href],input:not([disabled]),select,textarea,[tabindex]:not([tabindex="-1"])',o=i=>{if(i.key!=="Tab")return;let a=Array.from(e.querySelectorAll(n)).filter(s=>!s.closest('[aria-hidden="true"]'));if(a.length===0)return;let r=a[0],c=a[a.length-1];i.shiftKey?document.activeElement===r&&(i.preventDefault(),c.focus()):document.activeElement===c&&(i.preventDefault(),r.focus())};this._focusTrapListener=o,document.addEventListener("keydown",o)}_removeFocusTrap(){this._focusTrapListener&&(document.removeEventListener("keydown",this._focusTrapListener),this._focusTrapListener=null)}applyTheme(){let e=this.config.core.theme;if(!e||!this.renderer)return;let n={"--consenti-color-bg":e.bgColor,"--consenti-color-text":e.textColor,"--consenti-color-primary":e.primaryColor,"--consenti-color-primary-text":e.primaryTextColor,"--consenti-color-secondary":e.secondaryColor,"--consenti-color-secondary-text":e.secondaryTextColor,"--consenti-color-border":e.borderColor,"--consenti-font-family":e.fontFamily,"--consenti-font-size-base":e.fontSizeBase,"--consenti-font-size-heading":e.fontSizeHeading,"--consenti-border-radius":e.borderRadius,"--consenti-border-radius-btn":e.buttonBorderRadius,"--consenti-toggle-bg-on":e.toggleBgOn,"--consenti-toggle-bg-off":e.toggleBgOff,"--consenti-color-accent":e.accentColor,"--consenti-color-accent-text":e.accentTextColor},o=this.renderer.mount(this.config.rootEl);for(let[i,a]of Object.entries(n))a!==void 0&&o.style.setProperty(i,a);if(e.fontSizeMultiplier){let i=parseFloat(e.fontSizeMultiplier);if(!isNaN(i)){let a=parseFloat(getComputedStyle(o).getPropertyValue("--consenti-font-size-base")||"14"),r=parseFloat(getComputedStyle(o).getPropertyValue("--consenti-font-size-heading")||"16");o.style.setProperty("--consenti-font-size-base",`${Math.round(a*i)}px`),o.style.setProperty("--consenti-font-size-heading",`${Math.round(r*i)}px`)}}}async runPlugins(){this.plugins=this.config.plugins??[];for(let e of this.plugins)try{await e.initialize(this)}catch(n){w.warn("Plugin initialize error:",n)}}async callPluginHook(e){for(let n of this.plugins)try{await e(n,this)}catch(o){w.warn("Plugin hook failed:",o)}}_buildGrantAllConsent(e=!1){let n={};for(let o of Object.keys(this.profile?.cookies??{}))n[o]=e&&!S(o,this.categoryIndex)?"denied":"granted";return n}_buildDenyAllConsent(e=!1){let n={};for(let o of Object.keys(this.profile?.cookies??{}))n[o]=!e&&S(o,this.categoryIndex)?"granted":"denied";return n}buildHandlers(e){return{onGrantAll:()=>{this.submitConsent(this._buildGrantAllConsent()),e==="banner"&&(this.banner?.hide(),this._bannerVariant=null)},onDenyAll:()=>{this.submitConsent(this._buildDenyAllConsent()),e==="banner"&&(this.banner?.hide(),this._bannerVariant=null)},onSubmit:()=>{if(e==="modal"&&this.modal&&this.profile){let n=this.modal.getToggleConsent(this.profile.preferenceModal.categories);this.submitConsent(n),this.hideModal()}else{let n={};for(let o of Object.keys(this.profile?.cookies??{}))S(o,this.categoryIndex)&&(n[o]="granted");this.submitConsent(n),e==="banner"&&(this.banner?.hide(),this._bannerVariant=null)}},onManage:()=>{this.showModal()},onClose:()=>{e==="modal"?this.hideModal():(this.banner?.hide(),this.eventBus?.dispatch("consenti:bannerVisibility",{visible:!1,action:!0,variant:this._bannerVariant??"main"}),this._bannerVariant=null,this.broadcastChannel.send({type:"bannerClosed"}),this.callPluginHook(n=>n.onBannerHide?.()))},onGrantSpecific:n=>{let o={};for(let i of Object.keys(this.profile?.cookies??{}))S(i,this.categoryIndex)||n.includes(i)?o[i]="granted":o[i]="denied";this.submitConsent(o),e==="banner"&&this.hideBanner()}}}deriveAction(e,n){if(n)return"update";let o=Object.keys(this.profile?.cookies??{}).filter(r=>!S(r,this.categoryIndex));if(o.length===0)return"custom";let i=o.every(r=>e[r]==="granted"),a=o.every(r=>e[r]==="denied"||e[r]==="objected");return i?"accept_all":a?"reject_all":"custom"}handleBroadcastMessage(e){switch(e.type){case"consentUpdated":if(e.profileId!==this.profileId())return;this.consentStore?.setInMemory(e.consent),this.banner?.hide(),this.modal?.isOpen()&&this.modal.close(),this.eventBus?.dispatch("consenti:consentSubmitted",{consentJson:e.consent,fromBroadcast:!0,gpcDetected:T(),consentId:E("cons"),consentAction:this.deriveAction(e.consent,!1),pageUrl:window.location.href,visitorId:this.visitorId(),timestamp:Math.round(Date.now()/1e3),profileId:this.profileId()});break;case"bannerClosed":this.banner?.hide(),this._bannerVariant=null;break;case"consentDeleted":this.consentStore?.clearInMemory();break}}hasConsent(){return p()?this.consentStore?.hasConsent()??!1:!1}getConsent(e){if(!p())return null;let n=this.consentStore?.getConsent()??null;if(!n)return null;let o=this.profile?.cookies??{};switch(e){case"google-gtm":return K(n);case"category":return ze(n,o);case"adobe":return Re(n,o);case"meta":return Be(n,o);case"microsoft-clarity":return Oe(n,o);case"twilio-segment":return Ne(n,o);default:return n}}getConsentDate(){return p()?this.consentStore?.getConsentDate()??!1:!1}getGTMConsent(){return this.getConsent("google-gtm")}async submitConsent(e,n=!1,o=0){if(!p()||!this.profile||!this.consentStore)return;let i=this.profile.complianceGroup??"",a=this.consentStore.hasConsent(),r=this.consentStore.getConsentId()??E("cons"),c=window.location.href,s={};for(let[u,v]of Object.entries(this.profile.cookies))if(S(u,this.categoryIndex))s[u]="granted";else if(i==="opt-out-strict"){let _=v.cpraCategory==="sensitive"?"denied":"granted";s[u]=e[u]??_}else{let _=i!=="opt-out"&&i!=="notice-only",A=v.preGrant?"granted":_?"denied":"granted";s[u]=e[u]??A}let l=this.deriveAction(s,a);this.eventBus?.dispatch("consenti:consentBeingSubmitted",{consentJson:s,consentId:r,fromBroadcast:!1,gpcDetected:T(),consentAction:this.deriveAction(s,!1),pageUrl:window.location.href,visitorId:this.visitorId(),timestamp:Math.round(Date.now()/1e3),profileId:this.profileId()});let m=null;if(this.config.api?.enabled)try{let u=this.config.api.baseUrl??window.location.origin,{httpRequest:v}=await import("./http-AQVVUCX6.mjs");m=await v(`${u}/consenti/api/v1/consent`,{method:"POST",body:JSON.stringify({profileId:this.profileId(),visitorId:this.visitorId(),consentJson:s,locale:this.config.core.locale??"en",gpcDetected:n||T(),consentId:r,action:l,pageUrl:c,...this._ageVerified!==void 0?{ageVerified:this._ageVerified}:{},...this._parentalConsentToken?{parentalConsentToken:this._parentalConsentToken}:{}})},this.config.api.authToken)}catch(u){w.warn("API consent submission failed:",u)}let d=this.profile.cookieSigningKey??this.config.core.cookieSigningKey,y={source:o,gpcDetected:n,consentId:r,locale:this.config.core.locale??"en"};if(d?this.lastSignature=await this.consentStore.writeAndSign(s,d,y):this.consentStore.write(s,y),(this.modal?.isReceiptRequested()??!1)&&this.profile.allowReceipt){let u=this.visitorId(),v=this.consentStore.getConsent();console.log({currentConsentVersion:v});let _={version:"1.0",visitorId:u,profileId:this.profileId(),locale:this.config.core.locale??"en",consent:s,...this.lastSignature?{signature:this.lastSignature}:{}},A=He(_);Ve(A)}return this.broadcastChannel.send({type:"consentUpdated",consent:s,profileId:this.profileId()}),this.eventBus?.dispatch("consenti:consentSubmitted",{consentJson:s,apiResponse:m,gpcDetected:n,consentId:r,consentAction:l,pageUrl:c,fromBroadcast:!1,visitorId:this.visitorId(),timestamp:Math.round(Date.now()/1e3),profileId:this.profileId()}),await this.callPluginHook(u=>u.onConsentSubmit?.(s)),this.renderer?.announceToScreenReader("Your cookie preferences have been saved."),this.hideBanner(),this.modal?.isOpen()&&this.hideModal(),m}bannerVisibility(){return this._bannerVariant??!1}modalVisibility(){return this.modal?.isOpen()?"preference":!1}showBanner(e=!1){if(!p()||!this.profile||!this.banner||!this.renderer)return;let n=e&&this.profile.gpcBanner?"gpc":"main";if(this._bannerVariant===n)return;if(this._bannerMounted===n){this.banner.show(),this._bannerVariant=n,this.eventBus?.dispatch("consenti:bannerVisibility",{visible:!0,action:!1,variant:n}),this.callPluginHook(m=>m.onBannerShow?.());return}let o=n==="gpc"?this.profile.gpcBanner:this.profile.mainBanner,i=this.renderer.mount(this.config.rootEl),a=this.buildHandlers("banner");this.banner.remove();let r=this.profile.locales,c=this.config.core.locale??"en",s=this.banner.build(o,a,void 0,r,c,m=>this.switchLocale(m),this.config.hidePoweredBy??this.profile?.hidePoweredBy??!0,n);this.profile.showFooterMetadata&&this._appendMetaFooter(s),i.appendChild(s);let l=this.banner.getOverlay();l&&i.appendChild(l),this._bannerVariant=n,this._bannerMounted=n,this.eventBus?.dispatch("consenti:bannerVisibility",{visible:!0,action:!1,variant:n}),this.callPluginHook(m=>m.onBannerShow?.())}hideBanner(){this._bannerVariant!==null&&(this.banner?.hide(),this.eventBus?.dispatch("consenti:bannerVisibility",{visible:!1,action:!0,variant:this._bannerVariant}),this._bannerVariant=null,this.broadcastChannel.send({type:"bannerClosed"}),this.renderer?.announceToScreenReader("Cookie banner dismissed."),this.callPluginHook(e=>e.onBannerHide?.()))}showModal(e){if(!p()||!this.profile||!this.modal||this.modal.isOpen())return;let n=this.buildHandlers("modal"),o=this.consentStore?.getConsent()??{},i=this.profile.complianceGroup==="opt-in-dpdpa"?this.profile.dpdpa:void 0,a=this.profile.locales,r=this.config.core.locale??"en";this.modal.build(this.profile.preferenceModal,this.profile.cookies,o,n,this.profile.allowReceipt??!1,i,a,r,s=>{this.hideModal(),this.switchLocale(s)},this.config.hidePoweredBy??!0),this.banner?.hide(),this.modal.open(e,this.renderer?.mount(this.config.rootEl));let c=document.getElementById("consenti-modal");if(this.profile.showFooterMetadata&&c){let s=c.querySelector(".consenti-modal__container");s&&this._appendMetaFooter(s,!0)}this.profile.preferenceModal?.trapFocus&&c&&this._installFocusTrap(c),this._bannerVariant!==null&&this.eventBus?.dispatch("consenti:bannerVisibility",{visible:!1,action:!!e,variant:this._bannerVariant}),this.eventBus?.dispatch("consenti:modalVisibility",{visible:!0,action:!!e}),this.callPluginHook(s=>s.onModalShow?.())}hideModal(){this.modal?.isOpen()&&(this._removeFocusTrap(),this.modal.close(),this.eventBus?.dispatch("consenti:modalVisibility",{visible:!1,action:!0}),this.callPluginHook(e=>e.onModalHide?.()),!this.consentStore?.hasConsent()&&this._bannerVariant!==null?(this.eventBus?.dispatch("consenti:bannerVisibility",{visible:!0,action:!0,variant:this._bannerVariant}),this.banner?.show()):this.consentStore?.hasConsent()||this.showBanner())}onReady(e){this.initialized?e():this.readyPromise.then(e)}get ready(){return this.readyPromise}async deleteConsent(){if(!(!p()||!this.consentStore)){if(this.config.api?.enabled)try{let e=this.config.api.baseUrl??window.location.origin,{httpRequest:n}=await import("./http-AQVVUCX6.mjs");await n(`${e}/consenti/api/v1/consent/${this.visitorId()}`,{method:"DELETE"},this.config.api?.authToken)}catch(e){w.warn("API consent deletion failed:",e)}this.consentStore.delete(),this.broadcastChannel.send({type:"consentDeleted"})}}async reConsent(){await this.deleteConsent(),this.showBanner()}getProfile(){return this.profile}getRootElement(){return p()?this.config.rootEl?typeof this.config.rootEl=="string"?document.querySelector(this.config.rootEl):this.config.rootEl:document.getElementById("consenti-root"):null}getBannerElement(){return p()?document.getElementById("consenti-banner"):null}getModalElement(){return p()?document.getElementById("consenti-modal"):null}switchLocale(e){p()&&(this.config.core.locale=e,this.banner?.remove(),this.modal?.isOpen()&&this.modal.close(),this._bannerVariant=null,this._bannerMounted=null,this.profile=null,this.initialized=!1,this.readyPromise=new Promise(n=>{this.readyResolve=n}),this.init().catch(n=>w.warn("Locale switch error:",n)))}isCookieGranted(e,n=!1){if(!p())return!1;let o=this.getConsent()?.[e];return n?o??!1:o==="granted"}isCategoryGranted(e,n=!1){if(!p()||!this.profile)return n?[]:!1;let o=this.profile.preferenceModal.categories[e];if(!o)return n?[]:!1;let i=this.getConsent();return n?o.cookies.map(a=>({[a]:i?.[a]??"denied"})):o.cookies.every(a=>i?.[a]==="granted")}async grantAll(e=!1){!p()||!this.profile||await this.submitConsent(this._buildGrantAllConsent(e),!1,1)}async denyAll(e=!1){!p()||!this.profile||(e&&w.warn("denyAll called with includingMandatory=true \u2014 mandatory cookies will be denied. Ensure this is intentional."),await this.submitConsent(this._buildDenyAllConsent(e),!1,1))}on(e,n){if(!p())return;let o=e.startsWith("consenti:")?e:`consenti:${e}`,i=r=>n(r.detail),a=this._eventHandlers.get(n)??[];a.push({name:o,wrapped:i}),this._eventHandlers.set(n,a),window.addEventListener(o,i)}off(e,n){if(!p())return;let o=e.startsWith("consenti:")?e:`consenti:${e}`,i=this._eventHandlers.get(n);if(!i)return;let a=i.findIndex(c=>c.name===o);if(a===-1)return;let r=i[a];r&&window.removeEventListener(o,r.wrapped),i.splice(a,1),i.length===0&&this._eventHandlers.delete(n)}version(){return{package:"0.3.0",profileVersion:this.profile?.id??"0",consentVersion:null}}setDarkMode(e){p()&&(this.config.darkMode=e===void 0?!this.config.darkMode:e,this.applyDarkMode())}setTheme(e){p()&&(this.config.core.theme=Object.assign({},this.config.core.theme,e),this.applyTheme())}setConfig(e){let n=I(this.config,e);this.config={...n,core:n.core??{}},p()&&(this.applyTheme(),this.applyDarkMode())}setProfile(e){if(!p()||!this.resolvedBase)return;this.config.profileOverride=this.config.profileOverride?I(this.config.profileOverride,e):e,this.profile=I(this.resolvedBase,this.config.profileOverride),this.categoryIndex=N(this.profile.preferenceModal.categories);let n=this.modal?.isOpen()??!1;if(n&&this.modal?.close(),this._bannerVariant!==null){let o=this._bannerVariant==="gpc";this._bannerVariant=null,this._bannerMounted=null,this.showBanner(o)}n&&this.showModal()}destroy(){this._removeFocusTrap();for(let e of this.plugins)try{e.destroy()}catch{}for(let e of this.scannedScripts)e.destroy();if(this.scannedScripts=[],this.modal?.destroy(),this.renderer?.unmount(),this.broadcastChannel.disconnect(),p()){for(let e of this._eventHandlers.values())for(let{name:n,wrapped:o}of e)window.removeEventListener(n,o);this._eventHandlers.clear()}this.banner=null,this.modal=null,this.renderer=null,this.consentStore=null,this.eventBus=null,this.initialized=!1}};var xe=class{};var Yn=1e3,Pe=class{constructor(e){this.config=e;this.type=Symbol(e.id??Yn++),Xe(this.type,e)}getType(){return this.type}toJSON(){return this.config}};var Ge=class{constructor(e){this.options=e;this.granted=null;this.handler=()=>this.evaluate(),p()&&(e.bind!==!1&&window.addEventListener("consenti:consentSubmitted",this.handler),this.evaluate())}evaluate(){let e=this.options.widget.getConsent(),n=e?.[this.options.id]??"denied",o=n==="granted";if(o===this.granted)return;this.granted=o;let i=this.options.widget.getProfile()?.cookies[this.options.id],a={cookieId:this.options.id,status:n,cookie:i,consent:e};o?this.options.onGrant?.(a):this.options.onDeny?.(a)}destroy(){p()&&this.options.bind!==!1&&window.removeEventListener("consenti:consentSubmitted",this.handler)}};var Se=class{constructor(e){this.options=e;this.granted=null;this.handler=()=>this.evaluate(),p()&&(e.bind!==!1&&window.addEventListener("consenti:consentSubmitted",this.handler),this.evaluate())}evaluate(){let n=this.options.widget.getProfile()?.preferenceModal.categories[this.options.id]?.cookies??[],o=this.options.widget.getConsent(),i=n.length>0&&n.every(r=>o?.[r]==="granted");if(i===this.granted)return;this.granted=i;let a={categoryId:this.options.id,cookieIds:n,consent:o};i?this.options.onGrant?.(a):this.options.onDeny?.(a)}destroy(){p()&&this.options.bind!==!1&&window.removeEventListener("consenti:consentSubmitted",this.handler)}};var Ee=class{constructor(e){let n=e.action??"modal";if(this.clickHandler=()=>{n==="modal"?e.widget.showModal():e.widget.showBanner()},e.el)if(typeof e.el=="string"){if(!p()){this.el=document.createElement("span"),this.created=!1;return}let o=document.querySelector(e.el);if(!o)throw new Error(`[Consenti] BannerTrigger: element not found for selector "${e.el}"`);this.el=o,this.created=!1}else this.el=e.el,this.created=!1;else{let o=document.createElement("button");o.type="button",o.className="consenti-btn consenti-btn--text consenti-banner-trigger",o.textContent=e.label??"Cookie Settings",o.setAttribute("aria-label",e.label??"Open cookie settings"),this.el=o,this.created=!0}this.el.addEventListener("click",this.clickHandler)}getElement(){return this.el}destroy(){this.el.removeEventListener("click",this.clickHandler),this.created&&this.el.remove()}};export{Ee as BannerTrigger,Se as CategoryAction,U as CategoryScript,Ge as ConsentAction,j as ConsentScript,xe as ConsentiPlugin,Pe as ConsentiProfile,Ae as ConsentiSetup,me as scanConsentScripts};
2
2
  //# sourceMappingURL=index.mjs.map