accessify-widget 0.1.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.
Files changed (54) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +76 -0
  3. package/dist/accessify.min.js +2 -0
  4. package/dist/accessify.min.js.map +1 -0
  5. package/dist/accessify.mjs +6 -0
  6. package/dist/accessify.mjs.map +1 -0
  7. package/dist/alt-text-CLxbmwG6.js +567 -0
  8. package/dist/alt-text-CLxbmwG6.js.map +1 -0
  9. package/dist/animation-stop-DXebPS8D.js +88 -0
  10. package/dist/animation-stop-DXebPS8D.js.map +1 -0
  11. package/dist/auto-scan-pg-09o7A.js +885 -0
  12. package/dist/auto-scan-pg-09o7A.js.map +1 -0
  13. package/dist/big-cursor-B2UKu9dQ.js +88 -0
  14. package/dist/big-cursor-B2UKu9dQ.js.map +1 -0
  15. package/dist/color-blind-0LFng55r.js +108 -0
  16. package/dist/color-blind-0LFng55r.js.map +1 -0
  17. package/dist/contrast-DCkE0NXZ.js +64 -0
  18. package/dist/contrast-DCkE0NXZ.js.map +1 -0
  19. package/dist/dyslexia-font-wONgIy2T.js +77 -0
  20. package/dist/dyslexia-font-wONgIy2T.js.map +1 -0
  21. package/dist/focus-highlight-CjERyyUF.js +93 -0
  22. package/dist/focus-highlight-CjERyyUF.js.map +1 -0
  23. package/dist/hide-images-DJwmsV2C.js +39 -0
  24. package/dist/hide-images-DJwmsV2C.js.map +1 -0
  25. package/dist/index-CUQfpnwR.js +6520 -0
  26. package/dist/index-CUQfpnwR.js.map +1 -0
  27. package/dist/keyboard-nav-BdPyLaZt.js +312 -0
  28. package/dist/keyboard-nav-BdPyLaZt.js.map +1 -0
  29. package/dist/line-height-BT98qgEF.js +54 -0
  30. package/dist/line-height-BT98qgEF.js.map +1 -0
  31. package/dist/link-highlight-DBGm067Y.js +87 -0
  32. package/dist/link-highlight-DBGm067Y.js.map +1 -0
  33. package/dist/loader.min.js +1 -0
  34. package/dist/page-structure-2X8mOSpC.js +166 -0
  35. package/dist/page-structure-2X8mOSpC.js.map +1 -0
  36. package/dist/reading-guide-VT8NciIL.js +122 -0
  37. package/dist/reading-guide-VT8NciIL.js.map +1 -0
  38. package/dist/reading-mask-BABChuCz.js +76 -0
  39. package/dist/reading-mask-BABChuCz.js.map +1 -0
  40. package/dist/saturation-D8ZXpWAN.js +59 -0
  41. package/dist/saturation-D8ZXpWAN.js.map +1 -0
  42. package/dist/spacing-DENai3JU.js +106 -0
  43. package/dist/spacing-DENai3JU.js.map +1 -0
  44. package/dist/text-align-BDRPqPvl.js +51 -0
  45. package/dist/text-align-BDRPqPvl.js.map +1 -0
  46. package/dist/text-simplify-CELklw5A.js +223 -0
  47. package/dist/text-simplify-CELklw5A.js.map +1 -0
  48. package/dist/text-size-B-uv436p.js +69 -0
  49. package/dist/text-size-B-uv436p.js.map +1 -0
  50. package/dist/tts-02b9iV0h.js +505 -0
  51. package/dist/tts-02b9iV0h.js.map +1 -0
  52. package/dist/widget.js +2 -0
  53. package/dist/widget.js.map +1 -0
  54. package/package.json +61 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Accessify Contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,76 @@
1
+ # accessify-widget
2
+
3
+ The public Accessify-Widget package for script-tag installs and npm-based integrations.
4
+
5
+ ## CDN Install
6
+
7
+ For Framer, Webflow, Shopify theme code, and plain HTML, use the public widget bundle:
8
+
9
+ ```html
10
+ <script
11
+ src="https://cdn.jsdelivr.net/npm/accessify-widget/dist/widget.js"
12
+ data-accessify
13
+ data-position="bottom-right"
14
+ data-theme="auto"
15
+ defer
16
+ ></script>
17
+ ```
18
+
19
+ Supported data attributes:
20
+
21
+ - `data-position`
22
+ - `data-theme`
23
+ - `data-lang`
24
+ - `data-features`
25
+ - `data-openrouter-key`
26
+ - `data-site-key`
27
+ - `data-proxy-url`
28
+ - `data-compact`
29
+ - `data-z-index`
30
+
31
+ If this URL returns `404`, the package has not been published to npm yet. Publish the release first, then use the same snippet.
32
+
33
+ ## Framer
34
+
35
+ 1. Open **Site Settings > General > Custom Code**.
36
+ 2. Paste the snippet above into **End of `</body>` tag**.
37
+ 3. Publish your site.
38
+
39
+ You do not need to clone this repo or run a local build just to use the widget in Framer.
40
+
41
+ ## npm Usage
42
+
43
+ ```bash
44
+ npm install accessify-widget
45
+ ```
46
+
47
+ ```ts
48
+ import { init } from 'accessify-widget';
49
+
50
+ init({
51
+ position: 'bottom-right',
52
+ theme: 'auto',
53
+ lang: 'en',
54
+ features: ['contrast', 'text-size', 'focus-highlight'],
55
+ });
56
+ ```
57
+
58
+ ## Managed Mode
59
+
60
+ If you are using a dashboard-issued site key, the all-in-one bundle can also auto-configure proxy-backed AI features:
61
+
62
+ ```html
63
+ <script
64
+ src="https://cdn.jsdelivr.net/npm/accessify-widget/dist/widget.js"
65
+ data-site-key="sk_site_your_key"
66
+ defer
67
+ ></script>
68
+ ```
69
+
70
+ ## Guides
71
+
72
+ - [Quick Start](https://github.com/maddesv1-ctrl/accessify-widget/blob/main/apps/docs/src/content/docs/getting-started/quick-start.md)
73
+ - [Framer](https://github.com/maddesv1-ctrl/accessify-widget/blob/main/apps/docs/src/content/docs/platforms/framer.md)
74
+ - [Custom HTML](https://github.com/maddesv1-ctrl/accessify-widget/blob/main/apps/docs/src/content/docs/platforms/html.md)
75
+ - [Webflow](https://github.com/maddesv1-ctrl/accessify-widget/blob/main/apps/docs/src/content/docs/platforms/webflow.md)
76
+ - [Shopify](https://github.com/maddesv1-ctrl/accessify-widget/blob/main/apps/docs/src/content/docs/platforms/shopify.md)
@@ -0,0 +1,2 @@
1
+ var Accessify=function(e){"use strict";var t,n,r,i,a,o,s,c,l,d,u,f,p,h,g,m,v,y,b,x,w,k,S,E,$,C,M,_,A,z,I,T,L,P,O,j,B,W,K,N,F,H,R,D,q,G=Object.defineProperty,U=e=>{throw TypeError(e)},V=(e,t,n)=>((e,t,n)=>t in e?G(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n)(e,"symbol"!=typeof t?t+"":t,n),J=(e,t,n)=>t.has(e)||U("Cannot "+n),Y=(e,t,n)=>(J(e,t,"read from private field"),n?n.call(e):t.get(e)),Z=(e,t,n)=>t.has(e)?U("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),X=(e,t,n,r)=>(J(e,t,"write to private field"),r?r.call(e,n):t.set(e,n),n),Q=(e,t,n)=>(J(e,t,"access private method"),n);const ee=globalThis.process?.env?.NODE_ENV,te=ee&&!ee.toLowerCase().startsWith("prod");var ne=Array.isArray,re=Array.prototype.indexOf,ie=Array.prototype.includes,ae=Array.from,oe=Object.defineProperty,se=Object.getOwnPropertyDescriptor,ce=Object.getOwnPropertyDescriptors,le=Object.prototype,de=Array.prototype,ue=Object.getPrototypeOf,fe=Object.isExtensible;const pe=()=>{};function he(){var e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}const ge=32,me=512,ve=1024,ye=2048,be=4096,xe=8192,we=16384,ke=32768,Se=1<<25,Ee=65536,$e=1<<17,Ce=1<<19,Me=1<<25,_e=65536,Ae=1<<21,ze=1<<23,Ie=Symbol("$state"),Te=Symbol("legacy props"),Le=Symbol(""),Pe=Symbol("proxy path"),Oe=new class extends Error{constructor(){super(...arguments),V(this,"name","StaleReactionError"),V(this,"message","The reaction that called `getAbortSignal()` was re-run or destroyed")}};function je(e,t,n){if(te){const r=new Error(`each_key_duplicate\n${n?`Keyed each block has duplicate key \`${n}\` at indexes ${e} and ${t}`:`Keyed each block has duplicate key at indexes ${e} and ${t}`}\nhttps://svelte.dev/e/each_key_duplicate`);throw r.name="Svelte error",r}throw new Error("https://svelte.dev/e/each_key_duplicate")}function Be(e,t,n){if(te){const r=new Error(`each_key_volatile\nKeyed each block has key that is not idempotent — the key for item at index ${e} was \`${t}\` but is now \`${n}\`. Keys must be the same each time for a given item\nhttps://svelte.dev/e/each_key_volatile`);throw r.name="Svelte error",r}throw new Error("https://svelte.dev/e/each_key_volatile")}const We=Symbol(),Ke=Symbol("filename"),Ne="http://www.w3.org/1999/xhtml";function Fe(e){}function He(e){return e===this.v}function Re(e){return n=this.v,!((t=e)!=t?n==n:t!==n||null!==t&&"object"==typeof t||"function"==typeof t);var t,n}function De(e,t){return e.label=t,qe(e.v,t),e}function qe(e,t){return e?.[Pe]?.(t),e}function Ge(e,t){if(!te)throw new Error("invariant(...) was not guarded by if (DEV)");e||function(e){if(te){const t=new Error(`invariant_violation\nAn invariant violation occurred, meaning Svelte's internal assumptions were flawed. This is a bug in Svelte, not your app — please open an issue at https://github.com/sveltejs/svelte, citing the following message: "${e}"\nhttps://svelte.dev/e/invariant_violation`);throw t.name="Svelte error",t}throw new Error("https://svelte.dev/e/invariant_violation")}(t)}let Ue=null;function Ve(e){Ue=e}let Je=null;function Ye(e){Je=e}let Ze=null;function Xe(e){Ze=e}function Qe(e,t=!1,n){Ue={p:Ue,i:!1,c:null,e:null,s:e,x:null,r:qn,l:null},te&&(Ue.function=n,Ze=n)}function et(e){var t=Ue,n=t.e;if(null!==n)for(var r of(t.e=null,n))En(r);return void 0!==e&&(t.x=e),t.i=!0,Ue=t.p,te&&(Ze=Ue?.function??null),e??{}}let tt=[];function nt(e){if(0===tt.length){var t=tt;queueMicrotask(()=>{t===tt&&function(){var e=tt;tt=[],function(e){for(var t=0;t<e.length;t++)e[t]()}(e)}()})}tt.push(e)}const rt=new WeakMap;function it(e){var t=qn;if(null===t)return Hn.f|=ze,e;if(te&&e instanceof Error&&!rt.has(e)&&rt.set(e,function(e,t){const n=se(e,"message");if(!n||n.configurable){for(var r=dn?" ":"\t",i=`\n${r}in ${t.fn?.name||"<unknown>"}`,a=t.ctx;null!==a;)i+=`\n${r}in ${a.function?.[Ke].split("/").pop()}`,a=a.p;return{message:e.message+`\n${i}\n`,stack:e.stack?.split("\n").filter(e=>!e.includes("svelte/src/internal")).join("\n")}}}(e,t)),0===(t.f&ke)&&!(4&t.f))throw te&&!t.parent&&e instanceof Error&&ot(e),e;at(e,t)}function at(e,t){for(;null!==t;){if(128&t.f){if(0===(t.f&ke))throw e;try{return void t.b.error(e)}catch(n){e=n}}t=t.parent}throw te&&e instanceof Error&&ot(e),e}function ot(e){const t=rt.get(e);t&&(oe(e,"message",{value:t.message}),oe(e,"stack",{value:t.stack}))}const st=-7169;function ct(e,t){e.f=e.f&st|t}function lt(e){ct(e,0!==(e.f&me)||null===e.deps?ve:be)}function dt(e){if(null!==e)for(const t of e)2&t.f&&0!==(t.f&_e)&&(t.f^=_e,dt(t.deps))}function ut(e,t,n){0!==(e.f&ye)?t.add(e):0!==(e.f&be)&&n.add(e),dt(e.deps),ct(e,ve)}let ft=!1;const pt=new Set;let ht=null,gt=null,mt=null,vt=!1,yt=null,bt=null;var xt=0,wt=te?new Set:null;let kt=1;const St=class e{constructor(){Z(this,u),V(this,"id",kt++),V(this,"current",new Map),V(this,"previous",new Map),Z(this,t,new Set),Z(this,n,new Set),Z(this,r,0),Z(this,i,0),Z(this,a,null),Z(this,o,[]),Z(this,s,new Set),Z(this,c,new Set),Z(this,l,new Map),V(this,"is_fork",!1),Z(this,d,!1)}skip_effect(e){Y(this,l).has(e)||Y(this,l).set(e,{d:[],m:[]})}unskip_effect(e){var t=Y(this,l).get(e);if(t){for(var n of(Y(this,l).delete(e),t.d))ct(n,ye),this.schedule(n);for(n of t.m)ct(n,be),this.schedule(n)}}capture(e,t){t===We||this.previous.has(e)||this.previous.set(e,t),0===(e.f&ze)&&(this.current.set(e,e.v),gt?.set(e,e.v))}activate(){ht=this}deactivate(){ht=null,gt=null}flush(){var e=te?new Set:null;try{vt=!0,ht=this,Q(this,u,p).call(this)}finally{if(xt=0,mt=null,yt=null,bt=null,vt=!1,ht=null,gt=null,Gt.clear(),te)for(const t of e)t.updated=null}}discard(){for(const e of Y(this,n))e(this);Y(this,n).clear()}increment(e){X(this,r,Y(this,r)+1),e&&X(this,i,Y(this,i)+1)}decrement(e,t){X(this,r,Y(this,r)-1),e&&X(this,i,Y(this,i)-1),Y(this,d)||t||(X(this,d,!0),nt(()=>{X(this,d,!1),this.flush()}))}transfer_effects(e,t){for(const n of e)Y(this,s).add(n);for(const n of t)Y(this,c).add(n);e.clear(),t.clear()}oncommit(e){Y(this,t).add(e)}ondiscard(e){Y(this,n).add(e)}settled(){return(Y(this,a)??X(this,a,he())).promise}static ensure(){if(null===ht){const t=ht=new e;vt||(pt.add(ht),nt(()=>{ht===t&&t.flush()}))}return ht}apply(){gt=null}schedule(e){if(mt=e,e.b?.is_pending&&16777228&e.f&&0===(e.f&ke))e.b.defer_effect(e);else{for(var t=e;null!==t.parent;){var n=(t=t.parent).f;if(!(null===yt||t!==qn||null!==Hn&&2&Hn.f))return;if(96&n){if(0===(n&ve))return;t.f^=ve}}Y(this,o).push(t)}}};t=new WeakMap,n=new WeakMap,r=new WeakMap,i=new WeakMap,a=new WeakMap,o=new WeakMap,s=new WeakMap,c=new WeakMap,l=new WeakMap,d=new WeakMap,u=new WeakSet,f=function(){return this.is_fork||Y(this,i)>0},p=function(){var e;if(xt++>1e3&&(pt.delete(this),function(){if(te){var e=new Map;for(const n of ht.current.keys())for(const[r,i]of n.updated??[]){var t=e.get(r);t||e.set(r,t={error:i.error,count:0}),t.count+=i.count}for(const t of e.values());}try{!function(){if(te){const e=new Error("effect_update_depth_exceeded\nMaximum update depth exceeded. This typically indicates that an effect reads and writes the same piece of state\nhttps://svelte.dev/e/effect_update_depth_exceeded");throw e.name="Svelte error",e}throw new Error("https://svelte.dev/e/effect_update_depth_exceeded")}()}catch(n){te&&oe(n,"stack",{value:""}),at(n,mt)}}()),!Q(this,u,f).call(this)){for(const e of Y(this,s))Y(this,c).delete(e),ct(e,ye),this.schedule(e);for(const e of Y(this,c))ct(e,be),this.schedule(e)}const n=Y(this,o);X(this,o,[]),this.apply();var i=yt=[],d=[],v=bt=[];for(const t of n)try{Q(this,u,h).call(this,t,i,d)}catch(x){throw It(t),x}if(ht=null,v.length>0){var y=St.ensure();for(const e of v)y.schedule(e)}if(yt=null,bt=null,Q(this,u,f).call(this)){Q(this,u,g).call(this,d),Q(this,u,g).call(this,i);for(const[e,t]of Y(this,l))zt(e,t)}else{0===Y(this,r)&&pt.delete(this),Y(this,s).clear(),Y(this,c).clear();for(const e of Y(this,t))e(this);Y(this,t).clear(),Ct(d),Ct(i),Y(this,a)?.resolve()}var b=ht;if(Y(this,o).length>0){const e=b??(b=this);Y(e,o).push(...Y(this,o).filter(t=>!Y(e,o).includes(t)))}if(null!==b){if(pt.add(b),te)for(const e of this.current.keys())wt.add(e);Q(e=b,u,p).call(e)}pt.has(this)||Q(this,u,m).call(this)},h=function(e,t,n){e.f^=ve;for(var r=e.first;null!==r;){var i=r.f,a=!!(96&i);if(!(a&&0!==(i&ve)||0!==(i&xe)||Y(this,l).has(r))&&null!==r.fn){a?r.f^=ve:4&i?t.push(r):rr(r)&&(!!(16&i)&&Y(this,c).add(r),cr(r));var o=r.first;if(null!==o){r=o;continue}}for(;null!==r;){var s=r.next;if(null!==s){r=s;break}r=r.parent}}},g=function(e){for(var t=0;t<e.length;t+=1)ut(e[t],Y(this,s),Y(this,c))},m=function(){var e;for(const l of pt){var t=l.id<this.id,n=[];for(const[e,r]of this.current){if(l.current.has(e)){if(!t||r===l.current.get(e))continue;l.current.set(e,r)}n.push(e)}if(0!==n.length){var r=[...l.current.keys()].filter(e=>!this.current.has(e));if(r.length>0){te&&Ge(0===Y(l,o).length,"Batch has scheduled roots"),l.activate();var i=new Set,a=new Map;for(var s of n)Mt(s,r,i,a);if(Y(l,o).length>0){for(var c of(l.apply(),Y(l,o)))Q(e=l,u,h).call(e,c,[],[]);X(l,o,[])}l.deactivate()}}}};let Et=St,$t=null;function Ct(e){var t=e.length;if(0!==t){for(var n=0;n<t;){var r=e[n++];if(!(24576&r.f)&&rr(r)&&($t=new Set,cr(r),null===r.deps&&null===r.first&&null===r.nodes&&null===r.teardown&&null===r.ac&&Ln(r),$t?.size>0)){Gt.clear();for(const e of $t){if(24576&e.f)continue;const t=[e];let n=e.parent;for(;null!==n;)$t.has(n)&&($t.delete(n),t.push(n)),n=n.parent;for(let e=t.length-1;e>=0;e--){const n=t[e];24576&n.f||cr(n)}}$t.clear()}}$t=null}}function Mt(e,t,n,r){if(!n.has(e)&&(n.add(e),null!==e.reactions))for(const i of e.reactions){const e=i.f;2&e?Mt(i,t,n,r):4194320&e&&0===(e&ye)&&_t(i,t,r)&&(ct(i,ye),At(i))}}function _t(e,t,n){const r=n.get(e);if(void 0!==r)return r;if(null!==e.deps)for(const i of e.deps){if(ie.call(t,i))return!0;if(2&i.f&&_t(i,t,n))return n.set(i,!0),!0}return n.set(e,!1),!1}function At(e){ht.schedule(e)}function zt(e,t){if(0===(e.f&ge)||0===(e.f&ve)){0!==(e.f&ye)?t.d.push(e):0!==(e.f&be)&&t.m.push(e),ct(e,ve);for(var n=e.first;null!==n;)zt(n,t),n=n.next}}function It(e){ct(e,ve);for(var t=e.first;null!==t;)It(t),t=t.next}class Tt{constructor(e,t,n,r){Z(this,L),V(this,"parent"),V(this,"is_pending",!1),V(this,"transform_error"),Z(this,v),Z(this,y,null),Z(this,b),Z(this,x),Z(this,w),Z(this,k,null),Z(this,S,null),Z(this,E,null),Z(this,$,null),Z(this,C,0),Z(this,M,0),Z(this,_,!1),Z(this,A,new Set),Z(this,z,new Set),Z(this,I,null),Z(this,T,function(e){let t,n=0,r=Jt(0);return te&&De(r,"createSubscriber version"),()=>{kn()&&(lr(r),$n(()=>(0===n&&(t=fr(()=>e())),n+=1,()=>{nt(()=>{n-=1,0===n&&(t?.(),t=void 0,tn(r))})})))}}(()=>(X(this,I,Jt(Y(this,C))),te&&De(Y(this,I),"$effect.pending()"),()=>{X(this,I,null)}))),X(this,v,e),X(this,b,t),X(this,x,e=>{var t=qn;t.b=this,t.f|=128,n(e)}),this.parent=qn.b,this.transform_error=r??this.parent?.transform_error??(e=>e),X(this,w,Mn(()=>{Q(this,L,P).call(this)},589824))}defer_effect(e){ut(e,Y(this,A),Y(this,z))}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!Y(this,b).pending}update_pending_count(e,t){Q(this,L,B).call(this,e,t),X(this,C,Y(this,C)+e),Y(this,I)&&!Y(this,_)&&(X(this,_,!0),nt(()=>{X(this,_,!1),Y(this,I)&&Qt(Y(this,I),Y(this,C))}))}get_effect_pending(){return Y(this,T).call(this),lr(Y(this,I))}error(e){var t=Y(this,b).onerror;let n=Y(this,b).failed;if(!t&&!n)throw e;Y(this,k)&&(In(Y(this,k)),X(this,k,null)),Y(this,S)&&(In(Y(this,S)),X(this,S,null)),Y(this,E)&&(In(Y(this,E)),X(this,E,null));var r=!1,i=!1;const a=()=>{r||(r=!0,i&&function(){if(te){const e=new Error("svelte_boundary_reset_onerror\nA `<svelte:boundary>` `reset` function cannot be called while an error is still being handled\nhttps://svelte.dev/e/svelte_boundary_reset_onerror");throw e.name="Svelte error",e}throw new Error("https://svelte.dev/e/svelte_boundary_reset_onerror")}(),null!==Y(this,E)&&Pn(Y(this,E),()=>{X(this,E,null)}),Q(this,L,j).call(this,()=>{Q(this,L,P).call(this)}))},o=e=>{try{i=!0,t?.(e,a),i=!1}catch(r){at(r,Y(this,w)&&Y(this,w).parent)}n&&X(this,E,Q(this,L,j).call(this,()=>{try{return _n(()=>{var t=qn;t.b=this,t.f|=128,n(Y(this,v),()=>e,()=>a)})}catch(r){return at(r,Y(this,w).parent),null}}))};nt(()=>{var t;try{t=this.transform_error(e)}catch(n){return void at(n,Y(this,w)&&Y(this,w).parent)}null!==t&&"object"==typeof t&&"function"==typeof t.then?t.then(o,e=>at(e,Y(this,w)&&Y(this,w).parent)):o(t)})}}function Lt(e=!0){Gn(null),Dn(null),Ve(null),e&&ht?.deactivate(),te&&Ye(null)}function Pt(){var e=qn.b,t=ht,n=e.is_rendered();return e.update_pending_count(1,t),t.increment(n),(r=!1)=>{e.update_pending_count(-1,t),t.decrement(n,r)}}v=new WeakMap,y=new WeakMap,b=new WeakMap,x=new WeakMap,w=new WeakMap,k=new WeakMap,S=new WeakMap,E=new WeakMap,$=new WeakMap,C=new WeakMap,M=new WeakMap,_=new WeakMap,A=new WeakMap,z=new WeakMap,I=new WeakMap,T=new WeakMap,L=new WeakSet,P=function(){try{if(this.is_pending=this.has_pending_snippet(),X(this,M,0),X(this,C,0),X(this,k,_n(()=>{Y(this,x).call(this,Y(this,v))})),Y(this,M)>0){var e=X(this,$,document.createDocumentFragment());Wn(Y(this,k),e);const t=Y(this,b).pending;X(this,S,_n(()=>t(Y(this,v))))}else Q(this,L,O).call(this,ht)}catch(t){this.error(t)}},O=function(e){this.is_pending=!1,e.transfer_effects(Y(this,A),Y(this,z))},j=function(e){var t=qn,n=Hn,r=Ue;Gn(Y(this,w)),Dn(Y(this,w)),Ve(Y(this,w).ctx);try{return Et.ensure(),e()}catch(i){return it(i),null}finally{Gn(t),Dn(n),Ve(r)}},B=function(e,t){var n;this.has_pending_snippet()?(X(this,M,Y(this,M)+e),0===Y(this,M)&&(Q(this,L,O).call(this,t),Y(this,S)&&Pn(Y(this,S),()=>{X(this,S,null)}),Y(this,$)&&(Y(this,v).before(Y(this,$)),X(this,$,null)))):this.parent&&Q(n=this.parent,L,B).call(n,e,t)};const Ot=new Set;function jt(e){var t=null!==Hn&&2&Hn.f?Hn:null;return null!==qn&&(qn.f|=Ce),{ctx:Ue,deps:null,effects:null,equals:He,f:2050,fn:e,reactions:null,rv:0,v:We,wv:0,parent:t??qn,ac:null}}function Bt(e,t,n){let r=qn;null===r&&function(){if(te){const e=new Error("async_derived_orphan\nCannot create a `$derived(...)` with an `await` expression outside of an effect tree\nhttps://svelte.dev/e/async_derived_orphan");throw e.name="Svelte error",e}throw new Error("https://svelte.dev/e/async_derived_orphan")}();var i=void 0,a=Jt(We);te&&(a.label=t);var o=!Hn,s=new Map;return function(e){wn(4718592,e)}(()=>{var t=qn,n=he();i=n.promise;try{Promise.resolve(e()).then(n.resolve,n.reject).finally(Lt)}catch(u){n.reject(u),Lt()}var c=ht;if(o){if(0!==(t.f&ke))var l=Pt();if(r.b.is_rendered())s.get(c)?.reject(Oe),s.delete(c);else{for(const e of s.values())e.reject(Oe);s.clear()}s.set(c,n)}const d=(e,n=void 0)=>{if(l&&l(n===Oe),n!==Oe&&0===(t.f&we)){if(c.activate(),n)a.f|=ze,Qt(a,n);else{0!==(a.f&ze)&&(a.f^=ze),Qt(a,e);for(const[e,t]of s){if(s.delete(e),e===c)break;t.reject(Oe)}}c.deactivate()}};n.promise.then(d,e=>d(null,e||"unknown"))}),Sn(()=>{for(const e of s.values())e.reject(Oe)}),te&&(a.f|=4194304),new Promise(e=>{!function t(n){function r(){n===i?e(a):t(i)}n.then(r,r)}(i)})}function Wt(e){const t=jt(e);return Vn(t),t}function Kt(e){const t=jt(e);return t.equals=Re,t}function Nt(e){var t=e.effects;if(null!==t){e.effects=null;for(var n=0;n<t.length;n+=1)In(t[n])}}let Ft=[];function Ht(e){var t,n=qn;if(Gn(function(e){for(var t=e.parent;null!==t;){if(!(2&t.f))return 0===(t.f&we)?t:null;t=t.parent}return null}(e)),te){let r=qt;Ut(new Set);try{ie.call(Ft,e)&&function(){if(te){const e=new Error("derived_references_self\nA derived value cannot reference itself recursively\nhttps://svelte.dev/e/derived_references_self");throw e.name="Svelte error",e}throw new Error("https://svelte.dev/e/derived_references_self")}(),Ft.push(e),e.f&=-65537,Nt(e),t=ar(e)}finally{Gn(n),Ut(r),Ft.pop()}}else try{e.f&=-65537,Nt(e),t=ar(e)}finally{Gn(n)}return t}function Rt(e){var t=e.v,n=Ht(e);e.equals(n)||(e.wv=nr(),ht?.is_fork&&null!==e.deps||(e.v=n,ht?.capture(e,t),null!==e.deps))?Nn||(null!==gt?(kn()||ht?.is_fork)&&gt.set(e,n):lt(e)):ct(e,ve)}function Dt(e){if(null!==e.effects)for(const t of e.effects)t.teardown&&cr(t)}let qt=new Set;const Gt=new Map;function Ut(e){qt=e}let Vt=!1;function Jt(e,t){return{f:0,v:e,reactions:null,equals:He,rv:0,wv:0}}function Yt(e,t){const n=Jt(e);return Vn(n),n}function Zt(e,t=!1,n=!0){const r=Jt(e);return t||(r.equals=Re),r}function Xt(e,t,n=!1){null===Hn||Rn&&0===(Hn.f&$e)||!(4325394&Hn.f)||null!==Un&&ie.call(Un,e)||function(){if(te){const e=new Error("state_unsafe_mutation\nUpdating state inside `$derived(...)`, `$inspect(...)` or a template expression is forbidden. If the value should not be reactive, declare it without `$state`\nhttps://svelte.dev/e/state_unsafe_mutation");throw e.name="Svelte error",e}throw new Error("https://svelte.dev/e/state_unsafe_mutation")}();let r=n?an(t):t;return te&&qe(r,e.label),Qt(e,r,bt)}function Qt(e,t,n=null){if(!e.equals(t)){var r=e.v;Gt.set(e,Nn?t:r),e.v=t;var i=Et.ensure();if(i.capture(e,r),te){if(null!==qn){e.updated??(e.updated=new Map);const t=(e.updated.get("")?.count??0)+1;if(e.updated.set("",{error:null,count:t}),t>5){const t=function(){const e=new Error,t=function(){const e=Error.stackTraceLimit;Error.stackTraceLimit=1/0;const t=(new Error).stack;if(Error.stackTraceLimit=e,!t)return[];const n=t.split("\n"),r=[];for(let i=0;i<n.length;i++){const e=n[i],t=e.replaceAll("\\","/");if("Error"!==e.trim()){if(e.includes("validate_each_keys"))return[];t.includes("svelte/src/internal")||t.includes("node_modules/.vite")||r.push(e)}}return r}();return 0===t.length?null:(t.unshift("\n"),oe(e,"stack",{value:t.join("\n")}),oe(e,"name",{value:"updated at"}),e)}();if(null!==t){let n=e.updated.get(t.stack);n||(n={error:t,count:0},e.updated.set(t.stack,n)),n.count++}}}null!==qn&&(e.set_during_effect=!0)}if(2&e.f){const t=e;0!==(e.f&ye)&&Ht(t),null===gt&&lt(t)}e.wv=nr(),nn(e,ye,n),null===qn||0===(qn.f&ve)||96&qn.f||(null===Zn?function(e){Zn=e}([e]):Zn.push(e)),!i.is_fork&&qt.size>0&&!Vt&&en()}return t}function en(){Vt=!1;for(const e of qt)0!==(e.f&ve)&&ct(e,be),rr(e)&&cr(e);qt.clear()}function tn(e){Xt(e,e.v+1)}function nn(e,t,n){var r=e.reactions;if(null!==r)for(var i=r.length,a=0;a<i;a++){var o=r[a],s=o.f;if(te&&0!==(s&$e))qt.add(o);else{var c=0===(s&ye);if(c&&ct(o,t),2&s){var l=o;gt?.delete(l),0===(s&_e)&&(s&me&&(o.f|=_e),nn(l,be,n))}else if(c){var d=o;!!(16&s)&&null!==$t&&$t.add(d),null!==n?n.push(d):At(d)}}}}const rn=/^[a-zA-Z_$][a-zA-Z_$0-9]*$/;function an(e){if("object"!=typeof e||null===e||Ie in e)return e;const t=ue(e);if(t!==le&&t!==de)return e;var n=new Map,r=ne(e),i=Yt(0),a=er,o=e=>{if(er===a)return e();var t=Hn,n=er;Dn(null),tr(a);var r=e();return Dn(t),tr(n),r};r&&(n.set("length",Yt(e.length)),te&&(e=new Proxy(e,{get(e,t,n){var r=Reflect.get(e,t,n);return cn.has(t)?function(...e){Vt=!0;var t=r.apply(this,e);return en(),t}:r}})));var s="";let c=!1;function l(e){if(!c){c=!0,De(i,`${s=e} version`);for(const[e,t]of n)De(t,on(s,e));c=!1}}return new Proxy(e,{defineProperty(e,t,r){"value"in r&&!1!==r.configurable&&!1!==r.enumerable&&!1!==r.writable||function(){if(te){const e=new Error("state_descriptors_fixed\nProperty descriptors defined on `$state` objects must contain `value` and always be `enumerable`, `configurable` and `writable`.\nhttps://svelte.dev/e/state_descriptors_fixed");throw e.name="Svelte error",e}throw new Error("https://svelte.dev/e/state_descriptors_fixed")}();var i=n.get(t);return void 0===i?o(()=>{var e=Yt(r.value);return n.set(t,e),te&&"string"==typeof t&&De(e,on(s,t)),e}):Xt(i,r.value,!0),!0},deleteProperty(e,t){var r=n.get(t);if(void 0===r){if(t in e){const e=o(()=>Yt(We));n.set(t,e),tn(i),te&&De(e,on(s,t))}}else Xt(r,We),tn(i);return!0},get(t,r,i){if(r===Ie)return e;if(te&&r===Pe)return l;var a=n.get(r),c=r in t;if(void 0!==a||c&&!se(t,r)?.writable||(a=o(()=>{var e=Yt(an(c?t[r]:We));return te&&De(e,on(s,r)),e}),n.set(r,a)),void 0!==a){var d=lr(a);return d===We?void 0:d}return Reflect.get(t,r,i)},getOwnPropertyDescriptor(e,t){var r=Reflect.getOwnPropertyDescriptor(e,t);if(r&&"value"in r){var i=n.get(t);i&&(r.value=lr(i))}else if(void 0===r){var a=n.get(t),o=a?.v;if(void 0!==a&&o!==We)return{enumerable:!0,configurable:!0,value:o,writable:!0}}return r},has(e,t){if(t===Ie)return!0;var r=n.get(t),i=void 0!==r&&r.v!==We||Reflect.has(e,t);return!((void 0!==r||null!==qn&&(!i||se(e,t)?.writable))&&(void 0===r&&(r=o(()=>{var n=Yt(i?an(e[t]):We);return te&&De(n,on(s,t)),n}),n.set(t,r)),lr(r)===We))&&i},set(e,t,a,c){var l=n.get(t),d=t in e;if(r&&"length"===t)for(var u=a;u<l.v;u+=1){var f=n.get(u+"");void 0!==f?Xt(f,We):u in e&&(f=o(()=>Yt(We)),n.set(u+"",f),te&&De(f,on(s,u)))}void 0===l?d&&!se(e,t)?.writable||(l=o(()=>Yt(void 0)),te&&De(l,on(s,t)),Xt(l,an(a)),n.set(t,l)):(d=l.v!==We,Xt(l,o(()=>an(a))));var p=Reflect.getOwnPropertyDescriptor(e,t);if(p?.set&&p.set.call(c,a),!d){if(r&&"string"==typeof t){var h=n.get("length"),g=Number(t);Number.isInteger(g)&&g>=h.v&&Xt(h,g+1)}tn(i)}return!0},ownKeys(e){lr(i);var t=Reflect.ownKeys(e).filter(e=>{var t=n.get(e);return void 0===t||t.v!==We});for(var[r,a]of n)a.v===We||r in e||t.push(r);return t},setPrototypeOf(){!function(){if(te){const e=new Error("state_prototype_fixed\nCannot set prototype of `$state` object\nhttps://svelte.dev/e/state_prototype_fixed");throw e.name="Svelte error",e}throw new Error("https://svelte.dev/e/state_prototype_fixed")}()}})}function on(e,t){return"symbol"==typeof t?`${e}[Symbol(${t.description??""})]`:rn.test(t)?`${e}.${t}`:/^\d+$/.test(t)?`${e}[${t}]`:`${e}['${t}']`}function sn(e){try{if(null!==e&&"object"==typeof e&&Ie in e)return e[Ie]}catch{}return e}const cn=new Set(["copyWithin","fill","pop","push","reverse","shift","sort","splice","unshift"]);var ln,dn,un,fn;function pn(e=""){return document.createTextNode(e)}function hn(e){return un.call(e)}function gn(e){return fn.call(e)}function mn(e,t){return hn(e)}function vn(e,t=!1){var n=hn(e);return n instanceof Comment&&""===n.data?gn(n):n}function yn(e,t=1,n=!1){let r=e;for(;t--;)r=gn(r);return r}function bn(e,t,n){return document.createElementNS(t??Ne,e,void 0)}function xn(e){var t=Hn,n=qn;Dn(null),Gn(null);try{return e()}finally{Dn(t),Gn(n)}}function wn(e,t){var n=qn;if(te)for(;null!==n&&0!==(n.f&$e);)n=n.parent;null!==n&&0!==(n.f&xe)&&(e|=xe);var r={ctx:Ue,deps:null,nodes:null,f:e|ye|me,first:null,fn:t,last:null,next:null,parent:n,b:n&&n.b,prev:null,teardown:null,wv:0,ac:null};te&&(r.component_function=Ze);var i=r;if(4&e)null!==yt?yt.push(r):Et.ensure().schedule(r);else if(null!==t){try{cr(r)}catch(a){throw In(r),a}null===i.deps&&null===i.teardown&&null===i.nodes&&i.first===i.last&&0===(i.f&Ce)&&(i=i.first,16&e&&0!==(e&Ee)&&null!==i&&(i.f|=Ee))}return null!==i&&(i.parent=n,null!==n&&function(e,t){var n=t.last;null===n?t.last=t.first=e:(n.next=e,e.prev=n,t.last=e)}(i,n),null!==Hn&&2&Hn.f&&!(64&e))&&(Hn.effects??(Hn.effects=[])).push(i),r}function kn(){return null!==Hn&&!Rn}function Sn(e){const t=wn(8,null);return ct(t,ve),t.teardown=e,t}function En(e){return wn(1048580,e)}function $n(e,t=0){return wn(8|t,e)}function Cn(e,t=[],n=[],r=[]){!function(e,t,n,r){const i=jt;var a=e.filter(e=>!e.settled);if(0!==n.length||0!==a.length){var o=qn,s=function(){var e=qn,t=Hn,n=Ue,r=ht;if(te)var i=Je;return function(a=!0){Gn(e),Dn(t),Ve(n),a&&0===(e.f&we)&&(r?.activate(),r?.apply()),te&&Ye(i)}}(),c=1===a.length?a[0].promise:a.length>1?Promise.all(a.map(e=>e.promise)):null;if(0!==n.length){var l=Pt();c?c.then(()=>{s(),u(),Lt()}):u()}else c.then(()=>d(t.map(i)))}else r(t.map(i));function d(e){s();try{r(e)}catch(t){0===(o.f&we)&&at(t,o)}Lt()}function u(){Promise.all(n.map(e=>Bt(e))).then(e=>d([...t.map(i),...e])).catch(e=>at(e,o)).finally(()=>l())}}(r,t,n,t=>{wn(8,()=>e(...t.map(lr)))})}function Mn(e,t=0){var n=wn(16|t,e);return te&&(n.dev_stack=Je),n}function _n(e){return wn(524320,e)}function An(e){var t=e.teardown;if(null!==t){const e=Nn,n=Hn;Fn(!0),Dn(null);try{t.call(null)}finally{Fn(e),Dn(n)}}}function zn(e,t=!1){var n=e.first;for(e.first=e.last=null;null!==n;){const e=n.ac;null!==e&&xn(()=>{e.abort(Oe)});var r=n.next;64&n.f?n.parent=null:In(n,t),n=r}}function In(e,t=!0){var n=!1;(t||262144&e.f)&&null!==e.nodes&&null!==e.nodes.end&&(Tn(e.nodes.start,e.nodes.end),n=!0),ct(e,Se),zn(e,t&&!n),sr(e,0);var r=e.nodes&&e.nodes.t;if(null!==r)for(const a of r)a.stop();An(e),e.f^=Se,e.f|=we;var i=e.parent;null!==i&&null!==i.first&&Ln(e),te&&(e.component_function=null),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=null}function Tn(e,t){for(;null!==e;){var n=e===t?null:gn(e);e.remove(),e=n}}function Ln(e){var t=e.parent,n=e.prev,r=e.next;null!==n&&(n.next=r),null!==r&&(r.prev=n),null!==t&&(t.first===e&&(t.first=r),t.last===e&&(t.last=n))}function Pn(e,t,n=!0){var r=[];On(e,r,!0);var i=()=>{n&&In(e),t&&t()},a=r.length;if(a>0){var o=()=>--a||i();for(var s of r)s.out(o)}else i()}function On(e,t,n){if(0===(e.f&xe)){e.f^=xe;var r=e.nodes&&e.nodes.t;if(null!==r)for(const e of r)(e.is_global||n)&&t.push(e);for(var i=e.first;null!==i;){var a=i.next;On(i,t,!!(0!==(i.f&Ee)||0!==(i.f&ge)&&16&e.f)&&n),i=a}}}function jn(e){Bn(e,!0)}function Bn(e,t){if(0!==(e.f&xe)){e.f^=xe,0===(e.f&ve)&&(ct(e,ye),Et.ensure().schedule(e));for(var n=e.first;null!==n;){var r=n.next;Bn(n,!(0===(n.f&Ee)&&0===(n.f&ge))&&t),n=r}var i=e.nodes&&e.nodes.t;if(null!==i)for(const e of i)(e.is_global||t)&&e.in()}}function Wn(e,t){if(e.nodes)for(var n=e.nodes.start,r=e.nodes.end;null!==n;){var i=n===r?null:gn(n);t.append(n),n=i}}let Kn=!1,Nn=!1;function Fn(e){Nn=e}let Hn=null,Rn=!1;function Dn(e){Hn=e}let qn=null;function Gn(e){qn=e}let Un=null;function Vn(e){null!==Hn&&(null===Un?Un=[e]:Un.push(e))}let Jn=null,Yn=0,Zn=null,Xn=1,Qn=0,er=Qn;function tr(e){er=e}function nr(){return++Xn}function rr(e){var t=e.f;if(0!==(t&ye))return!0;if(2&t&&(e.f&=-65537),0!==(t&be)){for(var n=e.deps,r=n.length,i=0;i<r;i++){var a=n[i];if(rr(a)&&Rt(a),a.wv>e.wv)return!0}0!==(t&me)&&null===gt&&ct(e,ve)}return!1}function ir(e,t,n=!0){var r=e.reactions;if(null!==r&&(null===Un||!ie.call(Un,e)))for(var i=0;i<r.length;i++){var a=r[i];2&a.f?ir(a,t,!1):t===a&&(n?ct(a,ye):0!==(a.f&ve)&&ct(a,be),At(a))}}function ar(e){var t,n=Jn,r=Yn,i=Zn,a=Hn,o=Un,s=Ue,c=Rn,l=er;Jn=null,Yn=0,Zn=null,Hn=96&e.f?null:e,Un=null,Ve(e.ctx),Rn=!1,er=++Qn,null!==e.ac&&(xn(()=>{e.ac.abort(Oe)}),e.ac=null);try{e.f|=Ae;var d=(0,e.fn)();e.f|=ke;var u=e.deps,f=ht?.is_fork;if(null!==Jn){var p;if(f||sr(e,Yn),null!==u&&Yn>0)for(u.length=Yn+Jn.length,p=0;p<Jn.length;p++)u[Yn+p]=Jn[p];else e.deps=u=Jn;if(kn()&&0!==(e.f&me))for(p=Yn;p<u.length;p++)((t=u[p]).reactions??(t.reactions=[])).push(e)}else!f&&null!==u&&Yn<u.length&&(sr(e,Yn),u.length=Yn);if(!(null===Zn||Rn||null===u||6146&e.f))for(p=0;p<Zn.length;p++)ir(Zn[p],e);if(null!==a&&a!==e){if(Qn++,null!==a.deps)for(let e=0;e<r;e+=1)a.deps[e].rv=Qn;if(null!==n)for(const e of n)e.rv=Qn;null!==Zn&&(null===i?i=Zn:i.push(...Zn))}return 0!==(e.f&ze)&&(e.f^=ze),d}catch(h){return it(h)}finally{e.f^=Ae,Jn=n,Yn=r,Zn=i,Hn=a,Un=o,Ve(s),Rn=c,er=l}}function or(e,t){let n=t.reactions;if(null!==n){var r=re.call(n,e);if(-1!==r){var i=n.length-1;0===i?n=t.reactions=null:(n[r]=n[i],n.pop())}}if(null===n&&2&t.f&&(null===Jn||!ie.call(Jn,t))){var a=t;0!==(a.f&me)&&(a.f^=me,a.f&=-65537),lt(a),function(e){if(null!==e.effects)for(const t of e.effects)(t.teardown||t.ac)&&(t.teardown?.(),t.ac?.abort(Oe),t.teardown=pe,t.ac=null,sr(t,0),zn(t))}(a),sr(a,0)}}function sr(e,t){var n=e.deps;if(null!==n)for(var r=t;r<n.length;r++)or(e,n[r])}function cr(e){var t=e.f;if(0===(t&we)){ct(e,ve);var n=qn,r=Kn;if(qn=e,Kn=!0,te){var i=Ze;Xe(e.component_function);var a=Je;Ye(e.dev_stack??Je)}try{16777232&t?function(e){for(var t=e.first;null!==t;){var n=t.next;0===(t.f&ge)&&In(t),t=n}}(e):zn(e),An(e);var o=ar(e);e.teardown="function"==typeof o?o:null,e.wv=Xn}finally{Kn=r,qn=n,te&&(Xe(i),Ye(a))}}}function lr(e){var t=!!(2&e.f);if(null!==Hn&&!Rn&&!(null!==qn&&0!==(qn.f&we)||null!==Un&&ie.call(Un,e))){var n=Hn.deps;if(0!==(Hn.f&Ae))e.rv<Qn&&(e.rv=Qn,null===Jn&&null!==n&&n[Yn]===e?Yn++:null===Jn?Jn=[e]:Jn.push(e));else{(Hn.deps??(Hn.deps=[])).push(e);var r=e.reactions;null===r?e.reactions=[Hn]:ie.call(r,Hn)||r.push(Hn)}}if(te&&Ot.delete(e),Nn&&Gt.has(e))return Gt.get(e);if(t){var i=e;if(Nn){var a=i.v;return(0===(i.f&ve)&&null!==i.reactions||ur(i))&&(a=Ht(i)),Gt.set(i,a),a}var o=0===(i.f&me)&&!Rn&&null!==Hn&&(Kn||0!==(Hn.f&me)),s=0===(i.f&ke);rr(i)&&(o&&(i.f|=me),Rt(i)),o&&!s&&(Dt(i),dr(i))}if(gt?.has(e))return gt.get(e);if(0!==(e.f&ze))throw e.v;return e.v}function dr(e){if(e.f|=me,null!==e.deps)for(const t of e.deps)(t.reactions??(t.reactions=[])).push(e),2&t.f&&0===(t.f&me)&&(Dt(t),dr(t))}function ur(e){if(e.v===We)return!0;if(null===e.deps)return!1;for(const t of e.deps){if(Gt.has(t))return!0;if(2&t.f&&ur(t))return!0}return!1}function fr(e){var t=Rn;try{return Rn=!0,e()}finally{Rn=t}}const pr=["touchstart","touchmove"];function hr(e){return pr.includes(e)}const gr=Symbol("events"),mr=new Set,vr=new Set;function yr(e,t,n){(t[gr]??(t[gr]={}))[e]=n}function br(e){for(var t=0;t<e.length;t++)mr.add(e[t]);for(var n of vr)n(e)}let xr=null;function wr(e){var t=this,n=t.ownerDocument,r=e.type,i=e.composedPath?.()||[],a=i[0]||e.target;xr=e;var o=0,s=xr===e&&e[gr];if(s){var c=i.indexOf(s);if(-1!==c&&(t===document||t===window))return void(e[gr]=t);var l=i.indexOf(t);if(-1===l)return;c<=l&&(o=c)}if((a=i[o]||e.target)!==t){oe(e,"currentTarget",{configurable:!0,get:()=>a||n});var d=Hn,u=qn;Dn(null),Gn(null);try{for(var f,p=[];null!==a;){var h=a.assignedSlot||a.parentNode||a.host||null;try{var g=a[gr]?.[r];null==g||a.disabled&&e.target!==a||g.call(a,e)}catch(m){f?p.push(m):f=m}if(e.cancelBubble||h===t||null===h)break;a=h}if(f){for(let e of p)queueMicrotask(()=>{throw e});throw f}}finally{e[gr]=t,delete e.currentTarget,Dn(d),Gn(u)}}}const kr=globalThis?.window?.trustedTypes&&globalThis.window.trustedTypes.createPolicy("svelte-trusted-html",{createHTML:e=>e});function Sr(e,t){null===qn.nodes&&(qn.nodes={start:e,end:t,a:null,t:null})}function Er(e,t){var n,r=!!(1&t),i=!!(2&t),a=!e.startsWith("<!>");return()=>{var t,o;void 0===n&&(t=a?e:"<!>"+e,(o=bn("template")).innerHTML=function(e){return kr?.createHTML(e)??e}(t.replaceAll("<!>","\x3c!----\x3e")),n=o.content,r||(n=hn(n)));var s=i||dn?document.importNode(n,!0):n.cloneNode(!0);return r?Sr(hn(s),s.lastChild):Sr(s,s),s}}function $r(){var e=document.createDocumentFragment(),t=document.createComment(""),n=pn();return e.append(t,n),Sr(t,n),e}function Cr(e,t){null!==e&&e.before(t)}function Mr(e,t){var n=null==t?"":"object"==typeof t?`${t}`:t;n!==(e.__t??(e.__t=e.nodeValue))&&(e.__t=n,e.nodeValue=`${n}`)}const _r=new Map;let Ar=new WeakMap;class zr{constructor(e,t=!0){V(this,"anchor"),Z(this,W,new Map),Z(this,K,new Map),Z(this,N,new Map),Z(this,F,new Set),Z(this,H,!0),Z(this,R,e=>{if(Y(this,W).has(e)){var t=Y(this,W).get(e),n=Y(this,K).get(t);if(n)jn(n),Y(this,F).delete(t);else{var r=Y(this,N).get(t);r&&(Y(this,K).set(t,r.effect),Y(this,N).delete(t),r.fragment.lastChild.remove(),this.anchor.before(r.fragment),n=r.effect)}for(const[t,n]of Y(this,W)){if(Y(this,W).delete(t),t===e)break;const r=Y(this,N).get(n);r&&(In(r.effect),Y(this,N).delete(n))}for(const[e,r]of Y(this,K)){if(e===t||Y(this,F).has(e))continue;const i=()=>{if(Array.from(Y(this,W).values()).includes(e)){var t=document.createDocumentFragment();Wn(r,t),t.append(pn()),Y(this,N).set(e,{effect:r,fragment:t})}else In(r);Y(this,F).delete(e),Y(this,K).delete(e)};Y(this,H)||!n?(Y(this,F).add(e),Pn(r,i,!1)):i()}}}),Z(this,D,e=>{Y(this,W).delete(e);const t=Array.from(Y(this,W).values());for(const[n,r]of Y(this,N))t.includes(n)||(In(r.effect),Y(this,N).delete(n))}),this.anchor=e,X(this,H,t)}ensure(e,t){var n=ht;!t||Y(this,K).has(e)||Y(this,N).has(e)||Y(this,K).set(e,_n(()=>t(this.anchor))),Y(this,W).set(n,e),Y(this,R).call(this,n)}}function Ir(e,t,n=!1){var r=new zr(e);function i(e,t){r.ensure(e,t)}Mn(()=>{var e=!1;t((t,n=0)=>{e=!0,i(n,t)}),e||i(-1,null)},n?Ee:0)}function Tr(e,t){return t}function Lr(e,t,n=!0){var r;if(e.pending.size>0){r=new Set;for(const t of e.pending.values())for(const n of t)r.add(e.items.get(n).e)}for(var i=0;i<t.length;i++){var a=t[i];r?.has(a)?(a.f|=Me,Wn(a,document.createDocumentFragment())):In(t[i],n)}}var Pr;function Or(e,t,n,r,i,a=null){var o=e,s=new Map;!(4&t)||(o=e.appendChild(pn()));var c,l=null,d=Kt(()=>{var e=n();return ne(e)?e:null==e?[]:ae(e)}),u=new Map,f=!0,p={effect:Mn(()=>{for(var e=(c=lr(d)).length,h=new Set,g=ht,m=0;m<e;m+=1){var v=c[m],y=r(v,m);if(te){var b=r(v,m);y!==b&&Be(String(m),String(y),String(b))}var x=f?null:s.get(y);x?(x.v&&Qt(x.v,v),x.i&&Qt(x.i,m)):(x=Br(s,f?o:Pr??(Pr=pn()),v,y,m,i,t,n),f||(x.e.f|=Me),s.set(y,x)),h.add(y)}0===e&&a&&!l&&(f?l=_n(()=>a(o)):(l=_n(()=>a(Pr??(Pr=pn())))).f|=Me),e>h.size&&(te?function(e,t){const n=new Map,r=e.length;for(let i=0;i<r;i++){const r=t(e[i],i);if(n.has(r)){const e=String(n.get(r)),t=String(i);let a=String(r);a.startsWith("[object ")&&(a=null),je(e,t,a)}n.set(r,i)}}(c,r):je("","","")),f||(u.set(g,h),function(e){0===(p.effect.f&we)&&(p.pending.delete(e),p.fallback=l,function(e,t,n,r,i){var a,o,s,c,l,d=!!(8&r),u=t.length,f=e.items,p=jr(e.effect.first),h=null,g=[],m=[];if(d)for(l=0;l<u;l+=1)s=i(t[l],l),0===((c=f.get(s).e).f&Me)&&(c.nodes?.a?.measure(),(o??(o=new Set)).add(c));for(l=0;l<u;l+=1){if(s=i(t[l],l),c=f.get(s).e,null!==e.outrogroups)for(const t of e.outrogroups)t.pending.delete(c),t.done.delete(c);if(0!==(c.f&Me)){if(c.f^=Me,c!==p){var v=h?h.next:p;c===e.effect.last&&(e.effect.last=c.prev),c.prev&&(c.prev.next=c.next),c.next&&(c.next.prev=c.prev),Kr(e,h,c),Kr(e,c,v),Wr(c,v,n),g=[],m=[],p=jr((h=c).next);continue}Wr(c,null,n)}if(0!==(c.f&xe)&&(jn(c),d&&(c.nodes?.a?.unfix(),(o??(o=new Set)).delete(c))),c!==p){if(void 0!==a&&a.has(c)){if(g.length<m.length){var y,b=m[0];h=b.prev;var x=g[0],w=g[g.length-1];for(y=0;y<g.length;y+=1)Wr(g[y],b,n);for(y=0;y<m.length;y+=1)a.delete(m[y]);Kr(e,x.prev,w.next),Kr(e,h,x),Kr(e,w,b),p=b,h=w,l-=1,g=[],m=[]}else a.delete(c),Wr(c,p,n),Kr(e,c.prev,c.next),Kr(e,c,null===h?e.effect.first:h.next),Kr(e,h,c),h=c;continue}for(g=[],m=[];null!==p&&p!==c;)(a??(a=new Set)).add(p),m.push(p),p=jr(p.next);if(null===p)continue}0===(c.f&Me)&&g.push(c),h=c,p=jr(c.next)}if(null!==e.outrogroups){for(const t of e.outrogroups)0===t.pending.size&&(Lr(e,ae(t.done)),e.outrogroups?.delete(t));0===e.outrogroups.size&&(e.outrogroups=null)}if(null!==p||void 0!==a){var k=[];if(void 0!==a)for(c of a)0===(c.f&xe)&&k.push(c);for(;null!==p;)0===(p.f&xe)&&p!==e.fallback&&k.push(p),p=jr(p.next);var S=k.length;if(S>0){var E=4&r&&0===u?n:null;if(d){for(l=0;l<S;l+=1)k[l].nodes?.a?.measure();for(l=0;l<S;l+=1)k[l].nodes?.a?.fix()}!function(e,t,n){for(var r,i=t.length,a=t.length,o=0;o<i;o++){let n=t[o];Pn(n,()=>{if(r){if(r.pending.delete(n),r.done.add(n),0===r.pending.size){var t=e.outrogroups;Lr(e,ae(r.done)),t.delete(r),0===t.size&&(e.outrogroups=null)}}else a-=1},!1)}if(0===a){var s=null!==n;if(s){var c=n,l=c.parentNode;l.textContent="",l.append(c),e.items.clear()}Lr(e,t,!s)}else r={pending:new Set(t),done:new Set},(e.outrogroups??(e.outrogroups=new Set)).add(r)}(e,k,E)}}d&&nt(()=>{if(void 0!==o)for(c of o)c.nodes?.a?.apply()})}(p,c,o,t,r),null!==l&&(0===c.length?0===(l.f&Me)?jn(l):(l.f^=Me,Wr(l,null,o)):Pn(l,()=>{l=null})))}(g)),lr(d)}),items:s,pending:u,outrogroups:null,fallback:l};f=!1}function jr(e){for(;null!==e&&0===(e.f&ge);)e=e.next;return e}function Br(e,t,n,r,i,a,o,s){var c=1&o?16&o?Jt(n):Zt(n,!1,!1):null,l=2&o?Jt(i):null;return te&&c&&(c.trace=()=>{s()}),{v:c,i:l,e:_n(()=>(a(t,c??n,l??i,s),()=>{e.delete(r)}))}}function Wr(e,t,n){if(e.nodes)for(var r=e.nodes.start,i=e.nodes.end,a=t&&0===(t.f&Me)?t.nodes.start:n;null!==r;){var o=gn(r);if(a.before(r),r===i)return;r=o}}function Kr(e,t,n){null===t?e.effect.first=n:t.next=n,null===n?e.effect.last=t:n.prev=t}function Nr(e,t,n=!1,r=!1,i=!1,a=!1){var o=e,s="";if(n)var c=e;Cn(()=>{var e=qn;if(s!==(s=t()??"")){if(n)return e.nodes=null,c.innerHTML=s,void(""!==s&&Sr(hn(c),c.lastChild));if(null!==e.nodes&&(Tn(e.nodes.start,e.nodes.end),e.nodes=null),""!==s){var a=bn(r?"svg":i?"math":"template",r?"http://www.w3.org/2000/svg":i?"http://www.w3.org/1998/Math/MathML":void 0);a.innerHTML=s;var l=r||i?a:a.content;if(Sr(hn(l),l.lastChild),r||i)for(;hn(l);)o.before(hn(l));else o.before(l)}}})}W=new WeakMap,K=new WeakMap,N=new WeakMap,F=new WeakMap,H=new WeakMap,R=new WeakMap,D=new WeakMap;const Fr=Symbol("is custom element"),Hr=Symbol("is html");function Rr(e,t,n,r){var i=function(e){return e.__attributes??(e.__attributes={[Fr]:e.nodeName.includes("-"),[Hr]:e.namespaceURI===Ne})}(e);i[t]!==(i[t]=n)&&("loading"===t&&(e[Le]=n),null==n?e.removeAttribute(t):"string"!=typeof n&&function(e){var t,n=e.getAttribute("is")||e.nodeName,r=Dr.get(n);if(r)return r;Dr.set(n,r=[]);for(var i=e,a=Element.prototype;a!==i;){for(var o in t=ce(i))t[o].set&&r.push(o);i=ue(i)}return r}(e).includes(t)?e[t]=n:e.setAttribute(t,n))}var Dr=new Map;function qr(e,t){return e===t||e?.[Ie]===t}function Gr(e={},t,n,r){var i=Ue.r,a=qn;return wn(4,()=>{var r,o;return $n(()=>{r=o,o=[],fr(()=>{e!==n(...o)&&(t(e,...o),r&&qr(n(...r),e)&&t(null,...r))})}),()=>{let r=a;for(;r!==i&&null!==r.parent&&r.parent.f&Se;)r=r.parent;const s=r.teardown;r.teardown=()=>{o&&qr(n(...o),e)&&t(null,...o),s?.()}}}),e}function Ur(e,t,n,r){var i=!!(8&n),a=!!(16&n),o=r,s=!0,c=()=>(s&&(s=!1,o=a?fr(r):r),o);let l;if(i){var d=Ie in e||Te in e;l=se(e,t)?.set??(d&&t in e?n=>e[t]=n:void 0)}var u,f,p=!1;if(i?[u,p]=function(){var n=ft;try{return ft=!1,[e[t],ft]}finally{ft=n}}():u=e[t],void 0===u&&void 0!==r&&(u=c(),l&&(function(e){if(te){const t=new Error(`props_invalid_value\nCannot do \`bind:${e}={undefined}\` when \`${e}\` has a fallback value\nhttps://svelte.dev/e/props_invalid_value`);throw t.name="Svelte error",t}throw new Error("https://svelte.dev/e/props_invalid_value")}(t),l(u))),f=()=>{var n=e[t];return void 0===n?c():(s=!0,n)},!(4&n))return f;if(l){var h=e.$$legacy;return function(e,t){return arguments.length>0?((!t||h||p)&&l(t?f():e),e):f()}}var g=!1,m=(1&n?jt:Kt)(()=>(g=!1,f()));te&&(m.label=t),i&&lr(m);var v=qn;return function(e,t){if(arguments.length>0){const n=t?lr(m):i?an(e):e;return Xt(m,n),g=!0,void 0!==o&&(o=n),e}return Nn&&g||0!==(v.f&we)?m.v:lr(m)}}if(te){let e=function(e){if(!(e in globalThis)){let t;Object.defineProperty(globalThis,e,{configurable:!0,get:()=>{if(void 0!==t)return t;!function(e){if(te){const t=new Error(`rune_outside_svelte\nThe \`${e}\` rune is only available inside \`.svelte\` and \`.svelte.js/ts\` files\nhttps://svelte.dev/e/rune_outside_svelte`);throw t.name="Svelte error",t}throw new Error("https://svelte.dev/e/rune_outside_svelte")}(e)},set:e=>{t=e}})}};e("$state"),e("$effect"),e("$derived"),e("$inspect"),e("$props"),e("$bindable")}function Vr(e){return`<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">${e}</svg>`}function Jr(){return Vr('<circle cx="12" cy="4.5" r="1.5"/><path d="M12 7.5v5m0 0l-3 4.5m3-4.5l3 4.5"/><path d="M6.5 9.5h11"/>')}function Yr(){return Vr('<path d="M11 5L6 9H3v6h3l5 4V5z"/><path d="M15 9a4 4 0 0 1 0 6"/><path d="M18 6a8 8 0 0 1 0 12"/>')}function Zr(){return Vr('<path d="M12 2a5 5 0 0 1 4.65 3.2A4.5 4.5 0 0 1 20 9.5a4.5 4.5 0 0 1-1.5 3.35A5 5 0 0 1 12 18"/><path d="M12 2a5 5 0 0 0-4.65 3.2A4.5 4.5 0 0 0 4 9.5a4.5 4.5 0 0 0 1.5 3.35A5 5 0 0 0 12 18"/><path d="M12 18v4"/><path d="M8 10h.01"/><path d="M16 10h.01"/><path d="M9 14c1 1 5 1 6 0"/>')}function Xr(){return Vr('<rect x="3" y="3" width="18" height="18" rx="2"/><path d="M3 16l5-5 4 4 3-3 6 6"/><circle cx="8.5" cy="8.5" r="1.5"/><text x="12" y="21.5" text-anchor="middle" fill="currentColor" stroke="none" font-size="5" font-weight="bold" font-family="sans-serif">ALT</text>')}function Qr(){return Vr('<path d="M18 6L6 18"/><path d="M6 6l12 12"/>')}function ei(){return Vr('<path d="M3 12a9 9 0 1 0 3-6.7"/><path d="M3 3v5.3h5.3"/>')}"undefined"!=typeof window&&((q=window.__svelte??(window.__svelte={})).v??(q.v=new Set)).add("5");const ti={accessibility:Jr,contrast:function(){return Vr('<circle cx="12" cy="12" r="9"/><path d="M12 3v18" /><path d="M12 3a9 9 0 0 1 0 18" fill="currentColor" stroke="none"/>')},"text-size":function(){return Vr('<path d="M4 19l4-12h1l4 12"/><path d="M5.5 15h5"/><path d="M17 5v14"/><path d="M14 8l3-3 3 3"/><path d="M14 16l3 3 3-3"/>')},spacing:function(){return Vr('<path d="M4 9h16"/><path d="M4 15h16"/><path d="M10 5l-2 2 2 2"/><path d="M14 5l2 2-2 2"/><path d="M10 17l-2-2 2-2"/><path d="M14 17l2-2-2-2"/>')},font:function(){return Vr('<path d="M6 4h10a2 2 0 0 1 2 2v1"/><path d="M6 4v16"/><path d="M6 12h8"/><path d="M4 20h4"/>')},"reading-guide":function(){return Vr('<path d="M3 12h18"/><path d="M3 6h18" opacity="0.3"/><path d="M3 18h18" opacity="0.3"/><rect x="1" y="10" width="22" height="4" rx="1" stroke-dasharray="4 2"/>')},focus:function(){return Vr('<circle cx="12" cy="12" r="3"/><circle cx="12" cy="12" r="7"/><path d="M12 2v3"/><path d="M12 19v3"/><path d="M2 12h3"/><path d="M19 12h3"/>')},"animation-pause":function(){return Vr('<circle cx="12" cy="12" r="9"/><path d="M10 8v8"/><path d="M14 8v8"/>')},cursor:function(){return Vr('<path d="M5 3l1.5 16 3.5-4 5 6 2-1.5-5-6h5.5z"/><path d="M18 12h4"/><path d="M20 10v4"/>')},speaker:Yr,tts:Yr,brain:Zr,ai:Zr,image:Xr,"alt-text":Xr,keyboard:function(){return Vr('<rect x="2" y="6" width="20" height="12" rx="2"/><path d="M6 10h.01"/><path d="M10 10h.01"/><path d="M14 10h.01"/><path d="M18 10h.01"/><path d="M8 14h8"/>')},"color-blindness":function(){return Vr('<path d="M2 12s4-8 10-8 10 8 10 8-4 8-10 8-10-8-10-8z"/><circle cx="12" cy="12" r="3"/><path d="M12 9v6" stroke-dasharray="2 1"/><path d="M9 12h6" stroke-dasharray="2 1"/>')},"link-highlight":function(){return Vr('<path d="M10 13a5 5 0 0 0 7.07.5l2.12-2.12a5 5 0 0 0-7.07-7.07l-1.06 1.06"/><path d="M14 11a5 5 0 0 0-7.07-.5L4.81 12.6a5 5 0 0 0 7.07 7.07l1.06-1.06"/><path d="M2 20l4-4" stroke-width="3" opacity="0.4"/>')},close:Qr,"close-x":Qr,reset:ei,chevron:function(){return Vr('<path d="M9 18l6-6-6-6"/>')},checkmark:function(){return Vr('<path d="M20 6L9 17l-5-5"/>')},warning:function(){return Vr('<path d="M10.3 3.2L1.7 18a2 2 0 0 0 1.7 3h17.2a2 2 0 0 0 1.7-3L13.7 3.2a2 2 0 0 0-3.4 0z"/><path d="M12 9v4"/><path d="M12 17h.01"/>')},scan:function(){return Vr('<circle cx="11" cy="11" r="7"/><path d="M21 21l-4.35-4.35"/><path d="M8 9h6"/><path d="M8 11h4"/><path d="M8 13h5"/>')},"simplify-text":function(){return Vr('<rect x="4" y="2" width="16" height="20" rx="2"/><path d="M8 6h8"/><path d="M8 10h8" opacity="0.35" stroke-dasharray="2 2"/><path d="M8 14h5"/><path d="M8 18h6" opacity="0.35" stroke-dasharray="2 2"/>')},eye:function(){return Vr('<path d="M2 12s4-8 10-8 10 8 10 8-4 8-10 8-10-8-10-8z"/><circle cx="12" cy="12" r="3"/>')},shield:function(){return Vr('<path d="M12 2l8 4v6c0 5.5-3.8 10.7-8 12-4.2-1.3-8-6.5-8-12V6l8-4z"/><path d="M9 12l2 2 4-4"/>')},saturation:function(){return Vr('<path d="M12 2.7c-4.5 5-7 8.5-7 11.8a7 7 0 0 0 14 0c0-3.3-2.5-6.8-7-11.8z"/><path d="M12 9v9"/><path d="M12 9a4.5 4.5 0 0 0 0 9" fill="currentColor" stroke="none" opacity="0.3"/>')},"hide-images":function(){return Vr('<rect x="3" y="3" width="18" height="18" rx="2"/><circle cx="8.5" cy="8.5" r="1.5"/><path d="M3 16l5-5 4 4 3-3 6 6"/><path d="M2 2l20 20" stroke-width="2.5"/>')},"text-align":function(){return Vr('<path d="M4 6h16"/><path d="M4 10h10"/><path d="M4 14h16"/><path d="M4 18h10"/>')},"reading-mask":function(){return Vr('<rect x="2" y="2" width="20" height="20" rx="2" opacity="0.3"/><rect x="4" y="8" width="16" height="8" rx="1"/><path d="M4 8h16" stroke-dasharray="3 2"/><path d="M4 16h16" stroke-dasharray="3 2"/>')},"page-structure":function(){return Vr('<path d="M4 6h4"/><path d="M4 6v6"/><path d="M8 6v6"/><path d="M4 9h4"/><path d="M12 7h8" stroke-width="1.5"/><path d="M14 12h6" opacity="0.6"/><path d="M14 16h6" opacity="0.6"/><path d="M12 20h8" stroke-width="1.5"/>')},"line-height":function(){return Vr('<path d="M10 6h10"/><path d="M10 12h10"/><path d="M10 18h10"/><path d="M4 4v16"/><path d="M2 7l2-3 2 3"/><path d="M2 17l2 3 2-3"/>')},globe:function(){return Vr('<circle cx="12" cy="12" r="10"/><path d="M2 12h20"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/>')},profile:function(){return Vr('<circle cx="12" cy="8" r="4"/><path d="M4 20c0-4 4-7 8-7s8 3 8 7"/>')}},ni={de:{"widget.title":"Barrierefreiheit","widget.open":"Barrierefreiheit-Einstellungen öffnen","widget.close":"Schließen","widget.reset":"Alle zurücksetzen","widget.resetConfirm":"Alle Anpassungen zurückgesetzt","widget.poweredBy":"Bereitgestellt von Accessify","widget.statement":"Barrierefreiheitserklärung","status.active":"{count} aktiv","status.noActive":"Keine Anpassungen aktiv","status.activated":"aktiviert","status.deactivated":"deaktiviert","section.profiles":"Schnellprofile","category.visual":"Visuell","category.motor":"Motorik & Navigation","category.cognitive":"Kognitiv","category.ai":"KI-Funktionen","profile.visionImpaired":"Sehbeeinträchtigung","profile.visionImpaired.desc":"Hoher Kontrast, größerer Text und Cursor","profile.motorImpaired":"Motorische Einschränkung","profile.motorImpaired.desc":"Tastaturnavigation und Fokus-Hilfen","profile.cognitive":"Kognitive Unterstützung","profile.cognitive.desc":"Lesehilfen, Abstände und einfachere Schrift","profile.seizureSafe":"Anfallssicher","profile.seizureSafe.desc":"Animationen stoppen und Reize reduzieren","profile.adhdFriendly":"ADHS-freundlich","profile.adhdFriendly.desc":"Ablenkungen reduzieren und Fokus verbessern","feature.contrast":"Kontrast","feature.contrast.desc":"Kontrast erhöhen für bessere Lesbarkeit","feature.textSize":"Größerer Text","feature.textSize.desc":"Text vergrößern oder verkleinern","feature.spacing":"Textabstand","feature.spacing.desc":"Abstände zwischen Buchstaben und Zeilen anpassen","feature.dyslexiaFont":"Legasthenie-Schrift","feature.dyslexiaFont.desc":"Spezielle Schriftart für bessere Lesbarkeit","feature.readingGuide":"Leselineal","feature.readingGuide.desc":"Horizontales Lineal zum zeilenweisen Lesen","feature.focusHighlight":"Fokus-Hervorhebung","feature.focusHighlight.desc":"Sichtbare Umrandung fokussierter Elemente","feature.animationStop":"Animationen stoppen","feature.animationStop.desc":"Alle Animationen und Videos pausieren","feature.bigCursor":"Großer Mauszeiger","feature.bigCursor.desc":"Vergrößerter Mauszeiger für bessere Sichtbarkeit","feature.colorBlind":"Farbfilter","feature.colorBlind.desc":"Farbkorrekturen für verschiedene Sehschwächen","feature.linkHighlight":"Links hervorheben","feature.linkHighlight.desc":"Alle Links sichtbar unterstreichen","feature.keyboardNav":"Tastaturnavigation","feature.keyboardNav.desc":"Erweiterte Tastatursteuerung und Shortcuts","feature.tts":"Vorlesen","feature.tts.desc":"Text per Klick vorlesen lassen","feature.textSimplify":"Text vereinfachen","feature.textSimplify.desc":"Text in Einfache Sprache umwandeln","feature.altText":"Alt-Text erzeugen","feature.altText.desc":"Bildbeschreibungen automatisch erstellen","feature.autoScan":"WCAG-Prüfung","feature.autoScan.desc":"Seite auf Barrierefreiheit prüfen","feature.saturation":"Sättigung","feature.saturation.desc":"Farbsättigung anpassen oder Graustufen","feature.hideImages":"Bilder ausblenden","feature.hideImages.desc":"Bilder entfernen für ablenkungsfreies Lesen","feature.textAlign":"Textausrichtung","feature.textAlign.desc":"Textausrichtung der Seite ändern","feature.readingMask":"Lesemaske","feature.readingMask.desc":"Fokus-Fenster, das die Umgebung abdunkelt","feature.pageStructure":"Seitenstruktur","feature.pageStructure.desc":"Überschriften und Bereiche zur Navigation anzeigen","feature.lineHeight":"Zeilenhöhe","feature.lineHeight.desc":"Abstand zwischen Textzeilen vergrößern","ai.loading":"Wird geladen...","ai.error":"Fehler bei der Verarbeitung","ai.simplify.select":"Text auswählen zum Vereinfachen","ai.simplify.level":"Vereinfachungsstufe","ai.simplify.einfache":"Einfache Sprache","ai.simplify.leichte":"Leichte Sprache","ai.alttext.generate":"Alt-Text erzeugen","ai.alttext.apply":"Übernehmen","ai.alttext.edit":"Bearbeiten","ai.alttext.badge":"Bilder ohne Alt-Text","ai.alttext.aiGenerated":"KI-generiert – bitte überprüfen","tts.play":"Vorlesen","tts.pause":"Pause","tts.stop":"Stopp","tts.speed":"Geschwindigkeit","footer.disclaimer":"Dieses Widget verbessert die Barrierefreiheit, ersetzt aber keine barrierefreie Webentwicklung.","footer.docs":"Dokumentation","footer.github":"GitHub","bfsg.notice":"Hinweis: Dieses Overlay-Tool allein erfüllt nicht die Anforderungen des BFSG. Professionelle Barrierefreiheit erfordert strukturelle Änderungen am Quellcode."},en:{"widget.title":"Accessibility","widget.open":"Open accessibility settings","widget.close":"Close","widget.reset":"Reset all","widget.resetConfirm":"All adjustments reset","widget.poweredBy":"Powered by Accessify","widget.statement":"Accessibility Statement","status.active":"{count} active","status.noActive":"No adjustments active","status.activated":"activated","status.deactivated":"deactivated","section.profiles":"Quick Profiles","category.visual":"Visual","category.motor":"Motor & Navigation","category.cognitive":"Cognitive","category.ai":"AI Features","profile.visionImpaired":"Vision Impaired","profile.visionImpaired.desc":"High contrast, larger text and cursor","profile.motorImpaired":"Motor Impaired","profile.motorImpaired.desc":"Keyboard navigation and focus aids","profile.cognitive":"Cognitive Support","profile.cognitive.desc":"Reading aids, spacing, and simpler fonts","profile.seizureSafe":"Seizure Safe","profile.seizureSafe.desc":"Stop animations and reduce stimuli","profile.adhdFriendly":"ADHD Friendly","profile.adhdFriendly.desc":"Reduce distractions and improve focus","feature.contrast":"Contrast","feature.contrast.desc":"Increase contrast for better readability","feature.textSize":"Bigger Text","feature.textSize.desc":"Increase or decrease text size","feature.spacing":"Text Spacing","feature.spacing.desc":"Adjust letter and line spacing","feature.dyslexiaFont":"Dyslexia Font","feature.dyslexiaFont.desc":"Special font for better readability","feature.readingGuide":"Reading Guide","feature.readingGuide.desc":"Horizontal ruler for line-by-line reading","feature.focusHighlight":"Focus Highlight","feature.focusHighlight.desc":"Visible outline on focused elements","feature.animationStop":"Stop Animations","feature.animationStop.desc":"Pause all animations and videos","feature.bigCursor":"Big Cursor","feature.bigCursor.desc":"Enlarged cursor for better visibility","feature.colorBlind":"Color Filter","feature.colorBlind.desc":"Color corrections for color vision deficiencies","feature.linkHighlight":"Highlight Links","feature.linkHighlight.desc":"Underline and highlight all links","feature.keyboardNav":"Keyboard Nav","feature.keyboardNav.desc":"Enhanced keyboard controls and shortcuts","feature.tts":"Read Aloud","feature.tts.desc":"Click any text to hear it spoken","feature.textSimplify":"Simplify Text","feature.textSimplify.desc":"Simplify text for easier understanding","feature.altText":"Alt-Text Generator","feature.altText.desc":"Auto-generate image descriptions","feature.autoScan":"WCAG Scan","feature.autoScan.desc":"Scan page for accessibility issues","feature.saturation":"Saturation","feature.saturation.desc":"Adjust color saturation or grayscale","feature.hideImages":"Hide Images","feature.hideImages.desc":"Remove images for distraction-free reading","feature.textAlign":"Text Align","feature.textAlign.desc":"Change text alignment across the page","feature.readingMask":"Reading Mask","feature.readingMask.desc":"Focus window that dims surrounding content","feature.pageStructure":"Page Structure","feature.pageStructure.desc":"View headings and landmarks for quick navigation","feature.lineHeight":"Line Height","feature.lineHeight.desc":"Increase space between lines of text","ai.loading":"Loading...","ai.error":"Error processing request","ai.simplify.select":"Select text to simplify","ai.simplify.level":"Simplification level","ai.simplify.einfache":"Simple language","ai.simplify.leichte":"Easy language","ai.alttext.generate":"Generate alt text","ai.alttext.apply":"Apply","ai.alttext.edit":"Edit","ai.alttext.badge":"Images missing alt text","ai.alttext.aiGenerated":"AI-generated – please review","tts.play":"Play","tts.pause":"Pause","tts.stop":"Stop","tts.speed":"Speed","footer.disclaimer":"This widget enhances accessibility but does not replace accessible web development.","footer.docs":"Documentation","footer.github":"GitHub","bfsg.notice":"Note: This overlay tool alone does not meet BFSG requirements. Full accessibility requires structural changes to the source code."}};function ri(e,t="en"){const n=function(e){if(!e)return"en";const t=e.toLowerCase().split("-")[0];return ni[t]?t:"en"}(t);return ni[n]?.[e]||ni.en?.[e]||e}var ii=Er('<button class="accessify-trigger"></button>');br(["click"]);var ai=Er('<button class="accessify-lang-toggle" title="Switch language"> </button>'),oi=Er('<div class="accessify-header"><h2> </h2> <div class="accessify-header-actions"><!> <button class="accessify-header-btn"><!> <span> </span></button> <button class="accessify-header-btn"></button></div></div>');br(["click"]);var si=Er('<button class="accessify-status-reset"> </button>'),ci=Er('<div class="accessify-status" role="status" aria-live="polite"><span class="accessify-status-count"> </span> <!></div>');br(["click"]);const li=[{id:"vision-impaired",nameKey:"profile.visionImpaired",descKey:"profile.visionImpaired.desc",iconId:"eye",features:["contrast","text-size","big-cursor","focus-highlight","link-highlight"],featureSettings:{"text-size":150,contrast:"high"}},{id:"motor-impaired",nameKey:"profile.motorImpaired",descKey:"profile.motorImpaired.desc",iconId:"keyboard",features:["keyboard-nav","focus-highlight","big-cursor"]},{id:"cognitive",nameKey:"profile.cognitive",descKey:"profile.cognitive.desc",iconId:"brain",features:["reading-guide","text-size","spacing","dyslexia-font","animation-stop"],featureSettings:{"text-size":130}},{id:"seizure-safe",nameKey:"profile.seizureSafe",descKey:"profile.seizureSafe.desc",iconId:"shield",features:["animation-stop","saturation"],featureSettings:{saturation:"low"}},{id:"adhd-friendly",nameKey:"profile.adhdFriendly",descKey:"profile.adhdFriendly.desc",iconId:"focus",features:["animation-stop","reading-mask","focus-highlight","hide-images"]}];var di=Er('<button class="accessify-profile-card"><span aria-hidden="true"></span> <span> </span></button>'),ui=Er('<div class="accessify-profiles"><div class="accessify-section-title"> </div> <div class="accessify-profile-grid" role="group"></div></div>');br(["click"]);const fi="https://openrouter.ai/api/v1";class pi extends Error{constructor(e){super(e),this.name="RateLimitError"}}var hi=Er('<button class="accessify-card" role="switch"><span class="accessify-card-icon" aria-hidden="true"></span> <span class="accessify-card-label"> </span> <span class="accessify-card-desc" aria-hidden="true"> </span></button>'),gi=Er('<div class="accessify-category"><div class="accessify-category-title"> </div> <div class="accessify-features" role="group"></div></div>');function mi(e,t){Qe(t,!0);const n={contrast:{id:"contrast",nameKey:"feature.contrast",descKey:"feature.contrast.desc",iconId:"contrast",category:"visual"},"text-size":{id:"text-size",nameKey:"feature.textSize",descKey:"feature.textSize.desc",iconId:"text-size",category:"visual"},spacing:{id:"spacing",nameKey:"feature.spacing",descKey:"feature.spacing.desc",iconId:"spacing",category:"visual"},"dyslexia-font":{id:"dyslexia-font",nameKey:"feature.dyslexiaFont",descKey:"feature.dyslexiaFont.desc",iconId:"font",category:"visual"},"color-blindness":{id:"color-blindness",nameKey:"feature.colorBlind",descKey:"feature.colorBlind.desc",iconId:"color-blindness",category:"visual"},"link-highlight":{id:"link-highlight",nameKey:"feature.linkHighlight",descKey:"feature.linkHighlight.desc",iconId:"link-highlight",category:"visual"},saturation:{id:"saturation",nameKey:"feature.saturation",descKey:"feature.saturation.desc",iconId:"saturation",category:"visual"},"hide-images":{id:"hide-images",nameKey:"feature.hideImages",descKey:"feature.hideImages.desc",iconId:"hide-images",category:"visual"},"text-align":{id:"text-align",nameKey:"feature.textAlign",descKey:"feature.textAlign.desc",iconId:"text-align",category:"visual"},"line-height":{id:"line-height",nameKey:"feature.lineHeight",descKey:"feature.lineHeight.desc",iconId:"line-height",category:"visual"},"reading-guide":{id:"reading-guide",nameKey:"feature.readingGuide",descKey:"feature.readingGuide.desc",iconId:"reading-guide",category:"motor"},"reading-mask":{id:"reading-mask",nameKey:"feature.readingMask",descKey:"feature.readingMask.desc",iconId:"reading-mask",category:"motor"},"focus-highlight":{id:"focus-highlight",nameKey:"feature.focusHighlight",descKey:"feature.focusHighlight.desc",iconId:"focus",category:"motor"},"big-cursor":{id:"big-cursor",nameKey:"feature.bigCursor",descKey:"feature.bigCursor.desc",iconId:"cursor",category:"motor"},"keyboard-nav":{id:"keyboard-nav",nameKey:"feature.keyboardNav",descKey:"feature.keyboardNav.desc",iconId:"keyboard",category:"motor"},"page-structure":{id:"page-structure",nameKey:"feature.pageStructure",descKey:"feature.pageStructure.desc",iconId:"page-structure",category:"motor"},"animation-stop":{id:"animation-stop",nameKey:"feature.animationStop",descKey:"feature.animationStop.desc",iconId:"animation-pause",category:"cognitive"},tts:{id:"tts",nameKey:"feature.tts",descKey:"feature.tts.desc",iconId:"tts",category:"cognitive"},"text-simplify":{id:"text-simplify",nameKey:"feature.textSimplify",descKey:"feature.textSimplify.desc",iconId:"simplify-text",category:"ai"},"alt-text":{id:"alt-text",nameKey:"feature.altText",descKey:"feature.altText.desc",iconId:"alt-text",category:"ai"},"auto-scan":{id:"auto-scan",nameKey:"feature.autoScan",descKey:"feature.autoScan.desc",iconId:"scan",category:"ai"}},r=[{key:"visual",labelKey:"category.visual"},{key:"motor",labelKey:"category.motor"},{key:"cognitive",labelKey:"category.cognitive"},{key:"ai",labelKey:"category.ai"}];let i,a=Wt(()=>{const e=new Map;for(const t of r)e.set(t.key,[]);for(const r of t.config.features){const t=n[r];t&&e.get(t.category).push(t)}return e});const o=new Set(["text-simplify","alt-text"]),s=new Map;"undefined"!=typeof window&&window.addEventListener("accessify:reset",function(){for(const[,e]of s)try{e.deactivate()}catch{}});var c=$r();Or(vn(c),17,()=>r,Tr,(e,n)=>{const r=Wt(()=>lr(a).get(lr(n).key)??[]);var c=$r(),l=vn(c),d=e=>{var a=gi(),c=mn(a),l=mn(c),d=yn(c,2);Or(d,21,()=>lr(r),e=>e.id,(e,n)=>{const r=Wt(()=>t.activeFeatures.get(lr(n).id)??!1);var a=hi(),c=mn(a);Nr(c,()=>function(e){const t=ti[e];return t?t():""}(lr(n).iconId),!0);var l=yn(c,2),d=mn(l),u=mn(yn(l,2));Cn((e,t,n)=>{Rr(a,"aria-checked",lr(r)),Rr(a,"aria-label",e),Mr(d,t),Mr(u,n)},[()=>ri(lr(n).nameKey,t.config.lang),()=>ri(lr(n).nameKey,t.config.lang),()=>ri(lr(n).descKey,t.config.lang)]),yr("click",a,()=>async function(e){const n=!t.activeFeatures.get(e),r=await async function(e){if(s.has(e))return s.get(e);try{const r=await((e,t)=>{const n=e[t];return n?"function"==typeof n?n():Promise.resolve(n):new Promise((e,n)=>{("function"==typeof queueMicrotask?queueMicrotask:setTimeout)(n.bind(null,new Error("Unknown variable dynamic import: "+t+(3!==t.split("/").length?". Note that variables only represent file names one level deep.":""))))})})(Object.assign({"../features/alt-text.ts":()=>Promise.resolve().then(()=>zi),"../features/animation-stop.ts":()=>Promise.resolve().then(()=>Ii),"../features/auto-scan.ts":()=>Promise.resolve().then(()=>Li),"../features/big-cursor.ts":()=>Promise.resolve().then(()=>Oi),"../features/color-blind.ts":()=>Promise.resolve().then(()=>Wi),"../features/contrast.ts":()=>Promise.resolve().then(()=>Ki),"../features/dyslexia-font.ts":()=>Promise.resolve().then(()=>Ni),"../features/focus-highlight.ts":()=>Promise.resolve().then(()=>Fi),"../features/hide-images.ts":()=>Promise.resolve().then(()=>Hi),"../features/keyboard-nav.ts":()=>Promise.resolve().then(()=>Ri),"../features/line-height.ts":()=>Promise.resolve().then(()=>Di),"../features/link-highlight.ts":()=>Promise.resolve().then(()=>qi),"../features/page-structure.ts":()=>Promise.resolve().then(()=>Gi),"../features/reading-guide.ts":()=>Promise.resolve().then(()=>Vi),"../features/reading-mask.ts":()=>Promise.resolve().then(()=>Ji),"../features/saturation.ts":()=>Promise.resolve().then(()=>Yi),"../features/spacing.ts":()=>Promise.resolve().then(()=>Xi),"../features/text-align.ts":()=>Promise.resolve().then(()=>Qi),"../features/text-simplify.ts":()=>Promise.resolve().then(()=>ea),"../features/text-size.ts":()=>Promise.resolve().then(()=>ta),"../features/tts.ts":()=>Promise.resolve().then(()=>ra)}),`../features/${e}.ts`),a=r.default??r;let c;return c="function"==typeof a?o.has(e)?a((i||(i=(n={apiKey:t.config.openRouterKey,siteKey:t.config.siteKey,proxyUrl:t.config.proxyUrl}).siteKey?function(e,t){const n=t||"https://accessify-api.accessify.workers.dev",r={"Content-Type":"application/json","X-Site-Key":e};return{async simplifyText(e,t="einfache",i="de"){const a=await fetch(`${n}/v1/ai/simplify`,{method:"POST",headers:r,body:JSON.stringify({text:e,level:t,lang:i})});if(!a.ok){const e=await a.json().catch(()=>({error:`HTTP ${a.status}`}));if(429===a.status)throw new pi(e.error||"Rate limit reached");throw new Error(e.error||`AI proxy error: ${a.status}`)}return(await a.json()).result||""},async generateAltText(e,t){const i=await fetch(`${n}/v1/ai/alt-text`,{method:"POST",headers:r,body:JSON.stringify({imageUrl:e,context:t})});if(!i.ok){const e=await i.json().catch(()=>({error:`HTTP ${i.status}`}));if(429===i.status)throw new pi(e.error||"Rate limit reached");throw new Error(e.error||`AI proxy error: ${i.status}`)}return(await i.json()).result||""}}}(n.siteKey,n.proxyUrl):function(e){const t={"Content-Type":"application/json",...e.apiKey?{Authorization:`Bearer ${e.apiKey}`}:{},"HTTP-Referer":"undefined"!=typeof window?window.location.origin:"","X-Title":"Accessify Widget"};return{async simplifyText(n,r="einfache",i="de"){const a=i.startsWith("de")?function(e){return"leichte"===e?"Du bist ein Experte für Leichte Sprache (DIN SPEC 33429). Vereinfache den folgenden Text nach diesen Regeln:\n- Benutze kurze Sätze (maximal 8 Wörter pro Satz)\n- Ein Satz pro Zeile\n- Benutze einfache, bekannte Wörter\n- Erkläre Fremdwörter und Fachbegriffe\n- Benutze aktive Sätze (kein Passiv)\n- Benutze keine Abkürzungen\n- Benutze keine Metaphern oder bildliche Sprache\n- Schreibe in Präsens\n- Benutze positive Formulierungen\n- Zielgruppe: CEFR A1-A2\n\nGib NUR den vereinfachten Text zurück.":"Du bist ein Experte für Einfache Sprache (DIN ISO 24495-1). Vereinfache den folgenden Text:\n- Kurze, klare Sätze (maximal 15 Wörter)\n- Vermeide Fachbegriffe oder erkläre sie\n- Benutze aktive Formulierungen\n- Strukturiere den Text mit klaren Absätzen\n- Zielgruppe: CEFR B1-B2\n- Bewahre den vollständigen Inhalt\n\nGib NUR den vereinfachten Text zurück."}(r):"You are a plain language expert. Simplify the following text:\n- Use short, clear sentences (max 15 words)\n- Avoid jargon, explain technical terms\n- Use active voice\n- Target reading level: grade 6-8\n\nReturn ONLY the simplified text.",o=await fetch(`${fi}/chat/completions`,{method:"POST",headers:t,body:JSON.stringify({model:e.textModel||"qwen/qwen3-next-80b-a3b-instruct:free",messages:[{role:"system",content:a},{role:"user",content:n}],stream:!1,max_tokens:2e3})});if(!o.ok){if(429===o.status)throw new pi("Rate limit reached. Please try again later.");throw new Error(`AI service error: ${o.status}`)}const s=await o.json();return s.choices?.[0]?.message?.content?.trim()||""},async generateAltText(n,r){const i=await fetch(`${fi}/chat/completions`,{method:"POST",headers:t,body:JSON.stringify({model:e.visionModel||"meta-llama/llama-3.3-70b-instruct:free",messages:[{role:"user",content:[{type:"text",text:`Generate a concise, descriptive alt text for this image for web accessibility. ${r?"Context: "+r:""} Return ONLY the alt text, nothing else. Max 125 characters.`},{type:"image_url",image_url:{url:n}}]}],max_tokens:100})});if(!i.ok){if(429===i.status)throw new pi("Rate limit reached. Please try again later.");throw new Error(`AI vision error: ${i.status}`)}const a=await i.json();return a.choices?.[0]?.message?.content?.trim()||""}}}(n)),i),t.config.lang):a():a,s.set(e,c),c}catch(r){return null}var n}(e);r&&(n?r.activate():r.deactivate()),t.ontoggle(e,n)}(lr(n).id)),Cr(e,a)}),Cn((e,t)=>{Mr(l,e),Rr(d,"aria-label",t)},[()=>ri(lr(n).labelKey,t.config.lang),()=>ri(lr(n).labelKey,t.config.lang)]),Cr(e,a)};Ir(l,e=>{lr(r).length>0&&e(d)}),Cr(e,c)}),Cr(e,c),et()}br(["click"]);var vi=Er('<span aria-hidden="true">&middot;</span> <a target="_blank" rel="noopener noreferrer"> </a>',1),yi=Er('<div class="accessify-footer"><span> </span> <!></div>'),bi=Er('<div class="sr-only" role="status" aria-live="polite" aria-atomic="true"> </div> <!> <div class="accessify-panel" role="dialog"><!> <!> <!> <!> <!></div>',1);function xi(e,t){Qe(t,!0);let n=Ur(t,"config",7),r=Yt(!1),i=Yt(an(new Map)),a=Yt("light"),o=Yt(null),s=Yt(null),c=Yt(""),l=Yt(null),d=Yt(an(n().lang||"en"));const u="accessify-prefs",f="accessify-profile";let p=Wt(()=>Array.from(lr(i).values()).filter(Boolean).length);function h(e){Xt(c,""),requestAnimationFrame(()=>{Xt(c,e,!0)})}function g(){try{const e=Object.fromEntries(lr(i));localStorage.setItem(u,JSON.stringify(e)),lr(l)?localStorage.setItem(f,lr(l)):localStorage.removeItem(f)}catch{}}function m(){const e=t.shadow.getElementById("accessify-mount");e&&("auto"===n().theme?e.removeAttribute("data-theme"):e.setAttribute("data-theme",lr(a)))}function v(){Xt(r,!0),requestAnimationFrame(()=>{if(lr(o)){const e=lr(o).querySelector('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');e?.focus()}})}function y(){Xt(r,!1);const e=t.shadow.querySelector(".accessify-trigger");e?.focus()}function b(){Xt(i,new Map,!0),Xt(l,null),g(),window.dispatchEvent(new CustomEvent("accessify:reset")),h(ri("widget.resetConfirm",lr(d)))}var x;x=()=>{!function(){if("light"===n().theme||"dark"===n().theme)return void Xt(a,n().theme,!0);const e=window.matchMedia("(prefers-color-scheme: dark)");Xt(a,e.matches?"dark":"light",!0),e.addEventListener("change",e=>{"auto"===n().theme&&(Xt(a,e.matches?"dark":"light",!0),m())})}(),m(),function(){try{const e=localStorage.getItem(u);if(e){const t=JSON.parse(e);Xt(i,new Map(Object.entries(t)),!0)}const t=localStorage.getItem(f);t&&Xt(l,t,!0)}catch{}}(),queueMicrotask(()=>{!function(){for(const[e,t]of lr(i))t&&window.dispatchEvent(new CustomEvent("accessify:feature-activate",{detail:{id:e}}))}()})},null===Ue&&function(){if(te){const e=new Error("lifecycle_outside_component\n`onMount(...)` can only be used during component initialisation\nhttps://svelte.dev/e/lifecycle_outside_component");throw e.name="Svelte error",e}throw new Error("https://svelte.dev/e/lifecycle_outside_component")}(),function(e){var t;t="$effect",null===qn&&(null===Hn&&function(e){if(te){const t=new Error(`effect_orphan\n\`${e}\` can only be used inside an effect (e.g. during component initialisation)\nhttps://svelte.dev/e/effect_orphan`);throw t.name="Svelte error",t}throw new Error("https://svelte.dev/e/effect_orphan")}(t),function(){if(te){const e=new Error("effect_in_unowned_derived\nEffect cannot be created inside a `$derived` value that was not itself created inside an effect\nhttps://svelte.dev/e/effect_in_unowned_derived");throw e.name="Svelte error",e}throw new Error("https://svelte.dev/e/effect_in_unowned_derived")}()),Nn&&function(e){if(te){const t=new Error(`effect_in_teardown\n\`${e}\` cannot be used inside an effect cleanup function\nhttps://svelte.dev/e/effect_in_teardown`);throw t.name="Svelte error",t}throw new Error("https://svelte.dev/e/effect_in_teardown")}(t),te&&oe(e,"name",{value:"$effect"});var n=qn.f;if(Hn||0===(n&ge)||0!==(n&ke))return En(e);(Ue.e??(Ue.e=[])).push(e)}(()=>{const e=fr(x);if("function"==typeof e)return e});var w,k,S,E={open:v,close:y},$=bi();S=function(e,t,n,r={}){function i(e){if(r.capture||wr.call(t,e),!e.cancelBubble)return xn(()=>n?.call(this,e))}return e.startsWith("pointer")||e.startsWith("touch")||"wheel"===e?nt(()=>{t.addEventListener(e,i,r)}):t.addEventListener(e,i,r),i}("keydown",w=ln,function(e){if("Escape"===e.key&&lr(r))return e.preventDefault(),void y();if("Tab"===e.key&&lr(r)&&lr(o)){const n=lr(o).querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');if(0===n.length)return;const r=n[0],i=n[n.length-1],a=t.shadow.activeElement||document.activeElement;e.shiftKey&&a===r?(e.preventDefault(),i.focus()):e.shiftKey||a!==i||(e.preventDefault(),r.focus())}},k={capture:void 0,passive:void 0}),(w===document.body||w===window||w===document||w instanceof HTMLMediaElement)&&Sn(()=>{w.removeEventListener("keydown",S,k)});var C=vn($),M=mn(C),_=yn(C,2);!function(e,t){Qe(t,!0);let n=Ur(t,"lang",3,"en"),r=Ur(t,"el",15,null);var i=ii();Nr(i,()=>t.isOpen?Qr():Jr(),!0),Gr(i,e=>r(e),()=>r()),Cn(e=>{Rr(i,"aria-expanded",t.isOpen),Rr(i,"aria-label",e)},[()=>ri(t.isOpen?"widget.close":"widget.open",n())]),yr("click",i,function(...e){t.onclick?.apply(this,e)}),Cr(e,i),et()}(_,{get isOpen(){return lr(r)},get lang(){return lr(d)},onclick:function(){lr(r)?y():v()},get el(){return lr(s)},set el(e){Xt(s,e,!0)}});var A=yn(_,2),z=mn(A);!function(e,t){Qe(t,!0);let n=Ur(t,"lang",3,"en");function r(){const e=n().startsWith("de")?"en":"de";t.onlangchange?.(e)}var i=oi(),a=mn(i),o=mn(a),s=mn(yn(a,2)),c=e=>{var t=ai(),i=mn(t);Cn((e,n)=>{Rr(t,"aria-label",`Language: ${e??""}`),Mr(i,n)},[()=>n().startsWith("de")?"Deutsch":"English",()=>n().startsWith("de")?"DE":"EN"]),yr("click",t,r),Cr(e,t)};Ir(s,e=>{t.onlangchange&&e(c)});var l=yn(s,2),d=mn(l);Nr(d,ei);var u=mn(yn(d,2)),f=yn(l,2);Nr(f,Qr,!0),Cn((e,t,n,r)=>{Mr(o,e),Rr(l,"aria-label",t),Mr(u,n),Rr(f,"aria-label",r)},[()=>ri("widget.title",n()),()=>ri("widget.reset",n()),()=>ri("widget.reset",n()),()=>ri("widget.close",n())]),yr("click",l,function(...e){t.onreset?.apply(this,e)}),yr("click",f,function(...e){t.onclose?.apply(this,e)}),Cr(e,i),et()}(z,{get lang(){return lr(d)},onclose:y,onreset:b,onlangchange:function(e){Xt(d,e,!0),n().lang=e}});var I=yn(z,2);!function(e,t){Qe(t,!0);let n=Ur(t,"activeCount",3,0),r=Ur(t,"lang",3,"en"),i=Wt(()=>n()>0?ri("status.active",r()).replace("{count}",String(n())):ri("status.noActive",r()));var a=ci(),o=mn(a),s=mn(o),c=yn(o,2),l=e=>{var n=si(),i=mn(n);Cn(e=>Mr(i,e),[()=>ri("widget.reset",r())]),yr("click",n,function(...e){t.onreset?.apply(this,e)}),Cr(e,n)};Ir(c,e=>{n()>0&&e(l)}),Cn(()=>{Rr(o,"data-count",n()),Mr(s,lr(i))}),Cr(e,a),et()}(I,{get activeCount(){return lr(p)},get lang(){return lr(d)},onreset:b});var T=yn(I,2);!function(e,t){Qe(t,!0);let n=Ur(t,"lang",3,"en"),r=Ur(t,"activeProfileId",3,null);var i=ui(),a=mn(i),o=mn(a),s=yn(a,2);Or(s,21,()=>li,e=>e.id,(e,i)=>{var a=di(),o=mn(a);Nr(o,()=>function(e){const t=ti[e];return t?t():""}(lr(i).iconId),!0);var s=mn(yn(o,2));Cn((e,t,n)=>{Rr(a,"aria-pressed",r()===lr(i).id),Rr(a,"aria-label",e),Rr(a,"title",t),Mr(s,n)},[()=>ri(lr(i).nameKey,n()),()=>ri(lr(i).descKey,n()),()=>ri(lr(i).nameKey,n())]),yr("click",a,()=>t.onactivate(lr(i))),Cr(e,a)}),Cn((e,t)=>{Mr(o,e),Rr(s,"aria-label",t)},[()=>ri("section.profiles",n()),()=>ri("section.profiles",n())]),Cr(e,i),et()}(T,{get lang(){return lr(d)},get activeProfileId(){return lr(l)},onactivate:function(e){if(lr(l)===e.id)return void b();window.dispatchEvent(new CustomEvent("accessify:reset"));const t=new Map;for(const n of e.features)t.set(n,!0);Xt(i,t,!0),Xt(l,e.id,!0),g();for(const n of e.features)window.dispatchEvent(new CustomEvent("accessify:feature-activate",{detail:{id:n}}));h(`${ri(e.nameKey,lr(d))} ${ri("status.activated",lr(d))}`)}});var L=yn(T,2);{let e=Wt(()=>({...n(),lang:lr(d)}));mi(L,{get config(){return lr(e)},get activeFeatures(){return lr(i)},ontoggle:function(e,t){lr(i).set(e,t),Xt(i,new Map(lr(i)),!0),Xt(l,null),g(),h(`${ri(`feature.${e.replace(/-([a-z])/g,(e,t)=>t.toUpperCase())}`,lr(d))||e} ${ri(t?"status.activated":"status.deactivated",lr(d))}`)}})}return function(e,t){Qe(t,!0);let n=Ur(t,"lang",3,"en");var r=yi(),i=mn(r),a=mn(i),o=yn(i,2),s=e=>{var r=vi(),i=yn(vn(r),2),a=mn(i);Cn(e=>{Rr(i,"href",t.statementUrl),Mr(a,e)},[()=>ri("widget.statement",n())]),Cr(e,r)};Ir(o,e=>{t.statementUrl&&e(s)}),Cn(e=>Mr(a,e),[()=>ri("widget.poweredBy",n())]),Cr(e,r),et()}(yn(L,2),{get lang(){return lr(d)},get statementUrl(){return n().statementUrl}}),Gr(A,e=>Xt(o,e),()=>lr(o)),Cn(e=>{Mr(M,lr(c)),Rr(A,"aria-label",e),Rr(A,"aria-hidden",!lr(r))},[()=>ri("widget.title",lr(d))]),Cr(e,$),et(E)}const wi=encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="white" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6L9 17l-5-5"/></svg>'),ki={position:"bottom-right",theme:"auto",lang:document.documentElement.lang||"en",features:["contrast","text-size","spacing","dyslexia-font","color-blindness","link-highlight","saturation","hide-images","text-align","line-height","reading-guide","reading-mask","focus-highlight","big-cursor","keyboard-nav","page-structure","animation-stop","tts","text-simplify","alt-text","auto-scan"],zIndex:999999,compact:!1};let Si=null,Ei=null,$i={...ki};function Ci(e={}){if(Si)return;const t=window.__accessify_dataConfig||{};$i={...ki,...t,...e},Ei=document.createElement("div"),Ei.id="accessify-root",Ei.setAttribute("role","complementary"),Ei.setAttribute("aria-label",$i.lang?.startsWith("de")?"Barrierefreiheit-Einstellungen":"Accessibility settings");const n=Ei.attachShadow({mode:"open",delegatesFocus:!0}),r=new CSSStyleSheet;r.replaceSync(function(e){const t=e.position||"bottom-right",n=t.includes("right"),r=t.includes("bottom"),i=e.zIndex||999999;return`\n /* ===================================================================\n DESIGN TOKENS\n =================================================================== */\n\n :host {\n all: initial;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,\n 'Helvetica Neue', Arial, sans-serif;\n font-size: 15px;\n line-height: 1.5;\n color-scheme: light dark;\n }\n\n *, *::before, *::after {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n }\n\n #accessify-mount {\n /* Spacing scale (4px base) */\n --space-1: 4px;\n --space-2: 8px;\n --space-3: 12px;\n --space-4: 16px;\n --space-5: 20px;\n --space-6: 24px;\n --space-7: 32px;\n --space-8: 40px;\n\n /* Radius system */\n --radius-sm: 6px;\n --radius-md: 10px;\n --radius-lg: 14px;\n --radius-full: 9999px;\n\n /* Typography */\n --text-xs: 11px;\n --text-sm: 13px;\n --text-base: 15px;\n --text-lg: 17px;\n --text-xl: 20px;\n --font-normal: 400;\n --font-medium: 500;\n --font-semibold: 600;\n\n /* Shadows */\n --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.08);\n --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.10);\n --shadow-lg: 0 8px 32px rgba(0, 0, 0, 0.14);\n\n /* Colors: Light mode (default) */\n --primary: #0055CC;\n --primary-hover: #003D99;\n --primary-soft: color-mix(in srgb, #0055CC 10%, #ffffff);\n --surface: #ffffff;\n --surface-raised: #f7f7f8;\n --text: #1a1a1a;\n --text-secondary: #5c5c5c;\n --text-on-primary: #ffffff;\n --border: #e2e2e5;\n --border-strong: #c8c8cc;\n --success: #008A00;\n --warning: #B95000;\n --error: #CC0000;\n\n /* Transition */\n --transition-fast: 120ms ease;\n --transition-normal: 200ms ease;\n }\n\n /* ── Dark mode ── */\n @media (prefers-color-scheme: dark) {\n #accessify-mount:not([data-theme="light"]) {\n --primary: #4D9FFF;\n --primary-hover: #3385E6;\n --primary-soft: color-mix(in srgb, #4D9FFF 12%, #1a1a1a);\n --surface: #1a1a1a;\n --surface-raised: #242428;\n --text: #f0f0f0;\n --text-secondary: #a0a0a5;\n --text-on-primary: #ffffff;\n --border: #38383c;\n --border-strong: #505055;\n --shadow-lg: 0 8px 32px rgba(0, 0, 0, 0.4);\n }\n }\n\n #accessify-mount[data-theme="dark"] {\n --primary: #4D9FFF;\n --primary-hover: #3385E6;\n --primary-soft: color-mix(in srgb, #4D9FFF 12%, #1a1a1a);\n --surface: #1a1a1a;\n --surface-raised: #242428;\n --text: #f0f0f0;\n --text-secondary: #a0a0a5;\n --text-on-primary: #ffffff;\n --border: #38383c;\n --border-strong: #505055;\n --shadow-lg: 0 8px 32px rgba(0, 0, 0, 0.4);\n }\n\n /* ===================================================================\n UTILITIES\n =================================================================== */\n\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n }\n\n *:focus-visible {\n outline: 3px solid var(--primary);\n outline-offset: 2px;\n border-radius: var(--radius-sm);\n }\n\n /* ===================================================================\n TRIGGER BUTTON (FAB)\n =================================================================== */\n\n .accessify-trigger {\n position: fixed;\n ${r?"bottom: 20px":"top: 20px"};\n ${n?"right: 20px":"left: 20px"};\n z-index: ${i};\n width: 56px;\n height: 56px;\n border-radius: var(--radius-full);\n border: none;\n background: var(--primary);\n color: var(--text-on-primary);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: var(--shadow-md);\n transition: transform var(--transition-fast), box-shadow var(--transition-fast);\n }\n\n .accessify-trigger:hover {\n transform: scale(1.05);\n box-shadow: var(--shadow-lg);\n background: var(--primary-hover);\n }\n\n .accessify-trigger:active {\n transform: scale(0.95);\n }\n\n .accessify-trigger svg {\n width: 28px;\n height: 28px;\n }\n\n /* ===================================================================\n PANEL\n =================================================================== */\n\n .accessify-panel {\n position: fixed;\n ${r?"bottom: 90px":"top: 90px"};\n ${n?"right: 20px":"left: 20px"};\n z-index: ${i-1};\n width: 440px;\n max-height: calc(100vh - 110px);\n overflow-y: auto;\n overflow-x: hidden;\n background: var(--surface);\n border-radius: var(--radius-lg);\n box-shadow: var(--shadow-lg);\n border: 1px solid var(--border);\n transform-origin: ${r?"bottom":"top"} ${n?"right":"left"};\n transition: opacity var(--transition-normal), transform var(--transition-normal);\n }\n\n .accessify-panel[aria-hidden="true"] {\n opacity: 0;\n transform: scale(0.96) translateY(${r?"8px":"-8px"});\n pointer-events: none;\n display: none;\n }\n\n .accessify-panel[aria-hidden="false"] {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n\n /* Scroll indicator (only visible if panel overflows) */\n .accessify-panel-scroll {\n position: relative;\n }\n\n /* ===================================================================\n HEADER (Utility Bar)\n =================================================================== */\n\n .accessify-header {\n display: flex;\n align-items: center;\n gap: var(--space-2);\n padding: var(--space-2) var(--space-3);\n border-bottom: 1px solid var(--border);\n background: var(--surface);\n position: sticky;\n top: 0;\n z-index: 2;\n }\n\n .accessify-header h2 {\n font-size: var(--text-base);\n font-weight: var(--font-semibold);\n color: var(--text);\n margin: 0;\n flex: 1;\n min-width: 0;\n }\n\n .accessify-header-actions {\n display: flex;\n align-items: center;\n gap: var(--space-2);\n flex-shrink: 0;\n }\n\n /* Small pill buttons in header */\n .accessify-header-btn {\n background: var(--surface-raised);\n border: 1px solid var(--border);\n border-radius: var(--radius-sm);\n padding: var(--space-1) var(--space-2);\n cursor: pointer;\n color: var(--text-secondary);\n display: flex;\n align-items: center;\n gap: var(--space-1);\n font-size: var(--text-xs);\n font-weight: var(--font-medium);\n transition: background var(--transition-fast), color var(--transition-fast);\n white-space: nowrap;\n }\n\n .accessify-header-btn:hover {\n background: var(--border);\n color: var(--text);\n }\n\n .accessify-header-btn svg {\n width: 14px;\n height: 14px;\n }\n\n /* Language toggle */\n .accessify-lang-toggle {\n background: var(--surface-raised);\n border: 1px solid var(--border);\n border-radius: var(--radius-sm);\n padding: var(--space-1) var(--space-2);\n cursor: pointer;\n color: var(--text-secondary);\n font-size: var(--text-xs);\n font-weight: var(--font-semibold);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n transition: background var(--transition-fast);\n min-width: 32px;\n text-align: center;\n }\n\n .accessify-lang-toggle:hover {\n background: var(--border);\n color: var(--text);\n }\n\n /* ===================================================================\n STATUS BAR\n =================================================================== */\n\n .accessify-status {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--space-1) var(--space-3);\n background: var(--surface-raised);\n border-bottom: 1px solid var(--border);\n font-size: 10px;\n color: var(--text-secondary);\n }\n\n .accessify-status-count {\n font-weight: var(--font-semibold);\n color: var(--primary);\n }\n\n .accessify-status-count[data-count="0"] {\n color: var(--text-secondary);\n }\n\n .accessify-status-reset {\n background: none;\n border: none;\n color: var(--text-secondary);\n cursor: pointer;\n font-size: var(--text-xs);\n padding: var(--space-1) var(--space-2);\n border-radius: var(--radius-sm);\n transition: color var(--transition-fast), background var(--transition-fast);\n }\n\n .accessify-status-reset:hover {\n color: var(--error);\n background: color-mix(in srgb, var(--error) 8%, transparent);\n }\n\n /* ===================================================================\n PROFILES SECTION\n =================================================================== */\n\n .accessify-profiles {\n padding: var(--space-2) var(--space-3);\n border-bottom: 1px solid var(--border);\n }\n\n .accessify-section-title {\n font-size: 10px;\n font-weight: var(--font-semibold);\n text-transform: uppercase;\n letter-spacing: 0.6px;\n color: var(--text-secondary);\n margin-bottom: var(--space-1);\n }\n\n .accessify-profile-grid {\n display: flex;\n gap: var(--space-1);\n overflow-x: auto;\n scrollbar-width: none;\n -webkit-overflow-scrolling: touch;\n }\n\n .accessify-profile-grid::-webkit-scrollbar {\n display: none;\n }\n\n .accessify-profile-card {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 2px;\n padding: var(--space-1) var(--space-2);\n border: 1.5px solid var(--border);\n border-radius: var(--radius-sm);\n background: var(--surface);\n color: var(--text);\n cursor: pointer;\n transition: all var(--transition-fast);\n min-width: 68px;\n text-align: center;\n flex-shrink: 0;\n font-size: 10px;\n line-height: 1.2;\n }\n\n .accessify-profile-card:hover {\n border-color: var(--primary);\n background: var(--surface-raised);\n }\n\n .accessify-profile-card[aria-pressed="true"] {\n background: var(--primary-soft);\n border-color: var(--primary);\n color: var(--primary);\n font-weight: var(--font-medium);\n }\n\n .accessify-profile-card svg {\n width: 16px;\n height: 16px;\n }\n\n /* ===================================================================\n CATEGORY SECTIONS\n =================================================================== */\n\n .accessify-category {\n padding: var(--space-1) var(--space-3);\n }\n\n .accessify-category + .accessify-category {\n border-top: 1px solid var(--border);\n }\n\n .accessify-category-title {\n font-size: 10px;\n font-weight: var(--font-semibold);\n text-transform: uppercase;\n letter-spacing: 0.6px;\n color: var(--text-secondary);\n margin-bottom: var(--space-1);\n padding-left: var(--space-1);\n }\n\n /* ===================================================================\n FEATURE CARDS\n =================================================================== */\n\n .accessify-features {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 4px;\n }\n\n .accessify-card {\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 1px;\n padding: 6px var(--space-1);\n border: 1.5px solid var(--border);\n border-radius: var(--radius-sm);\n background: var(--surface);\n color: var(--text);\n cursor: pointer;\n transition: all var(--transition-fast);\n text-align: center;\n min-height: 48px;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n }\n\n .accessify-card:hover {\n border-color: var(--primary);\n background: var(--surface-raised);\n box-shadow: var(--shadow-sm);\n }\n\n /* ── Active card: bold, unmistakable ── */\n .accessify-card[aria-checked="true"] {\n background: var(--primary-soft);\n border-color: var(--primary);\n border-width: 2px;\n /* Compensate for thicker border to prevent layout shift */\n padding: calc(6px - 0.5px) calc(var(--space-1) - 0.5px);\n }\n\n /* Checkmark badge */\n .accessify-card[aria-checked="true"]::after {\n content: '';\n position: absolute;\n top: var(--space-1);\n right: var(--space-1);\n width: 18px;\n height: 18px;\n border-radius: var(--radius-full);\n background: var(--primary);\n mask-image: url("data:image/svg+xml,${wi}");\n mask-size: 12px;\n mask-repeat: no-repeat;\n mask-position: center;\n -webkit-mask-image: url("data:image/svg+xml,${wi}");\n -webkit-mask-size: 12px;\n -webkit-mask-repeat: no-repeat;\n -webkit-mask-position: center;\n }\n\n .accessify-card[aria-checked="true"] .accessify-card-icon {\n color: var(--primary);\n }\n\n .accessify-card[aria-checked="true"] .accessify-card-label {\n color: var(--primary);\n font-weight: var(--font-semibold);\n }\n\n .accessify-card-icon {\n color: var(--text-secondary);\n transition: color var(--transition-fast);\n }\n\n .accessify-card-icon svg {\n width: 18px;\n height: 18px;\n }\n\n .accessify-card-label {\n font-size: 10px;\n font-weight: var(--font-medium);\n line-height: 1.15;\n word-break: break-word;\n transition: color var(--transition-fast);\n }\n\n .accessify-card-desc {\n display: none;\n }\n\n /* ===================================================================\n FOOTER\n =================================================================== */\n\n .accessify-footer {\n padding: var(--space-1) var(--space-3);\n border-top: 1px solid var(--border);\n font-size: 10px;\n color: var(--text-secondary);\n text-align: center;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--space-2);\n }\n\n .accessify-footer a {\n color: var(--primary);\n text-decoration: none;\n }\n\n .accessify-footer a:hover {\n text-decoration: underline;\n }\n\n /* ===================================================================\n SUB-PANELS (sliders, selects)\n =================================================================== */\n\n .accessify-subpanel {\n padding: var(--space-3) var(--space-5);\n background: var(--surface-raised);\n border-top: 1px solid var(--border);\n }\n\n .accessify-slider {\n width: 100%;\n accent-color: var(--primary);\n }\n\n .accessify-select {\n width: 100%;\n padding: var(--space-2) var(--space-3);\n border: 1px solid var(--border);\n border-radius: var(--radius-sm);\n background: var(--surface);\n color: var(--text);\n font-size: var(--text-sm);\n }\n\n /* ===================================================================\n REDUCED MOTION\n =================================================================== */\n\n @media (prefers-reduced-motion: reduce) {\n *, *::before, *::after {\n animation-duration: 0.01ms !important;\n transition-duration: 0.01ms !important;\n }\n }\n\n /* ===================================================================\n MOBILE RESPONSIVE\n =================================================================== */\n\n @media (max-width: 480px) {\n .accessify-panel {\n width: 100%;\n left: 0;\n right: 0;\n ${r?"bottom: 0":"top: 0"};\n border-radius: ${r?"var(--radius-lg) var(--radius-lg) 0 0":"0 0 var(--radius-lg) var(--radius-lg)"};\n max-height: 85vh;\n }\n\n .accessify-features {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .accessify-card {\n min-height: 88px;\n padding: var(--space-3);\n }\n\n .accessify-trigger {\n ${r?"bottom: 16px":"top: 16px"};\n ${n?"right: 16px":"left: 16px"};\n }\n\n .accessify-card-desc {\n display: none;\n }\n }\n `}($i)),n.adoptedStyleSheets=[r];const i=document.createElement("div");function a(e){return Object.getOwnPropertySymbols(e).find(e=>"Symbol(events)"===e.toString())}i.id="accessify-mount",n.appendChild(i),Si=function(e,{target:t,anchor:n,props:r={},events:i,context:a,intro:o=!0,transformError:s}){!function(){if(void 0===ln){ln=window,dn=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,n=Text.prototype;un=se(t,"firstChild").get,fn=se(t,"nextSibling").get,fe(e)&&(e.__click=void 0,e.__className=void 0,e.__attributes=null,e.__style=void 0,e.__e=void 0),fe(n)&&(n.__t=void 0),te&&(e.__svelte_meta=null,function(){const e=Array.prototype,t=Array.__svelte_cleanup;t&&t();const{indexOf:n,lastIndexOf:r,includes:i}=e;e.indexOf=function(e,t){const r=n.call(this,e,t);if(-1===r)for(let n=t??0;n<this.length;n+=1)if(sn(this[n])===e){Fe();break}return r},e.lastIndexOf=function(e,t){const n=r.call(this,e,t??this.length-1);if(-1===n)for(let r=0;r<=(t??this.length-1);r+=1)if(sn(this[r])===e){Fe();break}return n},e.includes=function(e,t){const n=i.call(this,e,t);if(!n)for(let r=0;r<this.length;r+=1)if(sn(this[r])===e){Fe();break}return n},Array.__svelte_cleanup=()=>{e.indexOf=n,e.lastIndexOf=r,e.includes=i}}())}}();var c=void 0,l=function(){Et.ensure();const o=wn(524352,()=>{var o=n??t.appendChild(pn());new Tt(o,{pending:()=>{}},t=>{Qe({}),a&&(Ue.c=a),i&&(r.$$events=i),c=e(t,r)||{},et()},s);var l=new Set,d=e=>{for(var n=0;n<e.length;n++){var r=e[n];if(!l.has(r)){l.add(r);var i=hr(r);for(const e of[t,document]){var a=_r.get(e);void 0===a&&_r.set(e,a=new Map);var o=a.get(r);void 0===o?(e.addEventListener(r,wr,{passive:i}),a.set(r,1)):a.set(r,o+1)}}}};return d(ae(mr)),vr.add(d),()=>{for(var e of l)for(const n of[t,document]){var r=_r.get(n),i=r.get(e);0==--i?(n.removeEventListener(e,wr),r.delete(e),0===r.size&&_r.delete(n)):r.set(e,i)}vr.delete(d),o!==n&&o.parentNode?.removeChild(o)}});return(e={})=>new Promise(t=>{e.outro?Pn(o,()=>{In(o),t(void 0)}):(In(o),t(void 0))})}();return Ar.set(c,l),c}(xi,{target:i,props:{config:$i,shadow:n}});const o=["click","input","change","keydown","keyup","focusin","focusout"];for(const s of o)n.addEventListener(s,e=>{let t=e.composedPath()[0],r=!1;for(;t&&t!==n;){const n=a(t);if(n){const i=t[n];i&&"function"==typeof i[s]&&(i[s].call(t,e),r=!0)}if(e.cancelBubble)break;t=t.assignedSlot||t.parentNode||t.host}r&&e.stopImmediatePropagation()},!0);document.body.appendChild(Ei),$i.onReady?.()}function Mi(){Si&&(function(e){const t=Ar.get(e);t?(Ar.delete(e),t(void 0)):Promise.resolve()}(Si),Si=null),Ei?.remove(),Ei=null}function _i(e,...t){const n={init:e=>Ci(e),open:()=>Si?.open?.(),close:()=>Si?.close?.(),destroy:Mi};n[e]?.(...t)}window.__accessify_exec=_i;const Ai=window.Accessify;Ai?.q&&(Ai.q.forEach(e=>_i(...e)),Ai.q=[]),window.Accessify=function(e,...t){_i(e,...t)},window.Accessify._loaded=!0,window.A11yPlus=window.Accessify;const zi=Object.freeze(Object.defineProperty({__proto__:null,default:function(e,t="de"){let n=!1,r=null,i=null,a=null,o=[];const s=new Map,c="accessify-alt-text-styles",l="accessify-alt-missing",d="accessify-alt-badge",u="accessify-alt-panel";function f(){h();const e=o.filter(e=>!s.has(e)||!s.get(e).applied).length;0===e&&o.length>0?p(t.startsWith("de")?"Alle Bilder haben Alt-Text!":"All images have alt text!","#2a9d8f",0):0!==e&&p(t.startsWith("de")?`${e} ${1===e?"Bild":"Bilder"} ohne Alt-Text`:`${e} ${1===e?"image":"images"} missing alt text`,"#e63946",e)}function p(e,t,n){const r=document.createElement("div");if(r.className=d,r.setAttribute("role","status"),r.setAttribute("aria-live","polite"),n>0){const e=document.createElement("span");e.className=`${d}-count`,e.style.background=t,e.textContent=String(n),r.appendChild(e)}const a=document.createElement("span");a.textContent=e,r.appendChild(a),document.body.appendChild(r),i=r}function h(){i?.remove(),i=null}function g(e){e.preventDefault(),e.stopPropagation(),function(e){b();const n=document.createElement("div");n.className=u,n.setAttribute("role","dialog"),n.setAttribute("aria-label",t.startsWith("de")?"Alt-Text erzeugen":"Generate Alt Text");const r=e.getBoundingClientRect(),i=r.bottom+window.scrollY+8,o=Math.min(Math.max(8,r.left+window.scrollX),window.innerWidth-380);n.style.top=`${i}px`,n.style.left=`${o}px`;const c=document.createElement("div");c.className=`${u}-header`;const l=document.createElement("h3");l.textContent=t.startsWith("de")?"Alt-Text erzeugen":"Generate Alt Text";const d=document.createElement("button");d.className=`${u}-close`,d.setAttribute("aria-label",t.startsWith("de")?"Schließen":"Close"),d.innerHTML="&times;",d.addEventListener("click",()=>b()),c.appendChild(l),c.appendChild(d),n.appendChild(c);const f=document.createElement("div");f.className=`${u}-disclaimer`,f.textContent=t.startsWith("de")?"KI-generiert – bitte überprüfen":"AI-generated – please review",n.appendChild(f);const p=document.createElement("img");p.className=`${u}-preview`,p.src=e.src,p.alt="Preview of image being described",n.appendChild(p);const h=s.get(e);h&&h.generatedAlt?v(n,e,h.generatedAlt,h.applied):m(n,e),document.body.appendChild(n),a=n,d.focus();const g=e=>{"Escape"===e.key&&(b(),document.removeEventListener("keydown",g))};document.addEventListener("keydown",g)}(e.currentTarget)}async function m(n,r){if(!e)return void y(n,t.startsWith("de")?"Bitte konfigurieren Sie einen OpenRouter API-Schlüssel, um KI-generierte Bildbeschreibungen zu nutzen.":"Please configure an OpenRouter API key to use AI alt-text generation.");const i=document.createElement("div");i.className=`${u}-spinner`,i.textContent=t.startsWith("de")?"Alt-Text wird erzeugt...":"Generating alt text...",n.appendChild(i);try{const a=function(e){const t=[];e.title&&t.push(`Title: ${e.title}`);try{const n=new URL(e.src,window.location.href).pathname.split("/").pop();n&&t.push(`Filename: ${n}`)}catch{}const n=e.closest("figure");if(n){const e=n.querySelector("figcaption");e?.textContent?.trim()&&t.push(`Caption: ${e.textContent.trim()}`)}const r=e.parentElement;if(r){const e=r.querySelector("h1, h2, h3, h4, h5, h6");e?.textContent?.trim()&&t.push(`Nearby heading: ${e.textContent.trim()}`)}const i=e.getAttribute("aria-describedby");if(i){const e=document.getElementById(i);e?.textContent?.trim()&&t.push(`Description: ${e.textContent.trim()}`)}return t.join(". ")}(r),o=await e.generateAltText(r.src,a);if(i.remove(),!o)return void y(n,t.startsWith("de")?"Keine Beschreibung erhalten. Bitte versuchen Sie es erneut.":"No description received. Please try again.");s.set(r,{element:r,generatedAlt:o,applied:!1}),v(n,r,o,!1)}catch(a){i.remove(),y(n,a instanceof pi?t.startsWith("de")?"Kostenlose API-Grenze erreicht. Bitte versuchen Sie es in einer Minute erneut oder hinterlegen Sie einen eigenen API-Schlüssel.":"Free tier rate limit reached. Please try again in a minute or configure your own API key.":(a?.message||"").includes("401")?t.startsWith("de")?"OpenRouter API-Schlüssel fehlt oder ungültig. Erstellen Sie einen kostenlosen Key auf openrouter.ai und übergeben Sie ihn als openRouterKey in der Widget-Konfiguration.":"OpenRouter API key missing or invalid. Create a free key at openrouter.ai and pass it as openRouterKey in the widget config.":t.startsWith("de")?"Fehler beim Erzeugen des Alt-Texts. Bitte versuchen Sie es erneut.":"Error generating alt text. Please try again.")}}function v(e,n,r,i){e.querySelectorAll(`.${u}-textarea, .${u}-actions, .${u}-error, .${u}-spinner`).forEach(e=>e.remove());const a=document.createElement("textarea");a.className=`${u}-textarea`,a.value=r,a.readOnly=!0,a.setAttribute("aria-label",t.startsWith("de")?"Alt-Text Beschreibung":"Alt text description"),e.appendChild(a);const o=document.createElement("div");o.className=`${u}-actions`;const c=document.createElement("button");c.textContent=t.startsWith("de")?"Bearbeiten":"Edit",c.addEventListener("click",()=>{if(a.readOnly=!a.readOnly,a.readOnly){c.textContent=t.startsWith("de")?"Bearbeiten":"Edit";const e=s.get(n);e&&(e.generatedAlt=a.value)}else a.focus(),c.textContent=t.startsWith("de")?"Fertig":"Done"});const l=document.createElement("button");l.textContent=t.startsWith("de")?"Neu erzeugen":"Regenerate",l.addEventListener("click",()=>{s.delete(n),a.remove(),o.remove(),m(e,n)});const d=document.createElement("button");d.classList.add(i?"success":"primary"),d.textContent=i?t.startsWith("de")?"Angewendet":"Applied":t.startsWith("de")?"Übernehmen":"Apply",d.addEventListener("click",()=>{const e=a.value.trim();if(!e)return;n.alt=e,n.setAttribute("alt",e);const r=s.get(n)||{element:n,generatedAlt:e,applied:!1};r.applied=!0,r.generatedAlt=e,s.set(n,r),n.classList.add("accessify-alt-processed"),d.classList.remove("primary"),d.classList.add("success"),d.textContent=t.startsWith("de")?"Angewendet!":"Applied!",f(),setTimeout(()=>b(),1200)}),o.appendChild(c),o.appendChild(l),o.appendChild(d),e.appendChild(o)}function y(e,t){const n=document.createElement("div");n.className=`${u}-error`,n.setAttribute("role","alert"),n.textContent=t,e.appendChild(n)}function b(){a?.remove(),a=null}return{id:"alt-text",name:()=>t.startsWith("de")?"Alt-Text erzeugen":"Alt-Text Generator",description:t.startsWith("de")?"Bildbeschreibungen automatisch erstellen":"Auto-generate image descriptions",icon:"alt-text",category:"ai",activate:function(){n||(n=!0,document.getElementById(c)||(r=document.createElement("style"),r.id=c,r.textContent=`\n .${l} {\n outline: 3px dashed #e63946 !important;\n outline-offset: 3px !important;\n position: relative !important;\n cursor: pointer !important;\n transition: outline-color 0.2s ease !important;\n }\n .${l}:hover {\n outline-color: #f77f00 !important;\n outline-style: solid !important;\n }\n .${l}::after {\n content: 'ALT';\n position: absolute;\n top: 4px;\n left: 4px;\n padding: 2px 6px;\n background: #e63946;\n color: #fff;\n font-family: system-ui, -apple-system, sans-serif;\n font-size: 10px;\n font-weight: 700;\n border-radius: 3px;\n line-height: 1.4;\n pointer-events: none;\n z-index: 1;\n }\n\n .${l}.accessify-alt-processed {\n outline-color: #2a9d8f !important;\n outline-style: solid !important;\n }\n .${l}.accessify-alt-processed::after {\n content: '\\2713 ALT';\n background: #2a9d8f;\n }\n\n .${d} {\n position: fixed;\n top: 12px;\n right: 12px;\n z-index: 2147483646;\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 14px;\n background: #1a1a2e;\n color: #f0f0f0;\n border-radius: 8px;\n box-shadow: 0 4px 16px rgba(0,0,0,0.3);\n font-family: system-ui, -apple-system, sans-serif;\n font-size: 13px;\n user-select: none;\n animation: accessify-alt-fade-in 0.2s ease;\n }\n .${d}-count {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 22px;\n height: 22px;\n padding: 0 6px;\n background: #e63946;\n color: #fff;\n font-size: 12px;\n font-weight: 700;\n border-radius: 11px;\n }\n\n .${u} {\n position: absolute;\n z-index: 2147483646;\n width: 360px;\n max-width: 90vw;\n padding: 16px;\n background: #1a1a2e;\n color: #f0f0f0;\n border-radius: 12px;\n box-shadow: 0 8px 32px rgba(0,0,0,0.4);\n font-family: system-ui, -apple-system, sans-serif;\n font-size: 14px;\n line-height: 1.5;\n animation: accessify-alt-fade-in 0.2s ease;\n }\n .${u}-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 10px;\n }\n .${u}-header h3 {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: #4ea8de;\n }\n .${u}-close {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n padding: 0;\n border: none;\n border-radius: 4px;\n background: transparent;\n color: #888;\n font-size: 16px;\n cursor: pointer;\n }\n .${u}-close:hover { color: #fff; background: rgba(255,255,255,0.1); }\n .${u}-close:focus-visible { outline: 2px solid #4ea8de; outline-offset: 1px; }\n\n .${u}-disclaimer {\n padding: 6px 10px;\n margin-bottom: 10px;\n background: rgba(255,193,7,0.1);\n border: 1px solid rgba(255,193,7,0.25);\n border-radius: 6px;\n font-size: 11px;\n color: #ffd166;\n }\n\n .${u}-preview {\n max-width: 100%;\n max-height: 120px;\n border-radius: 6px;\n margin-bottom: 10px;\n object-fit: contain;\n background: rgba(255,255,255,0.05);\n }\n\n .${u}-textarea {\n width: 100%;\n min-height: 60px;\n padding: 10px;\n border: 1px solid rgba(255,255,255,0.15);\n border-radius: 8px;\n background: rgba(255,255,255,0.04);\n color: #f0f0f0;\n font-family: inherit;\n font-size: 13px;\n line-height: 1.5;\n resize: vertical;\n margin-bottom: 10px;\n box-sizing: border-box;\n }\n .${u}-textarea:focus {\n border-color: #4ea8de;\n outline: none;\n }\n .${u}-textarea:read-only {\n opacity: 0.7;\n cursor: default;\n }\n\n .${u}-actions {\n display: flex;\n gap: 6px;\n justify-content: flex-end;\n }\n .${u}-actions button {\n padding: 6px 14px;\n border: 1px solid rgba(255,255,255,0.15);\n border-radius: 6px;\n background: rgba(255,255,255,0.08);\n color: #f0f0f0;\n font-size: 12px;\n cursor: pointer;\n transition: background 0.15s ease;\n }\n .${u}-actions button:hover { background: rgba(255,255,255,0.18); }\n .${u}-actions button:focus-visible { outline: 2px solid #4ea8de; outline-offset: 1px; }\n .${u}-actions button.primary {\n background: rgba(78,168,222,0.2);\n color: #4ea8de;\n border-color: rgba(78,168,222,0.3);\n }\n .${u}-actions button.primary:hover { background: rgba(78,168,222,0.35); }\n .${u}-actions button.success {\n background: rgba(42,157,143,0.2);\n color: #2a9d8f;\n border-color: rgba(42,157,143,0.3);\n }\n .${u}-actions button.success:hover { background: rgba(42,157,143,0.35); }\n\n .${u}-spinner {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 16px 0;\n justify-content: center;\n color: #888;\n font-size: 13px;\n }\n .${u}-spinner::before {\n content: '';\n width: 18px;\n height: 18px;\n border: 2px solid rgba(78,168,222,0.3);\n border-top-color: #4ea8de;\n border-radius: 50%;\n animation: accessify-alt-spin 0.6s linear infinite;\n }\n\n .${u}-error {\n padding: 10px;\n background: rgba(220,53,69,0.12);\n border: 1px solid rgba(220,53,69,0.3);\n border-radius: 8px;\n color: #f0a0a8;\n font-size: 13px;\n margin-bottom: 10px;\n }\n\n @keyframes accessify-alt-fade-in {\n from { opacity: 0; transform: translateY(4px); }\n to { opacity: 1; transform: translateY(0); }\n }\n @keyframes accessify-alt-spin {\n to { transform: rotate(360deg); }\n }\n `,document.head.appendChild(r)),o=function(){const e=document.querySelectorAll("img"),t=[];return e.forEach(e=>{if(e.closest("#accessify-root"))return;if(e.width<20||e.height<20)return;const n=e.getAttribute("alt");null!==n&&""!==n.trim()||t.push(e)}),t}(),o.forEach(e=>{e.classList.add(l),s.has(e)&&s.get(e).applied&&e.classList.add("accessify-alt-processed"),e.addEventListener("click",g)}),f())},deactivate:function(){n=!1,b(),o.forEach(e=>{e.classList.remove(l,"accessify-alt-processed"),e.removeEventListener("click",g)}),o=[],h(),r?.remove(),r=null,document.getElementById(c)?.remove()},getState:()=>({id:"alt-text",enabled:n,value:{missingCount:o.length,processedCount:s.size,appliedCount:[...s.values()].filter(e=>e.applied).length}})}}},Symbol.toStringTag,{value:"Module"})),Ii=Object.freeze(Object.defineProperty({__proto__:null,default:function(){let e=!1;const t="accessify-animation-stop",n="accessify-animation-stop";let r=[];function i(){e=!0,function(){let e=document.getElementById(t);e||(e=document.createElement("style"),e.id=t,document.head.appendChild(e)),e.textContent="\n /* accessify animation stop - WCAG 2.3.1 compliance */\n *, *::before, *::after {\n animation-duration: 0.01s !important;\n animation-delay: 0s !important;\n animation-iteration-count: 1 !important;\n animation-play-state: paused !important;\n transition-duration: 0.01s !important;\n transition-delay: 0s !important;\n scroll-behavior: auto !important;\n }\n "}(),function(){const e=document.querySelectorAll("video[autoplay], video");r=[],e.forEach(e=>{e.paused||(e.pause(),r.push(e))})}(),localStorage.setItem(n,"true")}function a(){e=!1,function(){const e=document.getElementById(t);e?.remove()}(),r.forEach(e=>{try{e.play()}catch{}}),r=[],localStorage.removeItem(n)}return{id:"animation-stop",name:()=>"Stop Animations",description:"Pause all animations, transitions, and auto-playing videos (WCAG 2.3.1)",icon:"animation-stop",category:"visual",activate:i,deactivate:a,getState:()=>({id:"animation-stop",enabled:e}),setState:e=>{e.enabled?i():a()}}}},Symbol.toStringTag,{value:"Module"}));let Ti=null;const Li=Object.freeze(Object.defineProperty({__proto__:null,default:function(e="de"){let t=!1,n=null,r=null,i=null,a=!1;const o="accessify-scan-styles",s="accessify-scan-panel";function c(t){t.innerHTML="";const n=document.createElement("div");n.className=`${s}-spinner`;const r=document.createElement("span");r.textContent=e.startsWith("de")?"Seite wird auf Barrierefreiheit geprüft...":"Scanning page for accessibility issues...",n.appendChild(r);const i=document.createElement("span");i.style.fontSize="12px",i.style.color="#666",i.textContent=e.startsWith("de")?"axe-core wird geladen und analysiert die Seite":"Loading axe-core and analyzing the page",n.appendChild(i),t.appendChild(n)}async function l(t,n){a=!0;try{const r=await async function(){await async function(){if(!Ti){if(!window.axe)return new Promise((e,t)=>{const n=document.createElement("script");n.src="https://cdnjs.cloudflare.com/ajax/libs/axe-core/4.10.2/axe.min.js",n.crossOrigin="anonymous",n.onload=()=>{Ti=window.axe,Ti?e():t(new Error("axe-core loaded but not available on window"))},n.onerror=()=>t(new Error("Failed to load axe-core")),document.head.appendChild(n)});Ti=window.axe}}();const e=await Ti.run(document,{exclude:["#accessify-root"],runOnly:{type:"tag",values:["wcag2a","wcag2aa","wcag21a","wcag21aa","best-practice"]}}),t={violations:e.violations.map(e=>{return{id:e.id,impact:e.impact||"minor",description:e.description,helpUrl:e.helpUrl,nodes:e.nodes.length,wcagCriteria:(t=e.tags,t.filter(e=>/^wcag\d/.test(e)||e.startsWith("best-practice")))};var t}),passes:e.passes.length,count:e.passes.length+e.violations.length,timestamp:Date.now()};return i=t,t}();a=!1,function(t,n,r){if(t.innerHTML="",0===r.violations.length){const i=document.createElement("div");return i.className=`${s}-empty`,i.innerHTML=`\n <span class="checkmark" aria-hidden="true">&#10003;</span>\n ${e.startsWith("de")?"Keine Probleme gefunden!":"No issues found!"}\n `,t.appendChild(i),d(t,r),void u(n,r)}d(t,r);const i={critical:[],serious:[],moderate:[],minor:[]};r.violations.forEach(e=>{const t=e.impact||"minor";i[t]?i[t].push(e):i.minor.push(e)});const a={critical:{de:"Kritisch",en:"Critical"},serious:{de:"Schwerwiegend",en:"Serious"},moderate:{de:"Mittel",en:"Moderate"},minor:{de:"Gering",en:"Minor"}};for(const[o,c]of Object.entries(i)){if(0===c.length)continue;const n=document.createElement("div");n.className=`${s}-group`,n.setAttribute("data-impact",o);const r=document.createElement("div");r.className=`${s}-group-header`;const i=document.createElement("span");i.textContent="▼",i.style.fontSize="10px",i.style.transition="transform 0.15s ease";const l=document.createElement("span"),d=e.startsWith("de")?"de":"en";l.textContent=a[o]?.[d]||o;const u=document.createElement("span");u.className="count",u.textContent=String(c.length),r.appendChild(i),r.appendChild(l),r.appendChild(u);const f=document.createElement("div");let p=!1;r.addEventListener("click",()=>{p=!p,f.style.display=p?"none":"block",i.style.transform=p?"rotate(-90deg)":"rotate(0)"}),c.forEach(t=>{const n=document.createElement("div");n.className=`${s}-violation`;const r=document.createElement("div");r.className=`${s}-violation-desc`,r.textContent=t.description;const i=document.createElement("div");i.className=`${s}-violation-meta`;const a=document.createElement("span");if(a.textContent=e.startsWith("de")?`${t.nodes} ${1===t.nodes?"Element":"Elemente"}`:`${t.nodes} ${1===t.nodes?"element":"elements"}`,i.appendChild(a),t.wcagCriteria.length>0){const e=document.createElement("span");e.textContent=t.wcagCriteria.join(", "),i.appendChild(e)}const o=document.createElement("a");o.href=t.helpUrl,o.target="_blank",o.rel="noopener noreferrer",o.textContent=e.startsWith("de")?"Mehr erfahren":"Learn more",i.appendChild(o),n.appendChild(r),n.appendChild(i),f.appendChild(n)}),n.appendChild(r),n.appendChild(f),t.appendChild(n)}u(n,r)}(t,n,r)}catch(r){a=!1,t.innerHTML="";const i=document.createElement("div");i.style.cssText="padding: 20px; text-align: center; color: #f0a0a8;",i.textContent=e.startsWith("de")?`Fehler beim Scannen: ${r.message}`:`Scan error: ${r.message}`,t.appendChild(i),u(n,null)}}function d(t,n){const r=document.createElement("div");r.className=`${s}-score`;const i=n.count,a=n.passes,o=i>0?Math.round(a/i*100):100;let c="#2a9d8f";o<60?c="#e63946":o<80?c="#f77f00":o<95&&(c="#ffd166");const l=document.createElement("div");l.className=`${s}-score-ring`;const d=2*Math.PI*22;l.innerHTML=`\n <svg width="56" height="56" viewBox="0 0 56 56" aria-hidden="true">\n <circle cx="28" cy="28" r="22" fill="none" stroke="rgba(255,255,255,0.08)" stroke-width="4" />\n <circle cx="28" cy="28" r="22" fill="none" stroke="${c}" stroke-width="4"\n stroke-dasharray="${d}" stroke-dashoffset="${d-o/100*d}" stroke-linecap="round" />\n </svg>\n <div class="score-text" style="color:${c}">${o}%</div>\n `;const u=document.createElement("div");u.className=`${s}-score-details`,u.innerHTML=e.startsWith("de")?`<strong>${a}</strong> von <strong>${i}</strong> Prüfungen bestanden<br>${n.violations.length} ${1===n.violations.length?"Problem":"Probleme"} gefunden`:`<strong>${a}</strong> of <strong>${i}</strong> checks passed<br>${n.violations.length} ${1===n.violations.length?"issue":"issues"} found`,r.appendChild(l),r.appendChild(u),t.insertBefore(r,t.firstChild)}function u(t,n){t.querySelector(`.${s}-footer`)?.remove();const r=document.createElement("div");r.className=`${s}-footer`;const i=document.createElement("div");i.style.display="flex",i.style.gap="6px";const a=document.createElement("button");if(a.classList.add("primary"),a.textContent=e.startsWith("de")?"Erneut prüfen":"Rescan",a.addEventListener("click",()=>{const e=t.querySelector(`.${s}-body`);e&&(c(e),l(e,t))}),i.appendChild(a),n&&n.violations.length>0){const r=n.violations.filter(e=>f[e.id]).length;if(r>0){const a=document.createElement("button");a.classList.add("fix"),a.textContent=e.startsWith("de")?`${r} automatisch beheben`:`Auto-fix ${r} ${1===r?"issue":"issues"}`,a.addEventListener("click",()=>{const r=function(t){const n={fixed:[],skipped:[]},r=e.startsWith("de")?"de":"en";return t.forEach(e=>{const t=f[e.id];if(t)try{t.fix()?n.fixed.push("de"===r?t.labelDe:t.label):n.skipped.push("de"===r?t.labelDe:t.label)}catch{n.skipped.push("de"===r?t.labelDe:t.label)}}),n}(n.violations),i=t.querySelector(`.${s}-body`);i&&function(t,n){t.querySelectorAll(`.${s}-fix-report`).forEach(e=>e.remove());const r=document.createElement("div");r.className=`${s}-fix-report`,r.setAttribute("role","status"),r.setAttribute("aria-live","polite");let i="";n.fixed.length>0&&(i+=`<strong>${e.startsWith("de")?"Behoben:":"Fixed:"}</strong><br>`,i+=n.fixed.map(e=>`&#10003; ${e}`).join("<br>")),n.skipped.length>0&&(i&&(i+="<br><br>"),i+=`<strong>${e.startsWith("de")?"Übersprungen:":"Skipped:"}</strong><br>`,i+=n.skipped.map(e=>`&#8226; ${e}`).join("<br>")),0===n.fixed.length&&0===n.skipped.length&&(i=e.startsWith("de")?"Keine automatisch behebbaren Probleme gefunden.":"No auto-fixable issues found."),r.innerHTML=i,t.insertBefore(r,t.firstChild)}(i,r)}),i.appendChild(a)}}const o=document.createElement("div");if(o.style.display="flex",o.style.gap="6px",n){const t=document.createElement("button");t.textContent=e.startsWith("de")?"JSON exportieren":"Export JSON",t.addEventListener("click",()=>{!function(e){const t={...e,url:window.location.href,generatedBy:"Accessify WCAG Scanner",exportedAt:(new Date).toISOString()},n=JSON.stringify(t,null,2),r=new Blob([n],{type:"application/json"}),i=URL.createObjectURL(r),a=document.createElement("a");a.href=i,a.download=`accessify-scan-${Date.now()}.json`,a.click(),URL.revokeObjectURL(i)}(n)}),o.appendChild(t)}const d=document.createElement("button");d.textContent=e.startsWith("de")?"Schließen":"Close",d.addEventListener("click",()=>p()),o.appendChild(d),r.appendChild(i),r.appendChild(o),t.appendChild(r)}const f={"html-has-lang":{label:"Added lang attribute to <html>",labelDe:"lang-Attribut zu <html> hinzugefügt",fix:()=>function(){const e=document.documentElement;if(e.hasAttribute("lang")&&""!==e.lang.trim())return!1;const t=function(){const e=document.querySelector('meta[http-equiv="content-language"]');if(e?.content)return e.content;const t=document.querySelector('meta[property="og:locale"]');if(t?.content)return t.content.replace("_","-");const n=(document.body.innerText||"").toLowerCase().slice(0,2e3);let r=0,i=0;return["und","der","die","das","ist","nicht","ein","eine","mit","auf"].forEach(e=>{const t=new RegExp(`\\b${e}\\b`,"gi");r+=(n.match(t)||[]).length}),["the","and","is","are","for","not","with","this","that","was"].forEach(e=>{const t=new RegExp(`\\b${e}\\b`,"gi");i+=(n.match(t)||[]).length}),r>i?"de":"en"}();return e.setAttribute("lang",t),!0}()},"document-title":{label:"Added page title",labelDe:"Seitentitel hinzugefügt",fix:()=>function(){let e=document.querySelector("title");if(e&&e.textContent?.trim())return!1;const t=document.querySelector("h1"),n=t?.textContent?.trim()||window.location.hostname||"Untitled Page";return e||(e=document.createElement("title"),document.head.appendChild(e)),e.textContent=n,!0}()},bypass:{label:"Added skip-to-content link",labelDe:"Überspringen-Link hinzugefügt",fix:()=>function(){if(document.querySelector('a[href="#main"], a[href="#content"], a[href="#main-content"], .skip-link, .skip-to-content'))return!1;const t=document.querySelector("main")||document.getElementById("main")||document.getElementById("content")||document.getElementById("main-content");if(!t){const e=document.querySelector("h1, h2");e&&!e.id&&(e.id="accessify-main-content")}const n=t?.id||(t?t.id="accessify-main-content":"accessify-main-content"),r=document.createElement("a");return r.href=`#${n}`,r.textContent=e.startsWith("de")?"Zum Inhalt springen":"Skip to content",r.className="accessify-skip-link",Object.assign(r.style,{position:"absolute",top:"-100px",left:"0",padding:"8px 16px",background:"#1a1a2e",color:"#4ea8de",fontSize:"14px",fontWeight:"600",fontFamily:"system-ui, -apple-system, sans-serif",textDecoration:"none",zIndex:"2147483647",borderRadius:"0 0 8px 0",transition:"top 0.2s ease"}),r.addEventListener("focus",()=>{r.style.top="0"}),r.addEventListener("blur",()=>{r.style.top="-100px"}),document.body.insertBefore(r,document.body.firstChild),!0}()},"link-name":{label:"Added aria-labels to empty links",labelDe:"aria-label zu leeren Links hinzugefügt",fix:()=>function(){const e=document.querySelectorAll("a:not([aria-label]):not([aria-labelledby])");let t=0;return e.forEach(e=>{const n=(e.textContent||"").trim(),r=e.querySelector("img[alt]");if(n||r&&r.alt)return;const i=e.title?.trim(),a=e.href,o=e.querySelector("img"),s=i||(o?o.alt:"")||(a?new URL(a,window.location.href).hostname:"")||"Link";e.setAttribute("aria-label",s),t++}),t>0}()},"button-name":{label:"Added aria-labels to empty buttons",labelDe:"aria-label zu leeren Buttons hinzugefügt",fix:()=>function(){const e=document.querySelectorAll("button:not([aria-label]):not([aria-labelledby])");let t=0;return e.forEach(e=>{if((e.textContent||"").trim())return;const n=e.title?.trim(),r=e.querySelector("img[alt]"),i=e.querySelector("svg"),a=n||(r?r.alt:"")||(i?function(e){const t=e.querySelector("title");if(t?.textContent?.trim())return t.textContent.trim();const n=e.getAttribute("aria-label");return n?.trim()?n.trim():""}(i):"")||function(e){if(!e)return"";const t=e.replace(/[_-]/g," ").replace(/([a-z])([A-Z])/g,"$1 $2").split(/\s+/).filter(e=>e.length>2&&!["btn","button","icon","svg","img","cls","mod"].includes(e.toLowerCase()));return t.length>0?t.slice(0,3).join(" "):""}(e.className)||"Button";e.setAttribute("aria-label",a),t++}),t>0}()},"focus-order-semantics":{label:"Added focus indicators CSS",labelDe:"CSS-Fokus-Indikatoren hinzugefügt",fix:()=>function(){const e="accessify-focus-fix";if(document.getElementById(e))return!1;const t=document.createElement("style");return t.id=e,t.textContent="\n *:focus-visible {\n outline: 3px solid #4ea8de !important;\n outline-offset: 2px !important;\n }\n ",document.head.appendChild(t),!0}()}};function p(){r?.remove(),r=null,document.querySelector(`.${s}-backdrop`)?.remove()}return{id:"auto-scan",name:()=>e.startsWith("de")?"WCAG-Prüfung":"WCAG Scan",description:e.startsWith("de")?"Seite auf Barrierefreiheit prüfen":"Scan page for accessibility issues",icon:"scan",category:"ai",activate:function(){t||(t=!0,function(){p(),document.getElementById(o)||(n=document.createElement("style"),n.id=o,n.textContent=`\n .${s} {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n z-index: 2147483646;\n width: 560px;\n max-width: 92vw;\n max-height: 80vh;\n background: #1a1a2e;\n color: #f0f0f0;\n border-radius: 14px;\n box-shadow: 0 12px 48px rgba(0,0,0,0.5);\n font-family: system-ui, -apple-system, sans-serif;\n font-size: 14px;\n line-height: 1.5;\n display: flex;\n flex-direction: column;\n animation: accessify-scan-fade-in 0.25s ease;\n }\n\n .${s}-backdrop {\n position: fixed;\n inset: 0;\n z-index: 2147483645;\n background: rgba(0,0,0,0.4);\n animation: accessify-scan-fade-in 0.2s ease;\n }\n\n .${s}-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n border-bottom: 1px solid rgba(255,255,255,0.08);\n flex-shrink: 0;\n }\n .${s}-header h2 {\n margin: 0;\n font-size: 16px;\n font-weight: 700;\n color: #f0f0f0;\n }\n .${s}-close {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n padding: 0;\n border: none;\n border-radius: 6px;\n background: transparent;\n color: #888;\n font-size: 18px;\n cursor: pointer;\n }\n .${s}-close:hover { color: #fff; background: rgba(255,255,255,0.1); }\n .${s}-close:focus-visible { outline: 2px solid #4ea8de; outline-offset: 1px; }\n\n .${s}-body {\n flex: 1;\n overflow-y: auto;\n padding: 16px 20px;\n }\n\n .${s}-score {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 14px 16px;\n background: rgba(255,255,255,0.04);\n border-radius: 10px;\n margin-bottom: 16px;\n }\n .${s}-score-ring {\n position: relative;\n width: 56px;\n height: 56px;\n flex-shrink: 0;\n }\n .${s}-score-ring svg {\n transform: rotate(-90deg);\n }\n .${s}-score-ring .score-text {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 16px;\n font-weight: 700;\n }\n .${s}-score-details {\n font-size: 13px;\n color: #aaa;\n }\n .${s}-score-details strong {\n color: #f0f0f0;\n font-weight: 600;\n }\n\n .${s}-group {\n margin-bottom: 14px;\n }\n .${s}-group-header {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n border-radius: 8px;\n font-size: 13px;\n font-weight: 600;\n margin-bottom: 6px;\n cursor: pointer;\n user-select: none;\n }\n .${s}-group-header:hover {\n opacity: 0.9;\n }\n .${s}-group-header .count {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 20px;\n height: 20px;\n padding: 0 6px;\n border-radius: 10px;\n font-size: 11px;\n font-weight: 700;\n }\n .${s}-group[data-impact="critical"] .${s}-group-header {\n background: rgba(220,53,69,0.12);\n color: #f0a0a8;\n }\n .${s}-group[data-impact="critical"] .count {\n background: rgba(220,53,69,0.3);\n }\n .${s}-group[data-impact="serious"] .${s}-group-header {\n background: rgba(255,152,0,0.12);\n color: #ffcc80;\n }\n .${s}-group[data-impact="serious"] .count {\n background: rgba(255,152,0,0.3);\n }\n .${s}-group[data-impact="moderate"] .${s}-group-header {\n background: rgba(255,193,7,0.12);\n color: #ffd54f;\n }\n .${s}-group[data-impact="moderate"] .count {\n background: rgba(255,193,7,0.3);\n }\n .${s}-group[data-impact="minor"] .${s}-group-header {\n background: rgba(78,168,222,0.12);\n color: #81d4fa;\n }\n .${s}-group[data-impact="minor"] .count {\n background: rgba(78,168,222,0.3);\n }\n\n .${s}-violation {\n padding: 10px 14px;\n margin-bottom: 4px;\n background: rgba(255,255,255,0.03);\n border-radius: 6px;\n border-left: 3px solid rgba(255,255,255,0.1);\n }\n .${s}-violation-desc {\n font-size: 13px;\n margin-bottom: 4px;\n }\n .${s}-violation-meta {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n font-size: 11px;\n color: #888;\n }\n .${s}-violation-meta a {\n color: #4ea8de;\n text-decoration: none;\n }\n .${s}-violation-meta a:hover { text-decoration: underline; }\n .${s}-violation-meta a:focus-visible {\n outline: 2px solid #4ea8de;\n outline-offset: 1px;\n }\n\n .${s}-footer {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 20px;\n border-top: 1px solid rgba(255,255,255,0.08);\n flex-shrink: 0;\n gap: 8px;\n flex-wrap: wrap;\n }\n .${s}-footer button {\n padding: 7px 16px;\n border: 1px solid rgba(255,255,255,0.15);\n border-radius: 7px;\n background: rgba(255,255,255,0.08);\n color: #f0f0f0;\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.15s ease;\n white-space: nowrap;\n }\n .${s}-footer button:hover { background: rgba(255,255,255,0.18); }\n .${s}-footer button:focus-visible { outline: 2px solid #4ea8de; outline-offset: 1px; }\n .${s}-footer button.primary {\n background: rgba(78,168,222,0.2);\n color: #4ea8de;\n border-color: rgba(78,168,222,0.3);\n }\n .${s}-footer button.primary:hover { background: rgba(78,168,222,0.35); }\n .${s}-footer button.fix {\n background: rgba(42,157,143,0.2);\n color: #2a9d8f;\n border-color: rgba(42,157,143,0.3);\n }\n .${s}-footer button.fix:hover { background: rgba(42,157,143,0.35); }\n\n .${s}-spinner {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 14px;\n padding: 40px 20px;\n color: #aaa;\n font-size: 14px;\n }\n .${s}-spinner::before {\n content: '';\n width: 28px;\n height: 28px;\n border: 3px solid rgba(78,168,222,0.2);\n border-top-color: #4ea8de;\n border-radius: 50%;\n animation: accessify-scan-spin 0.7s linear infinite;\n }\n\n .${s}-empty {\n text-align: center;\n padding: 32px 20px;\n color: #2a9d8f;\n font-size: 15px;\n font-weight: 600;\n }\n .${s}-empty .checkmark {\n display: block;\n font-size: 40px;\n margin-bottom: 8px;\n }\n\n .${s}-fix-report {\n padding: 12px 14px;\n margin: 12px 0;\n background: rgba(42,157,143,0.1);\n border: 1px solid rgba(42,157,143,0.25);\n border-radius: 8px;\n font-size: 13px;\n color: #81cec5;\n }\n .${s}-fix-report strong { color: #2a9d8f; }\n\n @keyframes accessify-scan-fade-in {\n from { opacity: 0; }\n to { opacity: 1; }\n }\n @keyframes accessify-scan-spin {\n to { transform: rotate(360deg); }\n }\n `,document.head.appendChild(n));const t=document.createElement("div");t.className=`${s}-backdrop`,t.addEventListener("click",()=>p()),document.body.appendChild(t);const i=document.createElement("div");i.className=s,i.setAttribute("role","dialog"),i.setAttribute("aria-label",e.startsWith("de")?"WCAG-Prüfergebnisse":"WCAG Scan Results"),i.setAttribute("aria-modal","true");const a=document.createElement("div");a.className=`${s}-header`;const d=document.createElement("h2");d.textContent=e.startsWith("de")?"WCAG-Prüfung":"WCAG Accessibility Scan";const u=document.createElement("button");u.className=`${s}-close`,u.setAttribute("aria-label",e.startsWith("de")?"Schließen":"Close"),u.innerHTML="&times;",u.addEventListener("click",()=>p()),a.appendChild(d),a.appendChild(u),i.appendChild(a);const f=document.createElement("div");f.className=`${s}-body`,i.appendChild(f),document.body.appendChild(i),r=i,c(f),l(f,i);const h=e=>{"Escape"===e.key&&(p(),document.removeEventListener("keydown",h))};document.addEventListener("keydown",h)}())},deactivate:function(){t=!1,p(),n?.remove(),n=null,document.getElementById(o)?.remove()},getState:()=>({id:"auto-scan",enabled:t,value:i?{violations:i.violations.length,passes:i.passes,total:i.count,timestamp:i.timestamp}:null})}}},Symbol.toStringTag,{value:"Module"}));function Pi(e){return`data:image/svg+xml;base64,${btoa(`<svg xmlns="http://www.w3.org/2000/svg" width="${e}" height="${e}" viewBox="0 0 ${e} ${e}">\n <defs>\n <filter id="shadow" x="-20%" y="-20%" width="140%" height="140%">\n <feDropShadow dx="1" dy="1" stdDeviation="1" flood-color="#000" flood-opacity="0.5"/>\n </filter>\n </defs>\n <g filter="url(#shadow)">\n <path d="M ${.15*e} ${.05*e} L ${.15*e} ${.75*e} L ${.35*e} ${.6*e} L ${.55*e} ${.9*e} L ${.65*e} ${.85*e} L ${.45*e} ${.55*e} L ${.7*e} ${.5*e} Z"\n fill="white" stroke="black" stroke-width="${.04*e}" stroke-linejoin="round"/>\n </g>\n </svg>`)}`}const Oi=Object.freeze(Object.defineProperty({__proto__:null,default:function(){let e=!1,t="48";const n="accessify-big-cursor",r="accessify-big-cursor",i={48:Pi(48),64:Pi(64)};function a(e){let t=document.getElementById(n);t||(t=document.createElement("style"),t.id=n,document.head.appendChild(t)),t.textContent=function(e){const t=parseInt(e,10),n=Math.round(.15*t);return`\n /* accessify big cursor */\n html, html * {\n cursor: url('${i[e]}') ${n} ${n}, auto !important;\n }\n html a, html a *, html button, html button *,\n html input[type="submit"], html input[type="button"],\n html [role="button"], html [role="button"] * {\n cursor: url('${i[e]}') ${n} ${n}, pointer !important;\n }\n `}(e)}return{id:"big-cursor",name:()=>"Big Cursor",description:"Enlarge the mouse cursor for easier visibility",icon:"big-cursor",category:"motor",activate:function(){e=!0;const n=localStorage.getItem(r);t="64"===n?"64":"48",a(t)},deactivate:function(){e=!1,function(){const e=document.getElementById(n);e?.remove()}(),localStorage.removeItem(r)},getState:()=>({id:"big-cursor",enabled:e,value:t}),setState:n=>{t="64"===n?"64":"48",e&&a(t),localStorage.setItem(r,t)}}}},Symbol.toStringTag,{value:"Module"})),ji={protanopia:"\n 0.567, 0.433, 0, 0, 0\n 0.558, 0.442, 0, 0, 0\n 0, 0.242, 0.758, 0, 0\n 0, 0, 0, 1, 0\n ",deuteranopia:"\n 0.625, 0.375, 0, 0, 0\n 0.7, 0.3, 0, 0, 0\n 0, 0.3, 0.7, 0, 0\n 0, 0, 0, 1, 0\n ",tritanopia:"\n 0.95, 0.05, 0, 0, 0\n 0, 0.433, 0.567, 0, 0\n 0, 0.475, 0.525, 0, 0\n 0, 0, 0, 1, 0\n ",achromatopsia:"\n 0.299, 0.587, 0.114, 0, 0\n 0.299, 0.587, 0.114, 0, 0\n 0.299, 0.587, 0.114, 0, 0\n 0, 0, 0, 1, 0\n "},Bi={protanopia:"Protanopia (Red-blind)",deuteranopia:"Deuteranopia (Green-blind)",tritanopia:"Tritanopia (Blue-blind)",achromatopsia:"Achromatopsia (Total color blindness)"},Wi=Object.freeze(Object.defineProperty({__proto__:null,default:function(){let e="off";const t="accessify-colorblind-svg",n="accessify-colorblind-style",r="accessify-colorblind-mode";function i(e){if(document.getElementById(t)?.remove(),document.getElementById(n)?.remove(),"off"===e)return;const r=`accessify-filter-${e}`,i=document.createElement("div");i.innerHTML=function(e){return`\n <svg id="${t}" xmlns="http://www.w3.org/2000/svg" style="position:absolute;width:0;height:0;overflow:hidden;">\n <defs>\n <filter id="accessify-filter-${e}" color-interpolation-filters="sRGB">\n <feColorMatrix type="matrix" values="${ji[e]}" />\n </filter>\n </defs>\n </svg>\n `}(e);const a=i.firstElementChild;a&&document.body.appendChild(a);const o=document.createElement("style");o.id=n,o.textContent=`\n /* accessify color blindness filter: ${Bi[e]} */\n html {\n filter: url(#${r}) !important;\n }\n `,document.head.appendChild(o)}return{id:"color-blind",name:()=>"Color Blindness",description:"Apply color vision deficiency filters for testing and correction",icon:"color-blind",category:"visual",activate:function(){const t=localStorage.getItem(r);e=t&&"off"!==t?t:"protanopia",i(e)},deactivate:function(){e="off",i("off"),localStorage.removeItem(r)},getState:()=>({id:"color-blind",enabled:"off"!==e,value:e}),setState:t=>{e=t,i(t),"off"===t?localStorage.removeItem(r):localStorage.setItem(r,t)}}}},Symbol.toStringTag,{value:"Module"})),Ki=Object.freeze(Object.defineProperty({__proto__:null,default:function(){let e="off";const t="accessify-contrast",n="accessify-contrast-mode";function r(e){let n=document.getElementById(t);"off"!==e?(n||(n=document.createElement("style"),n.id=t,document.head.appendChild(n)),n.textContent=function(e){switch(e){case"high":return"\n html { filter: contrast(1.5) !important; }\n body { background: #000 !important; color: #fff !important; }\n a { color: #ffff00 !important; }\n img { filter: contrast(1.2) !important; }\n ";case"enhanced":return"\n html { filter: contrast(1.25) !important; }\n ";default:return""}}(e)):n?.remove()}return{id:"contrast",name:()=>"Contrast",description:"Increase contrast for better readability",icon:"contrast",category:"visual",activate:function(){const t=localStorage.getItem(n);e=t||"high",r(e)},deactivate:function(){e="off",r("off"),localStorage.removeItem(n)},getState:()=>({id:"contrast",enabled:"off"!==e,value:e}),setState:t=>{e=t,r(t),localStorage.setItem(n,t)}}}},Symbol.toStringTag,{value:"Module"})),Ni=Object.freeze(Object.defineProperty({__proto__:null,default:function(){let e=!1,t=!1;const n="accessify-dyslexia-font",r="accessify-dyslexia-font",i="OpenDyslexic";async function a(){e=!0,await async function(){if(!t)try{const e=new FontFace(i,"url(https://cdn.jsdelivr.net/npm/open-dyslexic@1.0.3/open-dyslexic-regular.woff2)",{style:"normal",weight:"400",display:"swap"}),n=await e.load();document.fonts.add(n),t=!0}catch(e){}}(),function(){let e=document.getElementById(n);e||(e=document.createElement("style"),e.id=n,document.head.appendChild(e)),e.textContent=`\n /* accessify dyslexia-friendly font */\n body, body * {\n font-family: '${i}', sans-serif !important;\n }\n `}(),localStorage.setItem(r,"true")}function o(){e=!1,function(){const e=document.getElementById(n);e?.remove()}(),localStorage.removeItem(r)}return{id:"dyslexia-font",name:()=>"Dyslexia Font",description:"Apply OpenDyslexic font for improved readability",icon:"dyslexia-font",category:"cognitive",activate:a,deactivate:o,getState:()=>({id:"dyslexia-font",enabled:e,value:{fontLoaded:t}}),setState:e=>{e.enabled?a():o()}}}},Symbol.toStringTag,{value:"Module"})),Fi=Object.freeze(Object.defineProperty({__proto__:null,default:function(){let e=!1;const t="accessify-focus-highlight",n="accessify-focus-highlight";function r(){e=!0,function(){let e=document.getElementById(t);e||(e=document.createElement("style"),e.id=t,document.head.appendChild(e)),e.textContent='\n /* accessify focus highlight - WCAG 2.4.7 / 2.4.13 compliance */\n *:focus-visible {\n outline: 3px solid #1a73e8 !important;\n outline-offset: 2px !important;\n box-shadow: 0 0 0 6px rgba(26, 115, 232, 0.3) !important;\n }\n\n /* Override any outline:none that pages may set */\n a:focus-visible,\n button:focus-visible,\n input:focus-visible,\n select:focus-visible,\n textarea:focus-visible,\n [tabindex]:focus-visible,\n [role="button"]:focus-visible,\n [role="link"]:focus-visible,\n [role="checkbox"]:focus-visible,\n [role="radio"]:focus-visible,\n [role="tab"]:focus-visible,\n [role="menuitem"]:focus-visible,\n [role="option"]:focus-visible,\n [role="switch"]:focus-visible,\n [contenteditable="true"]:focus-visible,\n summary:focus-visible,\n details:focus-visible {\n outline: 3px solid #1a73e8 !important;\n outline-offset: 2px !important;\n box-shadow: 0 0 0 6px rgba(26, 115, 232, 0.3) !important;\n }\n\n /* High contrast mode: use yellow outline for dark backgrounds */\n @media (prefers-color-scheme: dark) {\n *:focus-visible {\n outline-color: #ffdd00 !important;\n box-shadow: 0 0 0 6px rgba(255, 221, 0, 0.3) !important;\n }\n }\n '}(),localStorage.setItem(n,"true")}function i(){e=!1,function(){const e=document.getElementById(t);e?.remove()}(),localStorage.removeItem(n)}return{id:"focus-highlight",name:()=>"Focus Highlight",description:"Add strong visible focus indicators on all focusable elements (WCAG 2.4.7/2.4.13)",icon:"focus-highlight",category:"motor",activate:r,deactivate:i,getState:()=>({id:"focus-highlight",enabled:e}),setState:e=>{e.enabled?r():i()}}}},Symbol.toStringTag,{value:"Module"})),Hi=Object.freeze(Object.defineProperty({__proto__:null,default:function(){let e=!1;const t="accessify-hide-images";return{id:"hide-images",name:()=>"Hide Images",description:"Remove images for distraction-free reading",icon:"hide-images",category:"visual",activate:function(){e=!0;let n=document.getElementById(t);n||(n=document.createElement("style"),n.id=t,document.head.appendChild(n)),n.textContent='\n img, picture, svg:not([aria-hidden="true"]), video, canvas,\n [role="img"], figure {\n opacity: 0 !important;\n pointer-events: none !important;\n }\n '},deactivate:function(){e=!1,document.getElementById(t)?.remove()},getState:()=>({id:"hide-images",enabled:e})}}},Symbol.toStringTag,{value:"Module"})),Ri=Object.freeze(Object.defineProperty({__proto__:null,default:function(){let e=!1;const t="accessify-keyboard-nav",n="accessify-skip-link",r="accessify-keyboard-help",i="accessify-keyboard-nav";let a=-1,o=-1,s=[],c=[],l=!1;function d(t){if(e){if("Escape"===t.key&&l){const e=document.getElementById(r);return e?.remove(),void(l=!1)}if(t.altKey)switch(t.key.toLowerCase()){case"h":t.preventDefault(),function(){if(s=Array.from(document.querySelectorAll("h1, h2, h3, h4, h5, h6")).filter(e=>{const t=window.getComputedStyle(e);return"none"!==t.display&&"hidden"!==t.visibility}),0===s.length)return;a=(a+1)%s.length;const e=s[a];e.setAttribute("tabindex","-1"),e.focus(),e.scrollIntoView({behavior:"smooth",block:"center"})}();break;case"l":t.preventDefault(),function(){if(c=Array.from(document.querySelectorAll(['header, [role="banner"]','nav, [role="navigation"]','main, [role="main"]','aside, [role="complementary"]','[role="search"]','[role="form"]','footer, [role="contentinfo"]','[role="region"][aria-label]'].join(", "))).filter(e=>{const t=window.getComputedStyle(e);return"none"!==t.display&&"hidden"!==t.visibility}),0===c.length)return;o=(o+1)%c.length;const e=c[o];e.setAttribute("tabindex","-1"),e.focus(),e.scrollIntoView({behavior:"smooth",block:"center"})}();break;case"k":t.preventDefault(),function(){const e=document.getElementById(r);if(e)return e.remove(),void(l=!1);l=!0;const t=document.createElement("div");t.id=r,t.setAttribute("role","dialog"),t.setAttribute("aria-label","Keyboard shortcuts"),t.setAttribute("aria-modal","true"),t.innerHTML='\n <div style="\n position: fixed; inset: 0; background: rgba(0,0,0,0.6);\n display: flex; align-items: center; justify-content: center;\n z-index: 2147483647;\n ">\n <div style="\n background: #fff; color: #222; border-radius: 12px; padding: 32px;\n max-width: 480px; width: 90%; max-height: 80vh; overflow-y: auto;\n box-shadow: 0 8px 32px rgba(0,0,0,0.3); font-family: system-ui, sans-serif;\n " role="document">\n <h2 style="margin: 0 0 16px; font-size: 20px; color: #1a73e8;">Keyboard Shortcuts</h2>\n <table style="width: 100%; border-collapse: collapse; font-size: 14px;">\n <thead>\n <tr style="border-bottom: 2px solid #e0e0e0;">\n <th style="text-align: left; padding: 8px 12px;">Shortcut</th>\n <th style="text-align: left; padding: 8px 12px;">Action</th>\n </tr>\n </thead>\n <tbody>\n <tr style="border-bottom: 1px solid #f0f0f0;">\n <td style="padding: 8px 12px;"><kbd style="background:#f5f5f5;padding:2px 8px;border-radius:4px;border:1px solid #ccc;font-family:monospace;">Alt + H</kbd></td>\n <td style="padding: 8px 12px;">Navigate to next heading</td>\n </tr>\n <tr style="border-bottom: 1px solid #f0f0f0;">\n <td style="padding: 8px 12px;"><kbd style="background:#f5f5f5;padding:2px 8px;border-radius:4px;border:1px solid #ccc;font-family:monospace;">Alt + L</kbd></td>\n <td style="padding: 8px 12px;">Navigate to next landmark</td>\n </tr>\n <tr style="border-bottom: 1px solid #f0f0f0;">\n <td style="padding: 8px 12px;"><kbd style="background:#f5f5f5;padding:2px 8px;border-radius:4px;border:1px solid #ccc;font-family:monospace;">Alt + K</kbd></td>\n <td style="padding: 8px 12px;">Toggle this help overlay</td>\n </tr>\n <tr style="border-bottom: 1px solid #f0f0f0;">\n <td style="padding: 8px 12px;"><kbd style="background:#f5f5f5;padding:2px 8px;border-radius:4px;border:1px solid #ccc;font-family:monospace;">Tab</kbd></td>\n <td style="padding: 8px 12px;">Move to next focusable element</td>\n </tr>\n <tr>\n <td style="padding: 8px 12px;"><kbd style="background:#f5f5f5;padding:2px 8px;border-radius:4px;border:1px solid #ccc;font-family:monospace;">Escape</kbd></td>\n <td style="padding: 8px 12px;">Close this overlay</td>\n </tr>\n </tbody>\n </table>\n <button style="\n margin-top: 20px; padding: 8px 24px; background: #1a73e8; color: #fff;\n border: none; border-radius: 6px; cursor: pointer; font-size: 14px;\n " id="accessify-keyboard-help-close">Close</button>\n </div>\n </div>\n ',document.body.appendChild(t);const n=document.getElementById("accessify-keyboard-help-close");n?.focus(),n?.addEventListener("click",()=>{t.remove(),l=!1})}()}}}function u(){e=!0,a=-1,o=-1,function(){let e=document.getElementById(t);e||(e=document.createElement("style"),e.id=t,document.head.appendChild(e)),e.textContent=`\n /* accessify keyboard navigation */\n #${n} {\n position: fixed;\n top: -100px;\n left: 50%;\n transform: translateX(-50%);\n background: #1a73e8;\n color: #fff;\n padding: 12px 24px;\n border-radius: 0 0 8px 8px;\n font-size: 16px;\n font-family: system-ui, sans-serif;\n text-decoration: none;\n z-index: 2147483647;\n transition: top 0.2s ease;\n box-shadow: 0 2px 8px rgba(0,0,0,0.3);\n }\n #${n}:focus {\n top: 0;\n outline: 3px solid #ffdd00;\n outline-offset: 2px;\n }\n `}(),function(){if(function(){const e=document.querySelectorAll('a[href^="#"]');for(const t of e){const e=t.textContent?.toLowerCase()||"";if(e.includes("skip")||e.includes("main content")||e.includes("navigation"))return!0}return!1}())return;const e=document.querySelector("main")||document.getElementById("content")||document.getElementById("main-content")||document.querySelector('[role="main"]')||document.querySelector("h1");if(!e)return;e.id||(e.id="accessify-main-content");const t=document.createElement("a");t.id=n,t.href=`#${e.id}`,t.textContent="Skip to main content",t.addEventListener("click",t=>{t.preventDefault(),e.setAttribute("tabindex","-1"),e.focus(),e.scrollIntoView({behavior:"smooth",block:"start"})}),document.body.insertBefore(t,document.body.firstChild)}(),document.querySelectorAll(["a[href]","button","input","select","textarea",'[role="button"]','[role="link"]','[role="checkbox"]','[role="radio"]','[role="tab"]','[role="menuitem"]','[role="switch"]','[contenteditable="true"]',"summary"].join(", ")).forEach(e=>{e.hasAttribute("tabindex")||function(e){const t=e.tagName.toLowerCase();return!!["a","button","input","select","textarea"].includes(t)}(e)||(e.setAttribute("tabindex","0"),e.dataset.accessifyTabindex="true")}),document.addEventListener("keydown",d),localStorage.setItem(i,"true")}function f(){e=!1,l=!1,document.removeEventListener("keydown",d),function(){const e=document.getElementById(n);e?.remove()}(),document.querySelectorAll('[data-accessify-tabindex="true"]').forEach(e=>{e.removeAttribute("tabindex"),delete e.dataset.accessifyTabindex}),function(){const e=document.getElementById(t);e?.remove()}();const a=document.getElementById(r);a?.remove(),localStorage.removeItem(i)}return{id:"keyboard-nav",name:()=>"Keyboard Navigation",description:"Enhanced keyboard navigation with skip links, heading/landmark jumping, and shortcut help",icon:"keyboard-nav",category:"motor",activate:u,deactivate:f,getState:()=>({id:"keyboard-nav",enabled:e}),setState:e=>{e.enabled?u():f()}}}},Symbol.toStringTag,{value:"Module"})),Di=Object.freeze(Object.defineProperty({__proto__:null,default:function(){let e=!1,t=1.8;const n="accessify-line-height",r="accessify-line-height-value";function i(t){let r=document.getElementById(n);e?(r||(r=document.createElement("style"),r.id=n,document.head.appendChild(r)),r.textContent=`\n body, body p, body li, body td, body th, body dd, body dt,\n body span, body div, body label, body blockquote {\n line-height: ${t} !important;\n }\n `):r?.remove()}return{id:"line-height",name:()=>"Line Height",description:"Increase space between lines of text",icon:"line-height",category:"visual",activate:function(){e=!0;const n=localStorage.getItem(r);n&&(t=parseFloat(n)),i(t)},deactivate:function(){e=!1,i(t),localStorage.removeItem(r)},getState:()=>({id:"line-height",enabled:e,value:t}),setState:e=>{t=Math.min(3,Math.max(1,e)),i(t),localStorage.setItem(r,String(t))}}}},Symbol.toStringTag,{value:"Module"})),qi=Object.freeze(Object.defineProperty({__proto__:null,default:function(){let e=!1;const t="accessify-link-highlight",n="accessify-link-highlight";function r(){e=!0,function(){let e=document.getElementById(t);e||(e=document.createElement("style"),e.id=t,document.head.appendChild(e)),e.textContent=`\n /* accessify link highlighting */\n a[href] {\n text-decoration: underline !important;\n text-decoration-thickness: 3px !important;\n text-underline-offset: 3px !important;\n text-decoration-color: #1a73e8 !important;\n background-color: rgba(26, 115, 232, 0.1) !important;\n padding: 2px 4px !important;\n border-radius: 2px !important;\n transition: background-color 0.15s ease !important;\n }\n\n a[href]:hover {\n background-color: rgba(26, 115, 232, 0.25) !important;\n }\n\n a[href]:visited {\n text-decoration-color: #681da8 !important;\n background-color: rgba(104, 29, 168, 0.1) !important;\n }\n\n a[href]:visited:hover {\n background-color: rgba(104, 29, 168, 0.25) !important;\n }\n\n /* External link indicator */\n a[href^="http"]:not([href*="${"undefined"!=typeof window?window.location.hostname:""}"]):after {\n content: " \\2197";\n font-size: 0.8em;\n vertical-align: super;\n }\n `}(),localStorage.setItem(n,"true")}function i(){e=!1,function(){const e=document.getElementById(t);e?.remove()}(),localStorage.removeItem(n)}return{id:"link-highlight",name:()=>"Link Highlight",description:"Highlight all links with thick underlines and background colors",icon:"link-highlight",category:"visual",activate:r,deactivate:i,getState:()=>({id:"link-highlight",enabled:e}),setState:e=>{e.enabled?r():i()}}}},Symbol.toStringTag,{value:"Module"})),Gi=Object.freeze(Object.defineProperty({__proto__:null,default:function(){let e=!1,t=null;const n="accessify-page-structure";function r(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function i(){e=!1,t?.remove(),t=null}return{id:"page-structure",name:()=>"Page Structure",description:"View headings and landmarks for quick navigation",icon:"page-structure",category:"motor",activate:function(){e=!0,function(){t=document.createElement("div"),t.id=n,t.setAttribute("role","dialog"),t.setAttribute("aria-label","Page Structure");const e=function(){const e=[];return document.querySelectorAll("h1, h2, h3, h4, h5, h6").forEach(t=>{if(t.closest("#accessify-root"))return;const n=t.textContent?.trim()||"";n&&e.push({tag:t.tagName.toLowerCase(),text:n,el:t})}),e}(),a=function(){const e=[];return document.querySelectorAll(["main","nav","aside","header","footer","section[aria-label]","section[aria-labelledby]",'[role="main"]','[role="navigation"]','[role="complementary"]','[role="banner"]','[role="contentinfo"]','[role="search"]'].join(",")).forEach(t=>{if(t.closest("#accessify-root"))return;const n=t.getAttribute("role")||t.tagName.toLowerCase(),r=t.getAttribute("aria-label")||t.getAttribute("aria-labelledby")||n;e.push({role:n,label:r,el:t})}),e}(),o={h1:"0",h2:"12px",h3:"24px",h4:"36px",h5:"48px",h6:"60px"};let s=`\n <style>\n #${n} {\n position: fixed; top: 50%; left: 50%;\n transform: translate(-50%, -50%);\n z-index: 999998;\n background: #fff; color: #1a1a1a;\n border-radius: 12px; box-shadow: 0 8px 32px rgba(0,0,0,0.2);\n padding: 24px; width: 400px; max-height: 80vh;\n overflow-y: auto; font-family: system-ui, sans-serif;\n font-size: 14px; line-height: 1.5;\n }\n #${n} h3 { margin: 0 0 12px; font-size: 16px; }\n #${n} .ps-section { margin-bottom: 16px; }\n #${n} .ps-label { font-size: 11px; text-transform: uppercase; letter-spacing: 0.5px; color: #888; margin-bottom: 6px; }\n #${n} .ps-item {\n display: block; width: 100%; text-align: left;\n padding: 6px 8px; border: none; background: none;\n cursor: pointer; border-radius: 6px; font-size: 13px;\n color: #1a1a1a; font-family: inherit;\n }\n #${n} .ps-item:hover { background: #f0f0f2; }\n #${n} .ps-item:focus-visible { outline: 2px solid #0055CC; outline-offset: 1px; }\n #${n} .ps-tag { color: #888; font-size: 11px; margin-right: 6px; }\n #${n} .ps-close {\n position: absolute; top: 12px; right: 12px;\n background: none; border: none; cursor: pointer;\n font-size: 18px; color: #888; padding: 4px 8px; border-radius: 4px;\n }\n #${n} .ps-close:hover { background: #f0f0f2; }\n @media (prefers-color-scheme: dark) {\n #${n} { background: #1a1a1a; color: #f0f0f0; }\n #${n} .ps-item { color: #f0f0f0; }\n #${n} .ps-item:hover { background: #2a2a2e; }\n #${n} .ps-close { color: #aaa; }\n #${n} .ps-close:hover { background: #2a2a2e; }\n }\n </style>\n <button class="ps-close" aria-label="Close">&times;</button>\n <h3>Page Structure</h3>\n `;e.length>0&&(s+='<div class="ps-section"><div class="ps-label">Headings</div>',e.forEach((e,t)=>{s+=`<button class="ps-item" data-type="heading" data-index="${t}" style="padding-left:${o[e.tag]||"0"}">\n <span class="ps-tag">${e.tag}</span>${r(e.text.slice(0,80))}\n </button>`}),s+="</div>"),a.length>0&&(s+='<div class="ps-section"><div class="ps-label">Landmarks</div>',a.forEach((e,t)=>{s+=`<button class="ps-item" data-type="landmark" data-index="${t}">\n <span class="ps-tag">${r(e.role)}</span>${r(e.label.slice(0,60))}\n </button>`}),s+="</div>"),0===e.length&&0===a.length&&(s+='<p style="color:#888">No headings or landmarks found on this page.</p>'),t.innerHTML=s,t.addEventListener("click",t=>{const n=t.target.closest(".ps-item");if(n){const t=n.dataset.type,r=parseInt(n.dataset.index||"0",10);let i;"heading"===t?i=e[r]?.el:"landmark"===t&&(i=a[r]?.el),i&&(i.scrollIntoView({behavior:"smooth",block:"center"}),i.focus({preventScroll:!0}))}t.target.closest(".ps-close")&&i()}),document.body.appendChild(t);const c=t.querySelector(".ps-item, .ps-close");c?.focus()}()},deactivate:i,getState:()=>({id:"page-structure",enabled:e})}}},Symbol.toStringTag,{value:"Module"})),Ui={height:8,opacity:.3},Vi=Object.freeze(Object.defineProperty({__proto__:null,default:function(){let e=!1,t=null,n=0,r={...Ui};const i="accessify-reading-guide";function a(e){n=e.clientY,c()}function o(e){e.touches.length>0&&(n=e.touches[0].clientY,c())}function s(r){e&&t&&("ArrowUp"===r.key?(r.preventDefault(),n=Math.max(0,n-10),c()):"ArrowDown"===r.key&&(r.preventDefault(),n=Math.min(window.innerHeight,n+10),c()))}function c(){t&&(t.style.top=n-r.height/2+"px")}return{id:"reading-guide",name:()=>"Reading Guide",description:"Horizontal ruler that follows your cursor for easier reading",icon:"reading-guide",category:"cognitive",activate:function(){e=!0;const l=localStorage.getItem(i);if(l)try{const e=JSON.parse(l);r={height:Math.min(60,Math.max(2,e.height??Ui.height)),opacity:Math.min(1,Math.max(.1,e.opacity??Ui.opacity))}}catch{r={...Ui}}t=function(){const e=document.createElement("div");return e.id="accessify-reading-guide",e.setAttribute("role","presentation"),e.setAttribute("aria-hidden","true"),Object.assign(e.style,{position:"fixed",left:"0",width:"100%",height:`${r.height}px`,backgroundColor:`rgba(255, 255, 0, ${r.opacity})`,pointerEvents:"none",zIndex:"2147483646",top:"50%",transition:"top 0.05s linear",boxShadow:"0 0 4px rgba(0,0,0,0.2)"}),e}(),document.documentElement.appendChild(t),n=window.innerHeight/2,c(),document.addEventListener("mousemove",a,{passive:!0}),document.addEventListener("touchmove",o,{passive:!0}),document.addEventListener("keydown",s)},deactivate:function(){e=!1,document.removeEventListener("mousemove",a),document.removeEventListener("touchmove",o),document.removeEventListener("keydown",s),t&&(t.remove(),t=null),localStorage.removeItem(i)},getState:()=>({id:"reading-guide",enabled:e,value:{...r}}),setState:e=>{r={height:Math.min(60,Math.max(2,e.height??r.height)),opacity:Math.min(1,Math.max(.1,e.opacity??r.opacity))},localStorage.setItem(i,JSON.stringify(r)),t&&(t.style.height=`${r.height}px`,t.style.backgroundColor=`rgba(255, 255, 0, ${r.opacity})`,c())}}}},Symbol.toStringTag,{value:"Module"})),Ji=Object.freeze(Object.defineProperty({__proto__:null,default:function(){let e=!1,t=null,n=null,r=120;function i(e){if(!t||!n)return;const i=e.clientY,a=r/2,o=Math.max(0,i-a),s=Math.max(0,window.innerHeight-i-a);t.style.height=o+"px",n.style.height=s+"px"}function a(e){if(t&&n&&("ArrowUp"===e.key||"ArrowDown"===e.key)){const e=document.activeElement;if(!e)return;const i=e.getBoundingClientRect(),a=i.top+i.height/2,o=r/2;t.style.height=Math.max(0,a-o)+"px",n.style.height=Math.max(0,window.innerHeight-a-o)+"px"}}return{id:"reading-mask",name:()=>"Reading Mask",description:"Focus window that dims surrounding content",icon:"reading-mask",category:"motor",activate:function(){e=!0,function(){t=document.createElement("div"),n=document.createElement("div");const e="\n position: fixed; left: 0; right: 0; z-index: 999990;\n background: rgba(0, 0, 0, 0.65); pointer-events: none;\n transition: top 80ms ease, bottom 80ms ease, height 80ms ease;\n ";t.setAttribute("style",e+"top: 0;"),t.setAttribute("aria-hidden","true"),t.id="accessify-mask-top",n.setAttribute("style",e+"bottom: 0;"),n.setAttribute("aria-hidden","true"),n.id="accessify-mask-bottom",document.body.appendChild(t),document.body.appendChild(n)}(),document.addEventListener("mousemove",i),document.addEventListener("keydown",a)},deactivate:function(){e=!1,document.removeEventListener("mousemove",i),document.removeEventListener("keydown",a),t?.remove(),n?.remove(),t=null,n=null},getState:()=>({id:"reading-mask",enabled:e,value:r}),setState:e=>{r=Math.min(400,Math.max(60,e))}}}},Symbol.toStringTag,{value:"Module"})),Yi=Object.freeze(Object.defineProperty({__proto__:null,default:function(){let e="off";const t="accessify-saturation",n="accessify-saturation-mode";function r(e){let n=document.getElementById(t);"off"!==e?(n||(n=document.createElement("style"),n.id=t,document.head.appendChild(n)),n.textContent=function(e){switch(e){case"low":return"html { filter: saturate(0.3) !important; }";case"grayscale":return"html { filter: grayscale(1) !important; }";case"high":return"html { filter: saturate(1.8) !important; }";default:return""}}(e)):n?.remove()}return{id:"saturation",name:()=>"Saturation",description:"Adjust color saturation or grayscale",icon:"saturation",category:"visual",activate:function(){const t=localStorage.getItem(n);e=t||"grayscale",r(e)},deactivate:function(){e="off",r("off"),localStorage.removeItem(n)},getState:()=>({id:"saturation",enabled:"off"!==e,value:e}),setState:t=>{e=t,r(t),localStorage.setItem(n,t)}}}},Symbol.toStringTag,{value:"Module"})),Zi={lineHeight:1.5,paragraphSpacing:2,letterSpacing:.12,wordSpacing:.16},Xi=Object.freeze(Object.defineProperty({__proto__:null,default:function(){let e=!1,t={...Zi};const n="accessify-spacing",r="accessify-spacing";function i(e){const t=document.documentElement;t.style.setProperty("--accessify-line-height",String(e.lineHeight)),t.style.setProperty("--accessify-paragraph-spacing",`${e.paragraphSpacing}em`),t.style.setProperty("--accessify-letter-spacing",`${e.letterSpacing}em`),t.style.setProperty("--accessify-word-spacing",`${e.wordSpacing}em`);let r=document.getElementById(n);r||(r=document.createElement("style"),r.id=n,document.head.appendChild(r)),r.textContent="\n /* accessify WCAG 1.4.12 text spacing adjustments */\n * {\n line-height: var(--accessify-line-height) !important;\n letter-spacing: var(--accessify-letter-spacing) !important;\n word-spacing: var(--accessify-word-spacing) !important;\n }\n p {\n margin-bottom: var(--accessify-paragraph-spacing) !important;\n }\n p + p {\n margin-top: var(--accessify-paragraph-spacing) !important;\n }\n "}function a(e){return{lineHeight:Math.min(2.5,Math.max(Zi.lineHeight,e.lineHeight??t.lineHeight)),paragraphSpacing:Math.min(4,Math.max(Zi.paragraphSpacing,e.paragraphSpacing??t.paragraphSpacing)),letterSpacing:Math.min(.24,Math.max(Zi.letterSpacing,e.letterSpacing??t.letterSpacing)),wordSpacing:Math.min(.32,Math.max(Zi.wordSpacing,e.wordSpacing??t.wordSpacing))}}return{id:"spacing",name:()=>"Text Spacing",description:"Adjust line height, letter spacing, word spacing and paragraph spacing (WCAG 1.4.12)",icon:"spacing",category:"visual",activate:function(){e=!0;const n=localStorage.getItem(r);if(n)try{t=a(JSON.parse(n))}catch{t={...Zi}}else t={...Zi};i(t)},deactivate:function(){e=!1,function(){const e=document.documentElement;e.style.removeProperty("--accessify-line-height"),e.style.removeProperty("--accessify-paragraph-spacing"),e.style.removeProperty("--accessify-letter-spacing"),e.style.removeProperty("--accessify-word-spacing");const t=document.getElementById(n);t?.remove()}(),localStorage.removeItem(r),t={...Zi}},getState:()=>({id:"spacing",enabled:e,value:{...t}}),setState:n=>{t=a(n),i(t),localStorage.setItem(r,JSON.stringify(t)),e=!0}}}},Symbol.toStringTag,{value:"Module"})),Qi=Object.freeze(Object.defineProperty({__proto__:null,default:function(){let e="off";const t="accessify-text-align",n="accessify-text-align-mode";function r(e){let n=document.getElementById(t);"off"!==e?(n||(n=document.createElement("style"),n.id=t,document.head.appendChild(n)),n.textContent=`\n body, body * {\n text-align: ${e} !important;\n }\n `):n?.remove()}return{id:"text-align",name:()=>"Text Align",description:"Change text alignment across the page",icon:"text-align",category:"visual",activate:function(){const t=localStorage.getItem(n);e=t||"left",r(e)},deactivate:function(){e="off",r("off"),localStorage.removeItem(n)},getState:()=>({id:"text-align",enabled:"off"!==e,value:e}),setState:t=>{e=t,r(t),localStorage.setItem(n,t)}}}},Symbol.toStringTag,{value:"Module"})),ea=Object.freeze(Object.defineProperty({__proto__:null,default:function(e,t="de"){let n=!1,r="einfache",i=[],a=null,o=null;const s="accessify-text-simplify",c="data-accessify-simplified",l="data-accessify-original";function d(e){e.style.opacity="0.5",e.style.transition="opacity 0.3s ease"}function u(e){e.style.opacity="",e.style.transition=""}function f(e,n){o||(o=document.createElement("div"),o.setAttribute("role","status"),o.setAttribute("aria-live","polite"),Object.assign(o.style,{position:"fixed",bottom:"80px",right:"24px",zIndex:"2147483645",padding:"10px 18px",background:"#1a1a2e",color:"#4ea8de",borderRadius:"10px",boxShadow:"0 4px 20px rgba(0,0,0,0.3)",fontFamily:"system-ui, -apple-system, sans-serif",fontSize:"13px",fontWeight:"600",display:"flex",alignItems:"center",gap:"8px"}),document.body.appendChild(o));const r=Math.round(e/n*100),i=t.startsWith("de")?`Wird vereinfacht... ${e}/${n} (${r}%)`:`Simplifying... ${e}/${n} (${r}%)`;if(o.innerHTML=`<span style="display:inline-block;width:14px;height:14px;border:2px solid rgba(78,168,222,0.3);border-top-color:#4ea8de;border-radius:50%;animation:accessify-autospin 0.6s linear infinite"></span> ${i}`,!document.getElementById("accessify-autospin-style")){const e=document.createElement("style");e.id="accessify-autospin-style",e.textContent="@keyframes accessify-autospin { to { transform: rotate(360deg); } }",document.head.appendChild(e)}}function p(){o?.remove(),o=null,document.getElementById("accessify-autospin-style")?.remove()}return{id:"text-simplify",name:()=>t.startsWith("de")?"Text vereinfachen":"Simplify Text",description:t.startsWith("de")?"Text in Einfache Sprache umwandeln":"Simplify text for easier understanding",icon:"simplify-text",category:"ai",activate:function(){n||(n=!0,function(){const e=localStorage.getItem(s);if(e)try{const t=JSON.parse(e);"einfache"!==t.level&&"leichte"!==t.level||(r=t.level)}catch{}}(),async function(){if(!e)return f(0,1),n=t.startsWith("de")?"Kein API-Key konfiguriert":"No API key configured",void(o&&(o.innerHTML=`<span style="color:#ef4444">✕</span> ${n}`,o.style.color="#ef4444",setTimeout(()=>p(),5e3)));var n;const s=function(){const e=[],t=new Set;return document.querySelectorAll("p, li, td, th, blockquote, figcaption, .hero-subtitle, h1, h2, h3, h4, h5, h6").forEach(n=>{const r=n;if(r.closest("#accessify-root"))return;if(null===r.offsetParent&&"fixed"!==r.style.display)return;if((r.textContent?.trim()||"").length<20)return;if(t.has(r))return;let i=!1;for(const e of t)if(e.contains(r)){i=!0;break}i||(t.add(r),e.push(r))}),e}();if(0===s.length)return;a=new AbortController,i=[];for(const e of s)i.push({el:e,originalText:e.textContent||""}),e.setAttribute(l,e.innerHTML),d(e);f(0,s.length);let h=0,g=0;for(const i of s){if(a.signal.aborted)break;const n=i.textContent?.trim()||"";if(n.length<20)u(i),h++,f(h,s.length);else try{const o=await e.simplifyText(n,r,t);if(a?.signal.aborted)return;o&&o!==n&&(i.textContent=o,i.setAttribute(c,"true"),g++)}catch(m){if(m?.message?.includes("429")){await new Promise(e=>setTimeout(e,8e3));try{const o=await e.simplifyText(n,r,t);if(a?.signal.aborted)return;o&&o!==n&&(i.textContent=o,i.setAttribute(c,"true"),g++)}catch{}}}finally{u(i),h++,a?.signal.aborted||f(h,s.length)}}a?.signal.aborted||function(e){if(o){const n=t.startsWith("de")?`${e} Textabschnitte vereinfacht`:`${e} text sections simplified`;o.innerHTML=`<span style="color:#22c55e">✓</span> ${n}`,o.style.color="#22c55e",setTimeout(()=>p(),3e3)}}(g)}())},deactivate:function(){n=!1,a?.abort(),a=null,function(){for(const{el:e}of i){const t=e.getAttribute(l);null!==t&&(e.innerHTML=t,e.removeAttribute(l),e.removeAttribute(c),u(e))}i=[]}(),p()},getState:()=>({id:"text-simplify",enabled:n,value:{level:r}}),setState:e=>{!e.level||"einfache"!==e.level&&"leichte"!==e.level||(r=e.level,localStorage.setItem(s,JSON.stringify({level:r})))}}}},Symbol.toStringTag,{value:"Module"})),ta=Object.freeze(Object.defineProperty({__proto__:null,default:function(){let e=100,t="";const n="accessify-text-size",r="accessify-text-size";function i(e){let r=document.getElementById(n);if(100===e)return r?.remove(),void(t?document.documentElement.style.fontSize=t:document.documentElement.style.removeProperty("font-size"));r||(r=document.createElement("style"),r.id=n,document.head.appendChild(r)),document.documentElement.style.fontSize=e/100*100+"%",r.textContent=`\n /* accessify text-size: ${e}% */\n body { font-size: 1rem !important; }\n `}function a(e){return Math.min(200,Math.max(100,10*Math.round(e/10)))}return{id:"text-size",name:()=>"Text Size",description:"Adjust text size from 100% to 200%",icon:"text-size",category:"visual",activate:function(){t=document.documentElement.style.fontSize||"";const n=localStorage.getItem(r);e=n?a(parseInt(n,10)):150,i(e)},deactivate:function(){e=100,i(100),localStorage.removeItem(r)},getState:()=>({id:"text-size",enabled:100!==e,value:e}),setState:t=>{e=a(t),i(e),localStorage.setItem(r,String(e))}}}},Symbol.toStringTag,{value:"Module"})),na={speed:1},ra=Object.freeze(Object.defineProperty({__proto__:null,default:function(){let e=!1,t={...na},n=null,r=null,i=!1,a=!1,o=!0,s=[],c=0,l=null,d="en";const u="accessify-tts",f="accessify-tts-controls",p="accessify-tts-styles",h="accessify-tts-highlight";function g(){l=function(e){const t=speechSynthesis.getVoices();if(0===t.length)return null;const n=e.split("-")[0];if("de"===n){const e=t.find(e=>e.lang.toLowerCase().startsWith("de-de")&&!1===e.localService);if(e)return e;const n=t.find(e=>e.lang.toLowerCase().startsWith("de-de"));if(n)return n;const r=t.find(e=>e.lang.toLowerCase().startsWith("de"));if(r)return r}return t.find(t=>t.lang.toLowerCase()===e)||t.find(e=>e.lang.toLowerCase().startsWith(n))||t[0]||null}(d)}function m(){speechSynthesis.cancel(),i=!1,a=!1,s=[],c=0,b(),k()}function v(e,n){if(m(),!e.trim())return;var o;n&&(o=n,b(),o.classList.add(h),r=o);const u=function(e){const t=e.match(/[^.!?]*[.!?]+[\s]?|[^.!?]+$/g);if(!t)return[e];const n=[];let r="";for(const i of t){const e=i.trim();e&&(r+=(r?" ":"")+e,(r.length>80||/[.!?]$/.test(r))&&(n.push(r),r=""))}return r.trim()&&n.push(r.trim()),n.length>0?n:[e]}(e);s=u.map(e=>{const n=new SpeechSynthesisUtterance(e);return n.rate=t.speed,n.lang=d,l&&(n.voice=l),n}),c=0,i=!0,a=!1,k(),y()}function y(){if(c>=s.length)return i=!1,a=!1,b(),void k();const e=s[c];e.onend=()=>{c++,c<s.length&&i?setTimeout(()=>y(),50):(i=!1,a=!1,b(),k())},e.onerror=e=>{i=!1,a=!1,b(),k()},speechSynthesis.speak(e)}function b(){r&&(r.classList.remove(h),r=null),document.querySelectorAll(`.${h}`).forEach(e=>e.classList.remove(h))}function x(t){if(!e||!o)return;const r=t.target;if(!r)return;if(n?.contains(r))return;t.preventDefault(),t.stopPropagation();const i=function(e){if(w(e).trim().length>0)return e;let t=e;for(;t&&t!==document.body;){if(w(t).trim().length>0)return t;t=t.parentElement}return null}(r);if(!i)return;const a=w(i);a.trim()&&v(a,i)}function w(e){return(e.innerText||e.textContent||"").trim()}function k(){if(!n)return;const e=n.querySelector(".accessify-tts-play"),t=n.querySelector(".accessify-tts-hint");e&&(i&&!a?(e.innerHTML='<svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor" stroke="none" aria-hidden="true"><rect x="5" y="3" width="4" height="18"/><rect x="15" y="3" width="4" height="18"/></svg>',e.setAttribute("aria-label","Pause"),e.title="Pause"):i&&a?(e.innerHTML='<svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor" stroke="none" aria-hidden="true"><polygon points="6,3 20,12 6,21"/></svg>',e.setAttribute("aria-label","Resume"),e.title="Resume"):(e.innerHTML='<svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor" stroke="none" aria-hidden="true"><polygon points="6,3 20,12 6,21"/></svg>',e.setAttribute("aria-label","Play / Pause"),e.title="Play / Pause")),t&&(t.textContent=i&&!a?"Speaking...":a?"Paused":"Click any text to read it aloud")}function S(){localStorage.setItem(u,JSON.stringify({speed:t.speed}))}return{id:"tts",name:()=>"Text-to-Speech",description:"Click any text to hear it read aloud with adjustable speed",icon:"tts",category:"cognitive",activate:function(){e||(e=!0,function(){const e=localStorage.getItem(u);if(e)try{const n=JSON.parse(e);t.speed=Math.min(2,Math.max(.5,n.speed??na.speed))}catch{t={...na}}}(),d=function(){const e=document.documentElement.lang;if(e)return e.toLowerCase();const t=document.querySelector('meta[http-equiv="content-language"]');return t?.content?t.content.toLowerCase():"en"}(),g(),l||void 0===speechSynthesis.onvoiceschanged||(speechSynthesis.onvoiceschanged=()=>{g()}),function(){let e=document.getElementById(p);e||(e=document.createElement("style"),e.id=p,document.head.appendChild(e)),e.textContent=`\n /* accessify TTS styles */\n .${h} {\n background-color: rgba(78, 168, 222, 0.15) !important;\n outline: 2px solid rgba(78, 168, 222, 0.5) !important;\n outline-offset: 2px !important;\n border-radius: 3px !important;\n transition: background-color 0.2s ease, outline-color 0.2s ease !important;\n }\n\n #${f} .accessify-tts-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n padding: 0;\n margin: 0;\n border: 1px solid rgba(255,255,255,0.15);\n border-radius: 6px;\n background: rgba(255,255,255,0.08);\n color: #f0f0f0;\n cursor: pointer;\n transition: background 0.15s ease, border-color 0.15s ease;\n line-height: 1;\n }\n\n #${f} .accessify-tts-btn:hover {\n background: rgba(255,255,255,0.18);\n border-color: rgba(255,255,255,0.3);\n }\n\n #${f} .accessify-tts-btn:focus-visible {\n outline: 2px solid #4ea8de;\n outline-offset: 1px;\n }\n\n #${f} .accessify-tts-btn:active {\n background: rgba(255,255,255,0.25);\n }\n `}(),n=function(){const e=document.createElement("div");e.id=f,e.setAttribute("role","toolbar"),e.setAttribute("aria-label","Text-to-Speech controls"),Object.assign(e.style,{position:"fixed",top:"0",left:"50%",transform:"translateX(-50%)",zIndex:"2147483646",display:"flex",alignItems:"center",gap:"6px",padding:"6px 14px",background:"#1a1a2e",color:"#f0f0f0",borderRadius:"0 0 10px 10px",boxShadow:"0 4px 16px rgba(0,0,0,0.3)",fontFamily:"system-ui, -apple-system, sans-serif",fontSize:"13px",lineHeight:"1",userSelect:"none",transition:"opacity 0.2s ease"});const n=document.createElement("button");n.className="accessify-tts-btn accessify-tts-play",n.setAttribute("aria-label","Play / Pause"),n.title="Play / Pause",n.innerHTML='<svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor" stroke="none" aria-hidden="true"><polygon points="6,3 20,12 6,21"/></svg>',n.addEventListener("click",()=>{i&&i&&(a?(speechSynthesis.resume(),a=!1):(speechSynthesis.pause(),a=!0),k())});const r=document.createElement("button");r.className="accessify-tts-btn accessify-tts-stop",r.setAttribute("aria-label","Stop"),r.title="Stop",r.innerHTML='<svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor" stroke="none" aria-hidden="true"><rect x="4" y="4" width="16" height="16" rx="2"/></svg>',r.addEventListener("click",()=>{m()});const o=document.createElement("div");Object.assign(o.style,{display:"flex",alignItems:"center",gap:"4px",marginLeft:"4px"});const c=document.createElement("label");c.textContent="Speed",c.setAttribute("for","accessify-tts-speed"),Object.assign(c.style,{fontSize:"11px",opacity:"0.8",whiteSpace:"nowrap"});const l=document.createElement("input");l.type="range",l.id="accessify-tts-speed",l.min="0.5",l.max="2",l.step="0.1",l.value=String(t.speed),l.setAttribute("aria-label","Speech speed"),Object.assign(l.style,{width:"70px",accentColor:"#4ea8de",cursor:"pointer"});const d=document.createElement("span");d.className="accessify-tts-speed-val",d.textContent=`${t.speed.toFixed(1)}x`,Object.assign(d.style,{fontSize:"11px",minWidth:"30px",textAlign:"center",opacity:"0.8"}),l.addEventListener("input",()=>{const e=parseFloat(l.value);t.speed=e,d.textContent=`${e.toFixed(1)}x`,S();for(const t of s)t.rate=e}),o.appendChild(c),o.appendChild(l),o.appendChild(d);const u=document.createElement("div");Object.assign(u.style,{width:"1px",height:"18px",background:"rgba(255,255,255,0.2)",margin:"0 4px"});const p=document.createElement("span");p.className="accessify-tts-hint",p.textContent="Click any text to read it aloud",Object.assign(p.style,{fontSize:"11px",opacity:"0.6",whiteSpace:"nowrap"});const h=document.createElement("span");return Object.assign(h.style,{position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0,0,0,0)",whiteSpace:"nowrap",border:"0"}),h.textContent="For full screen reader support, use NVDA, JAWS, or VoiceOver",e.appendChild(n),e.appendChild(r),e.appendChild(u),e.appendChild(o),e.appendChild(u.cloneNode(!0)),e.appendChild(p),e.appendChild(h),e}(),document.documentElement.appendChild(n),o=!0,document.addEventListener("click",x,!0))},deactivate:function(){e=!1,m(),document.removeEventListener("click",x,!0),o=!1,n&&(n.remove(),n=null),b(),function(){const e=document.getElementById(p);e?.remove()}(),void 0!==speechSynthesis.onvoiceschanged&&(speechSynthesis.onvoiceschanged=null)},getState:()=>({id:"tts",enabled:e,value:{speed:t.speed}}),setState:e=>{if(void 0!==e.speed){t.speed=Math.min(2,Math.max(.5,e.speed)),S();const r=document.getElementById("accessify-tts-speed");r&&(r.value=String(t.speed));const i=n?.querySelector(".accessify-tts-speed-val");i&&(i.textContent=`${t.speed.toFixed(1)}x`)}}}}},Symbol.toStringTag,{value:"Module"}));return e.destroy=Mi,e.init=Ci,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),e}({});
2
+ //# sourceMappingURL=accessify.min.js.map